51单片机的串行口中断允许为

为什么我将单片机的串行口中断允许为ES设置为0 还能进入串口中断??
串口工作在方式一
#include <reg52.h>

void main()
{

REN = 0;
SM0 = 0;
SM1 = 1;

TMOD = 0x20;//工作方式2
TH1 = 0xfd;
TL1 = 0xfd;
ET1 = 1;
ES = 0;
TR1 = 1;

EA = 1;

while (1)
{

}
}
void ser() interrupt 4 //串口中断
{
RI = 0;
P1 = SBUF;
}
我试了 ,仍然可以接受com1发来的数据

#include <reg52.h>

void main()
{

REN = 0;
SM0 = 0;
SM1 = 1;

TMOD = 0x20;//工作方式2
TH1 = 0xfd;
TL1 = 0xfd;
ET1 = 1;
ES = 0;
TR1 = 1;

EA = 1;

while (1)
{
; //分号必须要加的,不然花括号没有意义。
}
}
void ser() interrupt 4 //串口中断
{
if(RI) //这个条件语句也需要加的,进入中断的不仅仅是接收,发送也能进的。
{
RI = 0;
P1 = SBUF;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-25
进行单步调试,断点设在中断例程里,当进入后,查看IE,看看ES是否=0了;
怀疑你的芯片代码未有更新;
第2个回答  2013-06-24
把程序贴出来!
相似回答