🐔#include<reg51.h>
#define uchar unsigned char
sbit key = P3^2;
void delay(unsigned int i)//延时函数
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<333;j++){}
}
void main()//主函数
{
EA=1;//总中断允许
EX0=1;//允许外部中断0
IT0=0;//选择外部中断0为电平触发方式
while(1)//循环
{P0=0xfe;}//P0.0口的Led亮
}
void key_scan() interrupt 0 //外部中断0的中断服务函数
{
if(key==0)//判断是否有按键按下
{
delay(10);//延时去抖
if(key==0)
{
P2=0xf7;
P0=0xff;
while(!key);//等待按键松开
P2=0xff;
P0=0xfe;
}
}
}
中断里做延迟是很不好的习惯
1.这部分功能不需要开中断,直接把key scan 方主程序while 执行即可
2如果用中断。要记住一条中断执行要端,你的中断函数里如果按键一直按下就不退出。这会导致系统异常
我也觉得