<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 飛思卡爾那些事之定時(shí)中斷(PIT)

飛思卡爾那些事之定時(shí)中斷(PIT)

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
前言:
上次說(shuō)到因為源于對英文的恐懼,沒(méi)有閱讀英文DATASHEET,想當然的認為XS128單片機中的定時(shí)器模塊也和DG128中定時(shí)器模塊一樣。結果造成了致命性的錯誤,最后在瘋狂的熬夜中才將問(wèn)題檢測到。
當然,找到問(wèn)題,解決起來(lái)就簡(jiǎn)單多了。后頭拿起DATASHEET狂肯,終于有所收獲,同時(shí)也知道了在XS128單片機中用于定時(shí)的另一個(gè)模塊:PIT(定時(shí)中斷)。為了測試一下定時(shí)中斷的,同時(shí)也解決之前單片機一直沒(méi)辦法進(jìn)入中斷的問(wèn)題,特寫(xiě)了一個(gè)簡(jiǎn)單的基于定時(shí)器中斷的閃爍燈程序。
目的:
1、學(xué)習使用XS128PIT模塊。
2、測試XS128核心板的中斷木塊。
功能描述:
通過(guò)定時(shí)中斷實(shí)現500MS定時(shí)。當定時(shí)中斷觸發(fā)時(shí),對IO口進(jìn)行取反操作即可以實(shí)現LED500MS的閃爍。
資源:
1、XS128核心板,8個(gè)LED接X(jué)S128的B口。
2、XS128的PIT模塊。
PIT說(shuō)明:
S12PIT24B4CV1是一個(gè)模數遞減計數器。首先給計數寄存器設定一個(gè)初值,每經(jīng)過(guò)一個(gè)總線(xiàn)周期,計數器進(jìn)行一次減一操作,當計數器自減溢出時(shí),觸發(fā)中斷。因為總線(xiàn)周期是已知的,即可以通過(guò)計數器自減實(shí)現定時(shí)。
在XS128PIT模塊中,需要用到得是如下幾個(gè)寄存器。
1)、PIT Contorl and force Lad Micro Timer Register(PITCFLMT)
該寄存器用于PIT模塊的使能設置和工作方式設置。通常設置該寄存器中的PITE為即可,即PITCFLMT_PITE=1,使PIT使能。
2)、PIT Channel Enable Register(PITCE)
該寄存器用于對PIT模塊中的4個(gè)通道使能進(jìn)行設置。如果使用某個(gè)通道時(shí),對對應位進(jìn)行置一即可,即PITCE_PCEx=1,其中x代表通道序號,為0~3。
3)、PIT Micro Timer Load Register 0 to 1 (PITMTLD0-1)
該寄存器用于設置PIT模塊中的8位計數器初值,以實(shí)現24位的計數。設定值為0到255范圍。
4)、PIT Load Register 0 to 3(PITLD0-3)
該寄存器用于設置PIT模塊中的16位計數器初值,和8位計數器配合而成24位計數器。設定值范圍0-65535。
5)、PIT Multiplex Register(PITMUX)
該寄存器對定時(shí)器通道的8位時(shí)基進(jìn)行選擇。因為8位計數器只有兩個(gè),所以在將8位計數器和16位計數器連接時(shí),可以選擇不同的8位時(shí)基。
當設置為0時(shí),對應通道選擇時(shí)基0;置一時(shí),對應通道選擇時(shí)基1。
如PITMUX_PMUX0=1為通道0選擇時(shí)基1。
6)、PIT Interrupt Enable Register(PITINTE)
該寄存器為中斷使能寄存器,為不同的PIT通道中斷使能。設定為0時(shí),相應通道中斷禁止。置一時(shí),相應通道使能。
如PITINTE_PINTE0=1時(shí),PIT通道0定時(shí)中斷使能,當計數器遞減溢出時(shí),申請中斷。
7)、PIT Time-Out Flag Register(PITTF)
該寄存器為溢出標志位,當某一通道的8位計數器和16位計數器遞減到0時(shí),該位置一。給改位寫(xiě)1則清除該標志位。
可以通過(guò)查詢(xún)該位來(lái)判斷定時(shí)是否完成。

CODE:
#include
#include
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//==================================================
//定時(shí)中斷函數
//定時(shí)中斷0實(shí)現500MS定時(shí)
//author:yangtze
//time:2009/5/2
//==================================================
#define PITTIME5000//設定為50MS定時(shí)
unsigned int vTmpPIT=0;

void pllclk(void)//24MHz,外部時(shí)鐘為16MHz
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
REFDV=1;
PLLCTL=0X60;
asmNOP;
asmNOP;
asmNOP;
while((CRGFLG&0X08)==0);//時(shí)鐘校正同步
CLKSEL=0X80;
}
void initIOBoutput(void)//IO口初始化,B口為輸出
{
DDRB=0XFF;
PORTB=0XFF;
}
void initPIT(void)//定時(shí)中斷初始化函數 50MS定時(shí)中斷設置
{
PITCFLMT_PITE=0; //定時(shí)中斷通道0關(guān)
PITCE_PCE0=1;//定時(shí)器通道0使能
PITMTLD0=240-1;//8位定時(shí)器初值設定。240分頻,在24MHzBusClock下,為0.1MHz。即
10us.
PITLD0=PITTIME-1;//16位定時(shí)器初值設定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定時(shí)器中斷通道0中斷使能
PITCFLMT_PITE=1;//定時(shí)器通道0使能
}

void main(void)
{
pllclk();
initIOBoutput();
initPIT();
EnableInterrupts;
for(;;) {}

}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
vTmpPIT++;
if(vTmpPIT==10)
{
PORTB=~PORTB;//輸出取反
vTmpPIT=0;
}
PITTF_PTF0=1;//清中斷標志位
}


評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>