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

📄 main.lst

📁 51单片机实现网页显示功能
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: D:\Program File\keil\C51\BIN\C51.EXE ..\App\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJE
                    -CT(.\main.obj)

stmt level    source

   1          /*
   2           * Copyright (c) 2003 Electric Application Laboratory of NAN KAI University
   3           * All rights reserved.
   4           *
   5           * Redistribution and use in source and binary forms, with or without modification,
   6           * are permitted provided that the following conditions are met:
   7           *
   8           * 1. Redistributions of source code must retain the above copyright notice,
   9           *    this list of conditions and the following disclaimer.
  10           * 2. Redistributions in binary form must reproduce the above copyright notice,
  11           *    this list of conditions and the following disclaimer in the documentation
  12           *    and/or other materials provided with the distribution.
  13           * 3. The name of the author may not be used to endorse or promote products
  14           *    derived from this software without specific prior written permission.
  15           *
  16           * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
  17           * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18           * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  19           * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  20           * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  21           * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  22           * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  23           * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  24           * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  25           * OF SUCH DAMAGE.
  26           *
  27           * Author: Li Zhanglin <http://www.zlmcu.com>
  28           *
  29           */
  30          
  31          /*
  32          MCU:STC89C58
  33          Clock:22.1184MHz
  34          修改内容:
  35          时钟修改为22.1184MHz 12T
  36          RTL8019.h  RTL_BASE_ADDRESS 修改为 0xc000
  37          RTL8019.h ADDRESS_SHIFT  修改为0x100
  38          RTL8019.h 增加RTL8019的硬件复位信号在RTLInit(BYTE LocalMACAddr[])中
  39          main.c  OnAcceptRecv()中增加串口透明输出
  40          
  41          */
  42          
  43          #include "..\GloblDef\GloblDef.h"
  44          #include "..\TCPIP\TCPIPmem.h"
  45          #include "..\Netif\RTL8019.h"
  46          #include "..\TCPIP\IP.h"
  47          #include "..\Netif\etherif.h"
  48          #include "..\Netif\ARP.h"
  49          #include "..\TCPIP\Netif.h"
  50          #include "..\TCPIP\TCP.h"
  51          #include "..\App\main.h"
  52          #include <stdio.h>    //for "pirntf"
  53          #include <1820.c>
*** WARNING C317 IN LINE 5 OF define.h: attempt to redefine macro 'NULL'
C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 2   

