📄 m8sp01.lis
字号:
0292 L71:
0292 80910200 lds R24,_RXBUF+2
0296 8D3F cpi R24,253
0298 19F4 brne L72
029A 01E0 ldi R16,1
029C 10E0 ldi R17,0
029E 02C0 rjmp L73
02A0 L72:
02A0 0027 clr R16
02A2 1127 clr R17
02A4 L73:
02A4 1B01 movw R2,R22
02A6 2422 and R2,R20
02A8 3522 and R3,R21
02AA 2222 and R2,R18
02AC 3322 and R3,R19
02AE 2022 and R2,R16
02B0 3122 and R3,R17
02B2 2220 tst R2
02B4 11F4 brne X1
02B6 3320 tst R3
02B8 81F0 breq L59
02BA X1:
02BA .dbline 260
02BA ; {
02BA .dbline 261
02BA ; RXERROR=3;
02BA 83E0 ldi R24,3
02BC 80930B00 sts _RXERROR,R24
02C0 .dbline 262
02C0 ; if(RXBUF[3]==SlaveCR)
02C0 20900200 lds R2,_SlaveCR
02C4 30900300 lds R3,_RXBUF+3
02C8 3214 cp R3,R2
02CA 39F4 brne L59
02CC .dbline 263
02CC ; {
02CC .dbline 264
02CC ; RXERROR=0;
02CC 2224 clr R2
02CE 20920B00 sts _RXERROR,R2
02D2 .dbline 266
02D2 ;
02D2 ; } //if(RXBUF[tP+2]==SlaveCR)
02D2 .dbline 268
02D2 ;
02D2 ; }//if(RXBUF[i]==TRFG3
02D2 .dbline 269
02D2 ; }//if(RXbufP>RXbufPmax)
02D2 03C0 rjmp L59
02D4 L58:
02D4 .dbline 271
02D4 .dbline 272
02D4 81E0 ldi R24,1
02D6 80930B00 sts _RXERROR,R24
02DA .dbline 273
02DA L59:
02DA .dbline -2
02DA L57:
02DA 00D0 rcall pop_gset2
02DC .dbline 0 ; func end
02DC 0895 ret
02DE .dbsym r i 16 c
02DE .dbsym r tP 16 c
02DE .dbend
02DE .dbfunc e main _main fV
02DE ; i -> R20
.even
02DE _main::
02DE .dbline -1
02DE .dbline 278
02DE ; else
02DE ; {
02DE ; RXERROR=1;
02DE ; }//else
02DE ; }//void RXRCK(void)
02DE ;
02DE ;
02DE ; void main()
02DE ; {
02DE .dbline 279
02DE ; unsigned char i=0;
02DE 4427 clr R20
02E0 .dbline 282
02E0 ;
02E0 ; //delayXms(500);
02E0 ; port_init(); //IO初始化
02E0 C3DE rcall _port_init
02E2 .dbline 283
02E2 ; uart_init();
02E2 D2DE rcall _uart_init
02E4 .dbline 285
02E4 ; //timer_init();
02E4 ; delayXms(10);
02E4 0AE0 ldi R16,10
02E6 10E0 ldi R17,0
02E8 B2DE rcall _delayXms
02EA .dbline 286
02EA ; SEI();
02EA 7894 sei
02EC .dbline 287
02EC ; SLSTEP=10;
02EC 8AE0 ldi R24,10
02EE 80930E00 sts _SLSTEP,R24
02F2 65C0 rjmp L79
02F4 L78:
02F4 .dbline 290
02F4 ;
02F4 ; while(1)
02F4 ; {
02F4 .dbline 292
02F4 ;
02F4 ; switch(SLSTEP)
02F4 40910E00 lds R20,_SLSTEP
02F8 5527 clr R21
02FA 4431 cpi R20,20
02FC E0E0 ldi R30,0
02FE 5E07 cpc R21,R30
0300 F9F0 breq L85
0302 84E1 ldi R24,20
0304 90E0 ldi R25,0
0306 8417 cp R24,R20
0308 9507 cpc R25,R21
030A 2CF0 brlt L99
030C L98:
030C 4A30 cpi R20,10
030E E0E0 ldi R30,0
0310 5E07 cpc R21,R30
0312 81F0 breq L84
0314 54C0 rjmp L81
0316 L99:
0316 4E31 cpi R20,30
0318 E0E0 ldi R30,0
031A 5E07 cpc R21,R30
031C D9F0 breq L88
031E 4E31 cpi R20,30
0320 E0E0 ldi R30,0
0322 5E07 cpc R21,R30
0324 0CF4 brge X6
0326 4BC0 rjmp L81
0328 X6:
0328 L100:
0328 4832 cpi R20,40
032A E0E0 ldi R30,0
032C 5E07 cpc R21,R30
032E 09F4 brne X7
0330 46C0 rjmp L82
0332 X7:
0332 45C0 rjmp L81
0334 X3:
0334 .dbline 293
0334 ; {
0334 L84:
0334 .dbline 295
0334 ; case 10:
0334 ; RXBUFCLR();
0334 28DF rcall _RXBUFCLR
0336 .dbline 296
0336 ; RX_INIT();
0336 37DF rcall _RX_INIT
0338 .dbline 297
0338 ; SLSTEP=20;
0338 84E1 ldi R24,20
033A 80930E00 sts _SLSTEP,R24
033E .dbline 298
033E ; break;
033E 3FC0 rjmp L82
0340 L85:
0340 .dbline 300
0340 ; case 20:
0340 ; if(TRADFG==1)
0340 80910000 lds R24,_TRADFG
0344 8130 cpi R24,1
0346 09F0 breq X8
0348 3AC0 rjmp L82
034A X8:
034A .dbline 301
034A ; {
034A .dbline 302
034A ; SoftTimerStart();
034A 6DDE rcall _SoftTimerStart
034C .dbline 303
034C ; SLSTEP=30;
034C 8EE1 ldi R24,30
034E 80930E00 sts _SLSTEP,R24
0352 .dbline 304
0352 ; }//if(ADFG==1)
0352 .dbline 306
0352 ;
0352 ; break;
0352 35C0 rjmp L82
0354 L88:
0354 .dbline 308
0354 ; case 30:
0354 ; SoftTimer();
0354 55DE rcall _SoftTimer
0356 .dbline 311
0356 ;
0356 ;
0356 ; if((WaitCR1>20) | (RXbufP>RXbufPmax))
0356 84E1 ldi R24,20
0358 20900D00 lds R2,_WaitCR1
035C 8215 cp R24,R2
035E 20F4 brsh L91
0360 81E0 ldi R24,1
0362 90E0 ldi R25,0
0364 5C01 movw R10,R24
0366 02C0 rjmp L92
0368 L91:
0368 AA24 clr R10
036A BB24 clr R11
036C L92:
036C 20900A00 lds R2,_RXbufPmax
0370 30900900 lds R3,_RXbufP
0374 2314 cp R2,R3
0376 18F4 brsh L93
0378 61E0 ldi R22,1
037A 70E0 ldi R23,0
037C 02C0 rjmp L94
037E L93:
037E 6627 clr R22
0380 7727 clr R23
0382 L94:
0382 1501 movw R2,R10
0384 262A or R2,R22
0386 372A or R3,R23
0388 2220 tst R2
038A 11F4 brne X4
038C 3320 tst R3
038E B9F0 breq L82
0390 X4:
0390 .dbline 312
0390 ; {
0390 .dbline 313
0390 ; RXRCK2();
0390 17DF rcall _RXRCK2
0392 .dbline 314
0392 ; if(RXERROR==0)
0392 20900B00 lds R2,_RXERROR
0396 2220 tst R2
0398 79F4 brne L95
039A .dbline 315
039A ; {
039A .dbline 316
039A ; OUTDEON;
039A 949A sbi 0x12,4
039C .dbline 317
039C ; TXbufRDY();
039C E4DE rcall _TXbufRDY
039E .dbline 318
039E ; TXbufP=0;
039E 2224 clr R2
03A0 20920800 sts _TXbufP,R2
03A4 .dbline 319
03A4 ; TXENABLE
03A4 5498 cbi 0xa,4
03A6 .dbline 319
03A6 539A sbi 0xa,3
03A8 .dbline 320
03A8 ; UDR=TXBUF[0];
03A8 20901E00 lds R2,_TXBUF
03AC 2CB8 out 0xc,R2
03AE .dbline 321
03AE ; SLSTEP=40;
03AE 88E2 ldi R24,40
03B0 80930E00 sts _SLSTEP,R24
03B4 .dbline 322
03B4 ; OUTLED1ON;
03B4 C098 cbi 0x18,0
03B6 .dbline 323
03B6 ; }//if(RXERROR==0)
03B6 03C0 rjmp L82
03B8 L95:
03B8 .dbline 325
03B8 ; else
03B8 ; {
03B8 .dbline 326
03B8 ; SLSTEP=10;
03B8 8AE0 ldi R24,10
03BA 80930E00 sts _SLSTEP,R24
03BE .dbline 327
03BE ; }//else
03BE .dbline 329
03BE ;
03BE ; }//if((WaitCR1>100) | (RXbufP>RXbufPmax))
03BE .dbline 331
03BE ;
03BE ; break;
03BE .dbline 333
03BE ; case 40:
03BE ; break;
03BE L81:
03BE L82:
03BE .dbline 336
03BE L79:
03BE .dbline 289
03BE 9ACF rjmp L78
03C0 X5:
03C0 .dbline -2
03C0 L77:
03C0 .dbline 0 ; func end
03C0 0895 ret
03C2 .dbsym r i 20 c
03C2 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\m8com\M8SP01.c
0000 _RXBUF::
0000 .blkb 30
001E .dbsym e RXBUF _RXBUF A[30:30]c
001E _TXBUF::
001E .blkb 16
002E .dbsym e TXBUF _TXBUF A[16:16]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -