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

📄 main.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0126                   .dbline 0 ; func end
 0126 1895              reti
 0128                   .dbend
 0128                   .dbfunc e port_init _port_init fV
                        .even
 0128           _port_init::
 0128                   .dbline -1
 0128                   .dbline 101
 0128           ; }
 0128           ; 
 0128           ; //////////////////////////////////////////////////////////////////
 0128           ; void port_init(void)
 0128           ; {
 0128                   .dbline 102
 0128           ;  PORTA = 0x00;
 0128 2224              clr R2
 012A 2BBA              out 0x1b,R2
 012C                   .dbline 103
 012C           ;  DDRA  = 0x00;
 012C 2ABA              out 0x1a,R2
 012E                   .dbline 104
 012E           ;  PORTB = 0x00;
 012E 28BA              out 0x18,R2
 0130                   .dbline 105
 0130           ;  DDRB  = 0x00;
 0130 27BA              out 0x17,R2
 0132                   .dbline 106
 0132           ;  PORTC = 0x00; //m103 output only
 0132 25BA              out 0x15,R2
 0134                   .dbline 107
 0134           ;  DDRC  = 0x00;
 0134 24BA              out 0x14,R2
 0136                   .dbline 108
 0136           ;  PORTD = 0x02;
 0136 82E0              ldi R24,2
 0138 82BB              out 0x12,R24
 013A                   .dbline 109
 013A           ;  DDRD  = 0x30;
 013A 80E3              ldi R24,48
 013C 81BB              out 0x11,R24
 013E                   .dbline 110
 013E           ;  PORTE = 0x00;
 013E 23B8              out 0x3,R2
 0140                   .dbline 111
 0140           ;  DDRE  = 0x00;
 0140 22B8              out 0x2,R2
 0142                   .dbline 112
 0142           ;  PORTF = 0x00;
 0142 20926200          sts 98,R2
 0146                   .dbline 113
 0146           ;  DDRF  = 0x00;
 0146 20926100          sts 97,R2
 014A                   .dbline 114
 014A           ;  PORTG = 0x00;
 014A 20926500          sts 101,R2
 014E                   .dbline 115
 014E           ;  DDRG  = 0x08;
 014E 88E0              ldi R24,8
 0150 80936400          sts 100,R24
 0154                   .dbline -2
 0154           L18:
 0154                   .dbline 0 ; func end
 0154 0895              ret
 0156                   .dbend
 0156                   .dbfunc e init_devices _init_devices fV
                        .even
 0156           _init_devices::
 0156                   .dbline -1
 0156                   .dbline 120
 0156           ; }
 0156           ; 
 0156           ; //call this routine to initialize all peripherals
 0156           ; void init_devices(void)
 0156           ; {
 0156                   .dbline 122
 0156           ;  //stop errant interrupts until set up
 0156           ;  CLI(); //disable all interrupts
 0156 F894              cli
 0158                   .dbline 123
 0158           ;  XDIV  = 0x00; //xtal divider
 0158 2224              clr R2
 015A 2CBE              out 0x3c,R2
 015C                   .dbline 124
 015C           ;  XMCRA = 0x04; //external memory
 015C 84E0              ldi R24,4
 015E 80936D00          sts 109,R24
 0162                   .dbline 125
 0162           ;  mapping_init();
 0162 65D0              xcall _mapping_init
 0164                   .dbline 126
 0164           ;  port_init();
 0164 E1DF              xcall _port_init
 0166                   .dbline 127
 0166           ;  uart1_init();
 0166 37D0              xcall _uart1_init
 0168                   .dbline 129
 0168           ;  
 0168           ;  MCUCR = 0x80;
 0168 80E8              ldi R24,128
 016A 85BF              out 0x35,R24
 016C                   .dbline 130
 016C           ;  EICRA = 0x0b; //extended ext ints
 016C 8BE0              ldi R24,11
 016E 80936A00          sts 106,R24
 0172                   .dbline 131
 0172           ;  EICRB = 0x00; //extended ext ints
 0172 2224              clr R2
 0174 2ABE              out 0x3a,R2
 0176                   .dbline 132
 0176           ;  EIMSK = 0x03;
 0176 83E0              ldi R24,3
 0178 89BF              out 0x39,R24
 017A                   .dbline 133
 017A           ;  TIMSK = 0x00; //timer interrupt sources
 017A 27BE              out 0x37,R2
 017C                   .dbline 134
 017C           ;  ETIMSK = 0x00; //extended timer interrupt sources
 017C 20927D00          sts 125,R2
 0180                   .dbline 135
 0180           ;  SEI(); //re-enable interrupts
 0180 7894              sei
 0182                   .dbline -2
 0182           L19:
 0182                   .dbline 0 ; func end
 0182 0895              ret
 0184                   .dbend
 0184                   .dbfunc e delay_100ms _delay_100ms fV
 0184           ;              i -> R16,R17
 0184           ;              k -> R18,R19
                        .even
 0184           _delay_100ms::
 0184                   .dbline -1
 0184                   .dbline 140
 0184           ;  //all peripherals are now initialized
 0184           ; }
 0184           ; 
 0184           ; void delay_100ms(void)
 0184           ; {
 0184                   .dbline 141
 0184           ;  unsigned int i=0;
 0184 0027              clr R16
 0186 1127              clr R17
 0188                   .dbline 142
 0188           ;  unsigned int k=0;
 0188 2227              clr R18
 018A 3327              clr R19
 018C                   .dbline 143
 018C           ;  for(;i<1000;i++)
 018C 0CC0              xjmp L24
 018E           L21:
 018E                   .dbline 144
 018E           ;  {
 018E                   .dbline 145
 018E           ;   for(k=0;k<100;k++)
 018E 2227              clr R18
 0190 3327              clr R19
 0192 03C0              xjmp L28
 0194           L25:
 0194                   .dbline 146
 0194                   .dbline 147
 0194 A895              wdr
 0196                   .dbline 148
 0196           L26:
 0196                   .dbline 145
 0196 2F5F              subi R18,255  ; offset = 1
 0198 3F4F              sbci R19,255
 019A           L28:
 019A                   .dbline 145
 019A 2436              cpi R18,100
 019C E0E0              ldi R30,0
 019E 3E07              cpc R19,R30
 01A0 C8F3              brlo L25
 01A2                   .dbline 149
 01A2           L22:
 01A2                   .dbline 143
 01A2 0F5F              subi R16,255  ; offset = 1
 01A4 1F4F              sbci R17,255
 01A6           L24:
 01A6                   .dbline 143
 01A6 083E              cpi R16,232
 01A8 E3E0              ldi R30,3
 01AA 1E07              cpc R17,R30
 01AC 80F3              brlo L21
 01AE                   .dbline -2
 01AE           L20:
 01AE                   .dbline 0 ; func end
 01AE 0895              ret
 01B0                   .dbsym r i 16 i
 01B0                   .dbsym r k 18 i
 01B0                   .dbend
 01B0                   .dbfunc e rtl_errchk _rtl_errchk fV
                        .even
 01B0           _rtl_errchk::
 01B0                   .dbline -1
 01B0                   .dbline 154
 01B0           ;   {
 01B0           ;    WDR();
 01B0           ;   }
 01B0           ;  }
 01B0           ; }
 01B0           ; 
 01B0           ; 
 01B0           ; void rtl_errchk(void)
 01B0           ; {
 01B0                   .dbline 155
 01B0           ;    if(rtl_isrstatus()&0x04) //异常状态监视
 01B0 0E940000          xcall _rtl_isrstatus
 01B4 02FF              sbrs R16,2
 01B6 0EC0              rjmp L30
 01B8                   .dbline 156
 01B8           ;    { 
 01B8                   .dbline 157
 01B8           ;       if(rtl_isrstatus()&0x04)
 01B8 0E940000          xcall _rtl_isrstatus
 01BC 02FF              sbrs R16,2
 01BE 0AC0              rjmp L32
 01C0                   .dbline 158
 01C0           ;         {   
 01C0                   .dbline 159
 01C0           ;          rtl8019_hotreset();   //网卡芯片热复位
 01C0 0E940000          xcall _rtl8019_hotreset
 01C4                   .dbline 160
 01C4           ;          rtl8019_init();       //重新初始化
 01C4 0E940000          xcall _rtl8019_init
 01C8                   .dbline 161
 01C8           ;          curr_temp=0x0000;
 01C8 2224              clr R2
 01CA 3324              clr R3
 01CC 3092FD01          sts _curr_temp+1,R3
 01D0 2092FC01          sts _curr_temp,R2
 01D4                   .dbline 162
 01D4           ;       }
 01D4           L32:
 01D4                   .dbline 163
 01D4           L30:
 01D4                   .dbline -2
 01D4           L29:
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6                   .dbend
 01D6                   .dbfunc e uart1_init _uart1_init fV
                        .even
 01D6           _uart1_init::
 01D6                   .dbline -1
 01D6                   .dbline 171
 01D6           ;    }
 01D6           ; }
 01D6           ; 
 01D6           ; 
 01D6           ; //UART1 initialize
 01D6           ; // desired baud rate:19200
 01D6           ; // actual baud rate:19200 (0.0%)
 01D6           ; void uart1_init(void)
 01D6           ; {
 01D6                   .dbline 172
 01D6           ;  UCSR1B = 0x00; //disable while setting baud rate
 01D6 2224              clr R2
 01D8 20929A00          sts 154,R2
 01DC                   .dbline 173
 01DC           ;  UCSR1A = 0x00;
 01DC 20929B00          sts 155,R2
 01E0                   .dbline 174
 01E0           ;  UCSR1C = 0x06;
 01E0 86E0              ldi R24,6
 01E2 80939D00          sts 157,R24
 01E6                   .dbline 175
 01E6           ;  UBRR1L = 0x26; //set baud rate lo
 01E6 86E2              ldi R24,38
 01E8 80939900          sts 153,R24
 01EC                   .dbline 176
 01EC           ;  UBRR1H = 0x00; //set baud rate hi
 01EC 20929800          sts 152,R2
 01F0                   .dbline 177
 01F0           ;  UCSR1B = 0x98;
 01F0 88E9              ldi R24,152
 01F2 80939A00          sts 154,R24
 01F6                   .dbline -2
 01F6           L34:
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbend
 01F8                   .dbfunc e uartsenddata _uartsenddata fV
 01F8           ;        udpdata -> R20,R21
                        .even
 01F8           _uartsenddata::
 01F8 0E940000          xcall push_gset1
 01FC                   .dbline -1
 01FC                   .dbline 182
 01FC           ; }
 01FC           ; 
 01FC           ; 
 01FC           ; void uartsenddata(void)
 01FC           ; {
 01FC                   .dbline 183
 01FC           ;    unsigned int udpdata=0;
 01FC 4427              clr R20
 01FE 5527              clr R21
 0200                   .dbline 185
 0200           ;    
 0200           ;    if(UCSR1A&0x20)
 0200 20909B00          lds R2,155
 0204 25FE              sbrs R2,5
 0206 03C0              rjmp L36
 0208                   .dbline 186
 0208           ;    {
 0208                   .dbline 187
 0208           ;     udpdata=udp_readdata();
 0208 0E940000          xcall _udp_readdata
 020C A801              movw R20,R16
 020E                   .dbline 188
 020E           ;    }
 020E           L36:
 020E                   .dbline 189
 020E 57FF              sbrs R21,7
 0210 06C0              rjmp L38
 0212                   .dbline 190
 0212                   .dbline 191
 0212 CA01              movw R24,R20
 0214 9070              andi R25,0
 0216 80939C00          sts 156,R24
 021A                   .dbline 192
 021A 4427              clr R20
 021C 5527              clr R21
 021E                   .dbline 193

⌨️ 快捷键说明

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