文档详情

单片机STM8按键长短按.doc

发布:2017-12-10约8.49千字共6页下载文档
文本预览下载声明
//------------------------------------------------------------------------------ unsigned char Key_Sample1=0; //Key_Sample1当前对按键采样的值 unsigned char Key_Sample2=0; //Key_Sample2 上一次对按键采样的值 unsigned char Key_Scan_old=0; //上一次有效的键值状态,必需连续两次的采样值相同才能载入该变量 unsigned char Key_Down_flag=0; //键盘按下标识,注意是经过消抖后确认的按下标志 unsigned int Key_Down_Counter=0; //用于消抖的计数器 unsigned char Key_Value=0; //最终经过确认的键值 unsigned char Key_flag_long=0; //长按键标识 unsigned int Key_Down_Counter_l=0; //长时按键计数器 unsigned char Key_flag=1; //按键标志 //------------------------------------------------------------------------------ void KeyScan_Service(void) { Key_Sample1 =(PB_IDR0x3E); // Key_Sample1 当前对按键采样的值 if(Key_Sample1==Key_Sample2) //Key_Sample2 上一次对按键采样的值 { if((PB_IDR0x3E)!=0) { if(Key_Down_flag==0) { if(Key_Sample1==Key_Scan_old) { Key_Down_Counter++; //用于消抖的计数器 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; //长时按键标志 Key_Down_Counter
显示全部
相似文档