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

📄 rtl8019as.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 027C           ;         mac_d1 -> y+4
 027C           ;         mac_d2 -> y+2
 027C           ;         mac_d3 -> y+0
 027C           ;         mac_d4 -> R18
 027C           ;         mac_d5 -> R16
                        .even
 027C           _buildpack::
 027C                   .dbline -1
 027C                   .dbline 195
 027C           ; }
 027C           ; 
 027C           ; void buildpack(unsigned char mac_d5,
 027C           ;                unsigned char mac_d4,
 027C           ;                          unsigned char mac_d3,
 027C           ;                          unsigned char mac_d2,
 027C           ;                          unsigned char mac_d1,
 027C           ;                          unsigned char mac_d0,
 027C           ;                          unsigned char mac_s5,
 027C           ;                          unsigned char mac_s4,
 027C           ;                          unsigned char mac_s3,
 027C           ;                          unsigned char mac_s2,
 027C           ;                          unsigned char mac_s1,
 027C           ;                          unsigned char mac_s0,
 027C           ;                          unsigned int len)
 027C           ; {
 027C                   .dbline 196
 027C           ;  buffer[0]=mac_d5;
 027C 00930000          sts _buffer,R16
 0280                   .dbline 197
 0280           ;  buffer[1]=mac_d4;
 0280 20930100          sts _buffer+1,R18
 0284                   .dbline 198
 0284           ;  buffer[2]=mac_d3;
 0284 0880              ldd R0,y+0
 0286 00920200          sts _buffer+2,R0
 028A                   .dbline 199
 028A           ;  buffer[3]=mac_d2;
 028A 0A80              ldd R0,y+2
 028C 00920300          sts _buffer+3,R0
 0290                   .dbline 200
 0290           ;  buffer[4]=mac_d1;
 0290 0C80              ldd R0,y+4
 0292 00920400          sts _buffer+4,R0
 0296                   .dbline 201
 0296           ;  buffer[5]=mac_d0;
 0296 0E80              ldd R0,y+6
 0298 00920500          sts _buffer+5,R0
 029C                   .dbline 203
 029C           ;  
 029C           ;  buffer[6]=mac_s5;
 029C 0884              ldd R0,y+8
 029E 00920600          sts _buffer+6,R0
 02A2                   .dbline 204
 02A2           ;  buffer[7]=mac_s4;
 02A2 0A84              ldd R0,y+10
 02A4 00920700          sts _buffer+7,R0
 02A8                   .dbline 205
 02A8           ;  buffer[8]=mac_s3;
 02A8 0C84              ldd R0,y+12
 02AA 00920800          sts _buffer+8,R0
 02AE                   .dbline 206
 02AE           ;  buffer[9]=mac_s2;
 02AE 0E84              ldd R0,y+14
 02B0 00920900          sts _buffer+9,R0
 02B4                   .dbline 207
 02B4           ;  buffer[10]=mac_s1;
 02B4 0888              ldd R0,y+16
 02B6 00920A00          sts _buffer+10,R0
 02BA                   .dbline 208
 02BA           ;  buffer[11]=mac_s0;
 02BA 0A88              ldd R0,y+18
 02BC 00920B00          sts _buffer+11,R0
 02C0                   .dbline 210
 02C0           ;  
 02C0           ;  buffer[13]=len&0xFF;
 02C0 8C89              ldd R24,y+20
 02C2 9D89              ldd R25,y+21
 02C4 9070              andi R25,0
 02C6 80930D00          sts _buffer+13,R24
 02CA                   .dbline 211
 02CA           ;  buffer[12]=len>>8;
 02CA 2C88              ldd R2,y+20
 02CC 3D88              ldd R3,y+21
 02CE 232C              mov R2,R3
 02D0 3324              clr R3
 02D2 20920C00          sts _buffer+12,R2
 02D6                   .dbline -2
 02D6           L21:
 02D6                   .dbline 0 ; func end
 02D6 0895              ret
 02D8                   .dbsym l len 20 i
 02D8                   .dbsym l mac_s0 18 c
 02D8                   .dbsym l mac_s1 16 c
 02D8                   .dbsym l mac_s2 14 c
 02D8                   .dbsym l mac_s3 12 c
 02D8                   .dbsym l mac_s4 10 c
 02D8                   .dbsym l mac_s5 8 c
 02D8                   .dbsym l mac_d0 6 c
 02D8                   .dbsym l mac_d1 4 c
 02D8                   .dbsym l mac_d2 2 c
 02D8                   .dbsym l mac_d3 0 c
 02D8                   .dbsym r mac_d4 18 c
 02D8                   .dbsym r mac_d5 16 c
 02D8                   .dbend
 02D8                   .dbfunc e rtl_packhandle _rtl_packhandle fV
 02D8           ;              i -> R10,R11
 02D8           ;        packlen -> R20,R21
 02D8           ;        packtyp -> R22,R23
 02D8           ;        mac_des -> y+6
 02D8           ;        mac_sou -> y+0
                        .even
 02D8           _rtl_packhandle::
 02D8 0E940000          xcall push_gset3
 02DC 2C97              sbiw R28,12
 02DE                   .dbline -1
 02DE                   .dbline 215
 02DE           ; }
 02DE           ; 
 02DE           ; void rtl_packhandle(void)
 02DE           ; {
 02DE                   .dbline 216
 02DE           ;  unsigned int packlen=0;         //包长度
 02DE 4427              clr R20
 02E0 5527              clr R21
 02E2                   .dbline 217
 02E2           ;  unsigned int packtyp=0;         //包类型
 02E2 6627              clr R22
 02E4 7727              clr R23
 02E6                   .dbline 220
 02E6           ;  unsigned char mac_des[6];       //目的地址
 02E6           ;  unsigned char mac_sou[6];       //源地址
 02E6           ;  unsigned int i=0;
 02E6 AA24              clr R10
 02E8 BB24              clr R11
 02EA                   .dbline 222
 02EA           ;  
 02EA           ;  mac_des[5]=buffer[4];
 02EA 20900400          lds R2,_buffer+4
 02EE 2B86              std y+11,R2
 02F0                   .dbline 223
 02F0           ;  mac_des[4]=buffer[5];
 02F0 20900500          lds R2,_buffer+5
 02F4 2A86              std y+10,R2
 02F6                   .dbline 224
 02F6           ;  mac_des[3]=buffer[6];
 02F6 20900600          lds R2,_buffer+6
 02FA 2986              std y+9,R2
 02FC                   .dbline 225
 02FC           ;  mac_des[2]=buffer[7];
 02FC 20900700          lds R2,_buffer+7
 0300 2886              std y+8,R2
 0302                   .dbline 226
 0302           ;  mac_des[1]=buffer[8];
 0302 20900800          lds R2,_buffer+8
 0306 2F82              std y+7,R2
 0308                   .dbline 227
 0308           ;  mac_des[0]=buffer[9]; 
 0308 20900900          lds R2,_buffer+9
 030C 2E82              std y+6,R2
 030E                   .dbline 229
 030E           ;  
 030E           ;  mac_sou[5]=buffer[10];
 030E 20900A00          lds R2,_buffer+10
 0312 2D82              std y+5,R2
 0314                   .dbline 230
 0314           ;  mac_sou[4]=buffer[11];
 0314 20900B00          lds R2,_buffer+11
 0318 2C82              std y+4,R2
 031A                   .dbline 231
 031A           ;  mac_sou[3]=buffer[12];
 031A 20900C00          lds R2,_buffer+12
 031E 2B82              std y+3,R2
 0320                   .dbline 232
 0320           ;  mac_sou[2]=buffer[13];
 0320 20900D00          lds R2,_buffer+13
 0324 2A82              std y+2,R2
 0326                   .dbline 233
 0326           ;  mac_sou[1]=buffer[14];
 0326 20900E00          lds R2,_buffer+14
 032A 2982              std y+1,R2
 032C                   .dbline 234
 032C           ;  mac_sou[0]=buffer[15];
 032C 20900F00          lds R2,_buffer+15
 0330 2882              std y+0,R2
 0332                   .dbline 236
 0332           ;  
 0332           ;  tempmac_d5=mac_sou[5];
 0332 2D80              ldd R2,y+5
 0334 20920500          sts _tempmac_d5,R2
 0338                   .dbline 237
 0338           ;  tempmac_d4=mac_sou[4];
 0338 2C80              ldd R2,y+4
 033A 20920400          sts _tempmac_d4,R2
 033E                   .dbline 238
 033E           ;  tempmac_d3=mac_sou[3]; 
 033E 2B80              ldd R2,y+3
 0340 20920300          sts _tempmac_d3,R2
 0344                   .dbline 239
 0344           ;  tempmac_d2=mac_sou[2]; 
 0344 2A80              ldd R2,y+2
 0346 20920200          sts _tempmac_d2,R2
 034A                   .dbline 240
 034A           ;  tempmac_d1=mac_sou[1];
 034A 2980              ldd R2,y+1
 034C 20920100          sts _tempmac_d1,R2
 0350                   .dbline 241
 0350           ;  tempmac_d0=mac_sou[0]; 
 0350 2880              ldd R2,y+0
 0352 20920000          sts _tempmac_d0,R2
 0356                   .dbline 244
 0356           ;  
 0356           ;  
 0356           ;  if(((buffer[0]&0x01)==0))//如果数据包无效则不作处理
 0356 20900000          lds R2,_buffer
 035A 20FC              sbrc R2,0
 035C 01C0              rjmp L63
 035E                   .dbline 245
 035E           ;  {
 035E                   .dbline 246
 035E           ;   return;
 035E 61C0              xjmp L35
 0360           L63:
 0360                   .dbline 249
 0360           ;  }
 0360           ;  
 0360           ;  packlen=buffer[3];              //获取数据长度,包括4字节校验码
 0360 40910300          lds R20,_buffer+3
 0364 5527              clr R21
 0366                   .dbline 250
 0366           ;  packlen<<=8;
 0366 542F              mov R21,R20
 0368 4427              clr R20
 036A                   .dbline 251
 036A           ;  packlen|=buffer[2];
 036A 20900200          lds R2,_buffer+2
 036E 3324              clr R3
 0370 4229              or R20,R2
 0372 5329              or R21,R3
 0374                   .dbline 252
 0374           ;  packtyp=buffer[16];             //获取数据类型
 0374 60911000          lds R22,_buffer+16
 0378 7727              clr R23
 037A                   .dbline 253
 037A           ;  packtyp<<=8;
 037A 762F              mov R23,R22
 037C 6627              clr R22
 037E                   .dbline 254
 037E           ;  packtyp|=buffer[17];
 037E 20901100          lds R2,_buffer+17
 0382 3324              clr R3
 0384 6229              or R22,R2
 0386 7329              or R23,R3
 0388                   .dbline 256
 0388           ;  
 0388           ;  switch(packtyp)
 0388 6030              cpi R22,0
 038A E8E0              ldi R30,8
 038C 7E07              cpc R23,R30
 038E 79F0              breq L73
 0390 6030              cpi R22,0
 0392 E8E0              ldi R30,8
 0394 7E07              cpc R23,R30
 0396 0CF4              brge X2
 0398 44C0              xjmp L35
 039A           X2:
 039A           L103:
 039A 6630              cpi R22,6
 039C E8E0              ldi R30,8
 039E 7E07              cpc R23,R30
 03A0 09F0              breq L71
 03A2 3FC0              xjmp L35
 03A4           X0:
 03A4                   .dbline 257
 03A4           ;  {
 03A4           L71:
 03A4                   .dbline 259
 03A4           ;   case 0x0806:                   //ARP数据包
 03A4           ;        arp_response(&buffer[18]);
 03A4 00E0              ldi R16,<_buffer+18
 03A6 10E0              ldi R17,>_buffer+18
 03A8 0E940000          xcall _arp_response
 03AC                   .dbline 260
 03AC           ;          break;
 03AC 3AC0              xjmp L35
 03AE           L73:
 03AE                   .dbline 262
 03AE           ;   case 0x0800:                   //IP数据包
 03AE           ;        switch(ip_packhandle(&buffer[18]))
 03AE 00E0              ldi R16,<_buffer+18
 03B0 10E0              ldi R17,>_buffer+18
 03B2 0E940000          xcall _ip_packhandle
 03B6 602F              mov R22,R16
 03B8 7727              clr R23
 03BA 6130              cpi R22,1
 03BC E0E0              ldi R30,0
 03BE 7E07              cpc R23,R30
 03C0 49F0              breq L78
 03C2 6130              cpi R22,1
 03C4 E0E0              ldi R30,0
 03C6 7E07              cpc R23,R30
 03C8 64F1              brlt L35
 03CA           L102:
 03CA 6131              cpi R22,17
 03CC E0E0              ldi R30,0
 03CE 7E07              cpc R23,R30
 03D0 41F1              breq L35
 03D2 27C0              xjmp L35
 03D4           X1:
 03D4                   .dbline 263
 03D4           ;          {
 03D4           L78:
 03D4                   .dbline 265
 03D4           ;           case 1://ICMP包处理
 03D4           ;                    buffer[4]=mac_sou[5];
 03D4 2D80              ldd R2,y+5
 03D6 20920400          sts _buffer+4,R2
 03DA                   .dbline 266
 03DA           ;                        buffer[5]=mac_sou[4];
 03DA 2C80              ldd R2,y+4
 03DC 20920500          sts _buffer+5,R2
 03E0                   .dbline 267
 03E0           ;                        buffer[6]=mac_sou[3];
 03E0 2B80              ldd R2,y+3
 03E2 20920600          sts _buffer+6,R2
 03E6                   .dbline 268
 03E6           ;                        buffer[7]=mac_sou[2];
 03E6 2A80              ldd R2,y+2
 03E8 20920700          sts _buffer+7,R2
 03EC                   .dbline 269
 03EC           ;                        buffer[8]=mac_sou[1];
 03EC 2980              ldd R2,y+1
 03EE 20920800          sts _buffer+8,R2

⌨️ 快捷键说明

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