51单片机定时器0影响定时器1的正常工作,如何解决?
[复制链接]
预期效果:
在上位机用串口调试助手给单片机发送一个字符,单片机便自动发送一次“123”给上位机。
代码:
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD = 0x21;
TH1=0xfd;
TL1=0xfd;
TH0 = 0xfe;
TL0 = 0x33;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
ET0 = 1;
TR0 = 1;
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';
while(!TI);
TI=0;
SBUF='2';
while(!TI);
TI=0;
SBUF='3';
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
问题现象:
上电后,上位机还未发送任何字符,单片机便开始不间断的发送“123”给上位机。
但如果将 ET0 = 1; 或 TR0 = 1; (代码18~19行)语句注释,便可正常工作。
若能帮助解决,感激不尽!
|