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

📄 udp.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 016C 30900100          lds R3,_udpdatalen+1
 0170 A214              cp R10,R2
 0172 B304              cpc R11,R3
 0174 50F3              brlo L15
 0176                   .dbline 54
 0176           ;          {
 0176           ;           udpbuffer_ex[i]=*(udpbegin+8+i);
 0176           ;          } 
 0176           ;          udp_ok=1;
 0176 41E0              ldi R20,1
 0178                   .dbline 55
 0178           ;          break;
 0178 04C0              xjmp L4
 017A           L19:
 017A                   .dbline 58
 017A           ; 
 017A           ;   case localport_udp_port02:    //端口2
 017A           ;        led_cont(*(udpbegin+8));
 017A FB01              movw R30,R22
 017C 0085              ldd R16,z+8
 017E 0E940000          xcall _led_cont
 0182                   .dbline 59
 0182           ;          break;
 0182                   .dbline 63
 0182           ;          
 0182           ;   case localport_udp_port03:    //端口3
 0182           ;        
 0182           ;          break;
 0182           L3:
 0182           L4:
 0182                   .dbline 66
 0182           ;  }
 0182           ;  
 0182           ;  return udp_ok;
 0182 042F              mov R16,R20
 0184                   .dbline -2
 0184           L2:
 0184 0E940000          xcall pop_gset4
 0188                   .dbline 0 ; func end
 0188 0895              ret
 018A                   .dbsym r udp_ok 20 c
 018A                   .dbsym r des_port 12 i
 018A                   .dbsym r i 10 i
 018A                   .dbsym r udplen 10 i
 018A                   .dbsym r udpbegin 22 pc
 018A                   .dbend
 018A                   .dbfunc e udp_readdata _udp_readdata fi
 018A           ;           data -> R16,R17
                        .even
 018A           _udp_readdata::
 018A                   .dbline -1
 018A                   .dbline 70
 018A           ; }
 018A           ; 
 018A           ; unsigned int udp_readdata(void)
 018A           ; {
 018A                   .dbline 71
 018A           ;  unsigned int data=0;
 018A 0027              clr R16
 018C 1127              clr R17
 018E                   .dbline 73
 018E           ;  
 018E           ;  if(udpbuffer_in_p==udpbuffer_in_rp){return 0;} //没有新数据则返回0
 018E 20900000          lds R2,_udpbuffer_in_rp
 0192 30900100          lds R3,_udpbuffer_in_rp+1
 0196 40900000          lds R4,_udpbuffer_in_p
 019A 50900100          lds R5,_udpbuffer_in_p+1
 019E 4214              cp R4,R2
 01A0 5304              cpc R5,R3
 01A2 09F4              brne L22
 01A4                   .dbline 73
 01A4                   .dbline 73
 01A4 1FC0              xjmp L21
 01A6           L22:
 01A6                   .dbline 74
 01A6           ;  data=(udpbuffer_in[udpbuffer_in_rp]&0xFF);
 01A6 80E0              ldi R24,<_udpbuffer_in
 01A8 90E0              ldi R25,>_udpbuffer_in
 01AA E0910000          lds R30,_udpbuffer_in_rp
 01AE F0910100          lds R31,_udpbuffer_in_rp+1
 01B2 E80F              add R30,R24
 01B4 F91F              adc R31,R25
 01B6 0081              ldd R16,z+0
 01B8 1127              clr R17
 01BA 1070              andi R17,0
 01BC                   .dbline 75
 01BC           ;  data|=0x8000;                                  //有新数据则置位最高位作为标记
 01BC 1068              ori R17,128
 01BE                   .dbline 76
 01BE           ;  udpbuffer_in_rp++;
 01BE 80910000          lds R24,_udpbuffer_in_rp
 01C2 90910100          lds R25,_udpbuffer_in_rp+1
 01C6 0196              adiw R24,1
 01C8 90930100          sts _udpbuffer_in_rp+1,R25
 01CC 80930000          sts _udpbuffer_in_rp,R24
 01D0                   .dbline 77
 01D0           ;  if(udpbuffer_in_rp>=1024){udpbuffer_in_rp=0;}
 01D0 8030              cpi R24,0
 01D2 E4E0              ldi R30,4
 01D4 9E07              cpc R25,R30
 01D6 30F0              brlo L24
 01D8                   .dbline 77
 01D8                   .dbline 77
 01D8 2224              clr R2
 01DA 3324              clr R3
 01DC 30920100          sts _udpbuffer_in_rp+1,R3
 01E0 20920000          sts _udpbuffer_in_rp,R2
 01E4                   .dbline 77
 01E4           L24:
 01E4                   .dbline 78
 01E4           ;  return data;
 01E4                   .dbline -2
 01E4           L21:
 01E4                   .dbline 0 ; func end
 01E4 0895              ret
 01E6                   .dbsym r data 16 i
 01E6                   .dbend
 01E6                   .dbfunc e udp_buildpack _udp_buildpack fV
 01E6           ;     remoteport -> y+2
 01E6           ;      localport -> y+0
 01E6           ;            len -> R18,R19
 01E6           ;  udpsendbuffer -> R16,R17
                        .even
 01E6           _udp_buildpack::
 01E6                   .dbline -1
 01E6                   .dbline 85
 01E6           ; }
 01E6           ; 
 01E6           ; void udp_buildpack(unsigned char *udpsendbuffer,
 01E6           ;                    unsigned int len,
 01E6           ;                                  unsigned int localport,
 01E6           ;                                  unsigned int remoteport)
 01E6           ; {
 01E6                   .dbline 86
 01E6           ;   *udpsendbuffer=(localport>>8);        //源端口
 01E6 2880              ldd R2,y+0
 01E8 3980              ldd R3,y+1
 01EA 232C              mov R2,R3
 01EC 3324              clr R3
 01EE F801              movw R30,R16
 01F0 2082              std z+0,R2
 01F2                   .dbline 87
 01F2           ;   *(udpsendbuffer+1)=(localport&0xFF);
 01F2 8881              ldd R24,y+0
 01F4 9981              ldd R25,y+1
 01F6 9070              andi R25,0
 01F8 8183              std z+1,R24
 01FA                   .dbline 89
 01FA           ;   
 01FA           ;   *(udpsendbuffer+2)=(remoteport>>8);   //目的端口
 01FA 2A80              ldd R2,y+2
 01FC 3B80              ldd R3,y+3
 01FE 232C              mov R2,R3
 0200 3324              clr R3
 0202 F801              movw R30,R16
 0204 2282              std z+2,R2
 0206                   .dbline 90
 0206           ;   *(udpsendbuffer+3)=(remoteport&0xFF);
 0206 8A81              ldd R24,y+2
 0208 9B81              ldd R25,y+3
 020A 9070              andi R25,0
 020C F801              movw R30,R16
 020E 8383              std z+3,R24
 0210                   .dbline 97
 0210           ;   
 0210           ;   //if(len&0x01)                          //如果长度为奇数字节则填充一字节
 0210           ;   //{
 0210           ;   // len++;
 0210           ;   // *(udpsendbuffer+8+len)=0xFF;
 0210           ;   //}                  
 0210           ;   *(udpsendbuffer+4)=(len>>8);
 0210 1901              movw R2,R18
 0212 232C              mov R2,R3
 0214 3324              clr R3
 0216 F801              movw R30,R16
 0218 2482              std z+4,R2
 021A                   .dbline 98
 021A           ;   *(udpsendbuffer+5)=(len&0xFF);
 021A C901              movw R24,R18
 021C 9070              andi R25,0
 021E F801              movw R30,R16
 0220 8583              std z+5,R24
 0222                   .dbline 100
 0222           ;   
 0222           ;   *(udpsendbuffer+6)=0x00;                 //不进行校验
 0222 2224              clr R2
 0224 F801              movw R30,R16
 0226 2682              std z+6,R2
 0228                   .dbline 101
 0228           ;   *(udpsendbuffer+7)=0x00;
 0228 F801              movw R30,R16
 022A 2782              std z+7,R2
 022C                   .dbline -2
 022C           L26:
 022C                   .dbline 0 ; func end
 022C 0895              ret
 022E                   .dbsym l remoteport 2 i
 022E                   .dbsym l localport 0 i
 022E                   .dbsym r len 18 i
 022E                   .dbsym r udpsendbuffer 16 pc
 022E                   .dbend
 022E                   .dbfunc e udp_builddata _udp_builddata fV
 022E           ;            i_d -> R20,R21
 022E           ;              i -> R22,R23
 022E           ;            len -> R10,R11
 022E           ;    udpsenddata -> R18,R19
 022E           ;  udpsendbuffer -> R16,R17
                        .even
 022E           _udp_builddata::
 022E 0E940000          xcall push_gset3
 0232 AE80              ldd R10,y+6
 0234 BF80              ldd R11,y+7
 0236                   .dbline -1
 0236                   .dbline 106
 0236           ;   
 0236           ; }
 0236           ; 
 0236           ; void udp_builddata(unsigned char *udpsendbuffer,unsigned char *udpsenddata,unsigned int len)
 0236           ; {
 0236                   .dbline 107
 0236           ;   unsigned int i=8;
 0236 68E0              ldi R22,8
 0238 70E0              ldi R23,0
 023A                   .dbline 108
 023A           ;   unsigned int i_d=0;
 023A 4427              clr R20
 023C 5527              clr R21
 023E                   .dbline 110
 023E           ;   
 023E           ;   len+=8;
 023E C501              movw R24,R10
 0240 0896              adiw R24,8
 0242 5C01              movw R10,R24
 0244                   .dbline 111
 0244           ;   for(;i<len;i++)
 0244 0CC0              xjmp L31
 0246           L28:
 0246                   .dbline 112
 0246                   .dbline 113
 0246 FA01              movw R30,R20
 0248 E20F              add R30,R18
 024A F31F              adc R31,R19
 024C 2080              ldd R2,z+0
 024E FB01              movw R30,R22
 0250 E00F              add R30,R16
 0252 F11F              adc R31,R17
 0254 2082              std z+0,R2
 0256                   .dbline 114
 0256 4F5F              subi R20,255  ; offset = 1
 0258 5F4F              sbci R21,255
 025A                   .dbline 115
 025A           L29:
 025A                   .dbline 111
 025A 6F5F              subi R22,255  ; offset = 1
 025C 7F4F              sbci R23,255
 025E           L31:
 025E                   .dbline 111
 025E 6A15              cp R22,R10
 0260 7B05              cpc R23,R11
 0262 88F3              brlo L28
 0264                   .dbline -2
 0264           L27:
 0264 0E940000          xcall pop_gset3
 0268                   .dbline 0 ; func end
 0268 0895              ret
 026A                   .dbsym r i_d 20 i
 026A                   .dbsym r i 22 i
 026A                   .dbsym r len 10 i
 026A                   .dbsym r udpsenddata 18 pc
 026A                   .dbsym r udpsendbuffer 16 pc
 026A                   .dbend

⌨️ 快捷键说明

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