[AVR单片机] IAR怎么内嵌汇编?

[复制链接]
2857|4
 楼主| ATmega16 发表于 2007-10-11 09:40 | 显示全部楼层 |阅读模式
下面一个简单例子,怎么把它编译成功?

void main(void)
{
DDRD = 0x00;
DDRB = 0xFF;
while(1) 
{
get_port();
}
}  


void get_port()
{
   __asm 
    ("in R16,_SFR_IO_ADDR(PIND)"    " "
    "swap R16"        " "
    "out _SFR_IO_ADDR(PORTB),R16"   " "   
      );
}
computer00 发表于 2007-10-11 09:44 | 显示全部楼层

没用过IAR...不过我想帮助手册里面应该有

yewuyi 发表于 2007-10-11 10:12 | 显示全部楼层

最简单的:asm("");

MicroMMU 发表于 2007-10-12 23:07 | 显示全部楼层

插入汇编要注意栈。

         asm("PUSH R16");
         asm("PUSH R17");
         asm("PUSH R18");   
         asm("LDS R16,RevData");
         asm("LDS R17,RevData+1");
         asm("LDS R18,RevData+2");
         asm("CLC");
         asm("ROL r16"); 
         asm("ROL r17");
         asm("ROL r18");
         asm("CLC");
         asm("ROL r16");
         asm("ROL r17");
         asm("ROL r18");
         asm("STS RevData,R16");
         asm("STS RevData+1,R17");
         asm("STS RevData+2,R18");
         asm("POP R18");
         asm("POP R17");
         asm("POP R16"); 
 楼主| ATmega16 发表于 2007-10-13 17:21 | 显示全部楼层

内嵌汇编如何访问IO寄存器?

内嵌汇编如何访问IO寄存器?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

229

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部