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

📄 m8mpt.lis

📁 AVR MEGA8双机串行口通讯程序,单工485方式,用于单片机组网,有PROTEUS仿真电路,可以立刻验证
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module M8MPt.c
                        .area data(ram, con, rel)
 0000           _TXADFG::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\m8com\M8MPt.c
 0001                   .dbsym e TXADFG _TXADFG c
 0001           _SlaveCR::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\m8com\M8MPt.c
 0002                   .dbsym e SlaveCR _SlaveCR c
 0002           _TXINTMAX::
 0002                   .blkb 1
                        .area idata
 0002 01                .byte 1
                        .area data(ram, con, rel)
 0003                   .dbfile E:\m8com\M8MPt.c
 0003                   .dbsym e TXINTMAX _TXINTMAX c
 0003           _TXINTFG::
 0003                   .blkb 1
                        .area idata
 0003 00                .byte 0
                        .area data(ram, con, rel)
 0004                   .dbfile E:\m8com\M8MPt.c
 0004                   .dbsym e TXINTFG _TXINTFG c
 0004           _RXINTMAX::
 0004                   .blkb 1
                        .area idata
 0004 10                .byte 16
                        .area data(ram, con, rel)
 0005                   .dbfile E:\m8com\M8MPt.c
 0005                   .dbsym e RXINTMAX _RXINTMAX c
 0005           _RXINTCR::
 0005                   .blkb 1
                        .area idata
 0005 00                .byte 0
                        .area data(ram, con, rel)
 0006                   .dbfile E:\m8com\M8MPt.c
 0006                   .dbsym e RXINTCR _RXINTCR c
 0006           _RXINTFG::
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .dbfile E:\m8com\M8MPt.c
 0007                   .dbsym e RXINTFG _RXINTFG c
 0007           _TXbufP::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\m8com\M8MPt.c
 0008                   .dbsym e TXbufP _TXbufP c
 0008           _RXbufP::
 0008                   .blkb 1
                        .area idata
 0008 00                .byte 0
                        .area data(ram, con, rel)
 0009                   .dbfile E:\m8com\M8MPt.c
 0009                   .dbsym e RXbufP _RXbufP c
 0009           _RXbufPmax::
 0009                   .blkb 1
                        .area idata
 0009 0B                .byte 11
                        .area data(ram, con, rel)
 000A                   .dbfile E:\m8com\M8MPt.c
 000A                   .dbsym e RXbufPmax _RXbufPmax c
 000A           _RXERROR::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile E:\m8com\M8MPt.c
 000B                   .dbsym e RXERROR _RXERROR c
 000B           _WaitCR0::
 000B                   .blkb 1
                        .area idata
 000B 00                .byte 0
                        .area data(ram, con, rel)
 000C                   .dbfile E:\m8com\M8MPt.c
 000C                   .dbsym e WaitCR0 _WaitCR0 c
 000C           _WaitCR1::
 000C                   .blkb 1
                        .area idata
 000C 00                .byte 0
                        .area data(ram, con, rel)
 000D                   .dbfile E:\m8com\M8MPt.c
 000D                   .dbsym e WaitCR1 _WaitCR1 c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\m8com\M8MPt.c
 0000                   .dbfunc e SoftTimer _SoftTimer fV
                        .even
 0000           _SoftTimer::
 0000                   .dbline -1
 0000                   .dbline 63
 0000                   .dbline 64
 0000 80910B00          lds R24,_WaitCR0
 0004 8F5F              subi R24,255    ; addi 1
 0006 80930B00          sts _WaitCR0,R24
 000A                   .dbline 65
 000A 8EEF              ldi R24,254
 000C 20900B00          lds R2,_WaitCR0
 0010 8215              cp R24,R2
 0012 40F4              brsh L2
 0014                   .dbline 66
 0014                   .dbline 67
 0014 2224              clr R2
 0016 20920B00          sts _WaitCR0,R2
 001A                   .dbline 68
 001A 80910C00          lds R24,_WaitCR1
 001E 8F5F              subi R24,255    ; addi 1
 0020 80930C00          sts _WaitCR1,R24
 0024                   .dbline 69
 0024           L2:
 0024                   .dbline -2
 0024           L1:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
 0026                   .dbfunc e SoftTimerStart _SoftTimerStart fV
                        .even
 0026           _SoftTimerStart::
 0026                   .dbline -1
 0026                   .dbline 72
 0026           ; //////////主机
 0026           ; 
 0026           ; #include <iom8v.h>
 0026           ; #include <macros.h>
 0026           ; //ISARM pro
 0026           ; #define OUTLED1OFF PORTB|=0x01       //for 
 0026           ; #define OUTLED1ON PORTB&=~0x01
 0026           ; #define OUTLED2OFF PORTB|=0x02       //For 
 0026           ; #define OUTLED2ON PORTB&=~0x02
 0026           ; #define OUTLED2Pulse PORTB^=0x02
 0026           ; 
 0026           ; #define OUTLED3OFF PORTB|=0x04      //For 
 0026           ; #define OUTLED3ON PORTB&=~0x04
 0026           ; #define OUTLED3Pulse PORTB^=0x04
 0026           ; #define OUTLED4OFF PORTB|=0x08      //For 
 0026           ; #define OUTLED4ON PORTB&=~0x08
 0026           ; #define OUTLED4Pulse PORTB^=0x08
 0026           ; 
 0026           ; #define OUTDEON PORTD|=0x10
 0026           ; #define OUTDEOFF PORTD&=~0x10
 0026           ; 
 0026           ; #define KB0 (PINC&0x01)
 0026           ; #define KB1 (PINC&0x02)
 0026           ; 
 0026           ; 
 0026           ; ///UART///
 0026           ; #define TXENABLE UCSRB&=~(1<<RXEN);UCSRB|=(1<<TXEN); 
 0026           ; #define RXENABLE UCSRB&=~(1<<TXEN);UCSRB|=(1<<RXEN); 
 0026           ; #define TXADDRESS UCSRB|=(1<<TXB8);TXADFG=0;
 0026           ; #define TXDATA UCSRB&=~(1<<TXB8);TXADFG=1;
 0026           ; //
 0026           ; #define TRFG0 0xFE
 0026           ; #define TRFG1 0xFD
 0026           ; #define TRFG2 0xF1
 0026           ; #define TRFG3 0xF0
 0026           ; //最大子板数
 0026           ; #define SlaveBMAX 15
 0026           ; //////////////////////////////
 0026           ; //////////////////////////////
 0026           ; unsigned char TXADFG=0;
 0026           ; 
 0026           ; unsigned char SlaveEN[17];
 0026           ; unsigned char SlaveCR=0;  //子板编号计数器,当作物理地址
 0026           ; unsigned char TXINTMAX=1;//下行发送中断次数控制值
 0026           ; //unsigned char TXINTCR=0;//下行发送中断次数计数器
 0026           ; unsigned char TXINTFG=0;//下行发送中断次数完成标志
 0026           ; unsigned char RXINTMAX=16;//下行发送中断次数控制值
 0026           ; unsigned char RXINTCR=0;//下行发送中断次数计数器
 0026           ; unsigned char RXINTFG=0;//下行发送中断次数完成标志
 0026           ; 
 0026           ; unsigned char TXBUF[30]; //发送缓冲区
 0026           ; unsigned char RXBUF[30];  //接收缓冲区
 0026           ; unsigned char TXbufP=0;  //发送缓冲区下标
 0026           ; unsigned char RXbufP=0;  //接收缓冲区下标
 0026           ; unsigned char RXbufPmax=11;//接收数据实际长度
 0026           ; 
 0026           ; unsigned char RXERROR=0;
 0026           ; /////Soft Timer
 0026           ; unsigned char WaitCR0=0;
 0026           ; unsigned char WaitCR1=0;
 0026           ; 
 0026           ; void SoftTimer(void)
 0026           ;   {
 0026           ;     WaitCR0++;
 0026           ;       if(WaitCR0>254)
 0026           ;        {
 0026           ;         WaitCR0=0;
 0026           ;         WaitCR1++;
 0026           ;        }//if(WaitCR0>0)
 0026           ;   }
 0026           ; void SoftTimerStart(void)
 0026           ;   {
 0026                   .dbline 73
 0026           ;    WaitCR0=0;
 0026 2224              clr R2
 0028 20920B00          sts _WaitCR0,R2
 002C                   .dbline 74
 002C           ;    WaitCR1=0;
 002C 20920C00          sts _WaitCR1,R2
 0030                   .dbline -2
 0030           L4:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbend
 0032                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 0032           _watchdog_init::
 0032                   .dbline -1
 0032                   .dbline 78
 0032           ;   }
 0032           ;   
 0032           ; void watchdog_init(void)
 0032           ;      {
 0032                   .dbline 79
 0032           ;          WDR();
 0032 A895              wdr
 0034                   .dbline 80
 0034           ;          WDTCR=0x0F ;
 0034 8FE0              ldi R24,15
 0036 81BD              out 0x21,R24
 0038                   .dbline -2
 0038           L5:
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbend
 003A                   .dbfunc e Delay_1ms _Delay_1ms fV
 003A           ;              i -> R16,R17
                        .even
 003A           _Delay_1ms::
 003A                   .dbline -1
 003A                   .dbline 84
 003A           ;        }
 003A           ;        
 003A           ; void Delay_1ms(void)
 003A           ;       {
 003A                   .dbline 87
 003A           ;       unsigned int i;
 003A           ; 
 003A           ;       for (i = 1; i<1140; i++)
 003A 01E0              ldi R16,1
 003C 10E0              ldi R17,0
 003E 02C0              rjmp L10
 0040           L7:
 0040                   .dbline 89
 0040           L8:
 0040                   .dbline 87
 0040 0F5F              subi R16,255  ; offset = 1
 0042 1F4F              sbci R17,255
 0044           L10:
 0044                   .dbline 87
 0044 0437              cpi R16,116
 0046 E4E0              ldi R30,4
 0048 1E07              cpc R17,R30
 004A D0F3              brlo L7
 004C                   .dbline -2
 004C           L6:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbsym r i 16 i
 004E                   .dbend
 004E                   .dbfunc e delayXms _delayXms fV
 004E           ;              i -> R20,R21
 004E           ;              n -> R22,R23
                        .even
 004E           _delayXms::
 004E 00D0              rcall push_gset2
 0050 B801              movw R22,R16
 0052                   .dbline -1
 0052                   .dbline 93
 0052           ;               
 0052           ;                       ;
 0052           ;       }
 0052           ; 
 0052           ; void delayXms(unsigned int n)
 0052           ;      {
 0052                   .dbline 94
 0052           ;          unsigned int i=0;
 0052 4427              clr R20
 0054 5527              clr R21
 0056 03C0              rjmp L13
 0058           L12:
 0058                   .dbline 96
 0058                   .dbline 97
 0058 F0DF              rcall _Delay_1ms
 005A                   .dbline 98
 005A 4F5F              subi R20,255  ; offset = 1
 005C 5F4F              sbci R21,255
 005E                   .dbline 99
 005E           L13:
 005E                   .dbline 95
 005E           ;          while(i<n)
 005E 4617              cp R20,R22
 0060 5707              cpc R21,R23
 0062 D0F3              brlo L12
 0064                   .dbline -2
 0064           L11:
 0064 00D0              rcall pop_gset2
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbsym r i 20 i
 0068                   .dbsym r n 22 i
 0068                   .dbend
 0068                   .dbfunc e port_init _port_init fV
                        .even
 0068           _port_init::
 0068                   .dbline -1
 0068                   .dbline 104
 0068           ;            {
 0068           ;                 Delay_1ms();
 0068           ;                 i++;
 0068           ;                }
 0068           ;        }
 0068           ;        
 0068           ;        
 0068           ; void port_init(void)
 0068           ;      {
 0068                   .dbline 107
 0068           ;        
 0068           ;                                        
 0068           ;         PORTB=0xFF;    //PB set to 1
 0068 8FEF              ldi R24,255
 006A 88BB              out 0x18,R24
 006C                   .dbline 108
 006C           ;         DDRB=0xFF;     
 006C 87BB              out 0x17,R24
 006E                   .dbline 110
 006E           ;                                        
 006E           ;         PORTC=0xFF;    //PC set to 1
 006E 85BB              out 0x15,R24
 0070                   .dbline 111
 0070           ;         DDRC=0x00;     //
 0070 2224              clr R2
 0072 24BA              out 0x14,R2
 0074                   .dbline 113
 0074           ;             
 0074           ;         PORTD=0xFF;    //PD set to 1
 0074 82BB              out 0x12,R24
 0076                   .dbline 114
 0076           ;         DDRD=0x12;     //PD0:RXD PD1:TXD PD2:DI0 PD3:DI1
 0076 82E1              ldi R24,18
 0078 81BB              out 0x11,R24
 007A                   .dbline 118
 007A           ;                        //PD4:DI2  PD5:DI3 
 007A           ;         //OUTDEON;
 007A           ;         
 007A           ;       SFIOR&=~(1<<PUD);  //OPEN UP LINK
 007A 80B7              in R24,0x30
 007C 8B7F              andi R24,251
 007E 80BF              out 0x30,R24
 0080                   .dbline 122
 0080           ;       //MCUCR|=(1<<ISC11); //Down edge int1
 0080           ;       //GICR=(1<<INT1); //enable INT1
 0080           ;         
 0080           ;         delayXms(10); //delay 1s
 0080 0AE0              ldi R16,10
 0082 10E0              ldi R17,0
 0084 E4DF              rcall _delayXms
 0086                   .dbline -2
 0086           L15:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e uart_init _uart_init fV
                        .even
 0088           _uart_init::
 0088                   .dbline -1
 0088                   .dbline 126
 0088           ;        }
 0088           ; //////////////////////////UART INIT

⌨️ 快捷键说明

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