首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

为什么进入不了中断程序,高手来看下。

为什么进入不了中断程序,高手来看下。

我想作一一个输出比较中断,在.c文件写了interrupt void OC7(){,而且prm文件里也写了VECTOR ADDRESS 0xFFE0 OC7,但是总是进不去中断程序,我看了一下,相应的FLAG已经被置位了,这是为什么,还是需要设置一些其它的寄存器?高手帮我看下,谢谢了。刚接触codewarrior,实在是不太熟。
sorry,发现是我弄错了,我刚把中断给屏蔽了,但是又出现一个问题,我打开输出比较中断TIMSK1后,总是提示我ILLEGAL_BP,是说中断非法,这是怎么回事啊。
看起来你的中断矢量地址的定义有问题。
海纳百川  有容乃大
大家帮我分析一下,我用的是9s12a128B,我的的程序中大量用了call指令,在子程序中也用了call调用了其他的子程序。运行程序,发现程序有时会跑飞,提示我ILLEGAL_BP。请教大家,1:ILLEGAL_BP,一般是那些原因造成的啊?2:在进行页操作时,要注意那些事项啊?3:在同一页操作时,是否可以用call调用子程序?4:当程序执行到38页的程序时,是否可以直接调用3E/3F页的子程序?5:当程序要从3F页跳到38页时,先对ppage赋值,后用LBRA指令跳转到3F页的程序,如何再重新跳转到3F页,先对ppage页赋值,再用LBRA跳转,还是先跳转后赋值?
年底还问这么多问题,打搅大家了。
看起来你的中断矢量地址的定义有问题?我用的是68HC12 ,它的中断地址表里输出比较的中断就是0xFFE0,怎样才是正确的定义啊?
因为板上没有编程电压,所以我就用一部分RAM作了放程序的ROM,在prm文件里这么写的,

NAMES END

SEGMENTS

MY_RAM = READ_WRITE 0x2000 TO 0x2FFF;
MY_PSEUDO_ROM = READ_ONLY 0x3000 TO 0x3FFF;
END

PLACEMENT
_PRESTART, STARTUP,
ROM_VAR, STRINGS,
NON_BANKED,DEFAULT_ROM,
COPY INTO MY_PSEUDO_ROM;
DEFAULT_RAM INTO MY_RAM;


这和中断向量的地址有关系吗???

[此贴子已经被作者于2006-1-26 21:43:09编辑过]

用CALL调用子程序,用RTC返回时,指令会自动对PPAGE寄存器进行操作,无需另外的指令。
海纳百川  有容乃大
没明白啊,版主能不能解释得详细些啊,谢谢啊
我是在回答cqx9999的问题。S12有各种调用子程序的指令。有些指令,如JSR,RTS是不对PPAGE寄存器进行操作的,所以只能调用位于同一页上的程序;而CALL和RTC指令中包含了对PPAGE寄存器的操作,用户就不用再另外对PPAGE寄存器进行操作了。
海纳百川  有容乃大
[upload=image/gif]uploadImages/未命名.GIF[/upload]

带仿真器运行,有时会出现如图所示得错误,没有规律性.大家帮我看看,估计是那些原因造成这种错误的.查了将近1个星期了,还没找到病根啊,郁闷啊!
把程序烧一下再试试看,我刚刚也遇到这问题。
slaxh.com
你把调用程序和被调用程序放在同一页试试。
海纳百川  有容乃大
返回列表