/*****************************************************
*函數名稱:void Timer_Init(void)
*函數功能:T2初始化
*入口參數:void
*出口參數:void
*****************************************************/
void Timer2_Init(void)
{
//demo使用,為清楚了解,分開寫,實際操作整個寄存器更節約rom
T2CON1 |= 0x01; //使能T2
T2CON &= ~0x02; //內部時鐘
T2CON &= ~0x01;
T2CON1 &= ~0x40;
T2CON1 &= ~0x20; //000 方式0
T2MOD |= 0x80; //自動重載
T2MOD &= 0x8F;
T2MOD |= 0x20; //FT2=Fsys/16
T2MOD &= ~0x08; //IO不翻轉
TR2 = 0;
//無論是讀或者寫 TL2/TH2(RCAPL2/RCAPH2)的值,必須先停止(TR2=0),否則 T2 將產生不可預知的情況。
//寫操作時:必須先寫 TL2(RCAPL2),再寫TH2(RCAPH2),否則TL2(RCAPL2)的值不能立即反映到內部counter上,
//讀操作時:必須先讀 TL2(RCAPL2),再讀TH2(RCAPH2),否則將讀取到錯誤的值
TL2 = (65536 - 2000) % 256;
TH2 = (65536 - 2000) / 256;
RCAPL2 = (65536 - 2000) % 256;
RCAPH2 = (65536 - 2000) / 256; //2ms
TR2 = 1;
IE1 |= 0x01; //使能中斷
}
|