关于串行通信的一个问题 没分了 不好意思哈
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar flag,b,i;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
//为什么不能开中断(ET1=1)
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
SBUF=b;
while(!TI);
TI=0;
flag=0;
ES=1;
}
}
}
void ser_1() interrupt 4
{
RI=0;
b=SBUF;
flag=1;
}
为什么不能开中断(ET1=1) 请高手解释下 不胜感激!
[解决办法]
ET1不是定时器中断么?打开它没用吧?
[解决办法]
打开了当然不行,因为定时中断的优先级高于串口中断,所以会有你那种现象。