📄 avr_mmc.lst
字号:
202 .LM16:
203 0044 8FB9 out 47-0x20,r24
99:AVR_MMC.c ****
100:AVR_MMC.c **** while ( !(SPSR & (1 << SPIF)) )
101:AVR_MMC.c **** {
102:AVR_MMC.c **** __asm__ __volatile__("nop");
205 .LM17:
206 0046 7799 sbic 46-0x20,7
207 0048 03C0 rjmp .L148
208 .L146:
210 .LM18:
211 /* #APP */
212 004a 0000 nop
213 /* #NOAPP */
214 004c 779B sbis 46-0x20,7
215 004e FDCF rjmp .L146
216 .L148:
103:AVR_MMC.c **** }
104:AVR_MMC.c **** temp = SPDR;
218 .LM19:
219 0050 8FB1 in r24,47-0x20
220 .LBE7:
221 .LBE6:
105:AVR_MMC.c **** return temp;
106:AVR_MMC.c **** }
223 .LM20:
224 0052 9927 clr r25
225 /* epilogue: frame size=0 */
226 0054 0895 ret
227 /* epilogue end (size=1) */
228 /* function uint8 SPI_SendData(uint8) size 10 (9) */
235 .global _Z6MMC_CSh
237 _Z6MMC_CSh:
107:AVR_MMC.c ****
108:AVR_MMC.c **** /*
109:AVR_MMC.c **** ;**************************************************************************************************
110:AVR_MMC.c **** ;* 函数名称 : MMC_CS
111:AVR_MMC.c **** ;* 描 述 : MMC片选
112:AVR_MMC.c **** ;* 输 入 : cs: 0不片选 1片选
113:AVR_MMC.c **** ;*
114:AVR_MMC.c **** ;* 输 出 : 无
115:AVR_MMC.c **** ;**************************************************************************************************
116:AVR_MMC.c **** ;*/
117:AVR_MMC.c **** void MMC_CS(uint8 cs)
118:AVR_MMC.c **** {
239 .LM21:
240 /* prologue: frame size=0 */
241 /* prologue end (size=0) */
242 .LBB8:
119:AVR_MMC.c **** if (cs == 0)
244 .LM22:
245 0056 8823 tst r24
246 0058 11F4 brne .L150
120:AVR_MMC.c **** {
121:AVR_MMC.c **** PORTB |= (1 << PB0); /* SS=1 */
248 .LM23:
249 005a C09A sbi 56-0x20,0
250 005c 0895 ret
251 .L150:
122:AVR_MMC.c **** }
123:AVR_MMC.c **** else
124:AVR_MMC.c **** {
125:AVR_MMC.c **** PORTB &= ~(1 << PB0); /* SS=0 */
253 .LM24:
254 005e C098 cbi 56-0x20,0
255 0060 0895 ret
256 .LBE8:
257 /* epilogue: frame size=0 */
258 /* epilogue: noreturn */
259 /* epilogue end (size=0) */
260 /* function void MMC_CS(uint8) size 6 (6) */
264 .global _Z11MMC_SendCMDPh
266 _Z11MMC_SendCMDPh:
126:AVR_MMC.c **** }
127:AVR_MMC.c **** }
128:AVR_MMC.c ****
129:AVR_MMC.c **** /*
130:AVR_MMC.c **** ;**************************************************************************************************
131:AVR_MMC.c **** ;* 函数名称 : MMC_SendCMD
132:AVR_MMC.c **** ;* 描 述 : MMC发送命令
133:AVR_MMC.c **** ;* 输 入 : cmd: 命令
134:AVR_MMC.c **** ;*
135:AVR_MMC.c **** ;* 输 出 : 超时时间
136:AVR_MMC.c **** ;**************************************************************************************************
137:AVR_MMC.c **** ;*/
138:AVR_MMC.c **** uint8 MMC_SendCMD(uint8 *cmd)
139:AVR_MMC.c **** {
268 .LM25:
269 /* prologue: frame size=0 */
270 0062 FF92 push r15
271 0064 0F93 push r16
272 0066 1F93 push r17
273 0068 CF93 push r28
274 /* prologue end (size=4) */
275 006a 8C01 movw r16,r24
276 .LBB9:
277 .LBB10:
140:AVR_MMC.c **** uint8 i = 0, k = 0;
279 .LM26:
280 006c FF24 clr r15
141:AVR_MMC.c **** uint8 temp = 0XFF;
142:AVR_MMC.c ****
143:AVR_MMC.c **** MMC_CS(0); /* 片选无效 */
282 .LM27:
283 006e 8F2D mov r24,r15
284 0070 0E94 0000 call _Z6MMC_CSh
144:AVR_MMC.c ****
145:AVR_MMC.c **** SPI_SendData(0XFF); /* 发送8个时钟 */
286 .LM28:
287 0074 8FEF ldi r24,lo8(-1)
288 0076 0E94 0000 call _Z12SPI_SendDatah
146:AVR_MMC.c ****
147:AVR_MMC.c **** MMC_CS(1); /* 片选有效 */
290 .LM29:
291 007a 81E0 ldi r24,lo8(1)
292 007c 0E94 0000 call _Z6MMC_CSh
148:AVR_MMC.c ****
149:AVR_MMC.c **** __asm__ __volatile__("nop");
294 .LM30:
295 /* #APP */
296 0080 0000 nop
297 /* #NOAPP */
298 0082 C5E0 ldi r28,lo8(5)
299 .L156:
150:AVR_MMC.c ****
151:AVR_MMC.c **** for (i = 0; i < 6; i++)
152:AVR_MMC.c **** {
153:AVR_MMC.c **** SPI_SendData(*(cmd++)); /* 发送命令 */
301 .LM31:
302 0084 F801 movw r30,r16
303 0086 8191 ld r24,Z+
304 0088 8F01 movw r16,r30
305 008a 0E94 0000 call _Z12SPI_SendDatah
307 .LM32:
308 008e C150 subi r28,lo8(-(-1))
309 0090 C7FF sbrs r28,7
310 0092 F8CF rjmp .L156
311 .L160:
154:AVR_MMC.c **** }
155:AVR_MMC.c ****
156:AVR_MMC.c **** while (temp == 0XFF)
157:AVR_MMC.c **** {
158:AVR_MMC.c **** temp = SPI_SendData(0XFF); /* 等待回复 */
313 .LM33:
314 0094 8FEF ldi r24,lo8(-1)
315 0096 0E94 0000 call _Z12SPI_SendDatah
316 009a 982F mov r25,r24
159:AVR_MMC.c **** if (k++ > 200) /* 超时返回 */
318 .LM34:
319 009c 8F2D mov r24,r15
320 009e F394 inc r15
321 00a0 893C cpi r24,lo8(-55)
322 00a2 10F4 brsh .L165
160:AVR_MMC.c **** {
161:AVR_MMC.c **** return temp;
324 .LM35:
325 00a4 9F3F cpi r25,lo8(-1)
326 00a6 B1F3 breq .L160
327 .L165:
162:AVR_MMC.c **** }
163:AVR_MMC.c **** }
164:AVR_MMC.c **** return temp;
329 .LM36:
330 00a8 892F mov r24,r25
331 00aa 9927 clr r25
332 .LBE10:
333 .LBE9:
334 /* epilogue: frame size=0 */
335 00ac CF91 pop r28
336 00ae 1F91 pop r17
337 00b0 0F91 pop r16
338 00b2 FF90 pop r15
339 00b4 0895 ret
340 /* epilogue end (size=5) */
341 /* function uint8 MMC_SendCMD(uint8*) size 43 (34) */
348 .text
350 Letext:
351 /* File "AVR_MMC.c": code 93 = 0x005d ( 80), prologues 4, epilogues 9 */
DEFINED SYMBOLS
*ABS*:00000000 AVR_MMC.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:84 .text:00000000 _Z7DelayMsm
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:136 .text:0000002a _Z8SPI_Initv
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:171 .text:0000003c _Z9SPI_HiSPDv
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:194 .text:00000044 _Z12SPI_SendDatah
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:237 .text:00000056 _Z6MMC_CSh
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:266 .text:00000062 _Z11MMC_SendCMDPh
C:\Users\ADMINI~1\AppData\Local\Temp/cceUaaaa.s:350 .text:000000b6 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -