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

📄 main.lst

📁 我的网口控制程序
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\App\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(.\main.obj
                    -)

stmt level    source

   1          /*
   2                  该程序既可以用我的界面来控制,也可以显示网页
   3                  通过宏定义作开关 DebugHttp
   4                  该程序的IP地址为10.10.0.70
   5                  网关:10.10.0.1
   6                  子网掩码:255.255.255.0
   7                  端口:1001
   8                  
   9              温子祺____________________
  10                  佛山科学技术学院
  11                  日期:2008/11/6
  12          
  13          */
  14          #include "..\GloblDef\GloblDef.h"
  15          #include "..\TCPIP\TCPIPmem.h"
  16          #include "..\Netif\RTL8019.h"
  17          #include "..\TCPIP\IP.h"
  18          #include "..\Netif\etherif.h"
  19          #include "..\Netif\ARP.h"
  20          #include "..\TCPIP\Netif.h"
  21          #include "..\TCPIP\TCP.h"
  22          #include "..\App\main.h"
  23          
  24          //用于网页显示还是控制LED灯模式
  25          #ifndef DebugHttp
  26          //#define DebugHttp
  27          #endif
  28          
  29          #define DATA_SIZE       0x500
  30          
  31          BYTE DT_XDATA DataBlock[DATA_SIZE];
  32          BYTE DT_XDATA str[]="hello";
  33          socket          DT_XDATA * DT_XDATA ExConn;
  34          socket          DT_XDATA * DT_XDATA     ExAccept;
  35          socket          DT_XDATA * DT_XDATA     ExListen;
  36          
  37          
  38          //自己添加的网页部分-------------------------------------------------
  39          #ifdef DebugHttp
              
              #define HTTP_SERVER_PORT 80
              
              socket  DT_XDATA * DT_XDATA HttpSocket = NULL;
              socket  DT_XDATA * DT_XDATA ExAccept   = NULL;
              
              void OnHttpAccept(socket DT_XDATA *) REENTRANT_MUL;
              
              char xdata  htmlpage[] =
              {
              "HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
              "<HTML><HEAD><TITLE>欢迎来到温子祺的主页</TITLE></HEAD>"
              "<table border=\"1\" width=\"100%\" height=\"81\">"
              "<tr>"
              "<td width=\"200%\" colspan=\"2\" height=\"24\">"
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 2   

              "<p align=\"center\">"
              "<font color=\"#FF0000\">"
              "温子祺,佛山科学技术学院(致:亲爱的林德彬老师)</font></td>"
              "</tr>"
              "<br>"
              "^_^ 没有林老师的关怀,就没有我的成长.谢谢林老师.我爱林老师呢 ^_^</br>"
              "</HTML>"
              };
              
              char xdata  htmlpage_k[] =
              {
              "HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
              "<HTML><HEAD><TITLE>欢迎来到温子祺的主页</TITLE></HEAD>"
              "<table border=\"1\" width=\"100%\" height=\"81\">"
              "<tr>"
              "<td width=\"200%\" colspan=\"2\" height=\"24\">"
              "<p align=\"center\">"
              "<font color=\"#DE0000\">"
              "总之十分感谢林老师,就是了....林老师还是挺好人的呢</font></td>"
              "</tr>"
              "<br>"
              "希望林老师能够提供更加多的机会给我们实践呢 ^_^ [敬爱的林德彬老师]</br>"
              "</HTML>"
              };
              
              unsigned int count=0;
              
              #endif
  83          
  84          
  85          void OnReceive(void DT_XDATA * buf,WORD size)  REENTRANT_MUL
  86          {       
  87   1      
  88   1      TCPSend(ExConn,buf,size);
  89   1      
  90   1      }
  91          
  92          
  93          void OnAcceptRecv(void DT_XDATA *buf,WORD size) REENTRANT_MUL
  94          {
  95   1              unsigned int i;
  96   1              unsigned int RecTemp;
  97   1      
  98   1      
  99   1                      
 100   1      
 101   1              TCPSend(ExAccept,buf,size);
 102   1      
 103   1      #ifdef DebugHttp
              TCPAbort(ExAccept);  
              TCPClose(ExAccept);
              #endif
 107   1      
 108   1              for(i<0;i<=100;i++)
 109   1              {       
 110   2                      RecTemp=(*((BYTE DT_XDATA *)buf)++);
 111   2                      switch(RecTemp)
 112   2                      {
 113   3                       case 'a': P1_0=0;break;
 114   3                       case 'b': P1_1=0;break;
 115   3                       case 'c': P1_2=0;break;
 116   3                       case 'd': P1_3=0;break;
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 3   

 117   3                       case 'e': P1_4=0;break;
 118   3               case 'f': P1_5=0;break;
 119   3                       case 'g': P1_6=0;break;
 120   3                       case 'h': P1_7=0;break;
 121   3                       case 'A': P1_0=1;break;
 122   3                       case 'B': P1_1=1;break;
 123   3                       case 'C': P1_2=1;break;
 124   3                       case 'D': P1_3=1;break;
 125   3                       case 'E': P1_4=1;break;
 126   3               case 'F': P1_5=1;break;
 127   3                       case 'G': P1_6=1;break;
 128   3                       case 'H': P1_7=1;break;
 129   3                       case 'Q': P1=0xff;break;
 130   3                       case 'q': P1=0x00;break;
 131   3                       default :break;
 132   3                      }
 133   2              }
 134   1      
 135   1      
 136   1      }
 137          
 138          void OnAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
 139          {
 140   1              ExAccept = pNewSocket;
 141   1              pNewSocket->recv = OnAcceptRecv;
 142   1              pNewSocket->close = OnClose;
 143   1      }
 144          
 145          
 146          void OnClose(socket DT_XDATA * pSocket) REENTRANT_MUL
 147          {
 148   1              TCPClose(pSocket);      
 149   1      }
 150          
 151          void Timer() REENTRANT_MUL interrupt 1
 152          {
 153   1              TH0 = 0x3C;     /*TIMER_24M_25MS_H;*/
 154   1              TL0 = 0xAA;     /*TIMER_24M_25MS_L;*/
 155   1              
 156   1              NetIfTimer();
 157   1              ARPTimer();
 158   1              TCPTimer();
 159   1      }
 160          
 161          void SerialInit()
 162          {
 163   1              /* set TI to 1, set TR1 to 1 */
 164   1              SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
 165   1              TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
 166   1              TH1 =  0xE6;    /* TH1=E6 4800 when at 24MHz,TH1=F3,9600,24MHz */
 167   1              PCON = 0x80;
 168   1              TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
 169   1      }
 170          
 171          void InterruptInit()
 172          {
 173   1              TMOD |= 0x01;
 174   1              TH0 = 0x3C;     /*TIMER_24M_25MS_H;*/
 175   1              TL0 = 0xAA;     /*TIMER_24M_25MS_L;*/
 176   1              TR0 = 1;
 177   1              
 178   1              /* open interrupt for rtl and timer */
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 4   

 179   1              EA = 1;
 180   1              /* EX0 = 1; */
 181   1              ET0 = 1;
 182   1      }
 183          
 184          //自己添加的------------------------
 185          #ifdef DebugHttp
              
              sfr  P4       = 0xe8;
              sbit CONT     = P4^3;
              
              void OnHttpClose(socket DT_XDATA * pSocket) REENTRANT_MUL
              {
               TCPClose(pSocket); /* we close too */
              }
              
              void OnHttpAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
              {
                      WORD i;
                      BYTE te;
              
                  ExAccept = pNewSocket;
                  pNewSocket->recv  = OnAcceptRecv;
                  pNewSocket->close = OnHttpClose;
              
              
                      htmlpage[416]=te/100+0x30;
                      htmlpage[417]=te%100/10+0x30;
                      htmlpage[419]=te%10+0x30;
              
                      count++;
                      if(count>65534) count=65534;
                      htmlpage[467]=count/10000+0x30;
                      htmlpage[468]=count%10000/1000+0x30;
                      htmlpage[469]=count%1000/100+0x30;
                      htmlpage[470]=count%100/10+0x30;
                      htmlpage[471]=count%10+0x30;
              
                  for(i = 0; htmlpage[i]; i++);
                  TCPSend(ExAccept, htmlpage, i);
                      //P1=0XF0;      //只要我网页有刷新时,低位亮
                      //--------------------------------------------
                      htmlpage_k[416]=te/100+0x30;
                      htmlpage_k[417]=te%100/10+0x30;
                      htmlpage_k[419]=te%10+0x30;
              
                      count++;
                      if(count>65534) count=65534;
                      htmlpage_k[467]=count/10000+0x30;
                      htmlpage_k[468]=count%10000/1000+0x30;
                      htmlpage_k[469]=count%1000/100+0x30;
                      htmlpage_k[470]=count%100/10+0x30;
                      htmlpage_k[471]=count%10+0x30;
              
                  for(i = 0; htmlpage_k[i]; i++);
                  TCPSend(ExAccept, htmlpage_k, i);
                      //P1=0XF0;      //只要我网页有刷新时,低位亮
              }
              
              #endif
 239          
 240          
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 5   

 241          //------------------------------------------------------------------
 242          main()
 243          {
 244   1              struct SMemHead DT_XDATA *MemHead;
 245   1              struct SEtherDevice DT_XDATA DevRTL;
 246   1              BYTE   DT_XDATA EtherAddr[ETHER_ADDR_LEN] = {0x52,0x54,0x4c,0x30,0x2e,0x2f};
 247   1              IP_ADDR         IPAddr  = 0x0A0A0046;//10.10.0.70       
 248   1              IP_ADDR         NetMask = 0xffffff00;//255.255.255.0    
 249   1              IP_ADDR         GateWay = 0x0A0A0001;//10.10.0.1
 250   1              P1=0xff;
 251   1              /*
 252   1               * init
 253   1               */
 254   1              /* init. the order is not important */
 255   1              NetIfInit();//初始化网络接口
 256   1              ARPInit();//初始化ARP
 257   1              TCPInit();//初始化TCP
 258   1              MemInit();//初始化内存模块
 259   1              RTLInit(EtherAddr);//初始化RTL8019AS,EtherAddr为以太网地址      
 260   1              
 261   1      
 262   1         EtherDevInit(&DevRTL,EtherAddr,RTLSendPacket,RTLReceivePacket);
 263   1      
 264   1      
 265   1              NetIfAdd(IPAddr,NetMask,GateWay,EtherInput,EtherOutput,&DevRTL);
 266   1      
 267   1              /*
 268   1               * start use socket 
 269   1               */
 270   1              SerialInit();
 271   1              InterruptInit();//启动25ms的定时中断
 272   1              TRACE("start");
 273   1              
 274   1              /* Illustrate how to listen as a server */
 275   1              ExListen = TCPSocket(IPAddr);
 276   1              ExAccept = NULL;
 277   1              //----自己添加的
 278   1      
 279   1      #ifdef DebugHttp
               HttpSocket = TCPSocket(IPAddr);
               ExAccept   = NULL;
               if(TCPListen(HttpSocket,HTTP_SERVER_PORT,OnHttpAccept));
               #endif
 284   1      
 285   1              TCPListen(ExListen,TCP_DEFAULT_PORT,OnAccept);
 286   1      
 287   1              ExConn = TCPSocket(IPAddr);
 288   1      
 289   1      
 290   1              if(TCPConnect(ExConn,0xc0a8020e,1001,OnReceive,OnClose) == TRUE)
 291   1              {       
 292   2                      /* Illustrate how to Use TCPSend() */
 293   2                      TCPSend(ExConn,str,6);
 294   2                      /* Illustrate how to Use TCPSendEx() */
 295   2                      while(1)
 296   2                      {
 297   3                              if((MemHead = TCPAllocate(DATA_SIZE)) == NULL)
 298   3                                      break;
 299   3                              MemCopy(MemHead->pStart,DataBlock,DATA_SIZE);
 300   3                              if(TCPSendEx(ExConn,MemHead) == FALSE)
 301   3                                      break;
 302   3                      }
C51 COMPILER V7.06   MAIN                                                                  11/06/2008 08:54:11 PAGE 6   

 303   2              }
 304   1      
 305   1      
 306   1              TCPAbort(ExConn); 
 307   1      
 308   1              while(1);
 309   1      //-------自己添加的
 310   1      //#ifdef DebugHttp
 311   1      //TCPAbort(ExAccept); 
 312   1      //TCPAbort(HttpSocket); 
 313   1      //#endif
 314   1      
 315   1      
 316   1      }
 317          
 318          
 319          
 320          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    746    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   1292      16
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      18
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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