单片机C51中断程序控制LED闪烁和关闭
为什么int0的优先级高于int1,但是在闪烁的时候无法跳出int1循环,如果是因为while(1)死循环的问题,应该如何去改
#include<reg51.h>
#include<intrins.h>
sbit K1=P3^2; // 定义P3口第2个引脚为按键K1所对应的IO口
sbit K2=P3^3; // 定义P3口第3个引脚为按键K2所对应的IO口
void delay(unsigned int m) // 延时函数
{ unsigned int i;
while(m–)
{ for(i=0;i<333;i++);
}
}
void main()
{
P1=0x00;
EX0=1; // 打开外部中断0(INT0)
IT0=1; // 设置INT0为下降沿触发方式
EX1=1; // 打开外部中断1(INT1)
IT1=1; //设置INT1为低电平触发
EA=1; // 打开总中断允许
PX0=1;
while(1)
{
}
}
void int0() interrupt 0
{
P1=0x00;
}
void int1() interrupt 2 // 定义INT1中断服务函数 8个led同时闪烁
{
while(1)
{ P1=0x00; // 将P1口所有LED灯都熄灭
delay(50);
P1=0xff; // 将P1口所有LED灯都点亮
delay(50);
}
while(!K2); // 等待按键K2释放
}
作者:Zxhahahahahaha