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

📄 udp.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module udp.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\udp.c
 0000                   .dbfunc e udp_init _udp_init fV
                        .even
 0000           _udp_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; #include "main.h"
 0000           ; #include "rtl8019as.h"
 0000           ; #include "arp.h"
 0000           ; #include "ip.h"
 0000           ; #include "icmp.h"
 0000           ; #include "udp.h"
 0000           ; 
 0000           ; void udp_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;   udpbuffer_in_p=0;
 0000 2224              clr R2
 0002 3324              clr R3
 0004 30920100          sts _udpbuffer_in_p+1,R3
 0008 20920000          sts _udpbuffer_in_p,R2
 000C                   .dbline 11
 000C           ;   udpbuffer_in_rp=0;
 000C 30920100          sts _udpbuffer_in_rp+1,R3
 0010 20920000          sts _udpbuffer_in_rp,R2
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e udp_packhandle _udp_packhandle fc
 0016           ;         udp_ok -> R20
 0016           ;       des_port -> R12,R13
 0016           ;              i -> R10,R11
 0016           ;         udplen -> R10,R11
 0016           ;       udpbegin -> R22,R23
                        .even
 0016           _udp_packhandle::
 0016 0E940000          xcall push_gset4
 001A 5901              movw R10,R18
 001C B801              movw R22,R16
 001E                   .dbline -1
 001E                   .dbline 15
 001E           ; }
 001E           ; 
 001E           ; unsigned char udp_packhandle(unsigned char *udpbegin,unsigned int udplen)
 001E           ; {
 001E                   .dbline 16
 001E           ;  unsigned char udp_ok=0;
 001E 4427              clr R20
 0020                   .dbline 17
 0020           ;  unsigned int des_port=0;
 0020 CC24              clr R12
 0022 DD24              clr R13
 0024                   .dbline 18
 0024           ;  unsigned int i=0;
 0024 AA24              clr R10
 0026 BB24              clr R11
 0028                   .dbline 20
 0028           ;  
 0028           ;  to_udpport=*udpbegin;
 0028 FB01              movw R30,R22
 002A 2080              ldd R2,z+0
 002C 3324              clr R3
 002E 30920100          sts _to_udpport+1,R3
 0032 20920000          sts _to_udpport,R2
 0036                   .dbline 21
 0036           ;  to_udpport<<=8;
 0036 322C              mov R3,R2
 0038 2224              clr R2
 003A 30920100          sts _to_udpport+1,R3
 003E 20920000          sts _to_udpport,R2
 0042                   .dbline 22
 0042           ;  to_udpport|=*(udpbegin+1);
 0042 2180              ldd R2,z+1
 0044 3324              clr R3
 0046 40900000          lds R4,_to_udpport
 004A 50900100          lds R5,_to_udpport+1
 004E 4228              or R4,R2
 0050 5328              or R5,R3
 0052 50920100          sts _to_udpport+1,R5
 0056 40920000          sts _to_udpport,R4
 005A                   .dbline 24
 005A           ;  
 005A           ;  des_port=*(udpbegin+2);
 005A FB01              movw R30,R22
 005C C280              ldd R12,z+2
 005E DD24              clr R13
 0060                   .dbline 25
 0060           ;  des_port<<=8;
 0060 DC2C              mov R13,R12
 0062 CC24              clr R12
 0064                   .dbline 26
 0064           ;  des_port|=*(udpbegin+3);
 0064 FB01              movw R30,R22
 0066 2380              ldd R2,z+3
 0068 3324              clr R3
 006A C228              or R12,R2
 006C D328              or R13,R3
 006E                   .dbline 28
 006E           ;  
 006E           ;  udpdatalen=*(udpbegin+4);
 006E FB01              movw R30,R22
 0070 2480              ldd R2,z+4
 0072 3324              clr R3
 0074 30920100          sts _udpdatalen+1,R3
 0078 20920000          sts _udpdatalen,R2
 007C                   .dbline 29
 007C           ;  udpdatalen<<=8;
 007C 322C              mov R3,R2
 007E 2224              clr R2
 0080 30920100          sts _udpdatalen+1,R3
 0084 20920000          sts _udpdatalen,R2
 0088                   .dbline 30
 0088           ;  udpdatalen|=*(udpbegin+5);
 0088 FB01              movw R30,R22
 008A 2580              ldd R2,z+5
 008C 3324              clr R3
 008E 40900000          lds R4,_udpdatalen
 0092 50900100          lds R5,_udpdatalen+1
 0096 4228              or R4,R2
 0098 5328              or R5,R3
 009A 50920100          sts _udpdatalen+1,R5
 009E 40920000          sts _udpdatalen,R4
 00A2                   .dbline 31
 00A2           ;  udpdatalen-=8;
 00A2 C201              movw R24,R4
 00A4 0897              sbiw R24,8
 00A6 90930100          sts _udpdatalen+1,R25
 00AA 80930000          sts _udpdatalen,R24
 00AE                   .dbline 36
 00AE           ;  
 00AE           ;  //*(udpbegin+6)=0;
 00AE           ;  //*(udpbegin+7)=0;
 00AE           ;  
 00AE           ;  switch(des_port)
 00AE C601              movw R24,R12
 00B0 8031              cpi R24,16
 00B2 E0E0              ldi R30,0
 00B4 9E07              cpc R25,R30
 00B6 81F0              breq L5
 00B8 8131              cpi R24,17
 00BA E0E0              ldi R30,0
 00BC 9E07              cpc R25,R30
 00BE 09F4              brne X3
 00C0 53C0              xjmp L18
 00C2           X3:
 00C2 8231              cpi R24,18
 00C4 E0E0              ldi R30,0
 00C6 9E07              cpc R25,R30
 00C8 09F4              brne X4
 00CA 57C0              xjmp L19
 00CC           X4:
 00CC 8331              cpi R24,19
 00CE E0E0              ldi R30,0
 00D0 9E07              cpc R25,R30
 00D2 09F4              brne X5
 00D4 56C0              xjmp L4
 00D6           X5:
 00D6 55C0              xjmp L3
 00D8           X0:
 00D8                   .dbline 37
 00D8           ;  {
 00D8           L5:
 00D8                   .dbline 39
 00D8 80E0              ldi R24,1024
 00DA 94E0              ldi R25,4
 00DC 20900000          lds R2,_udpdatalen
 00E0 30900100          lds R3,_udpdatalen+1
 00E4 8215              cp R24,R2
 00E6 9305              cpc R25,R3
 00E8 38F5              brsh L11
 00EA                   .dbline 39
 00EA                   .dbline 39
 00EA 042F              mov R16,R20
 00EC 4BC0              xjmp L2
 00EE           X1:
 00EE                   .dbline 39
 00EE           ;   case localport_udp_port00:    //端口0 使用内部RAM
 00EE           ;        if(udpdatalen>1024){return udp_ok;break;}
 00EE                   .dbline 40
 00EE           ;        for(;i<udpdatalen;i++)
 00EE           L8:
 00EE                   .dbline 41
 00EE           ;          {
 00EE                   .dbline 42
 00EE           ;           udpbuffer_in[udpbuffer_in_p]=*(udpbegin+8+i);
 00EE CB01              movw R24,R22
 00F0 0896              adiw R24,8
 00F2 F501              movw R30,R10
 00F4 E80F              add R30,R24
 00F6 F91F              adc R31,R25
 00F8 2080              ldd R2,z+0
 00FA 80E0              ldi R24,<_udpbuffer_in
 00FC 90E0              ldi R25,>_udpbuffer_in
 00FE E0910000          lds R30,_udpbuffer_in_p
 0102 F0910100          lds R31,_udpbuffer_in_p+1
 0106 E80F              add R30,R24
 0108 F91F              adc R31,R25
 010A 2082              std z+0,R2
 010C                   .dbline 43
 010C           ;               udpbuffer_in_p++;
 010C 80910000          lds R24,_udpbuffer_in_p
 0110 90910100          lds R25,_udpbuffer_in_p+1
 0114 0196              adiw R24,1
 0116 90930100          sts _udpbuffer_in_p+1,R25
 011A 80930000          sts _udpbuffer_in_p,R24
 011E                   .dbline 44
 011E           ;               if(udpbuffer_in_p>=1024){udpbuffer_in_p=0;}
 011E 8030              cpi R24,0
 0120 E4E0              ldi R30,4
 0122 9E07              cpc R25,R30
 0124 30F0              brlo L12
 0126                   .dbline 44
 0126                   .dbline 44
 0126 2224              clr R2
 0128 3324              clr R3
 012A 30920100          sts _udpbuffer_in_p+1,R3
 012E 20920000          sts _udpbuffer_in_p,R2
 0132                   .dbline 44
 0132           L12:
 0132                   .dbline 45
 0132           L9:
 0132                   .dbline 40
 0132 C501              movw R24,R10
 0134 0196              adiw R24,1
 0136 5C01              movw R10,R24
 0138           L11:
 0138                   .dbline 40
 0138 20900000          lds R2,_udpdatalen
 013C 30900100          lds R3,_udpdatalen+1
 0140 A214              cp R10,R2
 0142 B304              cpc R11,R3
 0144 A0F2              brlo L8
 0146                   .dbline 46
 0146           ;          } 
 0146           ;          udp_ok=1;
 0146 41E0              ldi R20,1
 0148                   .dbline 47
 0148           ;          break;
 0148 1CC0              xjmp L4
 014A           X2:
 014A                   .dbline 50
 014A           ;          
 014A           ;   case localport_udp_port01:    //端口1 使用外部RAM
 014A           ;        for(;i<udpdatalen;i++)
 014A           L15:
 014A                   .dbline 51
 014A                   .dbline 52
 014A CB01              movw R24,R22
 014C 0896              adiw R24,8
 014E F501              movw R30,R10
 0150 E80F              add R30,R24
 0152 F91F              adc R31,R25
 0154 2080              ldd R2,z+0
 0156 80E0              ldi R24,<_udpbuffer_ex
 0158 90E0              ldi R25,>_udpbuffer_ex
 015A F501              movw R30,R10
 015C E80F              add R30,R24
 015E F91F              adc R31,R25
 0160 2082              std z+0,R2
 0162                   .dbline 53
 0162           L16:
 0162                   .dbline 50
 0162 C501              movw R24,R10
 0164 0196              adiw R24,1
 0166 5C01              movw R10,R24
 0168           L18:
 0168                   .dbline 50
 0168 20900000          lds R2,_udpdatalen

⌨️ 快捷键说明

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