📄 main.lis
字号:
0200 2FB0 in R2,0xf
0202 2082 std z+0,R2
0204 .dbline 175
0204 ; SPI_DatConter++;
0204 80913D00 lds R24,_SPI_DatConter
0208 8F5F subi R24,255 ; addi 1
020A 80933D00 sts _SPI_DatConter,R24
020E .dbline 176
020E ; if(SPI_DatConter==SPI_DatLen)
020E 20903E00 lds R2,_SPI_DatLen
0212 8215 cp R24,R2
0214 49F5 brne L66
0216 .dbline 177
0216 ; {
0216 .dbline 178
0216 ; SPI_Status=0x03;
0216 83E0 ldi R24,3
0218 80934100 sts _SPI_Status,R24
021C .dbline 179
021C ; SPI_DatConter=0;
021C 2224 clr R2
021E 20923D00 sts _SPI_DatConter,R2
0222 .dbline 180
0222 ; }
0222 .dbline 181
0222 ; }
0222 22C0 xjmp L66
0224 L65:
0224 .dbline 182
0224 ; else if(SPI_Status==0x03)
0224 80914100 lds R24,_SPI_Status
0228 8330 cpi R24,3
022A F1F4 brne L70
022C .dbline 183
022C ; {
022C .dbline 184
022C ; SPI_DatEnd=SPDR;
022C 2FB0 in R2,0xf
022E 20923B00 sts _SPI_DatEnd,R2
0232 .dbline 185
0232 ; if(SPI_DatEnd!=0x16)
0232 822D mov R24,R2
0234 8631 cpi R24,22
0236 31F0 breq L72
0238 .dbline 186
0238 ; {
0238 .dbline 187
0238 ; SPI_validFrame=FALSE;
0238 80914200 lds R24,_bit_flag
023C 8F7E andi R24,239
023E 80934200 sts _bit_flag,R24
0242 .dbline 188
0242 ; }
0242 12C0 xjmp L73
0244 L72:
0244 .dbline 190
0244 ; else
0244 ; {
0244 .dbline 191
0244 ; SPI_RecvFifo[SPI_DatLen+2]=SPI_DatEnd;
0244 80E0 ldi R24,<_SPI_RecvFifo+2
0246 90E0 ldi R25,>_SPI_RecvFifo+2
0248 E0913E00 lds R30,_SPI_DatLen
024C FF27 clr R31
024E E80F add R30,R24
0250 F91F adc R31,R25
0252 20903B00 lds R2,_SPI_DatEnd
0256 2082 std z+0,R2
0258 .dbline 192
0258 ; SPI_validFrame=TRUE;
0258 80914200 lds R24,_bit_flag
025C 8061 ori R24,16
025E 80934200 sts _bit_flag,R24
0262 .dbline 193
0262 ; SPI_Status=0x00;
0262 2224 clr R2
0264 20924100 sts _SPI_Status,R2
0268 .dbline 194
0268 ; }
0268 L73:
0268 .dbline 195
0268 ; }
0268 L70:
0268 L66:
0268 L63:
0268 L59:
0268 .dbline -2
0268 L55:
0268 2990 ld R2,y+
026A 2FBE out 0x3f,R2
026C F991 ld R31,y+
026E E991 ld R30,y+
0270 9991 ld R25,y+
0272 8991 ld R24,y+
0274 2990 ld R2,y+
0276 .dbline 0 ; func end
0276 1895 reti
0278 .dbend
0278 .dbfunc e UART_RX_interrupt _UART_RX_interrupt fV
.even
0278 _UART_RX_interrupt::
0278 2A92 st -y,R2
027A 8A93 st -y,R24
027C 9A93 st -y,R25
027E EA93 st -y,R30
0280 FA93 st -y,R31
0282 2FB6 in R2,0x3f
0284 2A92 st -y,R2
0286 .dbline -1
0286 .dbline 198
0286 ; }
0286 ; void UART_RX_interrupt(void)
0286 ; {
0286 .dbline 199
0286 ; if(RS485_validFrame)
0286 80914200 lds R24,_bit_flag
028A 8695 lsr R24
028C 8695 lsr R24
028E 8695 lsr R24
0290 8170 andi R24,1
0292 09F0 breq L76
0294 .dbline 200
0294 ; {return;}
0294 .dbline 200
0294 55C0 xjmp L75
0296 L76:
0296 .dbline 201
0296 ; if(RS485_status==0x00)
0296 20905500 lds R2,_RS485_status
029A 2220 tst R2
029C 71F4 brne L78
029E .dbline 202
029E ; {
029E .dbline 203
029E ; RS485_data=UDR;
029E 2CB0 in R2,0xc
02A0 20925400 sts _RS485_data,R2
02A4 .dbline 204
02A4 ; if(RS485_data!=0x68)
02A4 822D mov R24,R2
02A6 8836 cpi R24,104
02A8 21F0 breq L80
02AA .dbline 205
02AA ; {
02AA .dbline 206
02AA ; RS485_status=0x00;
02AA 2224 clr R2
02AC 20925500 sts _RS485_status,R2
02B0 .dbline 207
02B0 ; }
02B0 47C0 xjmp L79
02B2 L80:
02B2 .dbline 209
02B2 ; else
02B2 ; {
02B2 .dbline 210
02B2 ; RS485_status=0x01;
02B2 81E0 ldi R24,1
02B4 80935500 sts _RS485_status,R24
02B8 .dbline 211
02B8 ; }
02B8 .dbline 212
02B8 ; }
02B8 43C0 xjmp L79
02BA L78:
02BA .dbline 213
02BA ; else if(RS485_status==0x01)
02BA 80915500 lds R24,_RS485_status
02BE 8130 cpi R24,1
02C0 39F4 brne L82
02C2 .dbline 214
02C2 ; {
02C2 .dbline 215
02C2 ; robotDatLen=UDR;
02C2 2CB0 in R2,0xc
02C4 20925200 sts _robotDatLen,R2
02C8 .dbline 216
02C8 ; RS485_status=0x02;
02C8 82E0 ldi R24,2
02CA 80935500 sts _RS485_status,R24
02CE .dbline 217
02CE ; }
02CE 38C0 xjmp L83
02D0 L82:
02D0 .dbline 218
02D0 ; else if(RS485_status==0x02)
02D0 80915500 lds R24,_RS485_status
02D4 8230 cpi R24,2
02D6 C9F4 brne L84
02D8 .dbline 219
02D8 ; {
02D8 .dbline 220
02D8 ; robotDatBuf[robotDatCount]=UDR;
02D8 80E0 ldi R24,<_robotDatBuf
02DA 90E0 ldi R25,>_robotDatBuf
02DC E0914700 lds R30,_robotDatCount
02E0 FF27 clr R31
02E2 E80F add R30,R24
02E4 F91F adc R31,R25
02E6 2CB0 in R2,0xc
02E8 2082 std z+0,R2
02EA .dbline 221
02EA ; robotDatCount++;
02EA 80914700 lds R24,_robotDatCount
02EE 8F5F subi R24,255 ; addi 1
02F0 80934700 sts _robotDatCount,R24
02F4 .dbline 222
02F4 ; if(robotDatCount==robotDatLen)
02F4 20905200 lds R2,_robotDatLen
02F8 8215 cp R24,R2
02FA 11F5 brne L85
02FC .dbline 223
02FC ; {
02FC .dbline 224
02FC ; RS485_status=0x03;
02FC 83E0 ldi R24,3
02FE 80935500 sts _RS485_status,R24
0302 .dbline 225
0302 ; robotDatCount=0;
0302 2224 clr R2
0304 20924700 sts _robotDatCount,R2
0308 .dbline 226
0308 ; }
0308 .dbline 227
0308 ; }
0308 1BC0 xjmp L85
030A L84:
030A .dbline 228
030A ; else if(RS485_status==0x03)
030A 80915500 lds R24,_RS485_status
030E 8330 cpi R24,3
0310 B9F4 brne L88
0312 .dbline 229
0312 ; {
0312 .dbline 230
0312 ; robotDatEnd=UDR;
0312 2CB0 in R2,0xc
0314 20924500 sts _robotDatEnd,R2
0318 .dbline 231
0318 ; if(robotDatEnd!=0x16)
0318 822D mov R24,R2
031A 8631 cpi R24,22
031C 39F0 breq L90
031E .dbline 232
031E ; {
031E .dbline 233
031E ; RS485_validFrame=FALSE;
031E 80914200 lds R24,_bit_flag
0322 877F andi R24,247
0324 80934200 sts _bit_flag,R24
0328 .dbline 234
0328 ; PORTC|=0x02;
0328 A99A sbi 0x15,1
032A .dbline 235
032A ; }
032A 0AC0 xjmp L91
032C L90:
032C .dbline 237
032C ; else
032C ; {
032C .dbline 238
032C ; RS485_validFrame=TRUE;
032C 80914200 lds R24,_bit_flag
0330 8860 ori R24,8
0332 80934200 sts _bit_flag,R24
0336 .dbline 239
0336 ; RS485_status=0x00;
0336 2224 clr R2
0338 20925500 sts _RS485_status,R2
033C .dbline 240
033C ; PORTC=0x01;
033C 81E0 ldi R24,1
033E 85BB out 0x15,R24
0340 .dbline 241
0340 ; }
0340 L91:
0340 .dbline 242
0340 ; }
0340 L88:
0340 L85:
0340 L83:
0340 L79:
0340 .dbline -2
0340 L75:
0340 2990 ld R2,y+
0342 2FBE out 0x3f,R2
0344 F991 ld R31,y+
0346 E991 ld R30,y+
0348 9991 ld R25,y+
034A 8991 ld R24,y+
034C 2990 ld R2,y+
034E .dbline 0 ; func end
034E 1895 reti
0350 .dbend
0350 .dbfunc e Uart_SendByte _Uart_SendByte fV
.even
0350 _Uart_SendByte::
0350 .dbline -1
0350 .dbline 245
0350 ; }
0350 ; void Uart_SendByte(void)
0350 ; {
0350 L93:
0350 .dbline 246
0350 L94:
0350 .dbline 246
0350 ; while(!(UCSRA&(1<<UDRE)));
0350 5D9B sbis 0xb,5
0352 FECF rjmp L93
0354 .dbline 247
0354 ; UDR=(*Uart_send_ptr);
0354 E0914300 lds R30,_Uart_send_ptr
0358 F0914400 lds R31,_Uart_send_ptr+1
035C 2080 ldd R2,z+0
035E 2CB8 out 0xc,R2
0360 .dbline -2
0360 L92:
0360 .dbline 0 ; func end
0360 0895 ret
0362 .dbend
0362 .dbfunc e Uart_SendPacket _Uart_SendPacket fV
0362 ; BufferAddress -> R22,R23
0362 ; len -> R20
.even
0362 _Uart_SendPacket::
0362 0E940000 xcall push_gset2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -