欢迎来到天天文库
浏览记录
ID:47665808
大小:55.00 KB
页数:6页
时间:2020-01-27
《单片机STM8按键长短按》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//------------------------------------------------------------------------------unsignedcharKey_Sample1=0;//Key_Sample1当前对按键采样的值unsignedcharKey_Sample2=0;//Key_Sample2上一次对按键采样的值unsignedcharKey_Scan_old=0;//上一次有效的键值状态,必需连续两次的采样值相同才能载入该变量unsignedcharKey_Dow
2、n_flag=0;//键盘按下标识,注意是经过消抖后确认的按下标志unsignedintKey_Down_Counter=0;//用于消抖的计数器unsignedcharKey_Value=0;//最终经过确认的键值unsignedcharKey_flag_long=0;//长按键标识unsignedintKey_Down_Counter_l=0;//长时按键计数器unsignedcharKey_flag=1;//按键标志//----------------------------------------
3、--------------------------------------voidKeyScan_Service(void){Key_Sample1=(PB_IDR&0x3E);//Key_Sample1当前对按键采样的值if(Key_Sample1==Key_Sample2)//Key_Sample2上一次对按键采样的值{if((PB_IDR&0x3E)!=0){if(Key_Down_flag==0){if(Key_Sample1==Key_Scan_old){Key_Down_Counter++;
4、//用于消抖的计数器if(Key_Down_Counter>=10){Key_Down_Counter=0;Key_Down_flag=1;//键盘按下标识,注意是经过消抖后确认的按下标志Key_Down_Counter_l=0;Key_Value=Key_Sample1;}}else{Key_Down_Counter=0;Key_flag_long=0;}}else{Key_Down_Counter_l++;if(Key_Down_Counter_l>=200){Key_flag_long=1;//长时
5、按键标志Key_Down_Counter_l=0;}}}else{if(Key_Down_flag==1){Key_Down_flag=0;Key_Down_Counter=0;Key_flag_long=0;Key_Down_Counter_l=0;Key_flag=1;//短按表示Key_Value=0;}}Key_Scan_old=Key_Sample1;//上一次有效的键值状态,必需连续两次的采样值相同才能载入该变量}Key_Sample2=Key_Sample1;}/**************
6、*****************************************************************Key_flag短按标志Key_flag_long长按标志*******************************************************************************/voidsky_answer(void){switch(Key_Value){//----------------------------------------
7、--------------------------------------case0x10://设置PB4sky1{if(Key_flag==1&&set_num!=0){set_num++;skip=0;Key_flag_long=0;Key_flag=0;if(set_num==1){LED_state=3;move_num=0;//设置}elseif(set_num==2){LED_state=4;move_num=0;//周长girth_buff=girth;speaData(girth_buf
8、f);if(length_buff!=length){length=length_buff;eeprom_save(1);Motorleng_close();}}elseif(set_num==3){LED_state=1;//功能一speaData(SPeed);if(girth_buff!=girth){girth=girth_buff;eeprom_save(3);}}elseif(set_num==4)//LED_st
此文档下载收益归作者所有