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

📄 communication_lib.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0120                   .dbline 84
 0120                   .dbline 84
 0120 80E0              ldi R24,<_SFPLocateModuleShellMsgItem
 0122 90E0              ldi R25,>_SFPLocateModuleShellMsgItem
 0124 978B              std z+23,R25
 0126 868B              std z+22,R24
 0128                   .dbline 84
 0128 8AEA              ldi R24,170
 012A 808F              std z+24,R24
 012C                   .dbline 84
 012C 85E5              ldi R24,85
 012E 818F              std z+25,R24
 0130                   .dbline 84
 0130 228E              std z+26,R2
 0132                   .dbline 84
 0132 238E              std z+27,R2
 0134                   .dbline 84
 0134 22A2              std z+34,R2
 0136                   .dbline 84
 0136 23A2              std z+35,R2
 0138                   .dbline 84
 0138 24A2              std z+36,R2
 013A                   .dbline 84
 013A 80E0              ldi R24,<PL_SFP_NULL_Input_Data_Function
 013C 90E0              ldi R25,>PL_SFP_NULL_Input_Data_Function
 013E 958F              std z+29,R25
 0140 848F              std z+28,R24
 0142                   .dbline 84
 0142 80E0              ldi R24,<PL_SFP_NULL_Output_Data_Function
 0144 90E0              ldi R25,>PL_SFP_NULL_Output_Data_Function
 0146 978F              std z+31,R25
 0148 868F              std z+30,R24
 014A                   .dbline 84
 014A 80E0              ldi R24,<PL_SFP_NULL_Peek_Data_Function
 014C 90E0              ldi R25,>PL_SFP_NULL_Peek_Data_Function
 014E 91A3              std z+33,R25
 0150 80A3              std z+32,R24
 0152                   .dbline 85
 0152           ;     SET_INPUT_DATA_FUNCTION(UARTgetDataFromRxBuff)
 0152 80E0              ldi R24,<PL_UARTgetDataFromRxBuff
 0154 90E0              ldi R25,>PL_UARTgetDataFromRxBuff
 0156 958F              std z+29,R25
 0158 848F              std z+28,R24
 015A                   .dbline 86
 015A           ;     SET_OUTPUT_DATA_FUNCTION(UARTaddDataToTxBuff)
 015A 80E0              ldi R24,<PL_UARTaddDataToTxBuff
 015C 90E0              ldi R25,>PL_UARTaddDataToTxBuff
 015E 978F              std z+31,R25
 0160 868F              std z+30,R24
 0162                   .dbline -2
 0162           L11:
 0162                   .dbline 0 ; func end
 0162 0895              ret
 0164                   .dbsym r pSFP 16 pS[SerialFrameProcess]
 0164                   .dbend
 0164                   .dbfunc e Send_MSG _Send_MSG fc
 0164           ;         Length -> y+7
 0164           ;          pData -> R12,R13
 0164           ;           cCMD -> R10
                        .even
 0164           _Send_MSG::
 0164 00D0              rcall push_xgset003C
 0166 6901              movw R12,R18
 0168 A02E              mov R10,R16
 016A 2397              sbiw R28,3
 016C                   .dbline -1
 016C                   .dbline 96
 016C           ; END_DEFINE_SERIAL_FRAME_PROCESS
 016C           ; 
 016C           ; /***********************************************************
 016C           ; *   函数说明:消息发送函数                                 *
 016C           ; *   输入:    指令,要发送的数据,数据的长度               *
 016C           ; *   输出:    指令是否发送成功                             *
 016C           ; *   调用函数:SPF_Send_MSG()                               *
 016C           ; ***********************************************************/
 016C           ; BOOL Send_MSG(uint8 cCMD,uint8 *pData,uint8 Length)
 016C           ; {
 016C                   .dbline 97
 016C           ;     return SPF_Send_MSG
 016C 0F80              ldd R0,y+7
 016E 0A82              std y+2,R0
 0170 D982              std y+1,R13
 0172 C882              std y+0,R12
 0174 2A2D              mov R18,R10
 0176 00E0              ldi R16,<_SFPLocateModuleShell
 0178 10E0              ldi R17,>_SFPLocateModuleShell
 017A 00D0              rcall _SPF_Send_MSG
 017C                   .dbline -2
 017C           L20:
 017C                   .dbline 0 ; func end
 017C 2396              adiw R28,3
 017E 00C0              rjmp pop_xgset003C
 0180                   .dbsym l Length 7 c
 0180                   .dbsym r pData 12 pc
 0180                   .dbsym r cCMD 10 c
 0180                   .dbend
 0180                   .dbfunc e Communication_INIT _Communication_INIT fV
                        .even
 0180           _Communication_INIT::
 0180                   .dbline -1
 0180                   .dbline 113
 0180           ;         (
 0180           ;             &SERIAL_FRAME_PROC(LocateModuleShell),
 0180           ;             cCMD,
 0180           ;             pData,
 0180           ;             Length
 0180           ;         );
 0180           ; }
 0180           ; 
 0180           ; /***********************************************************
 0180           ; *   函数说明:通讯层初始化函数                             *
 0180           ; *   输入:    无                                           *
 0180           ; *   输出:    无                                           *
 0180           ; *   调用函数:无                                           *
 0180           ; ***********************************************************/
 0180           ; void Communication_INIT(void)
 0180           ; {
 0180                   .dbline 114
 0180           ;     INIT_MSG_MAP(LocateModuleShell);
 0180 3FDF              rcall _MSG_Map_LocateModuleShell_INIT
 0182                   .dbline 114
 0182                   .dbline 115
 0182           ;     INIT_SERIAL_FRAME_PROCESS(LocateModuleShell);
 0182                   .dbline 115
 0182                   .dbline -2
 0182           L21:
 0182                   .dbline 0 ; func end
 0182 95CF              rjmp _SFP_LocateModuleShell_INIT
 0184                   .dbend
 0184                   .dbfunc e PROC_Shell _PROC_Shell fc
                        .even
 0184           _PROC_Shell::
 0184                   .dbline -1
 0184                   .dbline 125
 0184           ; }
 0184           ; 
 0184           ; /***********************************************************
 0184           ; *   函数说明:指令解析进程                                 *
 0184           ; *   输入:    无                                           *
 0184           ; *   输出:    是否继续运行                                 *
 0184           ; *   调用函数:SERIAL_FRAME_PROCESS()                       *
 0184           ; ***********************************************************/
 0184           ; BOOL PROC_Shell(void)
 0184           ; {
 0184                   .dbline 126
 0184           ;     SERIAL_FRAME_PROCESS(LocateModuleShell);
 0184 00E0              ldi R16,<_SFPLocateModuleShell
 0186 10E0              ldi R17,>_SFPLocateModuleShell
 0188 00D0              rcall _Serial_Frame_Process
 018A                   .dbline 128
 018A           ;     
 018A           ;     return TRUE;
 018A 01E0              ldi R16,1
 018C                   .dbline -2
 018C           L22:
 018C                   .dbline 0 ; func end
 018C 0895              ret
 018E                   .dbend
                        .area lit(rom, con, rel)
 0000           L24:
 0000 00000000          .word 0x0,0x0
 0004 0000000000000000  .byte 0,0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 018E                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\Communication_LIB.c
 018E                   .dbfunc s MSGMap_Acknowledge _MSGMap_Acknowledge fc
 018E           ;         pcData -> R10,R11
 018E           ;        fBuffer -> y+1
 018E           ;       pMsgItem -> R20,R21
                        .even
 018E           _MSGMap_Acknowledge:
 018E 00D0              rcall push_xgset300C
 0190 A801              movw R20,R16
 0192 2D97              sbiw R28,13
 0194                   .dbline -1
 0194                   .dbline 138
 0194           ; }
 0194           ; 
 0194           ; /***********************************************************
 0194           ; *   函数说明:模块应答消息处理函数                         *
 0194           ; *   输入:    收到的消息                                   *
 0194           ; *   输出:    消息是否得到了处理                           *
 0194           ; *   调用函数:无                                           *
 0194           ; ***********************************************************/
 0194           ; static BOOL MSGMap_Acknowledge(MSG_ITEM *pMsgItem)
 0194           ; {
 0194                   .dbline 139
 0194           ;     uint8 *pcData = pMsgItem->pData;
 0194 FA01              movw R30,R20
 0196 A280              ldd R10,z+2
 0198 B380              ldd R11,z+3
 019A                   .dbline 140
 019A           ;     float fBuffer[3] = {0};
 019A 80E0              ldi R24,<L24
 019C 90E0              ldi R25,>L24
 019E FE01              movw R30,R28
 01A0 3196              adiw R30,1
 01A2 0CE0              ldi R16,12
 01A4 10E0              ldi R17,0
 01A6 FA93              st -y,R31
 01A8 EA93              st -y,R30
 01AA 9A93              st -y,R25
 01AC 8A93              st -y,R24
 01AE 00D0              rcall asgncblk
 01B0                   .dbline 142
 01B0           ;     
 01B0           ;     fBuffer[0] = g_fX;
 01B0 40900200          lds R4,_g_fX+2
 01B4 50900300          lds R5,_g_fX+2+1
 01B8 20900000          lds R2,_g_fX
 01BC 30900100          lds R3,_g_fX+1
 01C0 2982              std y+1,R2
 01C2 3A82              std y+2,R3
 01C4 4B82              std y+3,R4
 01C6 5C82              std y+4,R5
 01C8                   .dbline 143
 01C8           ;     fBuffer[1] = g_fY;
 01C8 40900200          lds R4,_g_fY+2
 01CC 50900300          lds R5,_g_fY+2+1
 01D0 20900000          lds R2,_g_fY
 01D4 30900100          lds R3,_g_fY+1
 01D8 2D82              std y+5,R2
 01DA 3E82              std y+6,R3
 01DC 4F82              std y+7,R4
 01DE 5886              std y+8,R5
 01E0                   .dbline 144
 01E0           ;     fBuffer[2] = g_fAngle;
 01E0 40900200          lds R4,_g_fAngle+2
 01E4 50900300          lds R5,_g_fAngle+2+1
 01E8 20900000          lds R2,_g_fAngle
 01EC 30900100          lds R3,_g_fAngle+1
 01F0 2986              std y+9,R2
 01F2 3A86              std y+10,R3
 01F4 4B86              std y+11,R4
 01F6 5C86              std y+12,R5
 01F8                   .dbline 147
 01F8           ;     
 01F8           ;     //发送坐标信息
 01F8           ;     Send_MSG(COM_CMD_ACK,(BYTE *)fBuffer,sizeof(fBuffer));
 01F8 8CE0              ldi R24,12
 01FA 8883              std y+0,R24
 01FC 9E01              movw R18,R28
 01FE 2F5F              subi R18,255  ; offset = 1
 0200 3F4F              sbci R19,255
 0202 0CEA              ldi R16,172
 0204 AFDF              rcall _Send_MSG
 0206                   .dbline 149
 0206           ;     
 0206           ;     return TRUE;
 0206 01E0              ldi R16,1
 0208                   .dbline -2
 0208           L23:
 0208                   .dbline 0 ; func end
 0208 2D96              adiw R28,13
 020A 00C0              rjmp pop_xgset300C
 020C                   .dbsym r pcData 10 pc
 020C                   .dbsym l fBuffer 1 A[12:3]D
 020C                   .dbsym r pMsgItem 20 pS[MsgItem]
 020C                   .dbend
 020C                   .dbfunc s MSGMap_Set _MSGMap_Set fc
 020C           ;        cflags0 -> R10
 020C           ;             n1 -> R20
 020C           ;         chXOR0 -> R10
 020C           ; fAbsoluteAngle0 -> y+1
 020C           ;         chCTR0 -> R20
 020C           ;         pcData -> R22,R23
 020C           ;       pMsgItem -> R20,R21
                        .even
 020C           _MSGMap_Set:
 020C 00D0              rcall push_xgsetF00C
 020E A801              movw R20,R16
 0210 2597              sbiw R28,5
 0212                   .dbline -1
 0212                   .dbline 159
 0212           ; }
 0212           ; 
 0212           ; /***********************************************************
 0212           ; *   函数说明:模块设定消息处理函数                         *
 0212           ; *   输入:    收到的消息                                   *
 0212           ; *   输出:    消息是否得到了处理                           *
 0212           ; *   调用函数:无                                           *
 0212           ; ***********************************************************/
 0212           ; static BOOL MSGMap_Set(MSG_ITEM *pMsgItem)
 0212           ; {
 0212                   .dbline 160
 0212           ;     uint8 *pcData = pMsgItem->pData;
 0212 FA01              movw R30,R20
 0214 6281              ldd R22,z+2
 0216 7381              ldd R23,z+3
 0218                   .dbline 162
 0218           ;     
 0218           ;     if ((pMsgItem->cDataLength) < (1 + sizeof(float) * 3))
 0218 8181              ldd R24,z+1
 021A 8D30              cpi R24,13
 021C 10F4              brsh L28
 021E           X3:
 021E                   .dbline 163
 021E           ;     {
 021E                   .dbline 165
 021E           ;         //指令错误
 021E           ;         return FALSE;
 021E 0027              clr R16
 0220 BBC0              rjmp L27
 0222           L28:
 0222                   .dbline 168
 0222           ;     }
 0222           ;     
 0222           ;     {
 0222                   .dbline 169
 0222           ;         UINT8 chCTR = pcData[0];
 0222 FB01              movw R30,R22
 0224 4081              ldd R20,z+0
 0226                   .dbline 170
 0226           ;         float fAbsoluteAngle = g_fAbsoluteAngle;
 0226 40900200          lds R4,_g_fAbsoluteAngle+2
 022A 50900300          lds R5,_g_fAbsoluteAngle+2+1
 022E 20900000          lds R2,_g_fAbsoluteAngle
 0232 30900100          lds R3,_g_fAbsoluteAngle+1
 0236 2982              std y+1,R2
 0238 3A82              std y+2,R3
 023A 4B82              std y+3,R4
 023C 5C82              std y+4,R5

⌨️ 快捷键说明

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