stc12c5a60s2单片机通用中断方式C语言编程读取按键S1,并记录S1按下的的次数,将该次数通过P2端口输出。

2025-01-07 09:45:58
推荐回答(2个)
回答1:

#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
}

回答2:

亲,按键是有抖动的,记得消抖哦,要不一次按键会产生多次计数的