/*按键扫描*/ void key_scan(void) { if(CLEAR_KEY==0) { if(key_c1==1) { key_c1=0; key_time1=0; //短按; } if(key_time1>LONG_KEY_TIME) //长按 { if(key_c1==0) { key=2; key_c1=255; speaker(0,30,30); } } } else { if(key_c1==0) { if(key_time1>5) //--------------去掉下降沿产生的抖动------------; { key=1; DW_Buzzer(10); //响200ms speaker(0,10,10); } } key_c1=1; } if(key_c1==1) { if(SAVE_KEY==0) { if(key_c2==1) { key_c2=0; key_time2=0; } if(key_time2>LONG_KEY_TIME) //长按 { if(key_c2==0) { key=2; key_c2=255; speaker(0,30,30); } } } else { if(key_c2==0) { if(key_time2>5) { key=3; DW_Buzzer(10); speaker(0,10,10); } } key_c2=1; } } if(key==1) set_zero(); else if(key==2) //单位转换 { DW_Buzzer(10); speaker(0,10,10); warn_num=0; danwei=(~danwei)&0x01; SwitchUnit(danwei); DW_DispHisData(now_page,0);//显示当前页,从0行开始显示 } else if(key==3) { SaveConcentration();//保存数据 now_page=page_nums; DW_DispHisData(now_page,0);//显示当前页,从0行开始显示 DW_DispPageNum(); } key=0; }
时间: 2024-03-28 18:39:40 浏览: 136
keyscan按键扫描例程
这是一个按键扫描函数,用于检测按键的状态并根据不同状态执行相应的操作。其中,CLEAR_KEY和SAVE_KEY是两个输入引脚,key_c1和key_c2是两个变量,用于记录按键的状态,key_time1和key_time2是两个计时器,用于记录按键按下的时间,key是一个变量,用于记录按键的类型。函数中还包含了一些其他的函数调用,用于实现具体的功能,比如单位转换和保存数据等。
阅读全文