*** WARNING C318 IN LINE 3 OF 1820.h: can't open file 'config.h'
*** WARNING C317 IN LINE 5 OF define.h: attempt to redefine macro 'NULL'
  54          ////////////////////////////////////////////////////////////////////////
  55          
  56          #define HTTP_SERVER_PORT 80
  57          socket  DT_XDATA * DT_XDATA HttpSocket = NULL;
  58          socket  DT_XDATA * DT_XDATA ExAccept = NULL;
  59          
  60          
  61          void OnHttpAccept(socket DT_XDATA *) REENTRANT_MUL;
  62          
  63          char xdata  htmlpage[] =
  64          {
  65          "HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
  66          "<HTML><HEAD><TITLE>Welcome to BD7BQ's Website</TITLE></HEAD>"
  67          "<table border=\"1\" width=\"49%\" height=\"81\">"
  68          "<tr>"
  69          "<td width=\"100%\" colspan=\"2\" height=\"24\">"
  70          "<p align=\"center\">"
  71          "<font color=\"#FF0000\">"
  72          "测试,欢迎访问我的单片机以太网测试板</font></td>"
  73          "</tr>"
  74          "<tr>"
  75          "<td width=\"48%\" align=\"center\" height=\"45\"><font size=\"6\">温度</font></td>"
  76          "<td width=\"52%\" align=\"center\" height=\"45\"><font size=\"6\">28.5度</font></td>"
  77          "</tr>"
  78          "</table>"
  79          "<br>"
  80          "你是本次启动后第00000个访问者,Good luck to you .</br>"
  81          //"该板外观请访问 http://www.e-diy.net/dispbbs.asp?boardID=2&ID=1065&page=1"
  82          "</HTML>"
  83          };
  84          
  85          unsigned int count=0;
  86          
  87          #define DATA_SIZE       0x500
  88          BYTE DT_XDATA DataBlock[DATA_SIZE];
  89          BYTE DT_XDATA str[]="hello";
  90          socket          DT_XDATA * DT_XDATA ExConn;
  91          socket          DT_XDATA * DT_XDATA     ExAccept;
  92          socket          DT_XDATA * DT_XDATA     ExListen;
  93          
  94          
  95          void OnReceive(void DT_XDATA * buf,WORD size)  REENTRANT_MUL
  96          {
  97   1              /* send back data */
  98   1              TCPSend(ExConn,buf,size);
  99   1      }
 100          
 101          void send_char(unsigned char sendc)   
 102          {
 103   1              TI = 0;
 104   1              SBUF = sendc;
 105   1              while(TI == 0) ; 
 106   1              TI = 0;
 107   1      }
 108          
 109          void send_BYTE(BYTE temp)
 110          {
 111   1              if(temp/100!=0)send_char(temp/100+0x30);
 112   1              if(temp>9) send_char(temp%100/10+0x30);
 113   1              send_char(temp%10+0x30);
C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 3   

 114   1      }
 115          
 116          void send_IP(IP_ADDR IP_temp)
 117          {
 118   1              BYTE k;
 119   1              
 120   1              send_char(' ');
 121   1              send_char(' ');
 122   1              k=IP_temp/0x1000000;
 123   1              send_BYTE(k);
 124   1              send_char('.');
 125   1              k=IP_temp%0x1000000/0x10000;
 126   1              send_BYTE(k);
 127   1              send_char('.');
 128   1              k=IP_temp%0x10000/0x100;
 129   1              send_BYTE(k);
 130   1              send_char('.');
 131   1              k=IP_temp%0x100;
 132   1              send_BYTE(k);
 133   1      
 134   1      //printf(" %lx ",TCBPool[0].IPScr);
 135   1      
 136   1              send_char(0x0d);
 137   1              send_char(0x0a);
 138   1      
 139   1      }
 140          
 141          
 142          
 143          void OnAcceptRecv(void DT_XDATA *buf,WORD size) REENTRANT_MUL
 144          {
 145   1              WORD i;
 146   1      //      for(i=0;i<size;i++)  printf("%c",*(BYTE DT_XDATA *)(buf+i));  //串口透明输出
 147   1      //      *((BYTE DT_XDATA *)buf+3)='$';
 148   1      //      size=8;
 149   1              /* send back data */
 150   1      //      TCPSend(ExAccept,buf,size);
 151   1              send_IP(ExAccept->IPDest);
 152   1      
 153   1      
 154   1       //  
 155   1          TCPAbort(ExAccept);  TCPClose(ExAccept);
 156   1      
 157   1      }
