打印

keil c编程如何改变中断返回点

[复制链接]
1497|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LKZ89|  楼主 | 2013-5-23 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用INT0中断后,想人为指定返回点,goto语句好像不行(从一接触C语言就告知要少用goto语句,所以也没有深入研究。试过如果在一个函数中同时用标号和goto后编译可以,但在主函数中设置标号,在中断函数中用goto返回就不行)。然后想在中断混编一段汇编来实现
#pragma asm
        POP DPH
        POP DPL
        MOVE DPTR,0800H//(乱填的,想编译后再填返回点的地址)
        PUSH DPL
        PUSH DPH
        RETI
#pragma endasm
但是编译没有成功,keil用这种方法混编要求已经上网解决了,但编译后还是提示
main.src(112): error A45: UNDEFINED SYMBOL (PASS-2)
main.src(563): error A45: UNDEFINED SYMBOL (PASS-2)
main.src(570): error A5: ILLEGAL USE OF A RESERVED WORD
main.src(582): error A9: SYNTAX ERROR
compiling ds18b20.c...

相关帖子

沙发
airwill| | 2013-5-23 12:16 | 只看该作者
其实不需要用 SRC 汇编.
INTRINS.H 有函数 _push_    ,_pop_     使用的.
我曾经在 <抢先式裸奔系统> 里这么干过, 用起来很正常, 没有什么问题.
去年的上海网友会上我还交流过这个东西, 这个**最后整理发表在 <单片机与嵌入式系统> 去年的第12期杂志上.
楼主可以去研究一下.

使用特权

评论回复
板凳
ayb_ice| | 2013-5-23 13:27 | 只看该作者
MOV DPTR,#0800H

使用特权

评论回复
地板
pang7| | 2013-5-23 21:49 | 只看该作者
本质是改变pc指针与堆栈

使用特权

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

本版积分规则

1

主题

1

帖子

1

粉丝