主函数正在执行程序,突然外部中断了,此时主函数这边被压入堆栈,跑去执行中断函数
我希望运行完中断函数后,不跳回主函数正在执行的那段,而是从主函数另一个指定位置开始执行,怎么做?
比如:
- void main()
- {
- while(1) //主函数的大循环内,有很多行代码,这里先忽略
- {
- .... //不知程序运行到什么地方,这时外部中断被触发了
- ...... //假设这里是中断点---被压入堆栈
- .......
- }
- }
- void init() interrupt 0
- {
- .....
- ...... //我希望程序运行完成中断函数后,不返回主函数的大循环内,而是跳到while(1)的上一条语句
- .......
- }
复制代码
我已针对你的问题做了一个测试程序,开发环境为Keil4,如果打不开,请直接把src文件夹下的main.c和sub.asm添加到你能打开的空工程中。
只有这两个源文件,main.c相当于你目前在写的。对于C无法办到的事情,用汇编写在sub.asm中,里面有两个函数。有详细的注释。
附件暂时上传不了,我稍后再补上
一周热门 更多>