危機處理- 絶対に賣不出去的碼表



各位同學今天要做的是碼表
就是在跑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故不會執行!

留言

這個網誌中的熱門文章

PSPICE不正確使用手冊-方波

PSpice不正確使用手冊-下載篇

PSpice不正確使用手冊-畫畫&分析篇