4578|7

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口 应答信号 [复制链接]

我想设计一个通信协议,我的1号机发出握手信号后收不到2号机的应答信号,但是我把2号机和PC机的串口调试助手直接连接就能收到应答信号,为什么?大家帮我看看我的程序那里的问题好吗?
void serial() interrupt 4 using 1                 //中断方式
{
        unsigned char mid;
        for(j=0;j<7;j++)                         //串口接收到的7组数据
                {  
               if(RI)                                     //等待应答信号
                     {
                      RI=0;
              mid=SBUF;                            //接收到的应答信号   
              rcv_data[j]=mid;

         // if(rcv_request[j]^rcv_data[j]==0)   
              LED2=~LED2;                              //正常通信的话LED2灯亮
              Delay(100);
                         }
            }       
}                     

最新回复

你可以在收发端各设计一个7个字节长的队列(缓冲区),并跟踪记录收(发)位置。 收端接收完成后在判断是否正确,RI中断时把数据放到接收缓冲区中, TI中断时从发送缓冲区中取下一个数。   详情 回复 发表于 2008-8-22 14:28
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
每次中断的时候你只能从SBUF得到一个数据,你那个for循环是没有用的。 你需要另外设计你的程序。
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
每次RX(TX)中断时你只能接收(发送)一个字节。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
可是为什么能和PC机通信呢?直接和串口调试助手连接2号机就有应答信号?
那你能帮我改进一下程序吗?
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个应答信号是7个数组成的数组?
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
串口助手应该也是逐个字节发送的,只是你看不到而已。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个应答信号是7个数组成的数组。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
你可以在收发端各设计一个7个字节长的队列(缓冲区),并跟踪记录收(发)位置。
收端接收完成后在判断是否正确,RI中断时把数据放到接收缓冲区中, TI中断时从发送缓冲区中取下一个数。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表