打印

如何在C语言中嵌入汇编软件陷阱?

[复制链接]
927|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DENG_LI_JUN|  楼主 | 2014-11-19 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为提高单片机抗干扰能力,我要在C语言中嵌入汇编语言的软件陷阱,我用的是MSP430F135的,其程序存储区起始地址是0C000H,我是这么写在未使用的中断服务程序中的,但编译提示错误Error[Og010]: Inline assembler instruction does not have a unique size: "        JMP 0X0C000"      不知是什么原因?求教高手。
#pragma vector=TIMERA0_VECTOR                                                           
__interrupt void Timer_A(void)               
{
  asm("NOP");
  asm("NOP");
  asm("JMP 0X0C000");                    
}

相关帖子

沙发
dirtwillfly| | 2014-11-19 21:55 | 只看该作者
觉得抗干扰和 用不用汇编语言,没有必然的联系

使用特权

评论回复
板凳
dirtwillfly| | 2014-11-19 22:03 | 只看该作者
Inline assembler instruction does not have a unique size: "        JMP 0X0C000
这个问题只看这两句汇编看不出问题的

使用特权

评论回复
地板
Unshining| | 2014-11-19 23:12 | 只看该作者
你这样还不如直接使用WDT功能

使用特权

评论回复
5
DENG_LI_JUN|  楼主 | 2014-11-20 13:47 | 只看该作者
由于使用环境比较恶劣,电磁兼容要求高,光有看门狗效果不理想。

使用特权

评论回复
6
DENG_LI_JUN|  楼主 | 2014-11-20 21:58 | 只看该作者
在MSP430的汇编指令集中找到原因了,由于JMP的寻址空间是以PC为基准的1K范围,容易超出寻址范围,而BR指令的寻址空间是64K,可以到任何地址,这样正常通过编译了。谢谢大家关注。。。

使用特权

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

本版积分规则

7

主题

18

帖子

0

粉丝