智能车制作

标题: PIT中断 [打印本页]

作者: zcl123    时间: 2014-7-6 18:25
标题: PIT中断
为什么这个程序只能进入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;
}





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2