新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > PIC16位單片機CAN(7)定時器

PIC16位單片機CAN(7)定時器

作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
定時器相對來說是最簡單的了,也沒有什么說的,
每個定時器模塊都是 16 位定時器 / 計數(shù)器,由以下可讀 / 寫寄存器組成:
? TMRx:16 位定時器計數(shù)寄存器
? PRx:與定時器相關(guān)的 16 位定時器周期寄存器
? TxCON:與定時器相關(guān)的 16 位定時器控制寄存器
需要注意的是:
1:定時器是16位了,也可以配置為32位的,具體看文檔,這里使用16位的定時器。
2:PRx:與定時器相關(guān)的 16 位定時器周期寄存器。也就是TMRx的值和PRx值相等時產(chǎn)生中斷。】
下面看程序:
/******************************************************************
初始化Time1為定時器模式
參數(shù):
******************************************************************/
void Time1Init(void)
{
T1CONbits.TON = 0; // Disable Timer
T1CONbits.TCS = 0; // Select internal instruction cycle clock
T1CONbits.TGATE = 0; // Disable Gated Timer mode
T1CONbits.TCKPS = 0b11; // Select 1:256 Prescaler
TMR1 = 0x00; // Clear timer register
PR1 =46875; // Load the period value 相當于1秒產(chǎn)生一次中斷
T1CONbits.TON = 1; // Enable Timer
}
中斷處理函數(shù)為
/******************************************************************
定時器1中斷 1s中斷一次 發(fā)送一次CAN數(shù)據(jù)
參數(shù):
******************************************************************/
void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)
{
IFS0bits.T1IF = 0; //Clear Timer1 interrupt flag
Ecan1_WriteMessage(AD_Data);//CAN發(fā)送數(shù)據(jù)
}



關(guān)鍵詞: PIC16位單片機定時

評論


技術(shù)專區(qū)

關(guān)閉