#include
unsigned char cont;//定义按键计数变量
void delayms(unsigned char time)//stc 1t 12MHz 1ms延时
{
unsigned char a,b,c;
while(time--)
for(c=1;c>0;c--)
for(b=222;b>0;b--)
for(a=12;a>0;a--);
}
void main(void)
{
P2=cont=0;
IT0=1;//设置触发方式为下降沿触发
EX0=1;//打开外部中断0
EA=1;//打开总中断
while(1)
{
if(!P3_5)//检测到S2按下
{
P2=cont=0;//清零数值
delayms(200);
}
}
}
void EXinterrupt0(void)interrupt 0//外部中断0
{
EX0=0;//关闭中断避免重复触发
IE0=0;//清零外部中断0标志位
cont++;//按键计数+1
P2=cont;//输出到P2显示
delayms(200);//延时段时间
EX0=1;//恢复外部中断0
}
亲,按键是有抖动的,记得消抖哦,要不一次按键会产生多次计数的