PIC24FJ64GA008 Timer2 是 B類型計時器是 16-bit Timer(0 ~ 65535),計時器程式是會使用到中斷服務。計時器都是基於系統時鐘作基準,在計時器模式下,首先使用 PRx 寄存器設定的預設時間,預分頻器設置,然後啓動計時器,計時器的數值在每個指令週期都會遞增,當計時器的數值遞增至 PRx 寄存器預設數值,便會觸發中斷服務程式,處理完成中斷服務程式,計時器便會重置,數值從新開始遞增。
PIC24FJ64GA008 Timer2 LCD1602 顯示程式 |
1) 將 TON 位置1 (= 1)。
2) 使用 TCKPS1:TCKPS0 位選擇計時器的預分頻比。
3) 使用 TCS 和 TGATE 位元選擇時鐘和門控模式。
4) 將 TSYNC 位置 1 或清零分別配置為同步或非同步操作。
5) 將計時器的週期值裝載到 PR2 寄存器。
6) 如果需要中斷,將中斷允許位 T2IE 置1。使用優先級 T2IP2:T2IP0 位設置中斷優先順序。
Microchip
PIC24FJ64GA008 Timer2 初始化程式:
#include
// Initialise Timer2
CloseTimer2(); //
Timer2 Close
ConfigIntTimer2(T2_INT_ON); // Timer2 Interrupt ON
SetPriorityIntT2(1); //
Set Interrupt Priority 0~7
OpenTimer2
(
T2_ON
& // Timer2 ON
T2_IDLE_CON & //
Idle Time Continue Run
T2_GATE_OFF & //
Timer2 Gate Time Accumulation OFF/ON
T2_32BIT_MODE_OFF & // Timer2 32-bit Mode OFF/ON
T2_PS_1_64 & // Prescaler 1:1/8/64/256
T2_SOURCE_INT, //
Timer2 Source Oscillator INT/EXT
0x5000 // PR2=0~65535
);
|
Microchip
PIC24FJ64GA008 Timer2 中斷程式:
int t1;
// Timer2 Interrupt
void __attribute__((interrupt, no_auto_psv))
_T2Interrupt(void) {
IFS0bits.T2IF = 0;
SetDDRamAddr(0x40);
WriteNbXLCD(t1);
t1++;
}
|
PIC24FJ64GA008 Timer2 程式執行 |
沒有留言:
張貼留言