这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于串行通信的一个问题

共13条 2/2 1 2 跳转至
助工
2012-02-19 22:52:10     打赏
11楼
可以单独写个中断进程,也可以在主函数while循环中判断RI。

助工
2012-03-06 17:09:33     打赏
12楼
串口接收到数据后,RI寄存器就会被硬件置1,必须靠软件清0,才能进行下一步的接收

高工
2012-03-06 17:58:31     打赏
13楼
你的这段程序,接收SBUF还没有接收数据,因为你初始化之后,没有判断RI是否为1,立刻读SBUF。51单片机的SBUF是串口数据寄存器,共有2个SBUF,1个接收和1个发送。发送时,
SBUF=P1;while(!TI);TI=0;要等到数据发送完毕,TI=1时,再写以后程序。接收时,while(!RI);RI=0;P1=SBUF;要等到数据发送完毕,RI=1时,再读SBUF。由于,RI,TI不会自动置0,所以,在查询到它们等于1后,要软件置零,使用中断方式时也是一样。


共13条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]