导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[bossren]帮我看看并行通讯程序。。。。。。



No.90495
作者:bossren
邮件:taodg@sina.com
ID:44061
登陆:8次
文章数:15篇
最后登陆IP:60.22.206.220
最后登陆:2011/9/11 11:52:48
注册:2005/12/3 12:25:24
财富:151
发帖时间:2006/3/22 21:07:35
发贴者IP:59.45.228.54
标题:bossren:帮我看看并行通讯程序。。。。。。
摘要:No.90495帮我看看并行通讯程序。。。。。。 我用三根信号线Ready_U4、RD、WR作为两片单片机的联络信号(当然数据线是直接相连的),主机首先检查Ready_U4信号线是否为低(即是否申请了发送数据),如果发现Ready_U4信号线为低,则认为从机申请了发送数据,即进入接收数据状态与从机进行通讯,否则置Ready_U4为低,向从机申请发送数据。从机也是这样使用Ready_U4信号线的。

当主机接收从机的数据时,首先置RD=0,并查询WR,当从机回复WR=0时意味着从机已经将数据送到端口线上了,于是主机从端口线上读数据,并置RD=1,从机判断主机回复的RD=1时即进入下一个数据的发送。

当主机向从机发送数据时,首先置Ready_U4为低电平表明有数据要发送,然后等待从机发送回复信号WR=0,收到回复信号后,将数据写入端口,并等待从机回复WR=1取走数据,并开始下一个数据的发送。

具体程序为:
主机部分:
while(1){
   Ready_U4 = 1;
   if(!Ready_U4)   //如果从机申请了发送数据,则接收数据
   {
      i=0;
      do{
         RD = 0;    //应答从机,通知从机准备好数据
         WR = 1;
         while(WR){}   //等待从机回复  
         P2 = 0xFF;
         data_buf[i] = P2;//取走数据
         i++;
         RD = 1;    //回复从机数据已经取走
         WR = 1;
         while(!WR){}   //等待从机应答
         Ready_U4 = 1;
      }while(Ready_U4 == 0); //如果从机还有数据发送则继续
      f_newdata = 1;  //接收到新数据标志  
   }
   else
   { //否则申请发送数据,将接收到的数据发送给仿真计算机
      if(f_newdata)   //将新接收到的数据发送给仿真计算机
      {
         f_newdata =0;
         Ready_U4 = 0; //表示数据准备好,等待仿真CPU查询并向仿真CPU发送数据
         for(i=0;i  <22;i++){
            WR = 1;  
            while(WR){};   //等待从机应答
            P2 = data_buf[i];//发送数据
            RD = 0;//通知从机数据可以取走了
            WR = 1;
            while( ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:15毫秒 最大:78531毫秒 查询6次