|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
ICCAVR6.30 编译,AVRStudio4.09调试问题 |
作者:zhifeng 栏目:单片机 |
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 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |