为什么我的MC9S12DG128进不了中断?

[复制链接]
5424|8
 楼主| yetboy 发表于 2007-4-4 23:14 | 显示全部楼层 |阅读模式
小弟初学飞思卡尔的单片机,在网上找了些例程来调试。运行程序都没问题,但一进入中断就停下来了。试过了N道程序了,包括ECT,ATD,IO中断等。用的是CW4.6版本,其它版本也试过,均有同样问题。在DEBUG里面看,进中断后就停在0000这个地址上了。不知道是不是中断向量的问题。还望各位大虾不惜赐教。
XUHUADONG 发表于 2007-4-5 09:02 | 显示全部楼层

程序中断跑飞复位了

1,你把所有的中断都写入空程序<br />2,在所有的中断入口都打断点<br />3,DEBUG开始后看停在哪个断点<br />4,检查向量与你所想得是否一致<br /><br />注意:MOTO的单片机有的中断是开的,在初始化时要关掉,如IRQ中断
free_tech 发表于 2007-4-5 10:26 | 显示全部楼层

中断向量出错

  
free_tech 发表于 2007-4-5 10:28 | 显示全部楼层

有中断来了没找到入口,pc指针跑飞了
 楼主| yetboy 发表于 2007-4-5 10:39 | 显示全部楼层

能不能具体教一下应该怎样写?

能不能具体教一下应该怎样写?下面一道是道AD中断简单的例子<br /><br /><br />#include&nbsp;&lthidef.h&gt<br />#include&nbsp;&ltmc9s12dg128.h&gt<br /><br />interrupt&nbsp;void&nbsp;AD0(void)<br />{<br />&nbsp;&nbsp;&nbsp;PORTB&nbsp;=&nbsp;~PORTB;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入中断后取反PORTB各位,实现闪灯。<br />}<br /><br />void&nbsp;Port_Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PORTB&nbsp;=&nbsp;0xF0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//程序运行到这里都是正常的<br />&nbsp;&nbsp;&nbsp;&nbsp;DDRB&nbsp;=&nbsp;0xFF;&nbsp;<br />}<br /><br />void&nbsp;AD(void)<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//中断使能<br />&nbsp;&nbsp;&nbsp;&nbsp;ATD0CTL2=0xC2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//转换通道数为1<br />&nbsp;&nbsp;&nbsp;&nbsp;ATD0CTL3=0x20;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//8位精度,2MHz时钟<br />&nbsp;&nbsp;&nbsp;&nbsp;ATD0CTL4=0x83;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//右对齐,连续转换模式<br />&nbsp;&nbsp;&nbsp;&nbsp;ATD0CTL5=0xA6;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//禁止数字输入缓冲<br />&nbsp;&nbsp;&nbsp;&nbsp;ATD0DIEN&nbsp;=&nbsp;0x00;&nbsp;<br />}<br /><br /><br />void&nbsp;main()&nbsp;<br />{<br />&nbsp;&nbsp;Port_Init();<br />&nbsp;&nbsp;AD();<br />&nbsp;&nbsp;EnableInterrupts;//开总中断,但打开后就不能动了&nbsp;<br />&nbsp;&nbsp;for(;;);<br />}&nbsp;<br />
 楼主| yetboy 发表于 2007-4-5 10:43 | 显示全部楼层

很感谢楼上各位

请问在哪里可以找到各中断源对应的中断向量资料?
free_tech 发表于 2007-4-5 11:09 | 显示全部楼层

看mc9s12dg128.h文件

我还没有装s12的编辑器<br />你可以看mc9s12dg128.h中有
 楼主| yetboy 发表于 2007-4-5 15:43 | 显示全部楼层

终于找到了

