Microchip C18 有內置支持 Timer 計時器函數庫模塊 (timers.h),衹需要用包括 timers 頭文件 (
功能 – CloseTimersx ( 禁止指定的計時器)
原型:void CloseTimerx( void );
說明 – 該函數禁止中斷和指定的計時器
功能 – OpenTimer0 (配置timer0)
原型:void OpenTimer0( unsigned char config ) ;
參數:config
說明:該函數按照指定的選項配置timer0
範例:OpenTimer0( TIMER_INT_OFF & T0_8BIT & T0_SOURCE_INT & T0_PS_1_32 ) ;
OpenTimer0 | 選項配置 | 說明 |
允許Timer0 中斷 | TIMER_INT_ON | 允許中斷 |
TIMER_INT_OF | 禁止中斷 | |
計時器寬度 | T0_8BIT | 8 位元模式 |
T0_16BIT | 16 位元模式 | |
時鐘源 | T0_SOURCE_EXT | 外部時鐘源(I/O 引腳) |
T0_SOURCE_INT | 內部時鐘源(TOSC) | |
外部時鐘觸發(T0_SOURCE_EXT) | T0_EDGE_FALL | 外部時鐘下降沿 |
T0_EDGE_RISE | 外部時鐘上升沿 | |
預分頻值 | T0_PS_1_1 | 1:1 預分頻 |
T0_PS_1_2 | 1:2 預分頻 | |
T0_PS_1_4 | 1:4 預分頻 | |
T0_PS_1_8 | 1:8 預分頻 | |
T0_PS_1_16 | 1:16 預分頻 | |
T0_PS_1_32 | 1:32 預分頻 | |
T0_PS_1_64 | 1:64 預分頻 | |
T0_PS_1_128 | 1:128 預分頻 | |
T0_PS_1_256 | 1:256 預分頻 |
功能 – OpenTimer1 (配置timer1)
原型: void OpenTimer1( unsigned char config ) ;
參數: config
說明: 該函數按照指定的選項配置timer1
範例: OpenTimer1( TIMER_INT_ON & T1_8BIT_RW & T1_SOURCE_EXT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF & T1_SOURCE_CCP ) ;
OpenTimer1 | 選項配置 | 說明 |
允許Timer1 中斷 | TIMER_INT_ON | 允許中斷 |
TIMER_INT_OF | 禁止中斷 | |
計時器寬度 | T1_8BIT_RW | 8 位元模式 |
T1_16BIT_RW | 16 位元模式 | |
時鐘源 | T1_SOURCE_EXT | 外部時鐘源(I/O 引腳) |
T1_SOURCE_INT | 內部時鐘源(TOSC) | |
振盪器使用 | T1_OSC1EN_ON | 使能Timer1 振盪器 |
T1_OSC1EN_OFF | 禁止Timer1 振盪器 | |
同步時鐘輸入 | T1_SYNC_EXT_ON | 同步外部時鐘輸入 |
T1_SYNC_EXT_OFF | 不同步外部時鐘輸入 | |
預分頻值 | T1_PS_1_1 | 1:1 預分頻 |
T1_PS_1_2 | 1:2 預分頻 | |
T1_PS_1_4 | 1:4 預分頻 | |
T1_PS_1_8 | 1:8 預分頻 |
功能 – OpenTimer2 (配置timer2)
原型:void OpenTimer2( unsigned char config ) ;
參數:config
說明:該函數按照指定的選項配置timer2
範例:OpenTimer2( TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_8 ) ;
OpenTimer2 | 選項配置 | 說明 |
允許Timer2 中斷 | TIMER_INT_ON | 允許中斷 |
TIMER_INT_OF | 禁止中斷 | |
預分頻值 | T2_PS_1_1 | 1:1 預分頻 |
T2_PS_1_4 | 1:4 預分頻 | |
T2_PS_1_16 | 1:16 預分頻 | |
後分頻值 | T2_POST_1_1 | 1:1 後分頻 |
T2_POST_1_2 | 1:2 後分頻 | |
T2_POST_1_3 | 1:3 後分頻 | |
T2_POST_1_4 | 1:4 後分頻 | |
T2_POST_1_5 | 1:5 後分頻 | |
T2_POST_1_6 | 1:6 後分頻 | |
T2_POST_1_7 | 1:7 後分頻 | |
T2_POST_1_8 | 1:8 後分頻 | |
T2_POST_1_9 | 1:9 後分頻 | |
T2_POST_1_10 | 1:10 後分頻 | |
T2_POST_1_11 | 1:11 後分頻 | |
T2_POST_1_12 | 1:12 後分頻 | |
T2_POST_1_13 | 1:13 後分頻 | |
T2_POST_1_14 | 1:14 後分頻 | |
T2_POST_1_15 | 1:15 後分頻 | |
T2_POST_1_16 | 1:16 後分頻 |
功能 – OpenTimer3 (配置timer3)
原型:void OpenTimer3( unsigned char config ) ;
參數:config
說明:該函數按照指定的選項配置timer3
範例:OpenTimer3( TIMER_INT_ON & T3_8BIT_RW & T3_SOURCE_EXT & T3_PS_1_1 & T3_OSC1EN_OFF & T3_SYNC_EXT_OFF & T3_SOURCE_CCP ) ;
OpenTimer3 | 選項配置 | 說明 |
允許Timer3 中斷 | TIMER_INT_ON | 允許中斷 |
TIMER_INT_OF | 禁止中斷 | |
計時器寬度 | T3_8BIT_RW | 8 位元模式 |
T3_16BIT_RW | 16 位元模式 | |
時鐘源 | T3_SOURCE_EXT | 外部時鐘源(I/O 引腳) |
T3_SOURCE_INT | 內部時鐘源(TOSC) | |
預分頻值 | T3_PS_1_1 | 1:1 預分頻 |
T3_PS_1_2 | 1:2 預分頻 | |
T3_PS_1_4 | 1:4 預分頻 | |
T3_PS_1_8 | 1:8 預分頻 | |
同步時鐘輸入 | T3_SYNC_EXT_ON | 同步外部時鐘輸入 |
T3_SYNC_EXT_OFF | 不同步外部時鐘輸入 | |
供CCP 使用 | T1_SOURCE_CCP | Timer1作為兩個CCP 的時鐘源 |
T3_SOURCE_CCP | Timer3作為兩個CCP 的時鐘源 | |
T1_CCP1_T3_CCP2 | Timer1作為CCP1 的時鐘源,Timer3 作為 CCP2 的時鐘源 |
功能 – OpenTimer4 (配置timer4)
原型:void OpenTimer4( unsigned char config ) ;
參數:config
說明:該函數按照指定的選項配置timer4
範例:OpenTimer4( TIMER_INT_OFF & T4_PS_1_1 & T4_POST_1_8 ) ;
OpenTimer4 | 選項配置 | 說明 |
允許Timer4 中斷 | TIMER_INT_ON | 允許中斷 |
TIMER_INT_OF | 禁止中斷 | |
預分頻值 | T4_PS_1_1 | 1:1 預分頻 |
T4_PS_1_4 | 1:4 預分頻 | |
T4_PS_1_16 | 1:16 預分頻 | |
後分頻值 | T4_POST_1_1 | 1:1 後分頻 |
T4_POST_1_2 | 1:2 後分頻 | |
T4_POST_1_3 | 1:3 後分頻 | |
T4_POST_1_4 | 1:4 後分頻 | |
T4_POST_1_5 | 1:5 後分頻 | |
T4_POST_1_6 | 1:6 後分頻 | |
T4_POST_1_7 | 1:7 後分頻 | |
T4_POST_1_8 | 1:8 後分頻 | |
T4_POST_1_9 | 1:9 後分頻 | |
T4_POST_1_10 | 1:10 後分頻 | |
T4_POST_1_11 | 1:11 後分頻 | |
T4_POST_1_12 | 1:12 後分頻 | |
T4_POST_1_13 | 1:13 後分頻 | |
T4_POST_1_14 | 1:14 後分頻 | |
T4_POST_1_15 | 1:15 後分頻 | |
T4_POST_1_16 | 1:16 後分頻 |
功能 – ReadTimerx (讀取指定計時器的值)
原型:unsigned int ReadTimerx( void ) ;
說明:這些函數讀取各個計時器寄存器的值。
Timer0: TMR0L,TMR0H
Timer1: TMR1L,TMR1H
Timer2: TMR2
Timer3: TMR3L,TMR3H4
Timer4: TMR4
注:當使用可配置為 16 位元模式、但工作在8 位元模式的計時器(如 timer0)時,高位元組並不保證為 0。用戶可能希望將結果強制轉換為字符型,以得到正確的結果。
範例:
// Example of reading a 16-bit result
// from a 16-bit timer operating in
// 8-bit mode:
unsigned int result;
result = (unsigned char) ReadTimer0();
功能 –WriteTimerx (讀取指定計時器的值)
原型:void WriteTimerx( unsigned int timer ) ;
說明:這些函數將值寫入到相應的計時器寄存器:
Timer0: TMR0L,TMR0H
Timer1: TMR1L,TMR1H
Timer2: TMR2
Timer3: TMR3L,TMR3H
Timer4: TMR4
範例:WriteTimer0( 10000 ) ;
2011 年 02 月 28 日 天氣報告
氣溫:21.5 度 @ 23:00
相對濕度:百分之72%
天氣:天色大致良好