串口中断与定时中断同时开存在的问题,请教大侠
串口中断与定时中断同时开存在的问题,请教大侠
我通过AD转化采集外部信号值并显示在LCD上,每1ms采集一次,采用定时中断
1;同时需要显示串行口发来的数据,采用9600波特率(无多机通信)。结果是定时中断1显示正常,串行数据却接收不到。程序如下,请大侠们帮忙看看指正,我实在不知道原因了,只好贴出编的一段程序来请各位指教:
初始化:
IE=0x92;
TMOD=0x21;
TH1=0xf4;
TL1=0XF4;//6时钟单片机,9600bps
SCON=0x50;
TCON=0x50;
TH0=0xf1;
TL0=0x9a;//定时中断1ms
IP=0x00;
定时中断
void disp(void) interrupt 1{//定时中断1
TH0=0xf1;
TL0=0x9a; //重新赋值,定时1ms
StaticShow(LineNo);//将数据送LCD显示,运行时间约0.1ms
LineNo++; //全局变量,计算定时中断次数
if (LineNo==16)LineNo=0;
}
串口中断:
void receive(void) interrupt 4{
uchar i,j;
RI=0;
if (SBUF!=0XCC)return;//侦头字节
RI=0;
if (_getkey!=0x55)return;//侦头字节
if (_getkey!=0x01)return;//类型
ES=0;//这里可考虑去掉,但是效果一样
for (i=0;i <128;i++){
Buffer[i]=_getkey();//接收128字节数据
}
ES=1;//重新开中断
}
语法没任何问题(手输入错误除外),串形中断单独使用也没有问题,现在情况是定时中断正常,不进入串行中断,搞了两天了,没有结果,郁闷中。。。。。。请大侠救命,谢谢
发表时间:2004年3月9日17:33:32