长按与短按可以通过调整中断触发之间的间隔来确定
这里的按键,可以用边沿触发,上升沿触发计时,下降沿触发停止计时
正在用的按键扫描程序,短小精悍,长按键加上计时变量,时间没到,为短按,超时为长按
unsigned char read_data=(PORT&0x30)^0x30; //按键扫描 key_down=read_data&(read_data^key_cont); //按键上升沿 key_up=key_cont&(read_data^key_cont); //按键下降沿 key_cont=read_data; //按键长效值
就定時器計時就可以了
基本上直接調用sys_tick
然後按鍵設為外部上升沿,下降沿中斷
計算時間差值即可