十年專注單片機(jī)方案開(kāi)發(fā)的方案公司英銳恩,分享microchip單片機(jī)DSPIC33F例程之TIMER1例程。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。
//母體為DSPIC33FJ64GP206,編譯器為C30測(cè)試版,在微芯網(wǎng)站上有免費(fèi)下載
//晶體為16M,PLL4,那么系統(tǒng)頻率應(yīng)該是16*4/2=32M,本例程可以產(chǎn)生1KHZ頻率的中斷,中斷服務(wù)程序可自行添加,如果改定時(shí)時(shí)間可以修改預(yù)分頻比和PR1
#include
void timer1_init(void)
{
T1CON = 0; //確保T1關(guān)閉,再進(jìn)行初始化
IFS0bits.T1IF = 0; //清T1復(fù)位標(biāo)志,使T1復(fù)位
IPC0bits.T1IP = 5; //3個(gè)BIT,設(shè)置T1的中斷優(yōu)先級(jí),0~7,7是做高優(yōu)先級(jí)
IEC0bits.T1IE = 1; //開(kāi)T1中斷
T1CONbits.TCKPS = 1; //設(shè)置T1的預(yù)分頻比是8,即T1加一次需要的時(shí)間為1/(32M/8)秒,即0.25uS
//2個(gè)bit,00--1:1,01--1:8,10--1:64,11--1:256
PR1 = 4000; //根據(jù)計(jì)算應(yīng)該是從0開(kāi)始計(jì)數(shù),加到PR1時(shí)產(chǎn)生中斷,跟以往的MCU溢出中斷不同
//這個(gè)寄存器的值計(jì)算結(jié)果為,400~40000分別對(duì)應(yīng)10KHz到100Hz
T1CONbits.TON = 1; //打開(kāi)T1并開(kāi)始計(jì)數(shù)
}
//====================定時(shí)中斷服務(wù)程序======================
void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void)
{ PR1=40320/Ftimer1; //計(jì)算定時(shí)器的溢出值
IFS0bits.T1IF = 0; //在軟件里清中斷標(biāo)志
// your ISR code
}
(文源網(wǎng)絡(luò),侵刪)