|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机学习:基于状态机的按键对时程序(短按,长按,连发) + \) ^, l! g4 c- t+ S# A8 Z# q; N
$ |- w$ W# U1 @( L: A! p1 Q* Z# M: o8 @
6 j. M6 x8 P0 c5 }
6 a1 n" F$ B& {' |4 L! i0 [4 y& Y之前的电子钟程序中,用的按键消抖处理方法是10ms的延时,这种方法效率比较低
& ~' s. @6 C# ] X所以现在利用状态机原理重写一下,效率很高啊
0 h' H: O) u: c' A. ^2 e2 i9 v- M. P3 e$ n2 F1 L6 A
4个独立按键中用到3个,* Q- `, S( G5 S8 n# X- }2 P! K' C# p
keys5用于切换对时分秒等状态,keys2是减小数值,keys3是增加数值
2 a& O9 M) z( s* r0 k, U
( _3 d F/ z- f- C+ \同时可以判断按键的"短按,长按,连发"等功能' r% R3 A2 q9 c |
小于2秒视为短按,) }) Z% W4 U3 N: Z
大于2秒视为长按,$ T1 o1 Z& Q/ `+ \$ w, U
在长按状态下每0.2秒自动连发一次, 这样对时的时候就不用按N次了
5 Y, g' f( r% }# g6 H% Y G( K" U* d% S) k' Z2 O! H
, _3 R. [8 O( P- ]程序分很多个文件 ,Keil uVision4 打包
6 X5 b) n- o! n- H! F& c4 V) ]( W" ~; N
; g7 P& Z: u7 s# Y" D
, r3 j1 j. Y( ^1 F, d
8 i- s3 X9 F8 J r+ P- r4 E
5 a+ s8 l, a/ R4 L( g( j# ~
+ H: c( _3 b5 k |
|