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

📄 main.lst

📁 W3100A网络调试程序,可进行数据传输
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.21  MAIN                                                                   05/04/2005 09:30:04 PAGE 1   


C51 COMPILER V6.21, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\ROM\MAIN.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C OPTIMIZE(6,SPEED) BROWSE MODP2 DEFINE(KEIL) DEBUG OBJECTEXTEND CODE 
                    -SYMBOLS PRINT(.\Lst\MAIN.lst) OBJECT(.\ROM\MAIN.obj) 

stmt level    source

   1          /*
   2          ********************************************************************************
   3          * Wiznet.
   4          * 5F Simmtech Bldg., 228-3, Nonhyun-dong, Kangnam-gu,
   5          * Seoul, Korea
   6          *
   7          * (c) Copyright 2002, Wiznet, Seoul, Korea
   8          *
   9          * Filename : main.c
  10          * Programmer(s): 
  11          * Created : 2002/01/
  12          * Modified :
  13          * Description : 8051EVB侩 TCP server mode甫 捞侩茄 loopback program.
  14          ********************************************************************************
  15          */
  16          
  17          #include "../atmel/at89x51.h"   // 8051 SFR 沥狼 拳老
  18          #include <stdio.h>              // printf 荤侩阑 困窃
  19          #include <string.h>
  20          #include "serial.h"             // serial 包访 窃荐甸
  21          #include "socket.h"             // W3100A driver 拳老
  22          
  23          
  24          #define MAX_BUF_SIZE    2048                    // 荐脚 滚欺狼 弥措 荤捞令
  25          
  26          unsigned char xdata * sock_buf = 0x7000;                // 荐脚 滚欺狼 困摹
  27          xdata unsigned char sock_state[MAX_SOCK_NUM];   // socket 惑怕 包府 函荐
  28          
  29          void Init8051();                                                // 8051 MCU 檬扁拳
  30          void init_sock(unsigned char i);                                // 瘤沥等 channel阑 檬扁拳 窃
  31          
  32          /*
  33          ********************************************************************************
  34          *              loopback 荐青阑 困茄 main 窃荐.
  35          *
  36          * Description: 8051 檬扁拳 棺 W3100A俊 措茄 檬扁拳 荐青 饶 peer肺何磐狼 楷搬 汲沥阑 
  37          *                          扁促府哥 楷搬矫 荐脚 等 单捞磐甫 促矫 价脚窍绰 loopback 扁瓷 荐青.
  38          *                          楷搬 秦瘤 矫 促矫 盲澄阑 檬扁拳 窍咯 楷搬 汲沥阑 扁促覆.
  39          * Arguments  : None.
  40          * Returns    : None.
  41          * Note       : 
  42          ********************************************************************************
  43          */
  44          void main()
  45          {
  46   1              unsigned char i;
  47   1              int xdata len;
  48   1              unsigned char xdata ip[6];
  49   1              int xdata scanf_ret;
  50   1              unsigned char xdata ret;
  51   1              unsigned char xdata uid[128], upw[128], pmac[6];
  52   1              unsigned int xdata psid, idlen, pwlen;
  53   1      
  54   1              T0 = 0;
C51 COMPILER V6.21  MAIN                                                                   05/04/2005 09:30:04 PAGE 2   

  55   1              T1 = 0;
  56   1      
  57   1              Init8051();
  58   1      
  59   1              printf("3150 LoopBack Program.(TCP Server mode)\r\n");
  60   1      
  61   1              iinchip_init();
  62   1      
  63   1              EA = 1;                                                         // 傈眉 interrupt enable
  64   1      
  65   1              ip[0] = 0x00; ip[1] = 0x01; ip[2] = 0x02; ip[3] = 0x03; ip[4] = 0x04; ip[5] = 0x05;
  66   1              setMACAddr(ip);                                         // MAC 汲沥
  67   1              ip[0] = 59; ip[1] = 150; ip[2] = 250; ip[3] = 1;
  68   1              setgateway(ip);                                         // gateway address 汲沥
  69   1              ip[0] = 255; ip[1] = 255; ip[2] = 255; ip[3] = 0;
  70   1              setsubmask(ip);                                         // subnet mask 汲沥
  71   1              ip[0] = 59; ip[1] = 150; ip[2] = 250; ip[3] = 69;
  72   1              setIP(ip);                                                      // source IP 汲沥
  73   1      
  74   1              sysinit(0x55,0x55);     // network information 汲沥
  75   1      
  76   1      //#ifdef _DEF_IINCHIP_PPP
  77   1              printf("<<Select the number>>\r\n  1) Normal mode\r\n  2) PPPoE mode\r\n>> ");
  78   1              scanf_ret = scanf("%c", &ret);
  79   1              printf("\r\n");
  80   1              if (ret != '1') 
  81   1              {
  82   2      AUTH_FAIL:
  83   2                      printf("<<Setup PPPoE connection>>\r\n");
  84   2                      printf("Enter user id : ");
  85   2                      scanf_ret = scanf("%s", uid);
  86   2                      printf("Enter user password : ");
  87   2                      scanf_ret = scanf("%s", upw);
  88   2                      idlen = strlen(uid);
  89   2                      pwlen = strlen(upw);
  90   2      
  91   2                      i = 0;
  92   2                      while ((ret = pppinit(uid, idlen, upw, pwlen)) != 1)
  93   2                      {
  94   3                              //printf("%d %d",idlen,pwlen);
  95   3                              switch (ret)
  96   3                              {
  97   4                                      case 2 : goto AUTH_FAIL; break;
  98   4                                      default : break;
  99   4                              }                               
 100   3                              getDestMAC(0, pmac);
 101   3                              psid = getDestPort(0);
 102   3                              pppterm(pmac, psid);
 103   3                              i++;
 104   3                              if (i == 2) break;
 105   3                      }
 106   2                      if (i != 2)
 107   2                      {
 108   3                              ret = IINCHIP_READ(INT_REG); // remove already setted value of INT_REG
 109   3                              printf("<<PPP Connection established>>\r\n");
 110   3                              getDestMAC(0, pmac);
 111   3                              psid = getDestPort(0);
 112   3                              /*getLocalAddr(ip);
 113   3                              setIP(ip); // source IP 汲沥
 114   3                              printf("Received IP : %bu.%bu.%bu.%bu\r\n",ip[0],ip[1],ip[2],ip[3]);*/
 115   3                      }
 116   2                      else
C51 COMPILER V6.21  MAIN                                                                   05/04/2005 09:30:04 PAGE 3   

 117   2                      {
 118   3                              IINCHIP_WRITE(TMODE,0x00);
 119   3                      }
 120   2              }
 121   1      //#endif
 122   1              getLocalAddr(ip);
 123   1              printf("-----------------------------\r\n");
 124   1              printf("Current IP : %bu.%bu.%bu.%bu\r\n",ip[0],ip[1],ip[2],ip[3]);
 125   1              printf("-----------------------------\r\n");
 126   1      
 127   1              for (i = 0; i < MAX_SOCK_NUM; i++) {                                    // socket 檬扁拳 棺 楷搬 措扁 惑怕肺 父店
 128   2                      init_sock(i);
 129   2              }
 130   1      
 131   1              while (1) {
 132   2                      for (i = 0; i < MAX_SOCK_NUM; i++) 
 133   2                      {
 134   3                              if (sock_state[i] == SOCK_ESTABLISHED) {
 135   4                                      switch (select(i, SEL_CONTROL))
 136   4                                      {
 137   5                                      case SOCK_ESTABLISHED:                                          /* if connection is established */
 138   5                                              if ((len = select(i, SEL_RECV)) > 0)                    /* check Rx data */
 139   5                                              {
 140   6                                                      if (len > MAX_BUF_SIZE) len = MAX_BUF_SIZE;     /* if Rx data size is lager than TX_RX_MAX_BUF_SIZE */
 141   6                                                                                                      /* the data size to read is MAX_BUF_SIZE. */
 142   6                                                      len = recv(i, sock_buf, len);                   /* read the received data */
 143   6                                                      send(i, sock_buf, len);                         /* send the received data */
 144   6                                              }
 145   5                                              break;
 146   5                                      case SOCK_CLOSE_WAIT:                                           /* If the client request to close */
 147   5                                              printf("%bd : CLOSE_WAIT\r\n", i);
 148   5                                              disconnect(i);
 149   5                                              break;
 150   5                                      case SOCK_CLOSED: /* if a socket is closed */
 151   5                                              printf("%bd : CLOSED\r\n", i);
 152   5                                              init_sock(i);
 153   5                                              break;
 154   5                                      }
 155   4                              } else {
 156   4                                      switch (select(i, SEL_CONTROL))
 157   4                                      {
 158   5                                      case SOCK_ESTABLISHED:                                          /* if connection is established */
 159   5                                              sock_state[i] = SOCK_ESTABLISHED;               // 楷搬 汲沥.
 160   5                                              printf("%bd : connected\r\n", i);
 161   5                                              break;
 162   5                                      case SOCK_CLOSE_WAIT:                                           /* If the client request to close */
 163   5                                              printf("%bd : CLOSE_WAIT\r\n", i);
 164   5                                              disconnect(i);
 165   5                                              break;
 166   5                                      case SOCK_CLOSED: /* if a socket is closed */
 167   5                                              close(i);
 168   5                                              printf("%bd : CLOSED\r\n", i);
 169   5                                              init_sock(i);
 170   5                                              break;
 171   5                                      }
 172   4                              }
 173   3                      }       // for
 174   2              } // while 
 175   1      
 176   1      }
 177          
 178          /*
C51 COMPILER V6.21  MAIN                                                                   05/04/2005 09:30:04 PAGE 4   

 179          ********************************************************************************
 180          *              8051 檬扁拳 贸府 窃荐.
 181          *
 182          * Description: 
 183          * Arguments  : None.
 184          * Returns    : None.
 185          * Note       : 
 186          ********************************************************************************
 187          */
 188          void Init8051(void)
 189          { 
 190   1              EA = 0;                 // 傈眉 interrupt disable
 191   1              IT0 = 0;                // interrupt level trigger
 192   1              EX0 = 1;                // INT 0 enable
 193   1              EX1 = 0;                // INT 1 disable
 194   1              InitSerial();   // Serial 器飘 檬扁拳 (力傍登绰 serial.c 颇老 曼炼)
 195   1      }
 196          
 197          /*
 198          ********************************************************************************
 199          *              楷搬 秦瘤 等 盲澄俊 措茄 犁 檬扁拳 窃荐.
 200          *
 201          * Description: 楷搬捞 秦瘤 等 盲澄俊 措秦 close 棺 檬扁拳 荐青
 202          * Arguments  : None.
 203          * Returns    : None.
 204          * Note       : 
 205          ********************************************************************************
 206          */
 207          void init_sock(unsigned char i) {
 208   1              unsigned char b;
 209   1              printf("socket : ");
 210   1              while ( (b = socket(i, SOCK_STREAM, 5000, 0)) == 0) ;
 211   1              printf("%bd ok..\r\n", i);
 212   1      
 213   1              printf("listen : ");
 214   1              NBlisten(i);
 215   1              printf("%bd ok..\r\n", i);
 216   1              sock_state[i] = SOCK_LISTEN;
 217   1      }
C51 COMPILER V6.21  MAIN                                                                   05/04/2005 09:30:04 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 45
                                           ; SOURCE LINE # 54
0000 C2B4              CLR     T0
                                           ; SOURCE LINE # 55
0002 C2B5              CLR     T1
                                           ; SOURCE LINE # 57
0004 120000      R     LCALL   Init8051
                                           ; SOURCE LINE # 59
0007 7BFF              MOV     R3,#0FFH
0009 7A00        R     MOV     R2,#HIGH ?SC_0
000B 7900        R     MOV     R1,#LOW ?SC_0
000D 120000      E     LCALL   _printf
                                           ; SOURCE LINE # 61
0010 120000      E     LCALL   iinchip_init
                                           ; SOURCE LINE # 63
0013 D2AF              SETB    EA
                                           ; SOURCE LINE # 65
0015 E4                CLR     A
0016 900000      R     MOV     DPTR,#ip

⌨️ 快捷键说明

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