📄 communication_lib.lis
字号:
023E .dbline 172
023E ;
023E ; if (chCTR & BIT(2))
023E 42FF sbrs R20,2
0240 2CC0 rjmp L30
0242 X4:
0242 .dbline 173
0242 ; {
0242 .dbline 175
0242 ; //设置角度
0242 ; g_chCMDBuffer[2] |= BIT(2);
0242 80910200 lds R24,_g_chCMDBuffer+2
0246 8460 ori R24,4
0248 80930200 sts _g_chCMDBuffer+2,R24
024C .dbline 176
024C ; fAbsoluteAngle = TYPE_CONVERSION(&pcData[9],float) - K_ANGLE * (float)g_wCounter;
024C 3996 adiw R30,9
024E 2080 ldd R2,z+0
0250 3180 ldd R3,z+1
0252 4280 ldd R4,z+2
0254 5380 ldd R5,z+3
0256 00E0 ldi R16,<L33
0258 10E0 ldi R17,>L33
025A 00D0 rcall lpm32
025C 3801 movw R6,R16
025E 4901 movw R8,R18
0260 00910000 lds R16,_g_wCounter
0264 10910100 lds R17,_g_wCounter+1
0268 00D0 rcall uint2fp
026A 3A93 st -y,R19
026C 2A93 st -y,R18
026E 1A93 st -y,R17
0270 0A93 st -y,R16
0272 8301 movw R16,R6
0274 9401 movw R18,R8
0276 00D0 rcall fpmule2x
0278 8101 movw R16,R2
027A 9201 movw R18,R4
027C 00D0 rcall fpsub2
027E 0983 std y+1,R16
0280 1A83 std y+2,R17
0282 2B83 std y+3,R18
0284 3C83 std y+4,R19
0286 .dbline 177
0286 ; TYPE_CONVERSION(&g_chCMDBuffer[11],float) = fAbsoluteAngle;
0286 2980 ldd R2,y+1
0288 3A80 ldd R3,y+2
028A 4B80 ldd R4,y+3
028C 5C80 ldd R5,y+4
028E E0E0 ldi R30,<_g_chCMDBuffer+11
0290 F0E0 ldi R31,>_g_chCMDBuffer+11
0292 2082 std z+0,R2
0294 3182 std z+1,R3
0296 4282 std z+2,R4
0298 5382 std z+3,R5
029A .dbline 178
029A ; }
029A L30:
029A .dbline 180
029A ;
029A ; fAbsoluteAngle += PI;
029A 2980 ldd R2,y+1
029C 3A80 ldd R3,y+2
029E 4B80 ldd R4,y+3
02A0 5C80 ldd R5,y+4
02A2 00E0 ldi R16,<L35
02A4 10E0 ldi R17,>L35
02A6 00D0 rcall lpm32
02A8 3A93 st -y,R19
02AA 2A93 st -y,R18
02AC 1A93 st -y,R17
02AE 0A93 st -y,R16
02B0 8101 movw R16,R2
02B2 9201 movw R18,R4
02B4 00D0 rcall fpadd2
02B6 0983 std y+1,R16
02B8 1A83 std y+2,R17
02BA 2B83 std y+3,R18
02BC 3C83 std y+4,R19
02BE .dbline 182
02BE ;
02BE ; if (chCTR & BIT(0))
02BE 40FF sbrs R20,0
02C0 22C0 rjmp L36
02C2 X5:
02C2 .dbline 183
02C2 ; {
02C2 .dbline 185
02C2 ; //设置X坐标
02C2 ; g_chCMDBuffer[2] |= BIT(0);
02C2 80910200 lds R24,_g_chCMDBuffer+2
02C6 8160 ori R24,1
02C8 80930200 sts _g_chCMDBuffer+2,R24
02CC .dbline 187
02CC ;
02CC ; TYPE_CONVERSION(&g_chCMDBuffer[3],float) =
02CC 0981 ldd R16,y+1
02CE 1A81 ldd R17,y+2
02D0 2B81 ldd R18,y+3
02D2 3C81 ldd R19,y+4
02D4 00D0 rcall _cosf
02D6 1801 movw R2,R16
02D8 2901 movw R4,R18
02DA FB01 movw R30,R22
02DC 6180 ldd R6,z+1
02DE 7280 ldd R7,z+2
02E0 8380 ldd R8,z+3
02E2 9480 ldd R9,z+4
02E4 00E0 ldi R16,<L40
02E6 10E0 ldi R17,>L40
02E8 00D0 rcall lpm32
02EA 5A92 st -y,R5
02EC 4A92 st -y,R4
02EE 3A92 st -y,R3
02F0 2A92 st -y,R2
02F2 00D0 rcall fpmule2x
02F4 8301 movw R16,R6
02F6 9401 movw R18,R8
02F8 00D0 rcall fpadd2
02FA E0E0 ldi R30,<_g_chCMDBuffer+3
02FC F0E0 ldi R31,>_g_chCMDBuffer+3
02FE 0083 std z+0,R16
0300 1183 std z+1,R17
0302 2283 std z+2,R18
0304 3383 std z+3,R19
0306 .dbline 190
0306 ; TYPE_CONVERSION(&pcData[1],float) +
0306 ; RELATIVE_L * cos(fAbsoluteAngle);
0306 ; }
0306 L36:
0306 .dbline 191
0306 ; if (chCTR & BIT(1))
0306 41FF sbrs R20,1
0308 22C0 rjmp L41
030A X6:
030A .dbline 192
030A ; {
030A .dbline 194
030A ; //设置Y坐标
030A ; g_chCMDBuffer[2] |= BIT(1);
030A 80910200 lds R24,_g_chCMDBuffer+2
030E 8260 ori R24,2
0310 80930200 sts _g_chCMDBuffer+2,R24
0314 .dbline 195
0314 ; TYPE_CONVERSION(&g_chCMDBuffer[7],float) =
0314 0981 ldd R16,y+1
0316 1A81 ldd R17,y+2
0318 2B81 ldd R18,y+3
031A 3C81 ldd R19,y+4
031C 00D0 rcall _sinf
031E 1801 movw R2,R16
0320 2901 movw R4,R18
0322 FB01 movw R30,R22
0324 6580 ldd R6,z+5
0326 7680 ldd R7,z+6
0328 8780 ldd R8,z+7
032A 9084 ldd R9,z+8
032C 00E0 ldi R16,<L40
032E 10E0 ldi R17,>L40
0330 00D0 rcall lpm32
0332 5A92 st -y,R5
0334 4A92 st -y,R4
0336 3A92 st -y,R3
0338 2A92 st -y,R2
033A 00D0 rcall fpmule2x
033C 8301 movw R16,R6
033E 9401 movw R18,R8
0340 00D0 rcall fpadd2
0342 E0E0 ldi R30,<_g_chCMDBuffer+7
0344 F0E0 ldi R31,>_g_chCMDBuffer+7
0346 0083 std z+0,R16
0348 1183 std z+1,R17
034A 2283 std z+2,R18
034C 3383 std z+3,R19
034E .dbline 198
034E ; TYPE_CONVERSION(&pcData[5],float) +
034E ; RELATIVE_L * sin(fAbsoluteAngle);
034E ; }
034E L41:
034E .dbline 200
034E ;
034E ; if (chCTR & 0x07)
034E 842F mov R24,R20
0350 8770 andi R24,7
0352 D9F0 breq L45
0354 X7:
0354 .dbline 201
0354 ; {
0354 .dbline 202
0354 ; UINT8 n = 0;
0354 .dbline 203
0354 ; BYTE chXOR = 0;
0354 AA24 clr R10
0356 .dbline 205
0356 ;
0356 ; for (n = 1;n < 15;n++)
0356 41E0 ldi R20,1
0358 09C0 rjmp L50
035A L47:
035A .dbline 206
035A ; {
035A .dbline 207
035A ; chXOR ^= g_chCMDBuffer[n];
035A 80E0 ldi R24,<_g_chCMDBuffer
035C 90E0 ldi R25,>_g_chCMDBuffer
035E E42F mov R30,R20
0360 FF27 clr R31
0362 E80F add R30,R24
0364 F91F adc R31,R25
0366 2080 ldd R2,z+0
0368 A224 eor R10,R2
036A .dbline 208
036A ; }
036A L48:
036A .dbline 205
036A 4395 inc R20
036C L50:
036C .dbline 205
036C 4F30 cpi R20,15
036E A8F3 brlo L47
0370 X8:
0370 .dbline 209
0370 ; g_chCMDBuffer[15] = chXOR;
0370 A0920F00 sts _g_chCMDBuffer+15,R10
0374 .dbline 211
0374 ;
0374 ; SAFE_CODE_PERFORMANCE
0374 .dbline 211
0374 AFB6 in R10,0x3f
0376 .dbline 211
0376 F894 cli
0378 .dbline 211
0378 81E0 ldi R24,1
037A 80930000 sts _g_bIfSendCMD,R24
037E .dbline 211
037E 2224 clr R2
0380 20920000 sts _g_bIfStartCMD,R2
0384 .dbline 211
0384 20920000 sts _g_bIfSendHead,R2
0388 .dbline 211
0388 .dbline 211
0388 AFBE out 0x3f,R10
038A .dbline 211
038A .dbline 217
038A ; (
038A ; g_bIfSendCMD = TRUE;
038A ; g_bIfStartCMD = FALSE;
038A ; g_bIfSendHead = FALSE;
038A ; )
038A ; }
038A L45:
038A .dbline 219
038A ;
038A ; }
038A .dbline 222
038A ;
038A ;
038A ; Send_MSG(COM_CMD_SET,NULL,0);
038A 2224 clr R2
038C 2882 std y+0,R2
038E 2227 clr R18
0390 3327 clr R19
0392 01EA ldi R16,161
0394 E7DE rcall _Send_MSG
0396 .dbline 224
0396 ;
0396 ; return TRUE;
0396 01E0 ldi R16,1
0398 .dbline -2
0398 L27:
0398 .dbline 0 ; func end
0398 2596 adiw R28,5
039A 00C0 rjmp pop_xgsetF00C
039C .dbsym r cflags0 10 c
039C .dbsym r n1 20 c
039C .dbsym r chXOR0 10 c
039C .dbsym l fAbsoluteAngle0 1 D
039C .dbsym r chCTR0 20 c
039C .dbsym r pcData 22 pc
039C .dbsym r pMsgItem 20 pS[MsgItem]
039C .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\Communication_LIB.c
0000 _SFPLocateModuleShellMsgItem::
0000 .blkb 32
0020 .dbsym e SFPLocateModuleShellMsgItem _SFPLocateModuleShellMsgItem A[32:32]c
0020 _SFPLocateModuleShellBuffer::
0020 .blkb 32
0040 .dbsym e SFPLocateModuleShellBuffer _SFPLocateModuleShellBuffer A[32:32]c
0040 _SFPLocateModuleShell::
0040 .blkb 37
0065 .dbsym e SFPLocateModuleShell _SFPLocateModuleShell S[SerialFrameProcess]
0065 _MSGMapLocateModuleShellItemArray::
0065 .blkb 6
006B .dbsym e MSGMapLocateModuleShellItemArray _MSGMapLocateModuleShellItemArray A[6:2]S[MsgMapItem]
006B _MSGMapLocateModuleShell::
006B .blkb 3
006E .dbsym e MSGMapLocateModuleShell _MSGMapLocateModuleShell S[MsgMap]
.area lit(rom, con, rel)
000C L40:
000C 00801743 .word 0x8000,0x4317
0010 L35:
0010 DB0F4940 .word 0xfdb,0x4049
0014 L33:
0014 DB0FC93B .word 0xfdb,0x3bc9
0018 ; }
.area func_lit
0000 0000 PL_UARTaddDataToTxBuff: .word `_UARTaddDataToTxBuff
0002 0000 PL_UARTgetDataFromRxBuff: .word `_UARTgetDataFromRxBuff
0004 0000 PL_SFP_NULL_Peek_Data_Function: .word `_SFP_NULL_Peek_Data_Function
0006 0000 PL_SFP_NULL_Output_Data_Function: .word `_SFP_NULL_Output_Data_Function
0008 0000 PL_SFP_NULL_Input_Data_Function: .word `_SFP_NULL_Input_Data_Function
000A 0000 PL_ADT_Queue_Peek_From_Buffer: .word `_ADT_Queue_Peek_From_Buffer
000C 0000 PL_ADT_Queue_Check_Empty: .word `_ADT_Queue_Check_Empty
000E 0000 PL_ADT_Queue_Get_From_Buffer: .word `_ADT_Queue_Get_From_Buffer
0010 0000 PL_ADT_Queue_Add_To_Buffer: .word `_ADT_Queue_Add_To_Buffer
0012 C700 PL_MSGMap_Acknowledge: .word `_MSGMap_Acknowledge
0014 0601 PL_MSGMap_Set: .word `_MSGMap_Set
0016 0000 PL_MSG_NULL_PROC: .word `_MSG_NULL_PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -