独立按键的使用较为简单,一般需特别注意按键的抖动;因为按键的开关都有抖动,而如果在抖动时间内检测按键状态就会不准确,所以一般延时10ms~20ms检测,延时时间可能需要具体修改。
写程序之前先弄明白自己按键连接的引脚,以及按下按键后电平的改变状态。
- 按键k1连接在P3.1口; 按下按键,按键电平变为低电平;
- led1连接在P2.0口;led1低电平点亮;
按键控制LED亮灭
#include "reg52.h"
typedef unsigned int u16;
sbit k1=P3^1; //定义P31口是k1
sbit led=P2^0; //定义P20口是led
void delay(u16 i) // 10*i us
{
while(i--);
}
void key()
{
if(k1==0) //检测按键是否按下
{
delay(1500); //抖动延时15ms
if(k1==0) //再次判断按键是否按下
{
led=~led; //按键按下,led状态取反
}
while(!k1); //检测按键是否松开,松开则退出;确保按键松开,不加这句控制不准确
}
}
void main()
{
while(1)
{
key(); //按键
}
}