在MC9S12DG128.H里面找到了中断向量表<br /><br />/****************&nbsp;interrupt&nbsp;vector&nbsp;table&nbsp;****************/<br />#define&nbsp;VReserved63&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF80<br />#define&nbsp;VReserved62&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF82<br />#define&nbsp;VReserved61&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF84<br />#define&nbsp;VReserved60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF86<br />#define&nbsp;VReserved59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF88<br />#define&nbsp;VReserved58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF8A<br />#define&nbsp;Vpwmesdn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF8C<br />#define&nbsp;Vportp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF8E<br />#define&nbsp;Vcan4tx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF90<br />#define&nbsp;Vcan4rx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF92<br />#define&nbsp;Vcan4err&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF94<br />#define&nbsp;Vcan4wkup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF96<br />#define&nbsp;VReserved51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF98<br />#define&nbsp;VReserved50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF9A<br />#define&nbsp;VReserved49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF9C<br />#define&nbsp;VReserved48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FF9E<br />#define&nbsp;VReserved47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFA0<br />#define&nbsp;VReserved46&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFA2<br />#define&nbsp;VReserved45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFA4<br />#define&nbsp;VReserved44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFA6<br />#define&nbsp;VReserved43&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFA8<br />#define&nbsp;VReserved42&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFAA<br />#define&nbsp;VReserved41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFAC<br />#define&nbsp;VReserved40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFAE<br />#define&nbsp;Vcan0tx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFB0<br />#define&nbsp;Vcan0rx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFB2<br />#define&nbsp;Vcan0err&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFB4<br />#define&nbsp;Vcan0wkup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFB6<br />#define&nbsp;Vflash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFB8<br />#define&nbsp;Veeprom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFBA<br />#define&nbsp;VReserved33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFBC<br />#define&nbsp;Vspi1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFBE<br />#define&nbsp;Viic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFC0<br />#define&nbsp;VReserved30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFC2<br />#define&nbsp;Vcrgscm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFC4<br />#define&nbsp;Vcrgplllck&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFC6<br />#define&nbsp;Vtimpabovf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFC8<br />#define&nbsp;Vtimmdcu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFCA<br />#define&nbsp;Vporth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFCC<br />#define&nbsp;Vportj&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFCE<br />#define&nbsp;Vatd1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFD0<br />#define&nbsp;Vatd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFD2<br />#define&nbsp;Vsci1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFD4<br />#define&nbsp;Vsci0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFD6<br />#define&nbsp;Vspi0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFD8<br />#define&nbsp;Vtimpaie&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFDA<br />#define&nbsp;Vtimpaaovf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFDC<br />#define&nbsp;Vtimovf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFDE<br />#define&nbsp;Vtimch7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFE0<br />#define&nbsp;Vtimch6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFE2<br />#define&nbsp;Vtimch5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFE4<br />#define&nbsp;Vtimch4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFE6<br />#define&nbsp;Vtimch3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFE8<br />#define&nbsp;Vtimch2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFEA<br />#define&nbsp;Vtimch1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFEC<br />#define&nbsp;Vtimch0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFEE<br />#define&nbsp;Vrti&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFF0<br />#define&nbsp;Virq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFF2<br />#define&nbsp;Vxirq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFF4<br />#define&nbsp;Vswi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFF6<br />#define&nbsp;Vtrap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFF8<br />#define&nbsp;Vcop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFFA<br />#define&nbsp;Vclkmon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFFC<br />#define&nbsp;Vreset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0000FFFE<br /><br />从最下面由0数起,数到22就是AD0的中断向量了。所以中断服务程序应该改成<br />interrupt&nbsp;22&nbsp;void&nbsp;AD0(void)<br />{****}<br /><br />不过就这样编译不能通过。后来中服前面又加了一句<br />#pragma&nbsp;&nbsp;CODE_SEG&nbsp;__NEAR_SEG&nbsp;NON_BANKED&nbsp;&nbsp;&nbsp;&nbsp;<br />虽然不知道这句话是什么意思,但加了就能在CW4.6里面通过了。哪位大虾知道的?<br />
张明峰 发表于 2007-4-5 17:58 | 显示全部楼层

正确

中断服务代码前必须要声明<br />#pragma&nbsp;&nbsp;CODE_SEG&nbsp;__NEAR_SEG&nbsp;NON_BANKED<br /><br />这样编译器产生的指针(向量)为16bit长。如果不加&quot;NON_BANKED&quot;声明,缺省代码指针为24bit长(为代码段分页考虑),这样向量表的一个单元就不能容纳。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部