⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdcmd.lis

📁 mega128的串口发送文件.可以发送0X55上位机使用串口调试工具就可以接收了.
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 03A8 0AD1              xcall _SD_ReadRegister
 03AA                   .dbline -2
 03AA           L30:
 03AA 2996              adiw R28,9
 03AC 0E940000          xcall pop_gset3
 03B0                   .dbline 0 ; func end
 03B0 0895              ret
 03B2                   .dbsym l resp 8 c
 03B2                   .dbsym l param 4 A[4:4]c
 03B2                   .dbsym r ret 10 c
 03B2                   .dbsym r recbuf 22 pc
 03B2                   .dbsym r csdlen 20 c
 03B2                   .dbend
                        .area lit(rom, con, rel)
 0008           L37:
 0008 0000              .byte 0,0
 000A 0000              .byte 0,0
                        .area text(rom, con, rel)
 03B2                   .dbfile D:\new_sd\SD\SD\sdcmd.c
 03B2                   .dbfunc e SD_StopTransmission _SD_StopTransmission fc
 03B2           ;           resp -> y+8
 03B2           ;          param -> y+4
                        .even
 03B2           _SD_StopTransmission::
 03B2 2997              sbiw R28,9
 03B4                   .dbline -1
 03B4                   .dbline 188
 03B4           ; }
 03B4           ; 
 03B4           ; /*******************************************************************************************************************
 03B4           ; ** 函数名称: INT8U SD_ReadCID()                                               Name:     INT8U SD_ReadCID()
 03B4           ; ** 功能描述: 读SD卡的CID寄存器                                                Function: read CID register of sd card
 03B4           ; ** 输   入: INT8U cidlen  : 寄存器长度(固定为16)                       INT8U cidlen  : len of register (fixed,is 16)
 03B4           ;                        INT8U *recbuf : 接收缓冲区                                           INT8U *recbuf : recbuffer 
 03B4           ; ** 输   出: 0:   正确    >0:   错误码                                Output:   0:  right             >0:  error code
 03B4           ; ********************************************************************************************************************/
 03B4           ; #if SD_ReadCID_EN
 03B4           ; uint8 SD_ReadCID(uint8 cidlen, uint8 *recbuf)
 03B4           ; {
 03B4           ;     uint8 param[4] = {0,0,0,0},resp,ret;
 03B4           ;  
 03B4           ;     ret = SD_SendCmd(CMD10, param, CMD10_R, &resp);           /* 读CID寄存器命令 command that read CID register */
 03B4           ;     if ( ret != SD_NO_ERR)
 03B4           ;               return ret;                                                                                             
 03B4           ;    
 03B4           ;     if (resp != 0)
 03B4           ;         return SD_ERR_CMD_RESP;                                                       /* 响应错误 response is error */
 03B4           ;       
 03B4           ;       return (SD_ReadRegister(cidlen, recbuf));
 03B4           ; }
 03B4           ; #endif
 03B4           ; 
 03B4           ; /********************************************************************************************************************
 03B4           ; ** 函数名称: INT8U SD_StopTransmission()                      Name:     INT8U SD_StopTransmission()
 03B4           ; ** 功能描述: 停止数据传输                                                     Function: stop data transmission 
 03B4           ; ** 输   入: 无                                                                               Input:    NULL
 03B4           ; ** 输   出: 0:   正确    >0:   错误码                                Output:   0:  right             >0:  error code
 03B4           ; *********************************************************************************************************************/
 03B4           ; uint8 SD_StopTransmission(void)
 03B4           ; {
 03B4                   .dbline 189
 03B4           ;       uint8 param[4] = {0,0,0,0},resp;
 03B4 80E0              ldi R24,<L37
 03B6 90E0              ldi R25,>L37
 03B8 FE01              movw R30,R28
 03BA 3496              adiw R30,4
 03BC 04E0              ldi R16,4
 03BE 10E0              ldi R17,0
 03C0 FA93              st -y,R31
 03C2 EA93              st -y,R30
 03C4 9A93              st -y,R25
 03C6 8A93              st -y,R24
 03C8 0E940000          xcall asgncblk
 03CC                   .dbline 191
 03CC           ;       
 03CC           ;       return (SD_SendCmd(CMD12, param, CMD12_R, &resp));      /* 结束数据传输命令失败 stop transmission command fail */
 03CC CE01              movw R24,R28
 03CE 0896              adiw R24,8
 03D0 9B83              std y+3,R25
 03D2 8A83              std y+2,R24
 03D4 82E0              ldi R24,2
 03D6 8883              std y+0,R24
 03D8 9E01              movw R18,R28
 03DA 2C5F              subi R18,252  ; offset = 4
 03DC 3F4F              sbci R19,255
 03DE 0CE0              ldi R16,12
 03E0 0FDE              xcall _SD_SendCmd
 03E2                   .dbline -2
 03E2           L36:
 03E2 2996              adiw R28,9
 03E4                   .dbline 0 ; func end
 03E4 0895              ret
 03E6                   .dbsym l resp 8 c
 03E6                   .dbsym l param 4 A[4:4]c
 03E6                   .dbend
                        .area lit(rom, con, rel)
 000C           L39:
 000C 0000              .byte 0,0
 000E 0000              .byte 0,0
                        .area text(rom, con, rel)
 03E6                   .dbfile D:\new_sd\SD\SD\sdcmd.c
 03E6                   .dbfunc e SD_ReadCard_Status _SD_ReadCard_Status fc
 03E6           ;          param -> y+4
 03E6           ;         buffer -> R20,R21
 03E6           ;            len -> R22
                        .even
 03E6           _SD_ReadCard_Status::
 03E6 0E940000          xcall push_gset2
 03EA A901              movw R20,R18
 03EC 602F              mov R22,R16
 03EE 2897              sbiw R28,8
 03F0                   .dbline -1
 03F0                   .dbline 202
 03F0           ; }
 03F0           ; 
 03F0           ; /*********************************************************************************************************************
 03F0           ; ** 函数名称: INT8U SD_ReadCard_Status()                               Name:     INT8U SD_ReadCard_Status()
 03F0           ; ** 功能描述: 读SD卡的 Card Status 寄存器                      Function: read Card Status register of sd card 
 03F0           ; ** 输   入: INT8U len:        寄存器长度(固定为2)                      INT8U len:      len of register (fixed,is 2)
 03F0           ;                        INT8U *recbuf : 接收缓冲区                                           INT8U *recbuf : recbuffer
 03F0           ; ** 输   出: 0:   正确    >0:   错误码                                Output:   0:  right             >0:  error code
 03F0           ; **********************************************************************************************************************/
 03F0           ; uint8 SD_ReadCard_Status(uint8 len, uint8 *buffer)
 03F0           ; {
 03F0                   .dbline 203
 03F0           ;     uint8 param[4] = {0,0,0,0};
 03F0 80E0              ldi R24,<L39
 03F2 90E0              ldi R25,>L39
 03F4 FE01              movw R30,R28
 03F6 3496              adiw R30,4
 03F8 04E0              ldi R16,4
 03FA 10E0              ldi R17,0
 03FC FA93              st -y,R31
 03FE EA93              st -y,R30
 0400 9A93              st -y,R25
 0402 8A93              st -y,R24
 0404 0E940000          xcall asgncblk
 0408                   .dbline 205
 0408           ; 
 0408           ;     return (SD_SendCmd(CMD13, param, CMD13_R, buffer)); /* 读 Card Status 寄存器 */
 0408 5B83              std y+3,R21
 040A 4A83              std y+2,R20
 040C 83E0              ldi R24,3
 040E 8883              std y+0,R24
 0410 9E01              movw R18,R28
 0412 2C5F              subi R18,252  ; offset = 4
 0414 3F4F              sbci R19,255
 0416 0DE0              ldi R16,13
 0418 F3DD              xcall _SD_SendCmd
 041A                   .dbline -2
 041A           L38:
 041A 2896              adiw R28,8
 041C 0E940000          xcall pop_gset2
 0420                   .dbline 0 ; func end
 0420 0895              ret
 0422                   .dbsym l param 4 A[4:4]c
 0422                   .dbsym r buffer 20 pc
 0422                   .dbsym r len 22 c
 0422                   .dbend
 0422                   .dbfunc e SD_SetBlockLen _SD_SetBlockLen fc
 0422           ;           resp -> y+8
 0422           ;          param -> y+4
 0422           ;            ret -> R20
 0422           ;         length -> y+11
                        .even
 0422           _SD_SetBlockLen::
 0422 0E940000          xcall push_arg4
 0426 0E940000          xcall push_gset1
 042A 2997              sbiw R28,9
 042C                   .dbline -1
 042C                   .dbline 217
 042C           ;                                                                                                       /* read register of Card Status */
 042C           ; }
 042C           ; 
 042C           ; 
 042C           ; /********************************************************************************************************************
 042C           ; ** 函数名称: INT8U Sd_SetBlockLen()                                   Name:     INT8U Sd_SetBlockLen()
 042C           ; ** 功能描述: 设置一个块的长度                                         Function: set a block len of sd card 
 042C           ; ** 输   入: INT32U length    : 块的长度值                    Input:    INT32U length : the length of a block
 042C           ; ** 输   出: 0:   正确    >0:   错误码                                Output:   0:  right             >0:  error code
 042C           ; *********************************************************************************************************************/
 042C           ; uint8 SD_SetBlockLen(uint32 length)
 042C           ; {
 042C                   .dbline 220
 042C           ;       uint8 param[4],resp,ret;
 042C           ;   
 042C           ;     SD_PackParam(param, length);                                      /* 将参数转化为字节形式 change the parameter to bytes form */
 042C FE01              movw R30,R28
 042E 2384              ldd R2,z+11
 0430 3484              ldd R3,z+12
 0432 4584              ldd R4,z+13
 0434 5684              ldd R5,z+14
 0436 4882              std y+0,R4
 0438 5982              std y+1,R5
 043A 9101              movw R18,R2
 043C 8E01              movw R16,R28
 043E 0C5F              subi R16,252  ; offset = 4
 0440 1F4F              sbci R17,255
 0442 FBDE              xcall _SD_PackParam
 0444                   .dbline 222
 0444           ;                                                                                                       
 0444           ;     ret = SD_SendCmd(CMD16, param, CMD16_R, &resp);
 0444 CE01              movw R24,R28
 0446 0896              adiw R24,8
 0448 9B83              std y+3,R25
 044A 8A83              std y+2,R24
 044C 81E0              ldi R24,1
 044E 8883              std y+0,R24
 0450 9E01              movw R18,R28
 0452 2C5F              subi R18,252  ; offset = 4
 0454 3F4F              sbci R19,255
 0456 00E1              ldi R16,16
 0458 D3DD              xcall _SD_SendCmd
 045A 402F              mov R20,R16
 045C                   .dbline 223
 045C           ;     if (ret != SD_NO_ERR)
 045C 0023              tst R16
 045E 09F0              breq L41
 0460                   .dbline 224
 0460           ;               return ret;                                                                     /* 设置块的长度为length失败 set the length of block to length fail */
 0460 06C0              xjmp L40
 0462           L41:
 0462                   .dbline 226
 0462           ;       
 0462           ;       if (resp != 0)
 0462 2884              ldd R2,y+8
 0464 2220              tst R2
 0466 11F0              breq L43
 0468                   .dbline 227
 0468           ;       return SD_ERR_CMD_RESP;                                         /* 响应错误 response is error */
 0468 02E1              ldi R16,18
 046A 01C0              xjmp L40
 046C           L43:
 046C                   .dbline 229
 046C           ;     
 046C           ;     return SD_NO_ERR;                                                                 /* 返回执行成功 return perform sucessfully */                   
 046C 0027              clr R16
 046E                   .dbline -2
 046E           L40:
 046E 2996              adiw R28,9
 0470 0E940000          xcall pop_gset1
 0474 2496              adiw R28,4
 0476                   .dbline 0 ; func end
 0476 0895              ret
 0478                   .dbsym l resp 8 c
 0478                   .dbsym l param 4 A[4:4]c
 0478                   .dbsym r ret 20 c
 0478                   .dbsym l length 11 l
 0478                   .dbend
 0478                   .dbfunc e SD_ReadSingleBlock _SD_ReadSingleBlock fc
 0478           ;      blockaddr -> y+4
                        .even
 0478           _SD_ReadSingleBlock::
 0478 0E940000          xcall push_arg4
 047C 2497              sbiw R28,4
 047E                   .dbline -1
 047E                   .dbline 239
 047E           ; }
 047E           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -