📄 proc_communication.lis
字号:
0038 80930500 sts L3,R24
003C .dbline 101
003C ; cByteCounter++;
003C 80910400 lds R24,L2
0040 8F5F subi R24,255 ; addi 1
0042 80930400 sts L2,R24
0046 .dbline 102
0046 ; cXORCheck = 0xAA;
0046 8AEA ldi R24,170
0048 80930A00 sts L4,R24
004C .dbline 103
004C ; }
004C .dbline 104
004C ; break;
004C 89C0 rjmp L8
004E L13:
004E .dbline 106
004E ; case UBOUND(cBytes):
004E ; if (cData == cXORCheck)
004E 20900A00 lds R2,L4
0052 3D80 ldd R3,y+5
0054 3214 cp R3,R2
0056 09F0 breq X10
0058 6AC0 rjmp L14
005A X10:
005A X5:
005A .dbline 107
005A ; {
005A .dbline 109
005A ; //数据帧正确
005A ; g_bIfBrake = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).IfBrake;
005A E0E0 ldi R30,<L3+1
005C F0E0 ldi R31,>L3+1
005E 8081 ldd R24,z+0
0060 9181 ldd R25,z+1
0062 8170 andi R24,1
0064 9070 andi R25,0
0066 80930000 sts _g_bIfBrake,R24
006A .dbline 111
006A ; #ifndef LEFT_MOTOR
006A ; g_cSpeed = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Speed;
006A 20900700 lds R2,L3+1+1
006E 20920100 sts _g_cSpeed,R2
0072 .dbline 115
0072 ; #else
0072 ; g_cSpeed = -(TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Speed);
0072 ; #endif
0072 ; g_wDistance = TYPE_CONVERSION(&cBytes[1],CMD_FRAME).Distance;
0072 80910800 lds R24,L3+1+2
0076 90910900 lds R25,L3+1+2+1
007A 9F77 andi R25,127
007C 90930300 sts _g_wDistance+1,R25
0080 80930200 sts _g_wDistance,R24
0084 .dbline 118
0084 ;
0084 ;
0084 ; Set_DISP_BUFF
0084 80910200 lds R24,_g_wDistance
0088 90910300 lds R25,_g_wDistance+1
008C 8F70 andi R24,15
008E 9070 andi R25,0
0090 8C83 std y+4,R24
0092 80910200 lds R24,_g_wDistance
0096 90910300 lds R25,_g_wDistance+1
009A 9695 lsr R25
009C 8795 ror R24
009E 9695 lsr R25
00A0 8795 ror R24
00A2 9695 lsr R25
00A4 8795 ror R24
00A6 9695 lsr R25
00A8 8795 ror R24
00AA 8F70 andi R24,15
00AC 9070 andi R25,0
00AE 8A83 std y+2,R24
00B0 80910200 lds R24,_g_wDistance
00B4 90910300 lds R25,_g_wDistance+1
00B8 9695 lsr R25
00BA 8795 ror R24
00BC 9695 lsr R25
00BE 8795 ror R24
00C0 9695 lsr R25
00C2 8795 ror R24
00C4 9695 lsr R25
00C6 8795 ror R24
00C8 8F70 andi R24,15
00CA 9070 andi R25,0
00CC 8883 std y+0,R24
00CE 822D mov R24,R2
00D0 8030 cpi R24,0
00D2 4CF4 brge L21
00D4 X6:
00D4 482F mov R20,R24
00D6 5527 clr R21
00D8 47FD sbrc R20,7
00DA 5095 com R21
00DC 4095 com R20
00DE 5095 com R21
00E0 4F5F subi R20,0xFF
00E2 5F4F sbci R21,0xFF
00E4 05C0 rjmp L22
00E6 L21:
00E6 40910100 lds R20,_g_cSpeed
00EA 5527 clr R21
00EC 47FD sbrc R20,7
00EE 5095 com R21
00F0 L22:
00F0 242F mov R18,R20
00F2 2F70 andi R18,15
00F4 3070 andi R19,0
00F6 80910100 lds R24,_g_cSpeed
00FA 8030 cpi R24,0
00FC 4CF4 brge L23
00FE X7:
00FE 482F mov R20,R24
0100 5527 clr R21
0102 47FD sbrc R20,7
0104 5095 com R21
0106 4095 com R20
0108 5095 com R21
010A 4F5F subi R20,0xFF
010C 5F4F sbci R21,0xFF
010E 05C0 rjmp L24
0110 L23:
0110 40910100 lds R20,_g_cSpeed
0114 5527 clr R21
0116 47FD sbrc R20,7
0118 5095 com R21
011A L24:
011A 8A01 movw R16,R20
011C 1595 asr R17
011E 0795 ror R16
0120 1595 asr R17
0122 0795 ror R16
0124 1595 asr R17
0126 0795 ror R16
0128 1595 asr R17
012A 0795 ror R16
012C 00D0 rcall _Set_DISP_BUFF
012E .dbline 127
012E ; (
012E ; ABS(g_cSpeed)>>4,
012E ; ABS(g_cSpeed)&0x0f,
012E ; SET_WORD_DIV_4(g_wDistance).BYTEAH,
012E ; SET_WORD_DIV_4(g_wDistance).BYTEAH,
012E ; SET_WORD_DIV_4(g_wDistance).BYTEAL
012E ; );
012E ;
012E ; }
012E L14:
012E .dbline 128
012E ; cByteCounter = 0; //复位计数器
012E 2224 clr R2
0130 20920400 sts L2,R2
0134 .dbline 129
0134 ; cXORCheck = 0;
0134 20920A00 sts L4,R2
0138 .dbline 131
0138 ;
0138 ; break;
0138 13C0 rjmp L8
013A L7:
013A .dbline 133
013A ; default:
013A ; cBytes[cByteCounter++] = cData;
013A 20900400 lds R2,L2
013E 822D mov R24,R2
0140 8F5F subi R24,255 ; addi 1
0142 80930400 sts L2,R24
0146 80E0 ldi R24,<L3
0148 90E0 ldi R25,>L3
014A E22D mov R30,R2
014C FF27 clr R31
014E E80F add R30,R24
0150 F91F adc R31,R25
0152 2D80 ldd R2,y+5
0154 2082 std z+0,R2
0156 .dbline 134
0156 ; cXORCheck ^= cData;
0156 30900A00 lds R3,L4
015A 3224 eor R3,R2
015C 30920A00 sts L4,R3
0160 .dbline 135
0160 ; break;
0160 L8:
0160 .dbline 138
0160 ; }
0160 ;
0160 ; return TRUE;
0160 01E0 ldi R16,1
0162 .dbline -2
0162 L1:
0162 .dbline 0 ; func end
0162 2696 adiw R28,6
0164 5991 ld R21,y+
0166 4991 ld R20,y+
0168 0895 ret
016A .dbsym l cData 5 c
016A .dbend
016A ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -