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

📄 ip.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 01A6 80EC              ldi R24,192
 01A8 F201              movw R30,R4
 01AA 8487              std z+12,R24
 01AC                   .dbline 83
 01AC           ;           *(ipbegin+13)=myip_2;
 01AC 88EA              ldi R24,168
 01AE F201              movw R30,R4
 01B0 8587              std z+13,R24
 01B2                   .dbline 84
 01B2           ;           *(ipbegin+14)=myip_1;
 01B2 2224              clr R2
 01B4 F201              movw R30,R4
 01B6 2686              std z+14,R2
 01B8                   .dbline 85
 01B8           ;           *(ipbegin+15)=myip_0;
 01B8 83E6              ldi R24,99
 01BA F201              movw R30,R4
 01BC 8787              std z+15,R24
 01BE                   .dbline 87
 01BE           ;          
 01BE           ;           *(ipbegin+16)=sou_ip3;//写入远程IP
 01BE F201              movw R30,R4
 01C0 C08A              std z+16,R12
 01C2                   .dbline 88
 01C2           ;           *(ipbegin+17)=sou_ip2;
 01C2 F201              movw R30,R4
 01C4 A18A              std z+17,R10
 01C6                   .dbline 89
 01C6           ;           *(ipbegin+18)=sou_ip1;
 01C6 F201              movw R30,R4
 01C8 628B              std z+18,R22
 01CA                   .dbline 90
 01CA           ;           *(ipbegin+19)=sou_ip0;
 01CA F201              movw R30,R4
 01CC E38A              std z+19,R14
 01CE                   .dbline 91
 01CE           ;               break;  
 01CE 12C0              xjmp L8
 01D0           L11:
 01D0                   .dbline 93
 01D0           ;          }
 01D0           ;           protocol=0;
 01D0 4427              clr R20
 01D2                   .dbline 94
 01D2           ;         break;  
 01D2 10C0              xjmp L8
 01D4           X1:
 01D4                   .dbline 96
 01D4           ;   case 6:             //TCP协议
 01D4           ;        break;
 01D4           L14:
 01D4                   .dbline 99
 01D4           ;          
 01D4           ;   case 17:            //UDP协议
 01D4           ;        if(udp_packhandle(ipbegin+ipheadlen,totallen-ipheadlen))
 01D4 2A84              ldd R2,y+10
 01D6 3324              clr R3
 01D8 2C81              ldd R18,y+4
 01DA 3D81              ldd R19,y+5
 01DC 2219              sub R18,R2
 01DE 3309              sbc R19,R3
 01E0 022D              mov R16,R2
 01E2 1127              clr R17
 01E4 040D              add R16,R4
 01E6 151D              adc R17,R5
 01E8 0E940000          xcall _udp_packhandle
 01EC 0023              tst R16
 01EE 09F0              breq L15
 01F0                   .dbline 100
 01F0           ;          {
 01F0                   .dbline 101
 01F0           ;           break;
 01F0 01C0              xjmp L8
 01F2           L15:
 01F2                   .dbline 103
 01F2           ;          }
 01F2           ;        protocol=0;
 01F2 4427              clr R20
 01F4                   .dbline 105
 01F4           ;          
 01F4           ;   default:break;
 01F4           L8:
 01F4                   .dbline 108
 01F4           ;  }
 01F4           ;  
 01F4           ;  return(protocol);
 01F4 042F              mov R16,R20
 01F6                   .dbline -2
 01F6           L1:
 01F6 2B96              adiw R28,11
 01F8 0E940000          xcall pop_gset5
 01FC                   .dbline 0 ; func end
 01FC 0895              ret
 01FE                   .dbsym r handleok 20 c
 01FE                   .dbsym l ipcksum 0 i
 01FE                   .dbsym r sou_ip0 14 c
 01FE                   .dbsym r sou_ip1 22 c
 01FE                   .dbsym r sou_ip2 10 c
 01FE                   .dbsym r sou_ip3 12 c
 01FE                   .dbsym l ipheadlen 10 c
 01FE                   .dbsym l offset 8 i
 01FE                   .dbsym l ippackid 6 i
 01FE                   .dbsym r protocol 20 c
 01FE                   .dbsym l totallen 4 i
 01FE                   .dbsym r ipbegin 4 pc
 01FE                   .dbend
 01FE                   .dbfunc e ip_buildpack _ip_buildpack fV
 01FE           ;              i -> R10
 01FE           ;            sum -> R10,R11
 01FE           ;        des_ip0 -> y+22
 01FE           ;        des_ip1 -> y+20
 01FE           ;        des_ip2 -> y+18
 01FE           ;        des_ip3 -> y+16
 01FE           ;       protocol -> y+14
 01FE           ;           ipid -> y+12
 01FE           ;       totallen -> R22,R23
 01FE           ;   ipsendbuffer -> R20,R21
                        .even
 01FE           _ip_buildpack::
 01FE 0E940000          xcall push_gset3
 0202 B901              movw R22,R18
 0204 A801              movw R20,R16
 0206 2697              sbiw R28,6
 0208                   .dbline -1
 0208                   .dbline 120
 0208           ; } 
 0208           ; 
 0208           ; void ip_buildpack(unsigned char *ipsendbuffer,
 0208           ;                   unsigned int totallen,
 0208           ;                   unsigned int ipid,
 0208           ;                                 unsigned char protocol,
 0208           ;                                 unsigned char des_ip3,
 0208           ;                                 unsigned char des_ip2,
 0208           ;                                 unsigned char des_ip1,
 0208           ;                                 unsigned char des_ip0
 0208           ;                                )
 0208           ; {
 0208                   .dbline 121
 0208           ;  unsigned char i=0;
 0208 AA24              clr R10
 020A                   .dbline 122
 020A           ;  unsigned int sum=0;
 020A BB24              clr R11
 020C                   .dbline 123
 020C           ;  ip_id++;       //生成IP标识
 020C 80910000          lds R24,_ip_id
 0210 90910100          lds R25,_ip_id+1
 0214 0196              adiw R24,1
 0216 90930100          sts _ip_id+1,R25
 021A 80930000          sts _ip_id,R24
 021E                   .dbline 124
 021E           ;  *ipsendbuffer=0x45;      //版本4,头部长20
 021E 85E4              ldi R24,69
 0220 FA01              movw R30,R20
 0222 8083              std z+0,R24
 0224                   .dbline 125
 0224           ;  *(ipsendbuffer+1)=0x00;  //服务类型
 0224 2224              clr R2
 0226 2182              std z+1,R2
 0228                   .dbline 126
 0228           ;  *(ipsendbuffer+2)=totallen>>8;
 0228 1B01              movw R2,R22
 022A 232C              mov R2,R3
 022C 3324              clr R3
 022E FA01              movw R30,R20
 0230 2282              std z+2,R2
 0232                   .dbline 127
 0232           ;  *(ipsendbuffer+3)=(totallen&0xFF);
 0232 CB01              movw R24,R22
 0234 9070              andi R25,0
 0236 FA01              movw R30,R20
 0238 8383              std z+3,R24
 023A                   .dbline 128
 023A           ;  *(ipsendbuffer+4)=ipid>>8;
 023A 2C84              ldd R2,y+12
 023C 3D84              ldd R3,y+13
 023E 232C              mov R2,R3
 0240 3324              clr R3
 0242 FA01              movw R30,R20
 0244 2482              std z+4,R2
 0246                   .dbline 129
 0246           ;  *(ipsendbuffer+5)=(ipid&0xFF);
 0246 8C85              ldd R24,y+12
 0248 9D85              ldd R25,y+13
 024A 9070              andi R25,0
 024C FA01              movw R30,R20
 024E 8583              std z+5,R24
 0250                   .dbline 130
 0250           ;  *(ipsendbuffer+6)=0;
 0250 2224              clr R2
 0252 FA01              movw R30,R20
 0254 2682              std z+6,R2
 0256                   .dbline 131
 0256           ;  *(ipsendbuffer+7)=0;
 0256 FA01              movw R30,R20
 0258 2782              std z+7,R2
 025A                   .dbline 132
 025A           ;  *(ipsendbuffer+8)=128;
 025A 80E8              ldi R24,128
 025C FA01              movw R30,R20
 025E 8087              std z+8,R24
 0260                   .dbline 133
 0260           ;  *(ipsendbuffer+9)=protocol;
 0260 FA01              movw R30,R20
 0262 0E84              ldd R0,y+14
 0264 0186              std z+9,R0
 0266                   .dbline 134
 0266           ;  *(ipsendbuffer+10)=0;
 0266 FA01              movw R30,R20
 0268 2286              std z+10,R2
 026A                   .dbline 135
 026A           ;  *(ipsendbuffer+11)=0;
 026A FA01              movw R30,R20
 026C 2386              std z+11,R2
 026E                   .dbline 136
 026E           ;  *(ipsendbuffer+12)=myip_3;
 026E 80EC              ldi R24,192
 0270 FA01              movw R30,R20
 0272 8487              std z+12,R24
 0274                   .dbline 137
 0274           ;  *(ipsendbuffer+13)=myip_2;
 0274 88EA              ldi R24,168
 0276 FA01              movw R30,R20
 0278 8587              std z+13,R24
 027A                   .dbline 138
 027A           ;  *(ipsendbuffer+14)=myip_1;
 027A FA01              movw R30,R20
 027C 2686              std z+14,R2
 027E                   .dbline 139
 027E           ;  *(ipsendbuffer+15)=myip_0;
 027E 83E6              ldi R24,99
 0280 FA01              movw R30,R20
 0282 8787              std z+15,R24
 0284                   .dbline 140
 0284           ;  *(ipsendbuffer+16)=des_ip3;
 0284 FA01              movw R30,R20
 0286 0888              ldd R0,y+16
 0288 008A              std z+16,R0
 028A                   .dbline 141
 028A           ;  *(ipsendbuffer+17)=des_ip2;
 028A FA01              movw R30,R20
 028C 0A88              ldd R0,y+18
 028E 018A              std z+17,R0
 0290                   .dbline 142
 0290           ;  *(ipsendbuffer+18)=des_ip1;
 0290 FA01              movw R30,R20
 0292 0C88              ldd R0,y+20
 0294 028A              std z+18,R0
 0296                   .dbline 143
 0296           ;  *(ipsendbuffer+19)=des_ip0;
 0296 FA01              movw R30,R20
 0298 0E88              ldd R0,y+22
 029A 038A              std z+19,R0
 029C                   .dbline 145
 029C           ;  
 029C           ;  sum=tsum((unsigned int *)ipsendbuffer,20); //校验和的求法
 029C 24E1              ldi R18,20
 029E 30E0              ldi R19,0
 02A0 8A01              movw R16,R20
 02A2 0E940000          xcall _tsum
 02A6 5801              movw R10,R16
 02A8                   .dbline 146
 02A8           ;  *(ipsendbuffer+10)=(sum&0xFF);
 02A8 C501              movw R24,R10
 02AA 9070              andi R25,0
 02AC FA01              movw R30,R20
 02AE 8287              std z+10,R24
 02B0                   .dbline 147
 02B0           ;  *(ipsendbuffer+11)=(sum>>8)&0xFF;
 02B0 C501              movw R24,R10
 02B2 892F              mov R24,R25
 02B4 9927              clr R25
 02B6 9070              andi R25,0
 02B8 FA01              movw R30,R20
 02BA 8387              std z+11,R24
 02BC                   .dbline 149
 02BC           ;  
 02BC           ;  totallen-=20;
 02BC 6451              subi R22,20
 02BE 7040              sbci R23,0
 02C0                   .dbline 151
 02C0           ;  
 02C0           ;  switch(protocol)
 02C0 2E84              ldd R2,y+14
 02C2 3324              clr R3
 02C4 3D82              std y+5,R3
 02C6 2C82              std y+4,R2
 02C8 C101              movw R24,R2
 02CA 8131              cpi R24,17
 02CC E0E0              ldi R30,0
 02CE 9E07              cpc R25,R30
 02D0 09F0              breq L23
 02D2 18C0              xjmp L21
 02D4           X5:
 02D4                   .dbline 152
 02D4           ;  {
 02D4           L23:
 02D4                   .dbline 154
 02D4 81E0              ldi R24,1
 02D6 90E0              ldi R25,0
 02D8 9B83              std y+3,R25
 02DA 8A83              std y+2,R24
 02DC 80E1              ldi R24,16
 02DE 9983              std y+1,R25
 02E0 8883              std y+0,R24
 02E2 9B01              movw R18,R22
 02E4 8A01              movw R16,R20
 02E6 0C5E              subi R16,236  ; offset = 20
 02E8 1F4F              sbci R17,255
 02EA 0E940000          xcall _udp_buildpack
 02EE                   .dbline 155
 02EE CB01              movw R24,R22
 02F0 0897              sbiw R24,8
 02F2 9983              std y+1,R25
 02F4 8883              std y+0,R24
 02F6 20E0              ldi R18,<_udpsendbuffer_ex
 02F8 30E0              ldi R19,>_udpsendbuffer_ex
 02FA 8A01              movw R16,R20
 02FC 0C5E              subi R16,236  ; offset = 20
 02FE 1F4F              sbci R17,255
 0300 0E940000          xcall _udp_builddata
 0304                   .dbline 156
 0304                   .dbline 158
 0304           L21:
 0304                   .dbline -2
 0304           L19:
 0304 2696              adiw R28,6
 0306 0E940000          xcall pop_gset3
 030A                   .dbline 0 ; func end
 030A 0895              ret
 030C                   .dbsym r i 10 c
 030C                   .dbsym r sum 10 i
 030C                   .dbsym l des_ip0 22 c
 030C                   .dbsym l des_ip1 20 c
 030C                   .dbsym l des_ip2 18 c
 030C                   .dbsym l des_ip3 16 c
 030C                   .dbsym l protocol 14 c
 030C                   .dbsym l ipid 12 i
 030C                   .dbsym r totallen 22 i
 030C                   .dbsym r ipsendbuffer 20 pc
 030C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\ip.c
 0000           _tempip_d0::
 0000                   .blkb 1
 0001                   .dbsym e tempip_d0 _tempip_d0 c
 0001           _tempip_d1::
 0001                   .blkb 1
 0002                   .dbsym e tempip_d1 _tempip_d1 c
 0002           _tempip_d2::
 0002                   .blkb 1
 0003                   .dbsym e tempip_d2 _tempip_d2 c
 0003           _tempip_d3::
 0003                   .blkb 1
 0004                   .dbsym e tempip_d3 _tempip_d3 c

⌨️ 快捷键说明

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