⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m8sp01.lis

📁 AVR MEGA8双机串行口通讯程序,单工485方式,用于单片机组网,有PROTEUS仿真电路,可以立刻验证
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -