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

📄 m8mp01.lis

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