📄 communication_lib.lis
字号:
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 + -