危機處理- 絶対に賣不出去的碼表
各位同學今天要做的是碼表
就是在跑1600那種老師可以拿來記錄秒數的碼表
那我們就先來處理名次紀錄的部分
名次(秒數)紀錄:
在void RTC_IRQHandler(void) 函式下尻入下列程式碼判讀鍵盤跟print出時間
歐對記得宣告TEXT陣列兄弟們還有變數N
變數N在這裡的主要功能是保持紀錄的優先順序(key1被按之前key2,key3都不能按,etc)
key=Scankey();//讀取鍵盤值
if(key==1&&N==0){
N=1;
sprintf(TEXT3,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond);
print_lcd(2, TEXT3);
}
if(key==2&&N==1){
N=2;
sprintf(TEXT4,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond);
print_lcd(1, TEXT4);
}
if(key==3&&N==2){
N=3;
sprintf(TEXT5,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond);
print_lcd(0, TEXT5);
}
接下來要弄暫停跟重制:
一樣都放在void RTC_IRQHandler(void)函式下
1.暫停基本上跟記錄秒數一樣,就是把跑秒數的那一行拿來print按下key4當的秒數
但是! 此時要把不停更新當前秒數的程式碼暫停(下一段會說明)
2.重制很簡單就是先清除螢幕在重啟RTC
if(key==4){ //暫停
N=4;
sprintf(TEXT6,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond);
print_lcd(3, TEXT6);
}
if(key==5){ //重制
N=0;
clr_all_pannal();
InitRTC();
}
最後是停止更新當前時間的部分:
找到不斷顯示當前時間的程式碼的所在地
一樣也在void RTC_IRQHandler(void)函式下
一個 if(t_flag==1)判斷式的底下
把它改成if(t_flag==1&&N!=4)
因為暫停的時候我會令N=4故不會執行!
留言
張貼留言