一、SMG模板
(一)调试后得到的结论
(1)按住按键不懂可连续产生键值,相当于连续按键
nDelaykey = 80;写在DisposeKey()中
(2)按键控制的功能——设置后,应该从变化过程的开始进行(重新流水,重新倒计时)
stop = 0;L_flag=0;
(3)流水灯和动态显示对P0的占用——进行完倒计时再进行流水灯
两个过程不重叠——则在中断函数中设置不同的nTimer
if(stop==1) nTimerSMG++
else if(stop==0&&Led_flag == 1)nTimerLED++
(二)模板
S1动态显示
Init_T0(); Service_T0() {重新赋值; SMG清显+位选+送值+指针回位;}
main(){Init_t0();while(1){}}
S2倒计时=(中断函数中计时)+(主循环中 间隔-- + 至0停止)
Service_T0() { ; ;计时nTimerSMG++}(中断函数中计时)
main () { ;while(1){if(nTimerSMG >= 200) {nTimerSMG= 0; if(stop) Data--; if(Data == 0) stop = 0;}}}(主循环中 间隔-- + 至0停止)
S3键控启停倒计时=(中断 扫描按键)+(处理按键函数 启停标志)
Service_T0{ ; ; ;if{if else} else{if{if}}; }
Dispose_Key{switch(Keycode){case 0x0c: if(bloose==0){stop= !stop;bloose = 1;}}}
S4键控设值倒计时=(处理按键函数 范围内加减值+按键设置后状态暂停+连续按键设置)
Dispos_Key() {case 0x18: if(Data<9999)Data++; flag = 0;L_flag = 0; nDelaykey = 80 }
S5流水灯和动态显示对P0的占用——进行完倒计时再进行流水灯
两个过程不重叠——则在中断函数中设置不同的nTimer
if(stop==1) nTimerSMG++
else if(stop==0&&Led_flag == 1)nTimerLED++
文章介绍了嵌入式系统中使用SMG模板进行的按键控制功能,包括按键的连续检测、倒计时、流水灯和动态显示的处理。通过中断函数和不同的计数器管理,实现了按键启动/停止倒计时,以及设置倒计时值。同时,确保了流水灯和动态显示过程的互不干扰。

被折叠的 条评论
为什么被折叠?



