?? main.lst
字號:
C51 COMPILER V7.50 MAIN 12/14/2006 13:34:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //---------------------------------------------------------------------------
2 // 主控程序包括物理層初始化, CPU初始化,媒體訪問控制,以太網傳輸等幾部分
3 // 其中my_ipaddr = 0xC0A8000AL為本設備的IP地址對應不同的網絡要求可對其進行修改
4 // MAC地址是CP2200出廠前是設置好的一般不需修改
5 // 此程序為通用TCP/IP協議對不同的MCU應用CP2200進行以太網通訊只需修改CPU初始化部分
6 // 及定時器配置部分及ADC部分就可以.
7 //---------------------------------------------------------------------------
8
9 #include <string.h>
10 #include "C8051f040.h"
11 #include "net.h"
12 #include "cp220x_reg.h"
13 #include "timer.h"
14 #include "analog.h"
15 #include "arp.h"
16 #include "tcp.h"
17 #include "http.h"
18 #include "ip.h"
19 MACADDRESS xdata MYMAC;
20
21
22 // Global variables
23 UINT volatile event_word;
24 char xdata text[20];
25 UCHAR idata debug;
26 UCHAR idata rcve_buf_allocated;
27 #define LINK_ERROR 0x20
28 char xdata inbuf1[1500] _at_ 1000;
29 char xdata outbuf1[1500] _at_ 2500;
30
31 // This sets my hardware address to 00:01:02:03:04:05
32 UCHAR xdata my_hwaddr[6] _at_ 4001;
33
34 // Hardware addr to send a broadcast
35 UCHAR code broadcast_hwaddr[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
36
37 // This sets my IP address to 192.168.0.10
38 ULONG code my_ipaddr = 0xC0A8000AL;
39
40 // This sets my subnet mask to 255.255.255.0
41 ULONG code my_subnet = 0xFFFFFF00L;
42
43
44 ULONG code gateway_ipaddr = 0L;
45
46 //--------------------------------------------------------------------------
47 // Initialize the memory management routines
48 // Initialize variables declared in main
49 //--------------------------------------------------------------------------
50
51 unsigned int Count1msInc;
52 unsigned char Count1ms,Count10ms,Count1s;
53 unsigned char TimeSecond,TimeMinute;
54 unsigned char PHY_Init(void);
55 void MAC_Init(void);
C51 COMPILER V7.50 MAIN 12/14/2006 13:34:45 PAGE 2
56 UCHAR xdata * rcve_frame(void);
57 void eth_rcve(UCHAR xdata * inbuf);
58 void MAC_Write(unsigned char mac_reg_offset, unsigned int mac_reg_data);
59 void MAC_SetAddress(MACADDRESS* pMAC);
60 void CP220x_Send( UCHAR xdata * outbuf, UINT len);
61
62 /***********************************************************************/
63 //初始化內存部分
64 /**********************************************************************/
65
66 void init_main(void)
67 {
68 1 // Start the memory pool for incoming and outgoing Ethernet
69 1 // frames at 1000, with length = 1500 bytes. Memory below 500
70 1 // is used for program variables
71 1 // init_mempool((void xdata *)1000, 1500);
72 1 memset(text, 0, sizeof(text));
73 1 event_word = 0;
74 1 rcve_buf_allocated = FALSE;
75 1 debug = FALSE;
76 1 }
77 /************************************************************************/
78 //初始化MCU端口部分 采用端口非復用的方式,將地址線與數據線分開
79 /***********************************************************************/
80 void PORT_Init (void)
81 {
82 1 char SFRPAGE_SAVE = SFRPAGE;
83 1 unsigned char i;
84 1 SFRPAGE = CONFIG_PAGE;
85 1 P4MDOUT = 0XFF;
86 1 P5MDOUT = 0XFF;
87 1 P6MDOUT = 0XFF;
88 1 P7MDOUT = 0XFF;
89 1 P3MDOUT |= 0X40;
90 1 XBR0 = 0x84;
91 1 XBR1 = 0x04;
92 1 XBR2 = 0x40;
93 1
94 1 for(i=0;i<200;i++);
95 1 SFRPAGE = EMI0_PAGE;
96 1 EMI0CF = 0xFB;
97 1 EMI0TC = 0xef;
98 1
99 1
100 1 EMI0CN = 0x20;
101 1
102 1 SFRPAGE = SFRPAGE_SAVE;
103 1 }
104
105 /***********************************************************************/
106 //設置定時器0
107 /**********************************************************************/
108 void Timer0_Init (void)
109 {
110 1 char SFRPAGE_SAVE = SFRPAGE;
111 1 SFRPAGE = TIMER01_PAGE;
112 1 CKCON|=0x8;
113 1 TMOD|=0x1;
114 1 Count10ms=10;
115 1 Count1s=0;
116 1 TR0 = 0;
117 1 TH0 = (-SYSCLK/1000) >> 8;
C51 COMPILER V7.50 MAIN 12/14/2006 13:34:45 PAGE 3
118 1 TL0 = -SYSCLK/1000;
119 1 TR0 = 1;
120 1 IE|= 0x2;
121 1 SFRPAGE = SFRPAGE_SAVE;
122 1 }
123 /**********************************************************************/
124 //選擇系統時鐘
125 /**********************************************************************/
126 void SYSCLK_Init (void)
127 {
128 1 int i;
129 1 char SFRPAGE_SAVE = SFRPAGE;
130 1
131 1 SFRPAGE = CONFIG_PAGE;
132 1 OSCXCN = 0x67;
133 1 for (i = 0; i < 3000; i++);
134 1 while ((OSCXCN & 0x80) == 0);
135 1 CLKSEL = 0x01;
136 1 SFRPAGE = SFRPAGE_SAVE;
137 1
138 1 }
139 /********************************************************************/
140 //定時器0中斷 用于定時
141 /********************************************************************/
142 void Timer0_ISR (void) interrupt 1 //1ms
143 {
144 1 TH0 = (-SYSCLK/1000) >> 8;
145 1 TL0 = -SYSCLK/1000;
146 1 if (Count1ms) Count1ms--;
147 1 Count1msInc++;
148 1 if (Count10ms) Count10ms--;
149 1 else
150 1 {
151 2 Count10ms=10; //10ms
152 2 if (Count1s) Count1s--;
153 2 else
154 2 {
155 3 Count1s=100; //1s
156 3 TimeSecond++;
157 3 if (TimeSecond>=60)
158 3 {
159 4 TimeSecond=0; //1min
160 4 TimeMinute++;
161 4 if (TimeMinute==60) TimeMinute=0;
162 4 }
163 3 }
164 2 }
165 1 }
166
167 /*******************************************************************/
168 //延時程序
169 /*******************************************************************/
170 void Delay1ms(unsigned char T)
171 {
172 1 Count1ms=T;
173 1 while (Count1ms);
174 1 }
175
176 /********************************************************************/
177 //上位機與下位進行交互程序
178 /********************************************************************/
179 void LightONOFF(bit b)
C51 COMPILER V7.50 MAIN 12/14/2006 13:34:45 PAGE 4
180 {
181 1
182 1 }
*** WARNING C280 IN LINE 179 OF MAIN.C: 'b': unreferenced local variable
183
184 void CP220x_RST_Low(void);
185 //加延時
186 void CP220x_RST_High(void);
187 /*******************************************************************/
188
189 //主程序
190
191 /*******************************************************************/
192 void main (void)
193 {
194 1 UINT event_word_copy;
195 1 UCHAR xdata * inbuf;
196 1 unsigned char error_code;
197 1 // unsigned int num_bytes;
198 1
199 1 WDTCN = 0xDE; // 關看門狗定時器
200 1 WDTCN = 0xAD;
201 1
202 1
203 1 SYSCLK_Init (); // 初始化系統時鐘
204 1 Timer0_Init();
205 1 PORT_Init (); // 初始化端口
206 1
207 1 init_timer2();
208 1 init_main();
209 1 init_tcp();
210 1 init_http();
211 1 EA=1;
212 1 init_adc();
213 1 init_arp();
214 1
215 1 CP220x_RST_Low();
216 1 Delay1ms(200);
217 1 Delay1ms(200);
218 1 Delay1ms(200);
219 1 Delay1ms(200);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -