220 likes | 284 Views
第 6 章. 計時與計數器. 相關 SFR. P_Timebase_Setup 暫存器 P_TimerA_Ctrl 暫存器 P_TimerA_Data 暫存器 ( 時間常數 ) P_TimerB_Ctrl 暫存器 P_TimerB_Data 暫存器 ( 時間常數 ) P_INT_Ctrl 暫存器. 時基信號產生器的結構. P_Timebase_Setup 暫存器. Timebase 頻率選擇. TimerA 結構. P_TimerA_Ctrl 暫存器. 時脈源 A 選擇位元 b2 - b0. 時脈源 B 選擇位元 b5 - b3.
E N D
第6章 計時與計數器
相關SFR • P_Timebase_Setup暫存器 • P_TimerA_Ctrl暫存器 • P_TimerA_Data暫存器(時間常數) • P_TimerB_Ctrl 暫存器 • P_TimerB_Data暫存器(時間常數) • P_INT_Ctrl暫存器
TMB1 Frequency內建常數 • C_TMB1_8Hz 8 Hz • C_TMB1_16Hz 16 Hz • C_TMB1_32Hz 32 Hz • C_TMB1_64Hz 64 Hz
規劃TimerA計時1秒 • 以TimerA 計數頻率選擇 2048Hz • 要完成1秒的定時,計數次數應該為2048 次,轉換為 16 進制數為 800, • 0xFFFF-0x0800+1=0xF800 • *P_TimerA_Ctrl = C_SourceA_1 + C_SourceB_2048Hz; • *P_TimerA_Data =0xF800;
規劃TimerA計時1秒 • 以TimerA 計數頻率選擇 Fosc/ 2 Hz • 24576000/2=12288000,超出16bit計數範圍,用2層,即先降頻至8000Hz,在ISR中計數8000次即一秒 • 24576000/(2*Y)=8000 • Y=1536=(600)H , • 計數初值0xFFFF-0x0600 +1 = 0xFA00。 • *P_TimerA_Ctrl = C_SourceA_Fosc2 + C_SourceB_1; • *P_TimerA_Data =0xFA00;或者寫 • *P_TimerA_Data = 65536 – 1536;
TMB2 Frequency內建常數 • C_TMB2_128Hz 128 Hz • C_TMB2_256Hz 256 Hz • C_TMB2_512Hz 512 Hz • C_TMB2_1024Hz 1024 Hz
範例 • 6-1 0.5秒單燈左移(TimerA)