打印

求教:为何中断周期会延长?

[复制链接]
2104|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yyfsxs|  楼主 | 2009-2-18 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用TM0和BTM中断,周期分别为7.8125毫秒和250毫秒,第一次程序调试后,中断周期正常,后来将部分程序用宏指令代替,TMO中断周期则延长了30毫秒左右,不知道是不是宏指令的问题,还是其它原因?求教。
沙发
warm_ice| | 2009-2-19 08:53 | 只看该作者

这样

有2个方式可以查看一下:
1.程序编译后,会有一个.LST的文件,打开这个文件,看一下中断中的程序是否是比较长,导致多次中断只执行了一次.
2.仿真时设置一个适当的断点,全带运行后遇到断点程序会停下来,这时用CTRL+T调出TRACE的功能,会列出当前位置之前的8K的运行程序,看一下是什么影响了TM0中断的时间.

使用特权

评论回复
板凳
yyfsxs|  楼主 | 2009-2-19 14:50 | 只看该作者

找到问题了

按照版主的调试方法,找出问题的原因,每次中断程序运行都跳至主程序的最开始。见附图,如何才能解决?

使用特权

评论回复
地板
warm_ice| | 2009-2-20 10:08 | 只看该作者

这样

如果是您说的情况,我估计是看门狗复位引起的,您检查一下是否打开了开门狗,并正确喂狗.

使用特权

评论回复
5
yyfsxs|  楼主 | 2009-2-20 15:02 | 只看该作者

在主程序中,我是设了看门狗的,但我关了之后再试还是一样会出现这种情况,程序运行中会出现无关字符,使中断周期变长。我估计是用了大量的宏,而引起的,我的宏定义是在ORG 0000H前,这个程序在没有用宏之前是调试好的,没有出现过这种问题,真让人头痛。

使用特权

评论回复
6
warm_ice| | 2009-2-21 13:35 | 只看该作者

这样

宏的位置放在前面没有问题,您再仔细检查一下,是否有在跨2K ROM附近使用了一些只能寻址2K范围的指令(例如:BA0,BA1,BA2,BA3,CALL等等).

使用特权

评论回复
7
linux123| | 2009-2-25 09:46 | 只看该作者

还是要把代码好好分析,才能找到问题

使用特权

评论回复
8
yyfsxs|  楼主 | 2009-3-5 09:21 | 只看该作者

找到问题了

原来我用INCLUDE指令将程序分成很多版块,用JMP指令跳转到另外版块,如果版块的JMP的LINE在要跳转的版块有同样的LIVE时,会转至跳转的版块中的LINE,然后再转至要跳的LABEL,中间就会出现图片中的那个问题.

使用特权

评论回复
9
warm_ice| | 2009-3-5 12:06 | 只看该作者

呵呵。找到问题就好

就像我在6楼讲的一样,这种地方是要特别注意的,编译器会有一个警告,但如果程序比较大,警告太多,您可能不会注意到。

使用特权

评论回复
10
小cat| | 2009-3-7 13:50 | 只看该作者

数据手册,你看看中断是怎么处理的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

35

帖子

0

粉丝