microcontroller
這邊 Timer2 比較特別,他有一個 register 叫 PR2 ,當 TMR2 = PR2 時,就會觸發 overflow ,跟其他的到達最大值不一樣。
Prescaler
Postscaler
如果要停止 Timer0 只要把 TMR0ON 關掉就好了( set the bit to 0 )。
要記得 interrupt code 裡面要把 TMR0IF 設為 0 ,不然會一直觸發 interrupt 。
PIE1
注意這邊計算 delay 時要記得加 extra cycle (就是他會自己把 TMR1H:TMR1L 變成 0 ,雖然你沒有打這段程式碼,但也要算一個 instruction cycle)
要記得 assemble 跟 C 的 config 寫法不一樣
assemble
C
要注意
當你發現你的 prescaler and postscaler 都用到最大值還到達不了他的要求時,就要使用另一個變數來做 counter 了。
PIR2
PIE2
注意,如果同一個 program 裡面用到多個 timer interrupt 時,因為他們都會跳到 0x08 這個 address ,所以在 0x08 這邊要寫一個 check 來檢查到底是哪一個 timer interrupt 了。
注意, ADON bit 只是 enable 而已,要設定 GODONE A/D converter 才會開始動作。
關於 left justified 上面寫適用於 8-bit 的 output ,因為他會只把 8-bit 的結果存入 ADRESH 中,而 ADRESL 中的結果直接捨棄掉,跟我在實驗課聽到的不一樣??