每按下一次按键LED小灯状态改变一次
下降沿触发就是当电平由高变低的一瞬间进行响应,而且就响应一次
#include<reg51.h>
#define uchar unsigned char
uchar now,formerly;
sbit LED1=P1^0;
sbit KEY1=P0^0;
void delay_ms(uchar ms) //延时函数
{
uchar i,j;
for(i=ms;i>0;i--)
for(j=114;j>0;j--);
}
void keys() //判断按键是否按下
{
formerly=now; //formerly用来存储旧值,相邻周期新旧值替换
if(KEY1==0) //按键按下
{
delay_ms(10); //消抖
if(KEY1==0)
now=0; //相当于低电平0
}
else //如果按键没有按下,新旧值都置一
{formerly=1;now=1;}
}
void main()
{
while(1)
{
keys();
if(formerly!=now) //如果新旧值不同,代表着下降沿到来,LED状态改变
LED1=~LED1;
}
}