已经解决问题了,但是不理想,延时去抖不能用在中断程序里,造成按键不可靠,进入中断后关掉中断效果也不好。大家有什么好办法吗?
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit pp=P1^5; sbit k8=P3^3;
bit flag=1, flag1;
uint delay_cnt = 0;
void delay(uint x)
{
uint i, j;
for(i=x; i>0; i--)
for(j=0; j>0; j--);
}
void main()
{
IT1=1;
EX1=1;
EA=0;
while(1)
{ if(flag==1)
{
pp=~pp;
delay(10);
}
if(k8==0)
{ delay(10);
if(k8==0);
if(flag1==1)
{
flag=~flag;
flag1=0;
}
EA=1;
}
}
}
void int1_serv() interrupt 2
{ EA=0;
flag1 = 1;
}
|