智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4979|回复: 12
打印 上一主题 下一主题

[讨论] mc9s12xs128单片机中断问题

[复制链接]

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
跳转到指定楼层
1#
发表于 2012-11-12 21:41:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用mc9s12xs128单片机编程,在软件上调试的时候,要进入中断程序要怎么调试啊?我用F11单步运行,当主函数运行到了 for(;;)
  {
   _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
} 时,就一直在循环,不能进入中断程序。我不知道是因为我的程序问题还是我软件操作错了。那位大哥大姐,麻烦你们给我说一下,在调试的时候要怎么进入中断程序啊?谢谢了、、

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
2#
 楼主| 发表于 2012-11-12 21:44:13 | 只看该作者
可以说说,只是128单片机用codewarrior 调试程序的步骤么?各位、
回复 支持 反对

使用道具 举报

13

主题

120

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1967
威望
1020
贡献
445
兑换币
223
注册时间
2012-3-6
在线时间
251 小时
毕业学校
华侨大学
3#
发表于 2012-11-12 22:50:46 | 只看该作者
你是不是中断设置错了?
回复 支持 反对

使用道具 举报

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
4#
 楼主| 发表于 2012-11-12 23:18:06 | 只看该作者
天涯々湖畔 发表于 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;
  }
}
回复 支持 反对

使用道具 举报

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章在线王奖章推广达人奖章特殊贡献奖章热心会员奖章

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
5#
发表于 2012-11-13 00:36:49 | 只看该作者
EnableInterrupts;了没有?
回复 支持 反对

使用道具 举报

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
6#
 楼主| 发表于 2012-11-13 12:44:20 | 只看该作者
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 */
}
麻烦你帮我看看。我不知道怎么回事
回复 支持 反对

使用道具 举报

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章在线王奖章推广达人奖章特殊贡献奖章热心会员奖章

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
7#
发表于 2012-11-13 19:45:09 | 只看该作者
自己看书吧。网上资料一大堆的。加油~~
回复 支持 反对

使用道具 举报

6

主题

166

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1499
威望
761
贡献
460
兑换币
301
注册时间
2012-8-22
在线时间
139 小时
毕业学校
未毕业
8#
发表于 2012-12-9 13:01:18 | 只看该作者
再好好看看程序有什么遗漏没有
回复 支持 反对

使用道具 举报

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
9#
 楼主| 发表于 2012-12-11 20:31:52 | 只看该作者
happyzn75 发表于 2012-12-9 13:01
再好好看看程序有什么遗漏没有

解决了,程序没问题。到车上试了,能实现我想要的功能。只是我对软件还不熟悉、、谢谢关注了
回复 支持 反对

使用道具 举报

8

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
976
威望
504
贡献
294
兑换币
244
注册时间
2012-10-21
在线时间
89 小时
10#
 楼主| 发表于 2012-12-11 20:32:14 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 21:45 , Processed in 0.048963 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表