📄 main.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 + -