【 】:74c922就要把輸入進來的BCD轉成10進制 【 】: 然後丟到一個變數裡面 一秒鐘中斷就減一次 kller: 恩 【 】: 一秒中斷裡面我寫 那個計時變數減一 然後判斷是否為零 如果是0就切換到輸出陣列的下一個值 【 】: 不用74c922就跟上學期期末一樣而已 用掃描碼 kller: 恩 【 】: 除了需要一個一秒中斷 還需要一個四位元顯示用的中斷 【 】: 每個位元至少30hz的話 四位元輪流跳一次至少要120hz 【 】: 大概是8ms kller: 那段我想說照課本的應該就可以了 【 】: 嗯 【 】: 是因為我看到課本那個範例沒放74c922 程式碼又可以合併 【 】: 加上學長要我不裝 我就乾脆不裝了 【 】: 方便 kller: 但是我想說像你那樣要設定兩邊的時間 kller: 那邊要怎麼寫 【 】: 就輸入四個碼 【 】: 分別放到A變數的十位數 A變數的個位數 B變數的十位數 B變數的個位數 【 】: 然後我把輸入之後的A變數 再設定一個A' 變數 設定用 【 】: 然後把B變數同時也設定成 B' 【 】: 每秒在減就是減A跟B 【 】: 例如當A變成零後 就把A=B' B=(B'+5) 【 】: 這樣 【 】: 然後等到B變成零 就把A=A' B=(A'+5) 【 】:74c922很聰明 你一按他就會有值進入CPU 【 】: 接著把他的BCD碼 用那個if(d==1).....換成十進位 變成一個變數 【 】: 然後因為你是按四次 每次都要丟到一個disp[x]去 【 】: 譬如按第一次 就disp[0] 【 】: 第二次就丟disp[1] 【 】: 輸入歸輸入 顯示是他自己的事 kller: 所以disp要重複寫兩次 【 】: 不 要四次 kller: 寫到disp[3] 【 】: A十位 A個位 B十位 B個位 kller: 你是把這段砍掉然後換成你寫的東西嗎 kller: if(++count_T0==20) { count_T0=0; seconds--; if(seconds==0) { seconds=0; } } 【 】: 沒有 【 】: 因為這段是每一秒減一次秒數 【 】: 我是加在後面判斷他是否歸零 【 】: 判斷A或B是否歸零 【 】: 所以意思就是說 【 】: 我每跳一秒有兩個變數都會減一 【 】: 減一之後當然要寫入到輸出陣列 【 】: disp[0]=TAB[Lseconds/10]; disp[1]=TAB[Lseconds%10]; disp[2]=TAB[Rseconds/10]; disp[3]=TAB[Rseconds%10]; 【 】: 像這樣 我寫在中斷副程式裡面 【 】: 中斷副程式只負責 讀->減一->寫入->判斷->改變變數 【 】: 這是一秒的 【 】: 8ms的工作內容是 【 】: 輸出disp[0] 過8ms 輸出disp[1] 當然 七段四位元顯示腳要跟著換
文章標籤
全站熱搜
創作者介紹
創作者 ktr 的頭像
ktr

不要管別人說什麼,隨著你內心深處真正的感覺認真的揮霍人生吧。

ktr 發表在 痞客邦 留言(0) 人氣(41)