各位,最近在调试的时候发现个问题,希望大神能帮忙看下是什么原因。
只要程序中ES=1,定时器0工作,但是串口无反应,但是将ES=0注释掉之后,程序就正常了,这是为什么?
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar t0;
void init()
{
TMOD=0x21;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
TH1=0xfd;
TL1=0xfd;
TR1=1; //打开定时器1
REN=1; //允许串口接收数据
SM0=0; //10位异步传输
SM1=1;
ES=1; //开串口中断
就是这里,将ES=1注释掉之后程序正常?不解
EA=1; //开总中断
}
void main()
{
init();
while(1);
}
void
timer0() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
t0++;
if(t0==20)
{
SBUF=0xaa;
}
}
一周热门 更多>