关闭串口中断,也可以利用串口发送和接收数据?
程序如下
#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应该没关系?