独立按键的方式可以采用两种:
第一种是扫描的方式:
按键消抖有两个,按下时候和松手时候需要消抖,消抖一般通过延时来消除。
sbit key=P3^3; //位定义与P3^3口相连的独立按键
uchar num;
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void key_scan() 这个只是用了按下时候消除抖动,松手时候没有消抖
{
if(key==0) //判断是否按键被按下
{
delay(1); //延时用以消除抖动 消除按键按下时候的抖
if(key==0) //再次判断按键是否依然是按下状态
{
while(!key); //等待按键松手
num++;
if(num==16) //num用来指示按键按一下,就计数一次
num=0;
{ 这个还可以添加自己的应用程序,即按键按下时候执行相应操作,或者这里按键按下给个标志位}
}
}
}
void main()
{
while(1)
{
key_scan(); //调用按键扫描程序
P1=~num; //将结果通过P1口小灯显示
}
}
/*
按键检测流程:判断按下,延时消抖再判断,等待按键松手再操作
注:此处可以将按键结果通过数码管显示,程序自己调整
还可以按下面这样写,写两个消除抖动,进行两次消除抖动处理
void key_scan()
{
if(key==0) //判断是否按键被按下
{
delay(1); //延时用以消除抖动 消除按键按下时候的抖
if(key==0) //再次判断按键是否依然是按下状态
{
num++;
if(num==16) //num