100 likes | 227 Views
Robot Team of MIAT Lab Timer 與 Interrupt. 指導教授 陳慶瀚 講者 賴史瑞. Timer. Timer 的時脈來源有兩種 ★ 8051 的內部時脈 -SYSCLK ★ 從 T0 與 T1 接腳所輸入的外部時脈 - 訊號產生器. TMOD 與 TCON. TMOD 的結構 時脈來源的選擇是由 TMOD 暫存器中的 C/T 位元來決定。當 C/T 設定為 1 時, Timer 使用外部時脈;當 C/T 設定為 0 時, Timer 使用內部時脈。 TCON 的結構
E N D
Robot Team of MIAT LabTimer與Interrupt 指導教授 陳慶瀚 講者 賴史瑞
Timer • Timer的時脈來源有兩種 ★ 8051的內部時脈-SYSCLK ★從T0與T1接腳所輸入的外部時脈-訊號產生器
TMOD與TCON • TMOD的結構 • 時脈來源的選擇是由TMOD暫存器中的C/T位元來決定。當C/T設定為1時,Timer使用外部時脈;當C/T設定為0時,Timer使用內部時脈。 • TCON的結構 • 當TCON暫存器中的TR0為1時,則Timer0由TMOD暫存器的GATE位元與INT0接腳構成Timer的軟體控制;當TCON暫存器中的TR0為0時,則Timer0將停止計時/計數。
Mode0 • 13位元Timer-由THx 8位元與TLx 5位元組成 • 13位元Timer的最大值為8192 • 當你要算5000次時 THx = (8129-5000)/32 TLx = (8192-5000)%32
Mode1 • 16位元Timer-由THx 8位元與TLx 8位元組成 • 16位元Timer的最大值為65536 • 當你要算5000次時 THx = (65536-5000)/256 TLx = (65536-5000)%256
Mode2 • 8位元自動重載Timer (適合用在需要固定時間的計時 ) • 計數完畢會把THx的值載入TLx中 • 8位元Timer的最大值為256 • 當你要算200次時 THx = 256-200
Mode3 • 兩個獨立的8位元Timer • Timer0用TL0 暫存器 • Timer1用TH0 暫存器 • 8位元Timer的最大值為256 • 當你要算200次跟300次時 TH0 = 256-200 TL0 = 256-300
Timer與Interrupt • IE的結構
Timer與Interrupt(con.) • Timer0與Timer1的interrupt的產生 當Timer值產生overflow時,則對應之flag TF0與TF1設定為〝1〞;而當對應的interrupt服務副程式執行完畢後,要清除TF0與TF1 flag。 • 範例程式
練習時間 • 練習 請用Mode2讓LED每秒改變一次狀態 範例程式