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

📄 uip_arch.lst

📁 STC51系列的源码
💻 LST
字号:
C51 COMPILER V8.02   UIP_ARCH                                                              10/13/2008 17:11:19 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE UIP_ARCH
OBJECT MODULE PLACED IN .\out\uip_arch.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uip_arch.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND PRINT(.\out\uip_a
                    -rch.lst) OBJECT(.\out\uip_arch.obj)

line level    source

   1          
   2          
   3          #include "uip.h"
   4          #include "uip_arch.h"
   5          
   6          #define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
   7          #define IP_PROTO_TCP    6
   8          
   9          /*-----------------------------------------------------------------------------------*/
  10          void
  11          uip_add32(u8_t *op32, u16_t op16)
  12          {
  13   1        
  14   1        uip_acc32[3] = op32[3] + (op16 & 0xff);
  15   1        uip_acc32[2] = op32[2] + (op16 >> 8);
  16   1        uip_acc32[1] = op32[1];
  17   1        uip_acc32[0] = op32[0];
  18   1        
  19   1        if(uip_acc32[2] < (op16 >> 8)) {
  20   2          ++uip_acc32[1];    
  21   2          if(uip_acc32[1] == 0) {
  22   3            ++uip_acc32[0];
  23   3          }
  24   2        }
  25   1        
  26   1        
  27   1        if(uip_acc32[3] < (op16 & 0xff)) {
  28   2          ++uip_acc32[2];  
  29   2          if(uip_acc32[2] == 0) {
  30   3            ++uip_acc32[1];    
  31   3            if(uip_acc32[1] == 0) {
  32   4              ++uip_acc32[0];
  33   4            }
  34   3          }
  35   2        }
  36   1      }
  37          
  38          /********************************************************************************/
  39          /* function : chksum()                                                          */
  40          /* created  : hw-chen                                                           */
  41          /* descript : calculate checksum                                                */
  42          /********************************************************************************/
  43          u16_t uip_chksum(u16_t sum, u16_t * buffer, u16_t size)
  44          {   u16_t i,length;
  45   1          u32_t cksum;
  46   1          length=size>>0x1;
  47   1          cksum =0x0;
  48   1          cksum+=sum;
  49   1          for(i=0x0; i<length; i++)
  50   1          {   cksum+=buffer[i];
  51   2          }
  52   1          if(size&0x1)
  53   1          {   cksum+=buffer[i]&0xFF00;
  54   2          }
C51 COMPILER V8.02   UIP_ARCH                                                              10/13/2008 17:11:19 PAGE 2   

  55   1          cksum =(cksum>>16)+(cksum&0xFFFF);
  56   1          cksum+=(cksum>>16);
  57   1          return (u16_t)cksum;
  58   1      }
  59          
  60          /********************************************************************************/
  61          /* function : uip_ipchksum()                                                    */
  62          /* created  : hw-chen                                                           */
  63          /* descript : calculate ip layer checksum                                       */
  64          /********************************************************************************/
  65          u16_t uip_ipchksum(void)
  66          {   return uip_chksum(0x0,(u16_t*)&uip_buf[UIP_LLH_LEN], 20);
  67   1      }
  68          
  69          /********************************************************************************/
  70          /* 定义TCP伪首部 */
  71          /********************************************************************************/
  72          typedef struct _sd_hdr st_tsd_hdr;
  73          struct _sd_hdr
  74          {   u16_t srcaddr[0x2];
  75              u16_t dstaddr[0x2]; 
  76              u8_t  rsvd;  
  77              u8_t  protocol;   //* 协议类型  
  78              u16_t lenth;      //* TCP长度  
  79          };  
  80          
  81          /********************************************************************************/
  82          /* function : uip_tcpchksum()                                                   */
  83          /* created  : hw-chen                                                           */
  84          /* descript : TCP头部校验和                                                     */
  85          /********************************************************************************/
  86          u16_t uip_tcpchksum(void)   
  87          {   st_tsd_hdr tsd_header;
  88   1          u16_t length;
  89   1          u16_t tmp;
  90   1          u16_t sum1;
  91   1          u16_t sum2;
  92   1          tmp=BUF->len[0x0];
  93   1          tmp<<=0x8;
  94   1          tmp+=BUF->len[0x1];
  95   1          length=HTONS(tmp)-20;
  96   1          tsd_header.srcaddr[0]  = BUF->srcipaddr[0x0];
  97   1          tsd_header.srcaddr[1]  = BUF->srcipaddr[0x1];
  98   1          tsd_header.dstaddr[0]  = BUF->destipaddr[0x0];
  99   1          tsd_header.dstaddr[1]  = BUF->destipaddr[0x1];
 100   1          tsd_header.rsvd     = 0x0;
 101   1          tsd_header.protocol = 0x6;
 102   1          tsd_header.lenth    = HTONS(length);
 103   1          sum1=uip_chksum(0x0,(u16_t*)&tsd_header,sizeof(st_tsd_hdr));
 104   1          sum2=uip_chksum(sum1,(u16_t*)(&uip_buf[20+UIP_LLH_LEN]),length);
 105   1          return sum2;
 106   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    616    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      31
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.02   UIP_ARCH                                                              10/13/2008 17:11:19 PAGE 3   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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