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

📄 m8mpt.lis

📁 AVR MEGA8双机串行口通讯程序,单工485方式,用于单片机组网,有PROTEUS仿真电路,可以立刻验证
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0088           ; void uart_init(void) 
 0088           ;    {
 0088                   .dbline 128
 0088           ;     
 0088           ;     OUTDEOFF;
 0088 9498              cbi 0x12,4
 008A                   .dbline 129
 008A           ;     UCSRB=0x00;
 008A 2224              clr R2
 008C 2AB8              out 0xa,R2
 008E                   .dbline 130
 008E           ;       UBRRL=0x25;  //19.2kbps
 008E 85E2              ldi R24,37
 0090 89B9              out 0x9,R24
 0092                   .dbline 132
 0092           ;       //TX EN ,9Bit ,Adress init
 0092           ;       UCSRB=((1<<RXCIE)|(1<<TXCIE)|(1<<UCSZ2));
 0092 84EC              ldi R24,196
 0094 8AB9              out 0xa,R24
 0096                   .dbline -2
 0096           L16:
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbend
 0098                   .dbfunc e timer_init _timer_init fV
                        .even
 0098           _timer_init::
 0098                   .dbline -1
 0098                   .dbline 138
 0098           ;       //UCSRB=((1<<TXCIE)|(1<<TXCIE)|(1<<TXEN)|(1<<TXB8));
 0098           ;    }//void uart_init(void) 
 0098           ; 
 0098           ; ///////////////Timer init      
 0098           ; void timer_init(void)
 0098           ;      {
 0098                   .dbline 139
 0098           ;         ;
 0098                   .dbline -2
 0098           L17:
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbend
                        .area vector(rom, abs)
                        .org 16
 0010 4DC0              rjmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 009A                   .dbfile E:\m8com\M8MPt.c
 009A                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 009A           _timer1_ovf_isr::
 009A                   .dbline -1
 009A                   .dbline 145
 009A           ;        }               
 009A           ;       
 009A           ; 
 009A           ; #pragma interrupt_handler timer1_ovf_isr:9
 009A           ; void timer1_ovf_isr(void)
 009A           ; {     
 009A                   .dbline 146
 009A           ;        ;  
 009A                   .dbline -2
 009A           L18:
 009A                   .dbline 0 ; func end
 009A 1895              reti
 009C                   .dbend
                        .area vector(rom, abs)
                        .org 26
 001A 4EC0              rjmp _uart1_tx_isr
                        .area text(rom, con, rel)
 009C                   .dbfile E:\m8com\M8MPt.c
 009C                   .dbfunc e uart1_tx_isr _uart1_tx_isr fV
                        .even
 009C           _uart1_tx_isr::
 009C 2A92              st -y,R2
 009E 8A93              st -y,R24
 00A0 9A93              st -y,R25
 00A2 EA93              st -y,R30
 00A4 FA93              st -y,R31
 00A6 2FB6              in R2,0x3f
 00A8 2A92              st -y,R2
 00AA                   .dbline -1
 00AA                   .dbline 153
 00AA           ;        
 00AA           ; }//void timer1_ovf_isr(void)
 00AA           ; 
 00AA           ; //TR to SLAVE
 00AA           ; #pragma interrupt_handler uart1_tx_isr:14
 00AA           ; void uart1_tx_isr(void)
 00AA           ;  {  
 00AA                   .dbline 154
 00AA           ;     TXbufP++;
 00AA 80910700          lds R24,_TXbufP
 00AE 8F5F              subi R24,255    ; addi 1
 00B0 80930700          sts _TXbufP,R24
 00B4                   .dbline 157
 00B4           ;       
 00B4           ;         
 00B4           ;       if(TXbufP<14)
 00B4 8E30              cpi R24,14
 00B6 A0F4              brsh L20
 00B8                   .dbline 158
 00B8           ;         {
 00B8                   .dbline 160
 00B8           ;        
 00B8           ;          if(TXbufP==2 )
 00B8 8230              cpi R24,2
 00BA 41F4              brne L22
 00BC                   .dbline 161
 00BC           ;            {
 00BC                   .dbline 162
 00BC           ;            OUTLED3Pulse;
 00BC 84E0              ldi R24,4
 00BE 28B2              in R2,0x18
 00C0 2826              eor R2,R24
 00C2 28BA              out 0x18,R2
 00C4                   .dbline 165
 00C4           ;           // Delay_1ms();
 00C4           ;            //delayXms(1000);
 00C4           ;                TXDATA;
 00C4 5098              cbi 0xa,0
 00C6                   .dbline 165
 00C6 81E0              ldi R24,1
 00C8 80930000          sts _TXADFG,R24
 00CC                   .dbline 165
 00CC                   .dbline 169
 00CC           ;                
 00CC           ;                //OUTLED3Pulse;
 00CC           ;            //
 00CC           ;            }//if(TXbufP>1)
 00CC           L22:
 00CC                   .dbline 170
 00CC           ;               UDR=TXBUF[TXbufP]; 
 00CC 80E0              ldi R24,<_TXBUF
 00CE 90E0              ldi R25,>_TXBUF
 00D0 E0910700          lds R30,_TXbufP
 00D4 FF27              clr R31
 00D6 E80F              add R30,R24
 00D8 F91F              adc R31,R25
 00DA 2080              ldd R2,z+0
 00DC 2CB8              out 0xc,R2
 00DE                   .dbline 171
 00DE           ;         }
 00DE 03C0              rjmp L21
 00E0           L20:
 00E0                   .dbline 173
 00E0           ;       else
 00E0           ;           {
 00E0                   .dbline 174
 00E0           ;                OUTLED1ON;
 00E0 C098              cbi 0x18,0
 00E2                   .dbline 175
 00E2           ;                RXENABLE
 00E2 5398              cbi 0xa,3
 00E4                   .dbline 175
 00E4 549A              sbi 0xa,4
 00E6                   .dbline 176
 00E6           ;               }//else
 00E6           L21:
 00E6                   .dbline 177
 00E6           ;       OUTLED2Pulse;
 00E6 82E0              ldi R24,2
 00E8 28B2              in R2,0x18
 00EA 2826              eor R2,R24
 00EC 28BA              out 0x18,R2
 00EE                   .dbline -2
 00EE           L19:
 00EE 2990              ld R2,y+
 00F0 2FBE              out 0x3f,R2
 00F2 F991              ld R31,y+
 00F4 E991              ld R30,y+
 00F6 9991              ld R25,y+
 00F8 8991              ld R24,y+
 00FA 2990              ld R2,y+
 00FC                   .dbline 0 ; func end
 00FC 1895              reti
 00FE                   .dbend
                        .area vector(rom, abs)
                        .org 22
 0016 7FC0              rjmp _uart1_rx_isr
                        .area text(rom, con, rel)
 00FE                   .dbfile E:\m8com\M8MPt.c
 00FE                   .dbfunc e uart1_rx_isr _uart1_rx_isr fV
                        .even
 00FE           _uart1_rx_isr::
 00FE 2A92              st -y,R2
 0100 8A93              st -y,R24
 0102 9A93              st -y,R25
 0104 EA93              st -y,R30
 0106 FA93              st -y,R31
 0108 2FB6              in R2,0x3f
 010A 2A92              st -y,R2
 010C                   .dbline -1
 010C                   .dbline 184
 010C                   .dbline 185
 010C 80E0              ldi R24,<_RXBUF
 010E 90E0              ldi R25,>_RXBUF
 0110 E0910800          lds R30,_RXbufP
 0114 FF27              clr R31
 0116 E80F              add R30,R24
 0118 F91F              adc R31,R25
 011A 2CB0              in R2,0xc
 011C 2082              std z+0,R2
 011E                   .dbline 186
 011E 80910800          lds R24,_RXbufP
 0122 8F5F              subi R24,255    ; addi 1
 0124 80930800          sts _RXbufP,R24
 0128                   .dbline 187
 0128 80910B00          lds R24,_RXBUF+11
 012C 803F              cpi R24,240
 012E 09F4              brne L25
 0130                   .dbline 188
 0130 C398              cbi 0x18,3
 0132           L25:
 0132                   .dbline -2
 0132           L24:
 0132 2990              ld R2,y+
 0134 2FBE              out 0x3f,R2
 0136 F991              ld R31,y+
 0138 E991              ld R30,y+
 013A 9991              ld R25,y+
 013C 8991              ld R24,y+
 013E 2990              ld R2,y+
 0140                   .dbline 0 ; func end
 0140 1895              reti
 0142                   .dbend
 0142                   .dbfunc e TXbufRDY _TXbufRDY fV
                        .even
 0142           _TXbufRDY::
 0142                   .dbline -1
 0142                   .dbline 192
 0142           ;       //Delay_1ms();
 0142           ;       //OUTLED2Pulse;
 0142           ;  }//void uart1_tx_isr(void)
 0142           ; 
 0142           ; #pragma interrupt_handler uart1_rx_isr:12
 0142           ; void uart1_rx_isr(void)
 0142           ;  {    
 0142           ;     RXBUF[RXbufP]=UDR;
 0142           ;       RXbufP++;
 0142           ;       if(RXBUF[11]==TRFG3)
 0142           ;          OUTLED4ON;
 0142           ;       
 0142           ;  }//void uart1_rx_isr(void)
 0142           ; void TXbufRDY(void)
 0142           ; {
 0142                   .dbline 193
 0142           ;  TXBUF[0]=5;
 0142 85E0              ldi R24,5
 0144 80931E00          sts _TXBUF,R24
 0148                   .dbline 194
 0148           ;  TXBUF[1]=5;
 0148 80931F00          sts _TXBUF+1,R24
 014C                   .dbline 195
 014C           ;  TXBUF[2]=TRFG0;
 014C 8EEF              ldi R24,254
 014E 80932000          sts _TXBUF+2,R24
 0152                   .dbline 196
 0152           ;  TXBUF[3]=TRFG1;
 0152 8DEF              ldi R24,253
 0154 80932100          sts _TXBUF+3,R24
 0158                   .dbline 197
 0158           ;  TXBUF[4]=0;
 0158 2224              clr R2
 015A 20922200          sts _TXBUF+4,R2
 015E                   .dbline 198
 015E           ;  TXBUF[5]=1;
 015E 81E0              ldi R24,1
 0160 80932300          sts _TXBUF+5,R24
 0164                   .dbline 199
 0164           ;  TXBUF[12]=TRFG2;
 0164 81EF              ldi R24,241
 0166 80932A00          sts _TXBUF+12,R24
 016A                   .dbline 200
 016A           ;  TXBUF[13]=TRFG3;
 016A 80EF              ldi R24,240
 016C 80932B00          sts _TXBUF+13,R24
 0170                   .dbline -2
 0170           L28:
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbend
                        .area data(ram, con, rel)
 000D                   .dbfile E:\m8com\M8MPt.c
 000D           _SLSTEP::
 000D                   .blkb 1
                        .area idata
 000D 0A                .byte 10
                        .area data(ram, con, rel)
 000E                   .dbfile E:\m8com\M8MPt.c
 000E                   .dbsym e SLSTEP _SLSTEP c
                        .area text(rom, con, rel)
 0172                   .dbfile E:\m8com\M8MPt.c
 0172                   .dbfunc e main _main fV
 0172           ;              i -> R20
                        .even
 0172           _main::
 0172                   .dbline -1
 0172                   .dbline 207
 0172           ; }//void TXbufRDY(void)
 0172           ; 
 0172           ; 
 0172           ; 
 0172           ; unsigned char SLSTEP=10;
 0172           ; void main()
 0172           ; {
 0172                   .dbline 208
 0172           ;    unsigned char i=0;
 0172 4427              clr R20
 0174                   .dbline 211
 0174           ;    
 0174           ;       //delayXms(500); 
 0174           ;       port_init(); //IO初始化 
 0174 79DF              rcall _port_init
 0176                   .dbline 212
 0176           ;       uart_init();
 0176 88DF              rcall _uart_init
 0178                   .dbline 215
 0178           ;       //timer_init();
 0178           ;       
 0178           ;       delayXms(100); 
 0178 04E6              ldi R16,100
 017A 10E0              ldi R17,0
 017C 68DF              rcall _delayXms
 017E                   .dbline 216
 017E           ;       RXbufP=0;
 017E 2224              clr R2
 0180 20920800          sts _RXbufP,R2
 0184                   .dbline 217
 0184           ;       TXbufRDY()
 0184 DEDF              rcall _TXbufRDY
 0186 7894              sei
 0188                   .dbline 219
 0188           ;       SEI();
 0188           ;       TXbufP=0;
 0188 2224              clr R2
 018A 20920700          sts _TXbufP,R2
 018E                   .dbline 220
 018E           ;       TXADDRESS;
 018E 509A              sbi 0xa,0
 0190                   .dbline 220
 0190 20920000          sts _TXADFG,R2
 0194                   .dbline 220
 0194                   .dbline 221
 0194           ;       TXENABLE;
 0194 5498              cbi 0xa,4
 0196                   .dbline 221
 0196 539A              sbi 0xa,3
 0198                   .dbline 221
 0198                   .dbline 222
 0198           ;       UDR=TXBUF[0];
 0198 20901E00          lds R2,_TXBUF
 019C 2CB8              out 0xc,R2
 019E           L37:
 019E                   .dbline 224
 019E                   .dbline 228
 019E           L38:
 019E                   .dbline 223
 019E FFCF              rjmp L37
 01A0           X0:
 01A0                   .dbline -2
 01A0           L36:
 01A0                   .dbline 0 ; func end
 01A0 0895              ret
 01A2                   .dbsym r i 20 c
 01A2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\m8com\M8MPt.c
 0000           _RXBUF::
 0000                   .blkb 30
 001E                   .dbsym e RXBUF _RXBUF A[30:30]c
 001E           _TXBUF::
 001E                   .blkb 30
 003C                   .dbsym e TXBUF _TXBUF A[30:30]c
 003C           _SlaveEN::
 003C                   .blkb 17
 004D                   .dbsym e SlaveEN _SlaveEN A[17:17]c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -