📄 8019.lst.svn-base
字号:
163 void RTL8019Init(unsigned char xdata *MACAddr) reentrant
164 {
*** WARNING C259 IN LINE 164 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: pointer: different mspace
165 1 unsigned char xdata chRTLInitTmp = 0;
166 1 unsigned int i;
167 1
168 1 /* after hardware reset a longdelay is necessary for rtl to self-initial */
169 1 //在RSTDRV从高电平回到低电平之后的100MS时,在对RTL8019做读写操作,以确保完全复位
170 1 P35 = 1;
171 1 for(i = 0;i < 40000;i++);
172 1 P35 = 0;
C51 COMPILER V8.05a 8019 07/18/2007 15:08:04 PAGE 4
173 1 for(i = 0;i < 40000;i++);
174 1
175 1 /* reset: write to reset prot */
176 1 /*
177 1 chRTLInitTmp = ReadReg(0x18);
178 1 delay(100);
179 1 WriteReg(0x18,0x00);
180 1 delay(100);
181 1 chRTLInitTmp = ReadReg(0x18);
182 1 delay(100);
183 1
184 1 chRTLInitTmp = ReadReg(0x1a);
185 1 delay(100);
186 1 WriteReg(0x1a,0x00);
187 1 delay(100);
188 1 chRTLInitTmp = ReadReg(0x1a);
189 1 delay(100); */
190 1
191 1 chRTLInitTmp = ReadReg(0x1c);
192 1 WriteReg(0x1c,0x00);
193 1 chRTLInitTmp = ReadReg(0x1c);
194 1 delay(100);
195 1
196 1 chRTLInitTmp = ReadReg(0x1f);
197 1 WriteReg(0x1f,0x00);
198 1 chRTLInitTmp = ReadReg(0x1f);
199 1 delay(100);
200 1
201 1 chRTLInitTmp = ReadReg(0x07);
202 1 if((ReadReg(0x07) & 0x80) == 0)
203 1 {
204 2 chRTLInitTmp = 0xaa;
205 2 }
206 1 else
207 1 {
208 2 chRTLInitTmp = 0xbb;
209 2 }
210 1
211 1 //To debug
212 1
213 1 /* init RTL registers*/
214 1 WriteReg(0x00,0x21);
215 1 chRTLInitTmp = ReadReg(0x00);
216 1 //for(i = 0;i < 20000;i++);
217 1 chRTLInitTmp = ReadReg(0x07);
218 1
219 1 RTLPage(0);
220 1 chRTLInitTmp = ReadReg(0x00);
221 1 //for(i = 0;i < 20000;i++);
222 1 WriteReg(0x0a,0x00); //清RBCR0
223 1 WriteReg(0x0b,0x00); //清RBCR1
224 1 WriteReg(0x0c,0xe0); //RCR,监视模式,不接收数据报
225 1 WriteReg(0x0d,0xe2); //TCR,loopback模式
226 1
227 1 WriteReg(0x01,0x4c); /* Pstart */
228 1 WriteReg(0x02,0x80); /* Pstop */
229 1 WriteReg(0x03,0x4c); /* BNRY */
230 1 WriteReg(0x04,0x40); /* TPSR */
231 1
232 1 WriteReg(0x07,0xFF); /* ISR: Interrupt Status Register,write FF to clear up all interrupt status *
-/
233 1 WriteReg(0x0f,0x00); /* IMR: Interrupt Mask Register,屏蔽掉所有中断 */
C51 COMPILER V8.05a 8019 07/18/2007 15:08:04 PAGE 5
234 1 //WriteReg(0x0e,0xC8); /* DCR: Data Configuration Register*/
235 1
236 1 //WriteReg(0x0c,0xCE); /* RCR: */
237 1 //WriteReg(0x0d,0xE0); /* TCR: */
238 1
239 1 //To debug
240 1 chRTLInitTmp = ReadReg(0x07);
241 1 chRTLInitTmp = ReadReg(0x0f);
242 1
243 1 RTLPage(1);
244 1 chRTLInitTmp = ReadReg(0x00);
245 1 WriteReg(0x07,0x4d); //CURR,设置为指向当前正在写的页的下一页
246 1
247 1 /* MAR0 */
248 1 WriteReg(0x08,0x00);
249 1 WriteReg(0x09,0x41);
250 1 WriteReg(0x0a,0x00);
251 1 WriteReg(0x0b,0x80);
252 1 WriteReg(0x0c,0x00);
253 1 WriteReg(0x0d,0x00);
254 1 WriteReg(0x0e,0x00);
255 1 WriteReg(0x0f,0x00);
256 1
257 1 /* set phisical address */
258 1 WriteReg(0x01,0x52);
259 1 WriteReg(0x02,0x54);
260 1 WriteReg(0x03,0x4c);
261 1 WriteReg(0x04,0x19);
262 1 WriteReg(0x05,0x57);
263 1 WriteReg(0x06,0x42);
264 1
265 1 //To debug
266 1 RTLPage(0);
267 1 chRTLInitTmp = ReadReg(0x00); //CR
268 1
269 1 chRTLInitTmp = ReadReg(0x01); //CLDA0
270 1 chRTLInitTmp = ReadReg(0x02); //CLDA1
271 1 chRTLInitTmp = ReadReg(0x03); //BNRY
272 1 chRTLInitTmp = ReadReg(0x04); //TSR
273 1 chRTLInitTmp = ReadReg(0x05); //NCR
274 1 chRTLInitTmp = ReadReg(0x06); //FIFO
275 1
276 1 chRTLInitTmp = ReadReg(0x07); //ISR
277 1
278 1 chRTLInitTmp = ReadReg(0x08); //CRDA0
279 1 chRTLInitTmp = ReadReg(0x09); //CRDA1
280 1 chRTLInitTmp = ReadReg(0x0a); //8019ID0
281 1 chRTLInitTmp = ReadReg(0x0b); //8019ID1
282 1 chRTLInitTmp = ReadReg(0x0c); //RSR
283 1 chRTLInitTmp = ReadReg(0x0d); //CNTR0
284 1 chRTLInitTmp = ReadReg(0x0e); //CNTR1
285 1 chRTLInitTmp = ReadReg(0x0f); //CNTR2
286 1
287 1 RTLPage(1);
288 1 chRTLInitTmp = ReadReg(0x00);
289 1 //PAR0~5
290 1 chRTLInitTmp = ReadReg(0x01);
291 1 chRTLInitTmp = ReadReg(0x02);
292 1 chRTLInitTmp = ReadReg(0x03);
293 1 chRTLInitTmp = ReadReg(0x04);
294 1 chRTLInitTmp = ReadReg(0x05);
295 1 chRTLInitTmp = ReadReg(0x06);
C51 COMPILER V8.05a 8019 07/18/2007 15:08:04 PAGE 6
296 1 //CURR
297 1 chRTLInitTmp = ReadReg(0x07);
298 1 //MAR0~7
299 1 chRTLInitTmp = ReadReg(0x08);
300 1 chRTLInitTmp = ReadReg(0x09);
301 1 chRTLInitTmp = ReadReg(0x0a);
302 1 chRTLInitTmp = ReadReg(0x0b);
303 1 chRTLInitTmp = ReadReg(0x0c);
304 1 chRTLInitTmp = ReadReg(0x0d);
305 1 chRTLInitTmp = ReadReg(0x0e);
306 1 chRTLInitTmp = ReadReg(0x0f);
307 1
308 1
309 1 /* transimit start page */
310 1 LastSendStartPage = SEND_START_PAGE0; //SEND_START_PAGE0 = 0x40
*** ERROR C202 IN LINE 310 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: 'SEND_START_PAGE0': undefined identifier
311 1 StartPageOfPacket = RECEIVE_START_PAGE + 1; //RECEIVE_START_PAGE = 0x4c
*** ERROR C202 IN LINE 311 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: 'RECEIVE_START_PAGE': undefined identifier
312 1
313 1 /* in the beginning, no packet is in sending */
314 1 InSending = FALSE;
*** ERROR C202 IN LINE 314 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: 'FALSE': undefined identifier
315 1 //for(i = 0;i < 20000;i++);
316 1 RTLPage(0);
317 1 chRTLInitTmp = ReadReg(0x00);
318 1 //for(i = 0;i < 20000;i++);
319 1 /* initial over, start command and receive */
320 1 WriteReg(0x0c,0xcc); //将芯片置于正常模式,跟外部网络连接
321 1 WriteReg(0x0d,0xe0);
322 1 WriteReg(0x07,0xFF);
323 1 chRTLInitTmp = ReadReg(0x07); //清除所有中断标志位
324 1 WriteReg(0x00,0x22);
325 1 //for(i = 0;i < 20000;i++); //(CR_PAGE0 | CR_ABORT_COMPLETE_DMA | CR_START_COMMAND)
-);
326 1 //chRTLInitTmp = ReadReg(0x00);
327 1 }
C51 COMPILATION COMPLETE. 5 WARNING(S), 3 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -