打印
[AVR单片机]

请问GCC嵌入中断汇编如何实现?

[复制链接]
1926|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
crc|  楼主 | 2008-6-11 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ATmega32l| | 2008-6-11 12:35 | 只看该作者

楼主意思进入中断不保存寄存器,

楼主意思进入中断不保存寄存器,寄存器保护由汇编代码完成??

使用特权

评论回复
板凳
crc|  楼主 | 2008-6-11 14:33 | 只看该作者

..

我的意思是进入中断后只执行一行汇编语句,而gcc的中断在编译后会产生多条保护寄存器的语句,但这些语句是我不需要的,故我需要自已写中断汇编去改变这个情况.

使用特权

评论回复
地板
ATmega32L| | 2008-6-11 18:18 | 只看该作者

用裸中断

用裸中断,编译器生成的代码不保护寄存器。
在中断里面用到什么寄存器,包括SREG,需要手动保护。

ISR(vector,ISR_NAKED) 
{
  asm("寄存器保护");
  asm("内嵌汇编");
  asm("寄存器恢复");
}

使用特权

评论回复
5
crc|  楼主 | 2008-6-12 17:51 | 只看该作者

.

多谢楼上,还未试楼上的方法,不过知道了问题.原来编译器将所有I/O寄存器地址加上了0x20.

使用特权

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

本版积分规则

crc

2

主题

45

帖子

0

粉丝