蓝桥杯单片机必备知识-----(5)独立按键
独立按键
注:在使用独立按键部分时,需将跳线帽放置BIT端
代码逻辑:
1.放在while(1)一直扫描按键是否按下
2.放在中断中 中断一次扫描按键是否按下
注:大型项目会放在中断中进行,一直扫描会占用过多资源,如果参加比赛则可以在while中一直使用循环
按键扫描函数
void read_key()
{
uchar temp;
static unsigned state = 0; //状态
temp = P3 & 0x0f; //临时存储P3的状态
switch(state)
{
case 0:{
if(P3 != 0x0f) state = 1;}break; //状态0,检测到有按键按下
case 1: //再次检测是否有按键按下,消抖
{
if(P3 != 0x0f){
switch(temp)
{
case 0x0e:{
s7++;state = 2;}break; //如果S7按键对应的状态改变,则s7++
case 0x0d:{
s6++;state = 2;}break; //如果S6按键对应的状态改变,则s7++
case 0x0b:{
s5++;state = 2;}break; //如果S5按键对应的状态改变,则s7++
case 0x07:{
s4++;state = 2;}break; //如果S4按键对应的状态改变,则s7++
}