中级会员
- 积分
- 459
- 威望
- 234
- 贡献
- 99
- 兑换币
- 137
- 注册时间
- 2014-6-23
- 在线时间
- 63 小时
|
1贡献
为什么这个程序只能进入PIT1的中断
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//==================================================
//定时中断函数
//定时中断0 实现500MS 定时
//author:yangtze
//time:2009/5/2
//==================================================
#define PITTIME 5000//设定为50MS 定时
unsigned int vTmpPIT1=0;
unsigned int vTmpPIT2=0;
void delay(unsigned int t){
int i,j;
for(i=0;i<t;i++)
for(j=0;j<500;j++){
;
}
}
void pllclk(void)//24MHz,外部时钟为16MHz
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
REFDV=1;
PLLCTL=0X60;
asm NOP;
asm NOP;
asm NOP;
while((CRGFLG&0X08)==0);//时钟校正同步
CLKSEL=0X80;
}
void initIOBoutput(void)//IO 口初始化,B 口为输出
{
DDRB=0XFF;
PORTB=0xff;
}
void initPIT0(void)//定时中断初始化函数50MS 定时中断设置
{
PITCFLMT_PITE=0; //定时中断通道0 关
PITCE_PCE0=1;//定时器通道0 使能
PITMTLD0=240-1;//8 位定时器初值设定。240 分频,在24MHzBusClock 下,为0.1MHz?
PITLD0=PITTIME-1;//16 位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定时器中断通道0 中断使能
PITCFLMT_PITE=1;//定时器通道0 使能
}
void initPIT1(void){
PITCFLMT_PITE=0; //定时中断通道0 关
PITCE_PCE1=1;//定时器通道0 使能
PITMTLD1=240-1;//8 位定时器初值设定。240 分频,在24MHzBusClock 下,为0.1MHz?
PITLD1=PITTIME-1;//16 位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE1=1;//定时器中断通道0 中断使能
PITCFLMT_PITE=1;//定时器通道0 使能
}
void main(void)
{
pllclk();
initIOBoutput();
initPIT0();
initPIT1();
EnableInterrupts;
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{vTmpPIT1++;
if(vTmpPIT1==200)
{
PORTB=~PORTB;//输出取反
vTmpPIT1=0;
}
PITTF=0x01;//清中断标志位
}
void interrupt 67 PIT1(void) {
vTmpPIT2++;
if(vTmpPIT2==20){
PORTB=0X00;
vTmpPIT2=0;
}
PITTF=0x02;
}
|
|