智能车制作

标题: mc9s12xs128 pit中断进不了 [打印本页]

作者: blueskywsh    时间: 2012-7-29 23:04
标题: mc9s12xs128 pit中断进不了
初学飞思卡尔,想用定时器控制led灯,但是好像它没有进中断!求指教啊!

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define  led  PORTB_PB0
#define  led1  PORTB_PB1
void SetBusCLK_64M(void)
{
    CLKSEL=0X00;          //解除锁相环时钟disengage PLL to system
    PLLCTL_PLLON=1;           //打开锁相环(turn on PLL)
    SYNR =0xc0 | 0x04;
    REFDV=0x80 | 0x04;
    POSTDIV=0x00;             //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
    while(!(CRGFLG_LOCK==1));              //当锁相环稳定时使用(when pll is steady ,then use it);
    CLKSEL_PLLSEL =1;                    //启用锁相环时钟(engage PLL to system);
}
    void delay()
    {
   unsigned char j,jj;
   for(j=0;j<100;j++)
   {
     for(jj=0;jj<250;jj++)
      {
        ;     
      }
   }
}
  void pit_init()
  {
     PITCFLMT_PITE=0;       //禁用PIT模块
     //  PITFLT=0X01;
     PITCE=0X01;               //PIT定时器通道0使能
     PITMUX=0X00;               //16位定时器使用微定时基准0计数
     PITMUX_PMUX0=0;
     PITMTLD0=250;                 //PIT微定时器初值
     PITLD0=60000;                 //PIT装载寄存器
      PITINTE=0X01;                   //PIT定时器超时中断使能
     PITCFLMT_PITE=1;
  }
  #pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66  PIT_ISR(void)
  {
    PITTF=0X01;
     delay();
      delay();
      led=~led;
     
   
   
  }
#pragma CODE_SEG DEFAULT

void main(void) {
  /* put your own code here */
     SetBusCLK_64M();
       DDRB=0XFF;
       led=0 ;
       led1=0;  
       for(;;)
       {
         
         led1=~led1;
         
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          delay();
          //led=1;
       }

EnableInterrupts;

  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}


作者: nst11305    时间: 2012-7-29 23:04
应该是PIT中断标志位没有清除,程序就一直卡在那里。‘给你个链接
http://www.znczz.com/thread-56088-1-1.html
还有一种方法,就是在PIT终端里面,先禁用PIT,再开启PIT,就可以清除标志位了
作者: blueskywsh    时间: 2012-8-3 09:15
我已经请教高手解决了!谢谢
作者: xc229876115    时间: 2012-8-17 10:20
怎么解决的啊。楼主分享呀。谢谢
作者: wkhuahuo    时间: 2012-12-2 11:37
xc229876115 发表于 2012-8-17 10:20
怎么解决的啊。楼主分享呀。谢谢

把pittf=0x01改成pittf=0x00;就行啦~
中断标志位没有至零。所以不会让led产生闪烁了。

作者: 736421469    时间: 2013-1-6 08:49
先看一下
作者: 可欣    时间: 2013-3-20 21:00
学习啦




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