进入外部中断之后启动定时器中断,执行完之后关掉定时器中断unsigned char time;
sbit bb1=P1^0;
void int0(void) interrupt 0 using 1
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
time = 0; //计数器清零
TR0=1;
while(time<20); //等待定时中断计数器溢出
ET0=0;
bb1 = !bb1;
}
void timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}
void main()
{
EX0 = 1; //外部中断初始化
IT0 = 0; //低电平中断
PT0 = 1; //关键,让定时器中断优先级高于外部中断
EA=1; //开总中断
while(1);
}
外部中断0嵌套定时器中断
-
运行的效果是每按键产生一次外部中断,相对中断按键延迟一段时间后LED翻转。
转载于:https://blog.51cto.com/2942350/723160