📄 rd_useserialframe_proc.lis
字号:
009A 21F4 brne L13
009C X4:
009C .dbline 160
009C ; {
009C .dbline 162
009C ; //变长数据帧
009C ; SFP_WAIT_FOR_FRAME_SIZE = TRUE;
009C 8881 ldd R24,y+0
009E 8260 ori R24,2
00A0 8883 std y+0,R24
00A2 .dbline 163
00A2 ; }
00A2 06C0 xjmp L14
00A4 L13:
00A4 .dbline 165
00A4 ; else
00A4 ; {
00A4 .dbline 167
00A4 ; //固定长度的数据帧
00A4 ; SFP_WAIT_FOR_ALL_DATA = TRUE;
00A4 8881 ldd R24,y+0
00A6 8460 ori R24,4
00A8 8883 std y+0,R24
00AA .dbline 168
00AA ; pSFP->cFrameSize = pSFP->cFixLength;
00AA FA01 movw R30,R20
00AC 228C ldd R2,z+26
00AE 24A2 std z+36,R2
00B0 .dbline 169
00B0 ; }
00B0 L14:
00B0 .dbline 171
00B0 ;
00B0 ; SFP_WAIT_FOR_FRAME_HEAD = FALSE;
00B0 8881 ldd R24,y+0
00B2 8E7F andi R24,254
00B4 8883 std y+0,R24
00B6 .dbline 172
00B6 ; pSFP->cActionFlag = cTempActionFlag;
00B6 282E mov R2,R24
00B8 FA01 movw R30,R20
00BA 22A2 std z+34,R2
00BC .dbline 174
00BC ;
00BC ; }
00BC .dbline 176
00BC ;
00BC ; return ;
00BC 8FC0 xjmp L4
00BE L9:
00BE .dbline 179
00BE ; }
00BE ;
00BE ; if (SFP_WAIT_FOR_FRAME_SIZE)
00BE FE01 movw R30,R28
00C0 8081 ldd R24,z+0
00C2 8695 lsr R24
00C4 8170 andi R24,1
00C6 09F4 brne X15
00C8 2FC0 xjmp L15
00CA X15:
00CA X5:
00CA .dbline 180
00CA ; {
00CA .dbline 182
00CA ;
00CA ; if (cTempData > (pQueue->nSize))
00CA FB01 movw R30,R22
00CC 2280 ldd R2,z+2
00CE 3380 ldd R3,z+3
00D0 4980 ldd R4,y+1
00D2 5524 clr R5
00D4 2414 cp R2,R4
00D6 3504 cpc R3,R5
00D8 50F4 brsh L17
00DA X6:
00DA .dbline 183
00DA ; {
00DA .dbline 186
00DA ; //错误的数据帧长度
00DA ;
00DA ; ADT_QUEUE_LET_EMPTY((*pQueue)) //清空队列
00DA .dbline 186
00DA 2224 clr R2
00DC 3324 clr R3
00DE 3582 std z+5,R3
00E0 2482 std z+4,R2
00E2 .dbline 186
00E2 3782 std z+7,R3
00E4 2682 std z+6,R2
00E6 .dbline 186
00E6 3186 std z+9,R3
00E8 2086 std z+8,R2
00EA .dbline 186
00EA .dbline 188
00EA ;
00EA ; SFP_STOP_ALL_ACTION
00EA 2882 std y+0,R2
00EC .dbline 189
00EC ; }
00EC 19C0 xjmp L18
00EE L17:
00EE .dbline 191
00EE ; else
00EE ; {
00EE .dbline 193
00EE ; //有效的数据帧长度
00EE ; pSFP->cFrameSize = cTempData; //更新数据帧长度信息
00EE 2980 ldd R2,y+1
00F0 FA01 movw R30,R20
00F2 24A2 std z+36,R2
00F4 .dbline 194
00F4 ; pSFP->cXORCheck ^= cTempData;
00F4 CF01 movw R24,R30
00F6 8396 adiw R24,35
00F8 FC01 movw R30,R24
00FA 3080 ldd R3,z+0
00FC 3224 eor R3,R2
00FE 3082 std z+0,R3
0100 .dbline 196
0100 ;
0100 ; ADT_ADD_DATA_TO_QUEUE((*pQueue),cTempData); //将该信息添加到缓冲区
0100 222D mov R18,R2
0102 8B01 movw R16,R22
0104 CB01 movw R24,R22
0106 0A96 adiw R24,10
0108 5C01 movw R10,R24
010A FC01 movw R30,R24
010C A081 ldd R26,z+0
010E B181 ldd R27,z+1
0110 FD01 movw R30,R26
0112 0E940000 xcall xicallx
0116 .dbline 199
0116 ;
0116 ;
0116 ; SFP_WAIT_FOR_ALL_DATA = TRUE;
0116 8881 ldd R24,y+0
0118 8460 ori R24,4
011A 8883 std y+0,R24
011C .dbline 200
011C ; SFP_WAIT_FOR_FRAME_SIZE = FALSE;
011C 8D7F andi R24,253
011E 8883 std y+0,R24
0120 .dbline 201
0120 ; }
0120 L18:
0120 .dbline 203
0120 ;
0120 ; pSFP->cActionFlag = cTempActionFlag;
0120 2880 ldd R2,y+0
0122 FA01 movw R30,R20
0124 22A2 std z+34,R2
0126 .dbline 204
0126 ; return ;
0126 5AC0 xjmp L4
0128 L15:
0128 .dbline 207
0128 ; }
0128 ;
0128 ; if (SFP_WAIT_FOR_ALL_DATA)
0128 FE01 movw R30,R28
012A 8081 ldd R24,z+0
012C 8695 lsr R24
012E 8695 lsr R24
0130 8170 andi R24,1
0132 09F4 brne X16
0134 53C0 xjmp L19
0136 X16:
0136 X7:
0136 .dbline 208
0136 ; {
0136 .dbline 209
0136 ; if ((pQueue->nCount) < (pSFP->cFrameSize))
0136 FA01 movw R30,R20
0138 24A0 ldd R2,z+36
013A 3324 clr R3
013C FB01 movw R30,R22
013E 4084 ldd R4,z+8
0140 5184 ldd R5,z+9
0142 4214 cp R4,R2
0144 5304 cpc R5,R3
0146 90F4 brsh L21
0148 X8:
0148 .dbline 210
0148 ; {
0148 .dbline 211
0148 ; pSFP->cXORCheck ^= cTempData;
0148 CA01 movw R24,R20
014A 8396 adiw R24,35
014C 2980 ldd R2,y+1
014E FC01 movw R30,R24
0150 3080 ldd R3,z+0
0152 3224 eor R3,R2
0154 3082 std z+0,R3
0156 .dbline 212
0156 ; ADT_ADD_DATA_TO_QUEUE((*pQueue),cTempData); //将该信息添加到缓冲区
0156 222D mov R18,R2
0158 8B01 movw R16,R22
015A CB01 movw R24,R22
015C 0A96 adiw R24,10
015E 5C01 movw R10,R24
0160 FC01 movw R30,R24
0162 A081 ldd R26,z+0
0164 B181 ldd R27,z+1
0166 FD01 movw R30,R26
0168 0E940000 xcall xicallx
016C .dbline 214
016C ;
016C ; }
016C L21:
016C .dbline 216
016C ;
016C ; if ((pQueue->nCount) == ((pSFP->cFrameSize) - 1))
016C FA01 movw R30,R20
016E 84A1 ldd R24,z+36
0170 8150 subi R24,1
0172 282E mov R2,R24
0174 3324 clr R3
0176 FB01 movw R30,R22
0178 4084 ldd R4,z+8
017A 5184 ldd R5,z+9
017C 4214 cp R4,R2
017E 5304 cpc R5,R3
0180 89F4 brne L23
0182 X9:
0182 .dbline 217
0182 ; {
0182 .dbline 218
0182 ; if (pSFP->cXORCheck)
0182 FA01 movw R30,R20
0184 23A0 ldd R2,z+35
0186 2220 tst R2
0188 09F4 brne X17
018A 28C0 xjmp L4
018C X17:
018C X10:
018C .dbline 219
018C ; {
018C .dbline 222
018C ; //XOR校验错误
018C ; //错误的数据帧长度
018C ; ADT_QUEUE_LET_EMPTY((*pQueue)) //清空队列
018C .dbline 222
018C 2224 clr R2
018E FB01 movw R30,R22
0190 3582 std z+5,R3
0192 2482 std z+4,R2
0194 .dbline 222
0194 3782 std z+7,R3
0196 2682 std z+6,R2
0198 .dbline 222
0198 3186 std z+9,R3
019A 2086 std z+8,R2
019C .dbline 222
019C .dbline 224
019C ;
019C ; SFP_STOP_ALL_ACTION
019C 2882 std y+0,R2
019E .dbline 226
019E ;
019E ; pSFP->cActionFlag = cTempActionFlag;
019E FA01 movw R30,R20
01A0 22A2 std z+34,R2
01A2 .dbline 228
01A2 ;
01A2 ; return ;
01A2 1CC0 xjmp L4
01A4 L23:
01A4 .dbline 235
01A4 ; }
01A4 ; else
01A4 ; {
01A4 ; //ReceiveData = cTempData;
01A4 ; }
01A4 ; }
01A4 ; else if ((pQueue->nCount) == (pSFP->cFrameSize))
01A4 FA01 movw R30,R20
01A6 24A0 ldd R2,z+36
01A8 3324 clr R3
01AA FB01 movw R30,R22
01AC 4084 ldd R4,z+8
01AE 5184 ldd R5,z+9
01B0 4214 cp R4,R2
01B2 5304 cpc R5,R3
01B4 99F4 brne L4
01B6 X11:
01B6 .dbline 236
01B6 ; {
01B6 .dbline 238
01B6 ; //所有的数据都添加完成
01B6 ; if (cTempData == pSFP->cEndByte)
01B6 FA01 movw R30,R20
01B8 218C ldd R2,z+25
01BA 3980 ldd R3,y+1
01BC 3214 cp R3,R2
01BE 11F4 brne L29
01C0 X12:
01C0 .dbline 239
01C0 ; {
01C0 .dbline 241
01C0 ; //获得了所有的数据,并且数据帧正确
01C0 ; SFP_Check_Frames(pSFP); //进行数据帧检测
01C0 8F01 movw R16,R30
01C2 0FD0 xcall _SFP_Check_Frames
01C4 .dbline 242
01C4 ; }
01C4 L29:
01C4 .dbline 244
01C4 ;
01C4 ; ADT_QUEUE_LET_EMPTY((*pQueue)) //清空队列
01C4 .dbline 244
01C4 2224 clr R2
01C6 3324 clr R3
01C8 FB01 movw R30,R22
01CA 3582 std z+5,R3
01CC 2482 std z+4,R2
01CE .dbline 244
01CE 3782 std z+7,R3
01D0 2682 std z+6,R2
01D2 .dbline 244
01D2 3186 std z+9,R3
01D4 2086 std z+8,R2
01D6 .dbline 244
01D6 .dbline 246
01D6 ;
01D6 ; SFP_STOP_ALL_ACTION
01D6 2882 std y+0,R2
01D8 .dbline 247
01D8 ; pSFP->cActionFlag = cTempActionFlag;
01D8 FA01 movw R30,R20
01DA 22A2 std z+34,R2
01DC .dbline 249
01DC ;
01DC ; return ;
01DC .dbline 254
01DC ; }
01DC ;
01DC ;
01DC ;
01DC ; return ;
01DC L19:
01DC .dbline -2
01DC L4:
01DC .dbline 0 ; func end
01DC 2296 adiw R28,2
01DE 0C940000 xjmp pop_xgsetF00C
01E2 .dbsym l cTempData 1 c
01E2 .dbsym r pQueue 22 pS[AbstructDataTypeQueue]
01E2 .dbsym l cTempActionFlag 0 c
01E2 .dbsym r pSFP 20 pS[SerialFrameProcess]
01E2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -