📄 mmc.lis
字号:
00BE ; for (counter=0;counter<80;counter++) //失败尝试次数
00BE 6627 clr R22
00C0 10C0 xjmp L34
00C2 L31:
00C2 .dbline 130
00C2 ; {
00C2 .dbline 132
00C2 ;
00C2 ; mmc_response=MMC_sendCmd(MMC_SEND_OP_COND,0,0,0,0);
00C2 2224 clr R2
00C4 2C82 std y+4,R2
00C6 2A82 std y+2,R2
00C8 2882 std y+0,R2
00CA 2227 clr R18
00CC 01E0 ldi R16,1
00CE A0DF xcall _MMC_sendCmd
00D0 402F mov R20,R16
00D2 .dbline 133
00D2 ; MMC_finish();
00D2 D1DF xcall _MMC_finish
00D4 .dbline 135
00D4 ;
00D4 ; if (mmc_response==0) //切换到SPI成功
00D4 4423 tst R20
00D6 19F4 brne L35
00D8 .dbline 136
00D8 ; {
00D8 .dbline 137
00D8 ; led2_on;
00D8 DD98 cbi 0x1b,5
00DA .dbline 138
00DA ; counter=81; //跳出失败尝试次数
00DA 61E5 ldi R22,81
00DC .dbline 139
00DC ; }
00DC 01C0 xjmp L36
00DE L35:
00DE .dbline 140
00DE ; else led1_on; //切换到SPI失败
00DE DE98 cbi 0x1b,6
00E0 L36:
00E0 .dbline 142
00E0 L32:
00E0 .dbline 129
00E0 6395 inc R22
00E2 L34:
00E2 .dbline 129
00E2 6035 cpi R22,80
00E4 70F3 brlo L31
00E6 .dbline -2
00E6 .dbline 144
00E6 ;
00E6 ; }
00E6 ;
00E6 ; }
00E6 L26:
00E6 2596 adiw R28,5
00E8 0E940000 xcall pop_gset2
00EC .dbline 0 ; func end
00EC 0895 ret
00EE .dbsym l lcd_add 6 c
00EE .dbsym r mmc_response 20 c
00EE .dbsym r counter 22 c
00EE .dbend
00EE .dbfunc e MMC_check _MMC_check fc
00EE ; mmc_response -> R20
.even
00EE _MMC_check::
00EE 0E940000 xcall push_gset1
00F2 2597 sbiw R28,5
00F4 .dbline -1
00F4 .dbline 149
00F4 ;
00F4 ; /***********MMC_check();******测试卡是否正常为0***********/
00F4 ; unsigned char MMC_check(void);
00F4 ; unsigned char MMC_check(void)
00F4 ; {
00F4 .dbline 151
00F4 ; unsigned char mmc_response;
00F4 ; mmc_response=MMC_sendCmd(MMC_SEND_STATUS,0,0,0,0); //send cmd
00F4 2224 clr R2
00F6 2C82 std y+4,R2
00F8 2A82 std y+2,R2
00FA 2882 std y+0,R2
00FC 2227 clr R18
00FE 0DE0 ldi R16,13
0100 87DF xcall _MMC_sendCmd
0102 402F mov R20,R16
0104 .dbline 152
0104 ; MMC_finish();
0104 B8DF xcall _MMC_finish
0106 .dbline 153
0106 ; LCD_write(0x55,1); //test point
0106 21E0 ldi R18,1
0108 05E5 ldi R16,85
010A 0E940000 xcall _LCD_write
010E .dbline 154
010E ; LCD_write(mmc_response&0x93,1); //test point
010E 21E0 ldi R18,1
0110 042F mov R16,R20
0112 0379 andi R16,147
0114 0E940000 xcall _LCD_write
0118 .dbline 155
0118 ; LCD_write(0x55,1); //test point
0118 21E0 ldi R18,1
011A 05E5 ldi R16,85
011C 0E940000 xcall _LCD_write
0120 .dbline 156
0120 ; return (mmc_response&0x93);
0120 042F mov R16,R20
0122 0379 andi R16,147
0124 .dbline -2
0124 L37:
0124 2596 adiw R28,5
0126 0E940000 xcall pop_gset1
012A .dbline 0 ; func end
012A 0895 ret
012C .dbsym r mmc_response 20 c
012C .dbend
012C .dbfunc e MMC_name _MMC_name fV
012C ; lcd_add -> <dead>
012C ; mmc_response -> R20
012C ; counter -> R22
.even
012C _MMC_name::
012C 0E940000 xcall push_gset2
0130 2597 sbiw R28,5
0132 .dbline -1
0132 .dbline 162
0132 ; }
0132 ;
0132 ;
0132 ; /***********MMC_name();**获得卡的名字*****/
0132 ; void MMC_name(void)
0132 ; {
0132 .dbline 163
0132 ; unsigned char counter,lcd_add,mmc_response=1;
0132 41E0 ldi R20,1
0134 .dbline 164
0134 ; mmc_response=MMC_sendCmd(MMC_SEND_CID,0,0,0,0);
0134 2224 clr R2
0136 2C82 std y+4,R2
0138 2A82 std y+2,R2
013A 2882 std y+0,R2
013C 2227 clr R18
013E 0AE0 ldi R16,10
0140 67DF xcall _MMC_sendCmd
0142 402F mov R20,R16
0144 0DC0 xjmp L40
0146 L39:
0146 .dbline 166
0146 .dbline 167
0146 97DF xcall _MMC_finish
0148 .dbline 168
0148 2224 clr R2
014A 2C82 std y+4,R2
014C 2A82 std y+2,R2
014E 2882 std y+0,R2
0150 2227 clr R18
0152 0AE0 ldi R16,10
0154 5DDF xcall _MMC_sendCmd
0156 402F mov R20,R16
0158 .dbline 169
0158 21E0 ldi R18,1
015A 0E940000 xcall _LCD_write
015E .dbline 170
015E DE98 cbi 0x1b,6
0160 .dbline 172
0160 L40:
0160 .dbline 165
0160 ; while (mmc_response) //读到数据为0表示正常,就跳出
0160 4423 tst R20
0162 89F7 brne L39
0164 .dbline 173
0164 ; {
0164 ; MMC_finish();
0164 ; mmc_response=MMC_sendCmd(MMC_SEND_CID,0,0,0,0);
0164 ; LCD_write(mmc_response,1); //test point
0164 ; led1_on; //test point
0164 ; // prog_flag=1; //错误标记
0164 ; }
0164 ; led1_off; //test point
0164 DE9A sbi 0x1b,6
0166 .dbline 174
0166 ; for (counter=0;counter<26;counter++)
0166 6627 clr R22
0168 12C0 xjmp L45
016A L42:
016A .dbline 175
016A .dbline 176
016A 0FEF ldi R16,255
016C 4CDF xcall _SPI_tx_rx
016E 80E0 ldi R24,<_ram_data
0170 90E0 ldi R25,>_ram_data
0172 E62F mov R30,R22
0174 FF27 clr R31
0176 E80F add R30,R24
0178 F91F adc R31,R25
017A 0083 std z+0,R16
017C .dbline 177
017C 21E0 ldi R18,1
017E E62F mov R30,R22
0180 FF27 clr R31
0182 E80F add R30,R24
0184 F91F adc R31,R25
0186 0081 ldd R16,z+0
0188 0E940000 xcall _LCD_write
018C .dbline 178
018C L43:
018C .dbline 174
018C 6395 inc R22
018E L45:
018E .dbline 174
018E 6A31 cpi R22,26
0190 60F3 brlo L42
0192 .dbline 179
0192 ; {
0192 ; ram_data[counter]=SPI_tx_rx(0xff);
0192 ; LCD_write(ram_data[counter],1); //test point
0192 ; }
0192 ; MMC_flush(8);
0192 08E0 ldi R16,8
0194 73DF xcall _MMC_flush
0196 .dbline -2
0196 .dbline 180
0196 ; }
0196 L38:
0196 2596 adiw R28,5
0198 0E940000 xcall pop_gset2
019C .dbline 0 ; func end
019C 0895 ret
019E .dbsym l lcd_add 6 c
019E .dbsym r mmc_response 20 c
019E .dbsym r counter 22 c
019E .dbend
019E .dbfunc e MMC_capactity _MMC_capactity fl
019E ; lcd_add -> <dead>
019E ; mmc_response -> R20
019E ; counter -> R22
.even
019E _MMC_capactity::
019E 0E940000 xcall push_gset2
01A2 2597 sbiw R28,5
01A4 .dbline -1
01A4 .dbline 185
01A4 ;
01A4 ; /***********MMC_capactity();******************/
01A4 ; unsigned long MMC_capactity(void);
01A4 ; unsigned long MMC_capactity(void)
01A4 ; {
01A4 .dbline 186
01A4 ; unsigned char counter,lcd_add,mmc_response=1;
01A4 41E0 ldi R20,1
01A6 .dbline 187
01A6 ; mmc_response=MMC_sendCmd(MMC_SEND_CSD,0,0,0,0);
01A6 2224 clr R2
01A8 2C82 std y+4,R2
01AA 2A82 std y+2,R2
01AC 2882 std y+0,R2
01AE 2227 clr R18
01B0 09E0 ldi R16,9
01B2 2EDF xcall _MMC_sendCmd
01B4 402F mov R20,R16
01B6 0DC0 xjmp L48
01B8 L47:
01B8 .dbline 189
01B8 .dbline 190
01B8 5EDF xcall _MMC_finish
01BA .dbline 191
01BA 2224 clr R2
01BC 2C82 std y+4,R2
01BE 2A82 std y+2,R2
01C0 2882 std y+0,R2
01C2 2227 clr R18
01C4 0AE0 ldi R16,10
01C6 24DF xcall _MMC_sendCmd
01C8 402F mov R20,R16
01CA .dbline 192
01CA 21E0 ldi R18,1
01CC 0E940000 xcall _LCD_write
01D0 .dbline 193
01D0 DE98 cbi 0x1b,6
01D2 .dbline 195
01D2 L48:
01D2 .dbline 188
01D2 ; while (mmc_response) //读到数据为0表示正常,就跳出
01D2 4423 tst R20
01D4 89F7 brne L47
01D6 .dbline 196
01D6 ; {
01D6 ; MMC_finish();
01D6 ; mmc_response=MMC_sendCmd(MMC_SEND_CID,0,0,0,0);
01D6 ; LCD_write(mmc_response,1); //test point
01D6 ; led1_on; //test point
01D6 ; // prog_flag=1; //错误标记
01D6 ; }
01D6 ; led1_off; //test point
01D6 DE9A sbi 0x1b,6
01D8 .dbline 197
01D8 ; for (counter=0;counter<26;counter++)
01D8 6627 clr R22
01DA 12C0 xjmp L53
01DC L50:
01DC .dbline 198
01DC .dbline 199
01DC 0FEF ldi R16,255
01DE 13DF xcall _SPI_tx_rx
01E0 80E0 ldi R24,<_ram_data
01E2 90E0 ldi R25,>_ram_data
01E4 E62F mov R30,R22
01E6 FF27 clr R31
01E8 E80F add R30,R24
01EA F91F adc R31,R25
01EC 0083 std z+0,R16
01EE .dbline 200
01EE 21E0 ldi R18,1
01F0 E62F mov R30,R22
01F2 FF27 clr R31
01F4 E80F add R30,R24
01F6 F91F adc R31,R25
01F8 0081 ldd R16,z+0
01FA 0E940000 xcall _LCD_write
01FE .dbline 201
01FE L51:
01FE .dbline 197
01FE 6395 inc R22
0200 L53:
0200 .dbline 197
0200 6A31 cpi R22,26
0202 60F3 brlo L50
0204 .dbline 202
0204 ; {
0204 ; ram_data[counter]=SPI_tx_rx(0xff);
0204 ; LCD_write(ram_data[counter],1); //test point
0204 ; }
0204 ; MMC_flush(8);
0204 08E0 ldi R16,8
0206 3ADF xcall _MMC_flush
0208 .dbline -2
0208 .dbline 205
0208 ;
0208 ;
0208 ; }
0208 L46:
0208 2596 adiw R28,5
020A 0E940000 xcall pop_gset2
020E .dbline 0 ; func end
020E 0895 ret
0210 .dbsym l lcd_add 6 c
0210 .dbsym r mmc_response 20 c
0210 .dbsym r counter 22 c
0210 .dbend
.area bss(ram, con, rel)
0000 .dbfile G:\mega8\atmega16\mp3_7210\mmc.c
0000 _ram_data::
0000 .blkb 512
0200 .dbsym e ram_data _ram_data A[512:512]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -