簡體   English   中英

如何在16位模式下使Timer0使用1:64的預分頻器?

[英]How to make timer0 use a prescaler of 1:64 in 16 bit mode?

我確實對定時器沒有很好的了解,但是我試圖更改timer0以使其在16位模式下使用1:64的預分頻器嗎? 我從Microchip那里獲得了定時器代碼,它使用的是8位模式,沒有預分頻器。 下載文件

這是我懷疑必須處理預分頻器的部分代碼。

TMR_CON = 0b00000000 | CLOCK_DIVIDER_SETTING;
TMR_IP = 1;
TMR_IF = 0;
TMR_IE = 1;
TMR_ON = 1;

這是來自PIC18F87J11數據手冊中有關預分頻器的一些信息

T0PS2:T0PS0: Timer0 Prescaler Select bits   
111 = 1:256 Prescale value
110 = 1:128 Prescale value
101 = 1:64   Prescale value
100 = 1:32   Prescale value
011 = 1:16   Prescale value
010 = 1:8     Prescale value
001 = 1:4     Prescale value
000 = 1:2     Prescale value

我假設要使用1:64預分頻器,必須將代碼更改為以下代碼,對嗎?

TMR_CON = 0b00000101 | CLOCK_DIVIDER_SETTING;
TMR_IP = 1;
TMR_IF = 0;
TMR_IE = 1;
TMR_ON = 1;

現在,請告訴我如何將其從8位模式更改為16位模式? 就像我說的我是初學者一樣,所以請以我的理解水平進行解釋。

提前感謝!

從Microchip數據表:

T0CON: TIMER0 CONTROL REGISTER   

bit 7 TMR0ON: Timer0 On/Off Control bit
  1 = Enables Timer0
  0 = Stops Timer0
bit 6 T08BIT: Timer0 8-Bit/16-Bit Control bit
  1 = Timer0 is configured as an 8-bit timer/counter
  0 = Timer0 is configured as a 16-bit timer/counter
bit 5 T0CS: Timer0 Clock Source Select bit
  1 = Transition on T0CKI pin input edge
  0 = Internal clock (FOSC/4)
bit 4 T0SE: Timer0 Source Edge Select bit
  1 = Increments on high-to-low transition on T0CKI pin
  0 = Increments on low-to-high transition on T0CKI pin
bit 3 PSA: Timer0 Prescaler Assignment bit
  1 = TImer0 prescaler is not assigned; Timer0 clock input bypasses prescaler
  0 = Timer0 prescaler is assigned; Timer0 clock input comes from prescaler output
bit 2-0 T0PS<2:0>: Timer0 Prescaler Select bits
  111 = 1:256 Prescale value
  110 = 1:128 Prescale value
  101 = 1:64 Prescale value
  100 = 1:32 Prescale value
  011 = 1:16 Prescale value
  010 = 1:8 Prescale value
  001 = 1:4 Prescale value
  000 = 1:2 Prescale value
  1. 將T08BIT位清零以選擇16位模式。
  2. 如果您不想將內部時鍾(FOSC / 4)用作Timer0 /預分頻器輸入,則將T0CS位清零。
  3. 清零PSA位以選擇預分頻器。
  4. 將T0PS <2:0>設置為選擇預分頻比。
  5. 將TMR0ON設置為1,使能定時器0。

等於:

T0CON =b'10000nnn' //where nnn is Prescaler value

如果需要在Timer0溢出時進行中斷,則還應使能Timer0中斷位(GIE / GIEH,PEIE / GIEL,TMR0IE,TMR0IF)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM