一、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++