专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 单片机

封闭串口中断,也可以利用串口发送和接收数据

发布时间:2010-06-14 15:00:29 文章来源:www.iduyao.cn 采编人员:星星草
关闭串口中断,也可以利用串口发送和接收数据?
 程序如下

#include<reg52.h>
char a;
void main()
{
EA=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
ET1=0;  
TR1=1;   

ES=0;//stop the serial interrupt 
REN=1;
SM0=0;
SM1=1; 
while(1)

     if(RI==1)
     {
RI=0;
a=SBUF;
P1=a;
SBUF=a;
    }
     else if(TI==1)
     TI=0;                       
}
}

我把串口中断ES=0了,中断都被关闭了。我还是可以发送和接收数据。所以我认为,ES只是作用于“中断服务程序,也就是 void Serial_interrupt_function() interrupt 4 ”只有在void Serial_interrupt_function() interrupt 4,ES才有绝对控制权。

中断的目的是获得CPU的响应。既然我们可以不用中断就可以获得CPU的响应,那用中断的意义就没了,就像上面的程序一样,while(1)可以一直占用CPU,CPU就可以直接处理While(1)中的代码指令。CPU直接响应发送和接收数据了。

串行通信有TXD和RXD,这两根线是物理连接P3.0和P3.1口的。所以物理上是通路。只要REN=1,就允许接收和发送。

ES是用于获得CPU响应的,串行通信的硬件电路和ES应该没关系?
------解决方案--------------------
通常发生是不用中断的。
接受 用中断 是 因为 不知道 字符 什么时候 会来, 
你 不用中断 就得 查询, 而查询 会 占 cpu 大量时间。
------解决方案--------------------
定时器还是轮询啊,轮询次数是比死循环少,但是还是比打开串口中断占用的CPU多,而且你定时器也用到了中断,所以何必呢?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: