利用1个按键完成一个按键计数程序。
发布网友
发布时间:2022-04-25 22:22
我来回答
共4个回答
热心网友
时间:2022-06-18 03:05
给个建议
1,打开一个定时器,模式选用自动重载,中断为125us
2,,利用定时器建立一个时基,申请全局变量time_125us,time_1ms,time_100us,time_1s等等建立一个时钟。
3,按键消抖用采集计数法,不能用延时
4,显示哪一位用个标志,这个标志在时基里处理
5,整个主循环里不应该有忙延时,除非这个忙延时不超过50us,当然也有例外
6,整个主循环循环一次应该在1到2ms内扫描结束,最多不能超过5个ms,当然也有例外,这样才能体现出所有的子程序好像是并行执行的,像你这种简单的程序应该是200--300us内执行完
热心网友
时间:2022-06-18 03:05
void keyscan(){ //假定10ms扫描一次
static uchar keyNum = 0;
if(key1 == 0){ //按下
if(keyNum == 3){ //消抖延时30ms,可以自己定时 delayTime = n * 10
fun(); //按键有效时处理函数
}
if(keyNum < 3 + 1) // 为 n + 1
keyNum ++;
}else
keyNum = 0;
}
/* 这里消抖不是直接用延时,而是计算按下按键的持续时间,
热心网友
时间:2022-06-18 03:06
tthhjrtrthrthrt
热心网友
时间:2022-06-18 03:06
oo