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