智能车制作

标题: mc9s12xs128单片机中断问题 [打印本页]

作者: 陶小宅    时间: 2012-11-12 21:41
标题: mc9s12xs128单片机中断问题
我用mc9s12xs128单片机编程,在软件上调试的时候,要进入中断程序要怎么调试啊?我用F11单步运行,当主函数运行到了 for(;;)
  {
   _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
} 时,就一直在循环,不能进入中断程序。我不知道是因为我的程序问题还是我软件操作错了。那位大哥大姐,麻烦你们给我说一下,在调试的时候要怎么进入中断程序啊?谢谢了、、
作者: 陶小宅    时间: 2012-11-12 21:44
可以说说,只是128单片机用codewarrior 调试程序的步骤么?各位、
作者: 天涯々湖畔    时间: 2012-11-12 22:50
你是不是中断设置错了?
作者: 陶小宅    时间: 2012-11-12 23:18
天涯々湖畔 发表于 2012-11-12 22:50
你是不是中断设置错了?

请问一下,你是指程序,还是软件调试时候的操作步骤?看看我的程序:
void PIT_Init(void)//定时中断初始化函数 0.01s=10ms定时中断设置
{
    PITCFLMT_PITE=0;   //定时中断通道关
    PITCE_PCE0=1;    //使能0通道
    PITMTLD0=240-1;   //8位定时器初值设定 240分频,在48MHzBusClock下,为0.2MHz。即5us
    PITLD0=2000-1;     //16位定时器初值设定。2000*0.005ms
    PITINTE_PINTE0=1;  //PIT通道0定时中断使能,当计数器递减溢出时,申请中断
    PITCFLMT_PITE=1;  //定时器通道0使能
}

主函数,和其他模块省略了
#pragma CODE_SEG __NEAR_SEG NON_BANKED  //指示该程序在不分页区
void interrupt 66 PIT0(void)
{
  flag++;
  PITTF_PTF0=1; //清中断标志位

  if(flag==500)   
  {
    PWME  = 0x00;     
    PWMDTY3=0;
    PWMDTY4=0;
  }
  if(flag==1000)
  {
    PWMDTY3=40;
    PWMDTY4=0;
    PWME  = 0x18;      
  }
  if(flag==1300)   
  {      
    PWMDTY3=20;
    PWMDTY4=0;
    PWME  = 0x18;//看看有必要没有
  }

  if(flag==1800)   
  {
    PWME  = 0x00;      
    PWMDTY3=0;
    PWMDTY4=0;
  }
  if(flag==2300)   
  {
    PWME=0x18;     // 详实
    PWMDTY3=0;
    PWMDTY4=40;
  }

  if(flag==2600)   
  {  
    PWME=0x18;     //   
    PWMDTY3=0;
    PWMDTY4=20;
  }
  if(flag==3100)   
  {
    PWME=0x18;    //  
    PWMDTY3=40;
    PWMDTY4=0;
  }
  
  if(flag==3200)
  
  {
   PWME  = 0x00;
   flag=0;
  }
}

作者: YOON    时间: 2012-11-13 00:36
EnableInterrupts;了没有?
作者: 陶小宅    时间: 2012-11-13 12:44
YOON 发表于 2012-11-13 00:36
EnableInterrupts;了没有?

我没有把main函数放上来,EnableInterrupts;在主函数里面有。
void main(void) {
  /* put your own code here */
  
  PLL_Init();
  PWM_Init();
  PIT_Init();
  EnableInterrupts;
  for(;;)
  {
   _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
麻烦你帮我看看。我不知道怎么回事

作者: YOON    时间: 2012-11-13 19:45
自己看书吧。网上资料一大堆的。加油~~
作者: happyzn75    时间: 2012-12-9 13:01
再好好看看程序有什么遗漏没有
作者: 陶小宅    时间: 2012-12-11 20:31
happyzn75 发表于 2012-12-9 13:01
再好好看看程序有什么遗漏没有

解决了,程序没问题。到车上试了,能实现我想要的功能。只是我对软件还不熟悉、、谢谢关注了
作者: 陶小宅    时间: 2012-12-11 20:32

作者: 1174751315    时间: 2013-4-5 16:16
我觉得可以是:在调试的时候,它会列出寄存器的值给你看(类似于监视窗口),并且寄存器的值可以改,到时你调试的时候,想进入中断处理程序时,把中断标志位改成1,再按一下F11就可以啦!
作者: yyyzrxh    时间: 2013-4-18 16:21
共同交流。。。。。
作者: 顺⑦.zì繎.    时间: 2013-6-10 13:32
陶小宅 发表于 2012-12-11 20:31
解决了,程序没问题。到车上试了,能实现我想要的功能。只是我对软件还不熟悉、、谢谢关注了

我是连调试都调试不了,按下绿色箭头(start)之后调试界面变空白了。。。
Lz是不是这种情况呢?





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