*** WARNING C280 IN LINE 143 OF ..\APP\MAIN.C: 'buf': unreferenced local variable
*** WARNING C280 IN LINE 143 OF ..\APP\MAIN.C: 'size': unreferenced local variable
*** WARNING C280 IN LINE 145 OF ..\APP\MAIN.C: 'i': unreferenced local variable
 158          
 159          void OnAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
 160          {
 161   1              ExAccept = pNewSocket;
 162   1              pNewSocket->recv = OnAcceptRecv;
 163   1              pNewSocket->close = OnClose;
 164   1      }
 165          void OnClose(socket DT_XDATA * pSocket) REENTRANT_MUL
 166          {
 167   1              TCPClose(pSocket);      /* we close too */
 168   1      }
 169          void Timer() REENTRANT_MUL interrupt 1
 170          {
 171   1              TH0 = 0x4C;     //0x4C:TIMER_22.1184M_25MS_H    0x3C:TIMER_24M_25MS_H
 172   1              TL0 = 0x06;     //0x06:TIMER_22.1184M_25MS_L    0xAA:TIMER_24M_25MS_L
C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 4   

 173   1              
 174   1              NetIfTimer();
 175   1              ARPTimer();
 176   1              TCPTimer();
 177   1      }
 178          
 179          void SerialInit()
 180          {
 181   1              /* set TI to 1, set TR1 to 1 */
 182   1              SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
 183   1              TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
 184   1              TH1 = 0xF4;     // TH1=F4 9600 when at 22.1184MHz,TH1=FA,19200,22.1184MHz */
 185   1                          // TH1=E6 4800 when at 24MHz,TH1=F3,9600,24MHz 
 186   1              PCON = 0x80;
 187   1              TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
 188   1      }
 189          
 190          void InterruptInit()
 191          {
 192   1              TMOD |= 0x01;
 193   1              TH0 = 0x4C;     //0x4C:TIMER_22.1184M_25MS_H    0x3C:TIMER_24M_25MS_H
 194   1              TL0 = 0x06;     //0x06:TIMER_22.1184M_25MS_L    0xAA:TIMER_24M_25MS_L
 195   1              
 196   1              TR0 = 1;
 197   1              
 198   1              /* open interrupt for rtl and timer */
 199   1              EA = 1;
 200   1              /* EX0 = 1; */
 201   1              ET0 = 1;
 202   1      }
 203          
 204          sfr  P4       = 0xe8;
 205          sbit CONT = P4^3;
 206          
 207          void OnHttpClose(socket DT_XDATA * pSocket) REENTRANT_MUL
 208          {
 209   1       printf("\nConnection will been gracefully closed");
 210   1       TCPClose(pSocket); /* we close too */
 211   1      }
 212          
 213          void OnHttpAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
 214          {
 215   1              WORD i;
 216   1              BYTE te;
 217   1      
 218   1       //   printf("\nAccept a connection");
 219   1      
 220   1      
 221   1          ExAccept = pNewSocket;
 222   1          pNewSocket->recv  = OnAcceptRecv;
 223   1          pNewSocket->close = OnHttpClose;
 224   1      
 225   1      
 226   1          te=get_temperatuer();
*** WARNING C206 IN LINE 226 OF ..\APP\MAIN.C: 'get_temperatuer': missing function-prototype
 227   1              htmlpage[416]=te/100+0x30;
 228   1              htmlpage[417]=te%100/10+0x30;
 229   1              htmlpage[419]=te%10+0x30;
 230   1      
 231   1              count++;
 232   1              if(count>65534) count=65534;
 233   1              htmlpage[467]=count/10000+0x30;
C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 5   

 234   1              htmlpage[468]=count%10000/1000+0x30;
 235   1              htmlpage[469]=count%1000/100+0x30;
 236   1              htmlpage[470]=count%100/10+0x30;
 237   1              htmlpage[471]=count%10+0x30;
 238   1      
 239   1          for(i = 0; htmlpage[i]; i++);
 240   1      
 241   1      //for(j=0;j<7;j++)  printf("%c",*(BYTE DT_XDATA *)(htmlpage+j));  //串口透明输出
 242   1          TCPSend(ExAccept, htmlpage, i);
 243   1        //  TCPClose(ExAccept);
 244   1       //TCPAbort(ExAccept); 
 245   1      }
 246          
 247          
 248          
 249          void main(void)
 250          {
 251   1      //      struct SMemHead DT_XDATA *MemHead;
 252   1              struct SEtherDevice DT_XDATA DevRTL;
 253   1              BYTE    DT_XDATA EtherAddr[ETHER_ADDR_LEN] = {0x52,0x54,0x4c,0x30,0x2e,0x2f};
 254   1              IP_ADDR         IPAddr  = 0xc0a80009;   // 192.168.0.9
 255   1              IP_ADDR         NetMask = 0xffffff00;   // 255.255.255.0 
 256   1              IP_ADDR         GateWay = 0xc0a80001;   // 192.168.0.1  
 257   1              
 258   1      
 259   1              NetIfInit();
 260   1              ARPInit();
 261   1              TCPInit();
 262   1              MemInit();
 263   1              RTLInit(EtherAddr);     
 264   1              
 265   1              /* init Devcie struct and init this device */
 266   1              EtherDevInit(&DevRTL,EtherAddr,RTLSendPacket,RTLReceivePacket);
 267   1      
 268   1              /* add this device to NetIf */
 269   1              NetIfAdd(IPAddr,NetMask,GateWay,EtherInput,EtherOutput,&DevRTL);
 270   1      
 271   1              SerialInit();
 272   1              InterruptInit();
 273   1      
 274   1      
 275   1       /* Illustrate how to listen as a server */
 276   1       HttpSocket = TCPSocket(IPAddr);
 277   1       ExAccept   = NULL;
 278   1       if(TCPListen(HttpSocket,HTTP_SERVER_PORT,OnHttpAccept))  printf("\nListen...");
 279   1       else  printf("\nListen Failed!");
 280   1      
 281   1      // printf("\nPress Any Key to End TCP Test!");
 282   1       //WAIT_FOR_KEY_PRESS;
 283   1      while(1);
 284   1      
 285   1              TCPAbort(ExAccept); 
 286   1              TCPAbort(HttpSocket); 
 287   1      
 288   1       /* cancel the timer */
 289   1      // TimerEnd();  
 290   1      }
 291          
 292          
 293          
 294          

C51 COMPILER V7.06   MAIN                                                                  11/26/2007 20:40:53 PAGE 6   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1199    ----
   CONSTANT SIZE    =    329    ----
   XDATA SIZE       =   1806      16
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25      26
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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