Re: [問題] 8051計時中斷

看板C_and_CPP作者 (京都念慈庵,賈詡念費翔)時間13年前 (2013/01/18 15:23), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《//ideone.com/mOQRBj》之銘言: : 不知道po在這裡是否對板 如果不對會自d 不好意思 大家 : 問題: : 1.主程式的設定是因為要跑LED的關係嗎? 我不知道你說的是哪部分, 這個範例程式在main裡面是設定timer的動作, TMOD是選定timer要跑的模式, 猜想可能TMOD=0x11是設定兩個timer都跑one time之類的 這部分請去研讀你所使用的MCU manual,關於register設定的部分 TCON |= 0x50; 應該是叫timer開始數 timer開始的時候會做一件事情 就是TL0會一直減少 要數多久算一秒取決你的crystal速度 以timer0來說,因為只有8bit(0xFF就爆了),所以必須用 TH0(高位) TL0(低位)來表達16bit(0xFF FF) TH0^^ ^^TL0 : 2.interrupt 1 這個中斷程式 我看不太懂 : TH0=ValueTH0; TL0=ValueTL0 這部分 : 還有P1開始之後的程式( 算是全部不懂了 但TF0 TR0那些我知道為什麼) : 3. interrupt 3 一樣的地方 Timer interrupt發生時 TF0=1 (觸發中斷,所以近來handler要清0) TH0=0, TL0=0 (因為數完了所以才發生中斷,要重新設定值進去,出中斷後進行下一輪倒數) TR0=0?這我到是忘了,應該要參考TMOD的是定再決定TR0的樣子 P0,P1,P2各是一群GPIO,一個P有8隻接腳 我猜P0.0接了一根LED 看起來是P0.0(P0的第一pin)每半秒(500ms)反向一次(LED明滅) 我再猜P1.0~P1.3接到4個7階顯示器的en線上? 每次interrupt1進去時就更新一個顯示器的數字(依序1.2.3.4這樣更新) P2接的是7階顯示器的顯示線,並且並聯 至於要顯示什麼數字, interrupt3才是你的數字計算本體 Seg7[]是你的顯示pattern 我猜Seg7[0] = 0x3F = 顯示數字'8' _ 8 = | | 等於要在P2.0~P2.6都要拉high=> P2 = 1111111b (0x3F) - | | - 因為看不到你的電路設計所以我只能猜猜猜了~XD 如果真的再不熟可能要去請教程式的原作者比較好~ -- 歪果人都很NICE的,這其中一定有什麼誤會 —╲) ▄▂ \ 為愛走天涯 ▄▄ ® ▂▄from never1111 & Wii -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.230.221 ※ 編輯: drag 來自: 59.124.230.221 (01/18 15:24)

01/18 15:26, , 1F
太有心了,推一個 :)
01/18 15:26, 1F

01/18 16:41, , 2F
超好人, 我當初修微處理機怎麼沒有這種教學XD
01/18 16:41, 2F

01/18 16:41, , 3F
TR0 是控制 timer 0 要不要繼續跑(0 = 停止), 至於有沒
01/18 16:41, 3F

01/18 16:42, , 4F
有用要看 TMOD 決定 (詳細要查書)
01/18 16:42, 4F
※ 編輯: drag 來自: 59.124.230.221 (01/21 13:16)

01/21 13:17, , 5F
很久沒碰,剛好手癢懂一點,有請各位大大指教了~^^
01/21 13:17, 5F
文章代碼(AID): #1G-FXKQ4 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1G-FXKQ4 (C_and_CPP)