📄 m8mp01.lis
字号:
01DE 19F4 brne L53
01E0 21E0 ldi R18,1
01E2 30E0 ldi R19,0
01E4 02C0 rjmp L54
01E6 L53:
01E6 2227 clr R18
01E8 3327 clr R19
01EA L54:
01EA 80910200 lds R24,_RXBUF+2
01EE 8D3F cpi R24,253
01F0 19F4 brne L55
01F2 01E0 ldi R16,1
01F4 10E0 ldi R17,0
01F6 02C0 rjmp L56
01F8 L55:
01F8 0027 clr R16
01FA 1127 clr R17
01FC L56:
01FC 1B01 movw R2,R22
01FE 2422 and R2,R20
0200 3522 and R3,R21
0202 2222 and R2,R18
0204 3322 and R3,R19
0206 2022 and R2,R16
0208 3122 and R3,R17
020A 2220 tst R2
020C 11F4 brne X0
020E 3320 tst R3
0210 39F0 breq L42
0212 X0:
0212 .dbline 216
0212 ; {
0212 .dbline 218
0212 ;
0212 ; RXERROR=0;
0212 2224 clr R2
0214 20920A00 sts _RXERROR,R2
0218 .dbline 219
0218 ; }
0218 .dbline 221
0218 ;
0218 ; }//if(RXbufP>RXbufPmax)
0218 03C0 rjmp L42
021A L41:
021A .dbline 223
021A ; else
021A ; {
021A .dbline 224
021A ; RXERROR=1;
021A 81E0 ldi R24,1
021C 80930A00 sts _RXERROR,R24
0220 .dbline 225
0220 ; }//else
0220 L42:
0220 .dbline 226
0220 ; if(RXERROR==0)
0220 20900A00 lds R2,_RXERROR
0224 2220 tst R2
0226 11F4 brne L57
0228 .dbline 227
0228 ; {
0228 .dbline 228
0228 ; OUTLED4ON;
0228 C398 cbi 0x18,3
022A .dbline 229
022A ; }
022A 01C0 rjmp L58
022C L57:
022C .dbline 231
022C .dbline 232
022C C39A sbi 0x18,3
022E .dbline 233
022E L58:
022E .dbline -2
022E L40:
022E 00D0 rcall pop_gset2
0230 .dbline 0 ; func end
0230 0895 ret
0232 .dbend
.area data(ram, con, rel)
000D .dbfile E:\m8com\M8MP01.c
000D _SLSTEP::
000D .blkb 1
.area idata
000D 0A .byte 10
.area data(ram, con, rel)
000E .dbfile E:\m8com\M8MP01.c
000E .dbsym e SLSTEP _SLSTEP c
.area text(rom, con, rel)
0232 .dbfile E:\m8com\M8MP01.c
0232 .dbfunc e main _main fV
0232 ; i -> R20
.even
0232 _main::
0232 .dbline -1
0232 .dbline 238
0232 ; else
0232 ; {
0232 ; OUTLED4OFF;
0232 ; }
0232 ; }//void RXRCK(void)
0232 ;
0232 ; unsigned char SLSTEP=10;
0232 ; void main()
0232 ; {
0232 .dbline 239
0232 ; unsigned char i=0;
0232 4427 clr R20
0234 .dbline 242
0234 ;
0234 ; //delayXms(500);
0234 ; port_init(); //IO初始化
0234 19DF rcall _port_init
0236 .dbline 243
0236 ; uart_init();
0236 28DF rcall _uart_init
0238 .dbline 245
0238 ; //timer_init();
0238 ; delayXms(10);
0238 0AE0 ldi R16,10
023A 10E0 ldi R17,0
023C 08DF rcall _delayXms
023E .dbline 246
023E ; SEI();
023E 7894 sei
0240 .dbline 247
0240 ; SLSTEP=10;
0240 8AE0 ldi R24,10
0242 80930D00 sts _SLSTEP,R24
0246 .dbline 248
0246 ; for(i=0;i<17;i++)
0246 09C0 rjmp L63
0248 L60:
0248 .dbline 249
0248 .dbline 250
0248 80E0 ldi R24,<_SlaveEN
024A 90E0 ldi R25,>_SlaveEN
024C E42F mov R30,R20
024E FF27 clr R31
0250 E80F add R30,R24
0252 F91F adc R31,R25
0254 8FEF ldi R24,255
0256 8083 std z+0,R24
0258 .dbline 251
0258 L61:
0258 .dbline 248
0258 4395 inc R20
025A L63:
025A .dbline 248
025A 4131 cpi R20,17
025C A8F3 brlo L60
025E .dbline 252
025E ; {
025E ; SlaveEN[i]=0xff;
025E ; }//for
025E ; SlaveCR=5;
025E 85E0 ldi R24,5
0260 80930100 sts _SlaveCR,R24
0264 76C0 rjmp L65
0266 L64:
0266 .dbline 254
0266 ; while(1)
0266 ; {
0266 .dbline 256
0266 ;
0266 ; switch(SLSTEP)
0266 60910D00 lds R22,_SLSTEP
026A 7727 clr R23
026C 6431 cpi R22,20
026E E0E0 ldi R30,0
0270 7E07 cpc R23,R30
0272 09F4 brne X4
0274 38C0 rjmp L73
0276 X4:
0276 84E1 ldi R24,20
0278 90E0 ldi R25,0
027A 8617 cp R24,R22
027C 9707 cpc R25,R23
027E 2CF0 brlt L84
0280 L83:
0280 6A30 cpi R22,10
0282 E0E0 ldi R30,0
0284 7E07 cpc R23,R30
0286 39F0 breq L70
0288 64C0 rjmp L67
028A L84:
028A 6E31 cpi R22,30
028C E0E0 ldi R30,0
028E 7E07 cpc R23,R30
0290 09F4 brne X5
0292 4FC0 rjmp L80
0294 X5:
0294 5EC0 rjmp L67
0296 X1:
0296 .dbline 257
0296 ; {
0296 L70:
0296 .dbline 260
0296 ; case 10:
0296 ;
0296 ; if(SlaveEN[SlaveCR]>0)
0296 80E0 ldi R24,<_SlaveEN
0298 90E0 ldi R25,>_SlaveEN
029A E0910100 lds R30,_SlaveCR
029E FF27 clr R31
02A0 E80F add R30,R24
02A2 F91F adc R31,R25
02A4 2080 ldd R2,z+0
02A6 3324 clr R3
02A8 3214 cp R3,R2
02AA 08F0 brlo X6
02AC 52C0 rjmp L68
02AE X6:
02AE .dbline 261
02AE ; {
02AE .dbline 263
02AE ;
02AE ; TXbufRDY();
02AE 50DF rcall _TXbufRDY
02B0 .dbline 264
02B0 ; TXINTMAX=14;
02B0 8EE0 ldi R24,14
02B2 80930200 sts _TXINTMAX,R24
02B6 .dbline 265
02B6 ; RXINTMAX=16;
02B6 80E1 ldi R24,16
02B8 80930400 sts _RXINTMAX,R24
02BC .dbline 266
02BC ; RXbufP=0;
02BC 2224 clr R2
02BE 20920800 sts _RXbufP,R2
02C2 .dbline 267
02C2 ; RXBUFCLR();
02C2 5EDF rcall _RXBUFCLR
02C4 .dbline 268
02C4 ; OUTDEON;
02C4 949A sbi 0x12,4
02C6 .dbline 269
02C6 ; TXENABLE;
02C6 5498 cbi 0xa,4
02C8 .dbline 269
02C8 539A sbi 0xa,3
02CA .dbline 269
02CA .dbline 270
02CA ; TXADDRESS
02CA 509A sbi 0xa,0
02CC .dbline 270
02CC 2224 clr R2
02CE 20920000 sts _TXADFG,R2
02D2 .dbline 271
02D2 ; TXbufP=0; //
02D2 20920700 sts _TXbufP,R2
02D6 .dbline 273
02D6 ; //TXBUF[0]=SlaveCR;
02D6 ; UDR=TXBUF[0];
02D6 20901E00 lds R2,_TXBUF
02DA 2CB8 out 0xc,R2
02DC .dbline 274
02DC ; SLSTEP=20;
02DC 84E1 ldi R24,20
02DE 80930D00 sts _SLSTEP,R24
02E2 .dbline 275
02E2 ; SoftTimerStart();
02E2 A1DE rcall _SoftTimerStart
02E4 .dbline 276
02E4 ; } // if(SlaveEN[SlaveCR]==1)
02E4 .dbline 277
02E4 ; break;
02E4 36C0 rjmp L68
02E6 L73:
02E6 .dbline 280
02E6 ; case 20:
02E6 ;
02E6 ; SoftTimer();
02E6 8CDE rcall _SoftTimer
02E8 .dbline 281
02E8 ; if(WaitCR1>1 | (RXbufP>RXbufPmax))
02E8 81E0 ldi R24,1
02EA 20900C00 lds R2,_WaitCR1
02EE 8215 cp R24,R2
02F0 18F4 brsh L76
02F2 9927 clr R25
02F4 6C01 movw R12,R24
02F6 02C0 rjmp L77
02F8 L76:
02F8 CC24 clr R12
02FA DD24 clr R13
02FC L77:
02FC 20900900 lds R2,_RXbufPmax
0300 30900800 lds R3,_RXbufP
0304 2314 cp R2,R3
0306 20F4 brsh L78
0308 81E0 ldi R24,1
030A 90E0 ldi R25,0
030C 5C01 movw R10,R24
030E 02C0 rjmp L79
0310 L78:
0310 AA24 clr R10
0312 BB24 clr R11
0314 L79:
0314 1601 movw R2,R12
0316 2A28 or R2,R10
0318 3B28 or R3,R11
031A 2220 tst R2
031C 11F4 brne X2
031E 3320 tst R3
0320 C1F0 breq L68
0322 X2:
0322 .dbline 282
0322 ; {
0322 .dbline 283
0322 ; RXRCK();
0322 3EDF rcall _RXRCK
0324 .dbline 284
0324 ; SLSTEP=30;
0324 8EE1 ldi R24,30
0326 80930D00 sts _SLSTEP,R24
032A .dbline 285
032A ; RXERROR=0;
032A 2224 clr R2
032C 20920A00 sts _RXERROR,R2
0330 .dbline 286
0330 ; }
0330 .dbline 287
0330 ; break;
0330 10C0 rjmp L68
0332 L80:
0332 .dbline 290
0332 ; case 30:
0332 ;
0332 ; SlaveCR++;
0332 80910100 lds R24,_SlaveCR
0336 8F5F subi R24,255 ; addi 1
0338 80930100 sts _SlaveCR,R24
033C .dbline 291
033C ; if(SlaveCR>SlaveBMAX)
033C 8FE0 ldi R24,15
033E 20900100 lds R2,_SlaveCR
0342 8215 cp R24,R2
0344 18F4 brsh L81
0346 .dbline 292
0346 ; SlaveCR=5;
0346 85E0 ldi R24,5
0348 80930100 sts _SlaveCR,R24
034C L81:
034C .dbline 294
034C ; // delayXms(1);
034C ; SLSTEP=10;
034C 8AE0 ldi R24,10
034E 80930D00 sts _SLSTEP,R24
0352 .dbline 295
0352 ; break;
0352 L67:
0352 L68:
0352 .dbline 298
0352 L65:
0352 .dbline 253
0352 89CF rjmp L64
0354 X3:
0354 .dbline -2
0354 L59:
0354 .dbline 0 ; func end
0354 0895 ret
0356 .dbsym r i 20 c
0356 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\m8com\M8MP01.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
002E _SlaveEN::
002E .blkb 17
003F .dbsym e SlaveEN _SlaveEN A[17:17]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -