微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关闭串口中断,也可以利用串口发送和接收数据?

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

时间:10-02 整理:3721RD 点击:
程序如下
#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应该没关系?

利用定时器1的中断,也可以发送接收数据,程序可运行。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(int z);
char a,flag;

void main()
{
EA=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
ET1=1;  
TR1=1;  
  
  ES=0;
REN=1;
SM0=0;
SM1=1;
while(1);
}
void Time1_interrupt()interrupt 3
{       
if(RI)
{
RI=0;
P1=SBUF;          
a=SBUF;
SBUF=a;
}
if(TI)
{
TI = 0;
}
}

串口中断和“串口的物理电路”并没有绝对的联系。当利用串口发送和接收数据的时候,RI=1或者TI=1都会触发串口中断。即使在ES=0的情况下,也可以发送和接收数据。
使用其余的中断或者轮询方式都可以发送接收数据,但是"串口中断服务程序”效率最高,占用CPU时间最少。

不论是什么在IE寄存器里的中断,及时不置为EA=1;XX=1但是只要在程序中使用了就可以进行相应的程序处理,实际上这并不是说不需要写IE0=1;IT0=1;才可以进行中端。IE寄存器实际上是一个存储中断响应位的寄存器(个人理解)。也就是说里面的五位寄存器的目的是当中断条件达到后给予计算器CPU一个抢夺资源的新号而已。没有IE里的寄存器,各个管脚的附属功能还在只不过就是无法使用中断函数罢了

我发现ES=0了,但是中断里的赋值还能继续进行

        小编要搞清楚一个概念,就是 定时器 串口 之类具有中断功能的单片机资源,其本身的工作和中断没有任何关系。如,有没有设置中断,定时器都可以计数,计数值到了,申请中断。至于有没有开中断,或是写没有中断函数,定时器不会管的。

你这就叫“死盯战术”,你的while(1)循环体里面就一直在死盯着那个RI,TI的标志,CPU别干别的了。就干这个事情了。而开了中断呢?CPU就解放了,一旦有TI,RI的来了,马上通知CPU,去执行中断服务程序即可。平时,完全没有必要去理睬那个RI,TI的了。明白?这是为了实现CPU高效运行采取的机制。你不用?

说的挺好的,赞学习了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top