|
keil c51串口中断的一个奇怪问题 那位大哥指点下 谢谢
[复制链接]
就下面的程序 有2个问题 1,变量k 的值总是0
2,变量k 的存储类型为DATA 时串口中断不能发生(为 PDATA时就可以发生中断但k的值还是0;..........这都是硬件测试的结果;
用软件模拟仿真都可以中断但k的值是0 不知道为什么????
#include
unsigned char k;
sfr p1=0x90;
sbit del=P1^3;
sbit rest=p1^4;
void service_int1(void) interrupt 2 using 2{ //外部中断1
IE=0X00; //关外部中断
del=0;
SBUF=0xAA;}
void service_com() interrupt 4 using 3
{if(RI)
{
k=SBUF;
SBUF=0xbb;
RI=0; }
if(TI)
TI=0;
}
void main(void)
{
rest=0;//峰值保持器处于保持清0
del=0;
IP=0X00;
TCON=0X04;
IE=0X90;
TMOD=0X21;
SCON=0X50;
TL1=0xfa;
TH1=0Xfa;
PCON=0X00;
TR1=1;
for(;;)
{ switch(k)
{case 0Xaa:
{ rest=1;
del=1;
SBUF=0x11;
IE=0x94;}//开外部中断
break;
case 0Xbb:
{rest=0;
SBUF=0x33;
del=0;}
break;
default:;
}
}
}
|
|