|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | 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.qxvs.cn 浙ICP證030469號 |