📄 main.lst
字号:
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 + -