登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

ICCAVR6.30 编译,AVRStudio4.09调试问题

作者:zhifeng 栏目:单片机
ICCAVR6.30 编译,AVRStudio4.09调试问题
void RTInputByte(unsigned CHAR d)
{
    unsigned CHAR i;
    T_IO_OUT;
    for(i=8; i>0; i--)
    {
        if(d & 0x01)
            T_IO_HI;
        else
            T_IO_LO;
        T_CLK_HI;
        T_CLK_LO;
        d = d >> 1;
    }
}
上面函数被ICCAVR 6.30编译生成cof在AVRStudio中调试反汇编后的结果如下
为什么for(i=8; i>0; i--)有三处?
41:       void RTInputByte(unsigned CHAR d)
+000000FA:   D305        RCALL   +0x0305          Relative call subroutine
44:           T_IO_OUT;
+000000FB:   98D1        CBI     0x1A,1           Clear bit in I/O register
45:           for(i=8; i>0; i--)
+000000FC:   E048        LDI     R20,0x08         Load immediate
+000000FD:   C009        RJMP    +0x0009          Relative jump
47:               if(d & 0x01)
+000000FE:   FF00        SBRS    R16,0            Skip if bit in register set
+000000FF:   C002        RJMP    +0x0002          Relative jump
48:                   T_IO_HI;
+00000100:   9AD9        SBI     0x1B,1           Set bit in I/O register
+00000101:   C001        RJMP    +0x0001          Relative jump
50:                   T_IO_LO;
+00000102:   98D9        CBI     0x1B,1           Clear bit in I/O register
51:               T_CLK_HI;
+00000103:   9AD8        SBI     0x1B,0           Set bit in I/O register
52:               T_CLK_LO;
+00000104:   98D8        CBI     0x1B,0           Clear bit in I/O register
53:               d = d >> 1;
+00000105:   9506        LSR     R16              Logical shift right
45:           for(i=8; i>0; i--)
+00000106:   954A        DEC     R20              Decrement
45:           for(i=8; i>0; i--)
+00000107:   2422        CLR     R2               Exclusive OR
+00000108:   1624        CP      R2,R20           Compare
+00000109:   F3A0        BRCS    -0x0C            Branch if carry set
55:       }
+0000010A:   D2F8        RCALL   +0x02F8          Relative call subroutine
---- No Source ------------------------------------------------------------------------------------
+0000010B:   9508        RET                      Subroutine return


* - 本贴最后修改时间:2004-6-26 9:40:45 修改者:zhifeng

参与讨论
昵称:
讨论内容:
 
 
相关帖子
avr
寻atmel jtag ice 4.09的fireware
avr的最大疑问?
实用内部RC校准问题请教?
AVR studio 调试的一个问题
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号