📄 etherdev.lst
字号:
C51 COMPILER V8.02 ETHERDEV 10/28/2008 15:31:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ETHERDEV
OBJECT MODULE PLACED IN .\out\etherdev.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE etherdev.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND PRINT(.\out\ether
-dev.lst) OBJECT(.\out\etherdev.obj)
line level source
1 /********************************************************************************/
2 /* filename: ethernet.c */
3 /* version : v1.00 */
4 /* created : hw-chen */
5 /********************************************************************************/
6 #include "../CPU/CPU.h"
7 #include "../CFG/CFG.h"
8 #include "../UART/UART.h"
9 #include "uip.h"
10 #include "uipopt.h"
11 #include "uip_arch.h"
12 #include "etherdev.h"
13 unsigned char pkts_start_page=0x0;
14 unsigned char pkts_sends_page=0x0;
15
16 /********************************************************************************/
17 /* function : net_delay_ms() */
18 /* recension: hw-chen */
19 /* descript : 延时函数 */
20 /********************************************************************************/
21 void net_delay_ms(unsigned char time)
22 { unsigned int i;
23 1 while(time)
24 1 { for(i=0;i<1000;i++)
25 2 { _nop_();
26 3 _nop_();
27 3 _nop_();
28 3 _nop_();
29 3 _nop_();
30 3 _nop_();
31 3 _nop_();
32 3 _nop_();
33 3 _nop_();
34 3 _nop_();
35 3 }
36 2 time--;
37 2 }
38 1 }
39
40 /********************************************************************************/
41 /* function : rtl8019_set_pages */
42 /* created : hw-chen */
43 /* descript : RTL8019更换页面 */
44 /********************************************************************************/
45 void rtl8019_set_pages(unsigned char page)
46 { unsigned char mdata;
47 1 mdata =DEV_NET_COMMAND;
48 1 mdata&=0x3B;
49 1 page =page<<6;
50 1 mdata =mdata|page;
51 1 DEV_NET_COMMAND=mdata;
52 1 }
53
54 /********************************************************************************/
C51 COMPILER V8.02 ETHERDEV 10/28/2008 15:31:36 PAGE 2
55 /* function : rtl8019_initialize() */
56 /* created : hw-chen */
57 /* descript : RTL8019初始化 */
58 /* RTL8019AS内部有16kB SRAM,分为64页,256字节/页,组成环形队列作为 */
59 /* 收发缓冲区,只能按页操作,页地址从0x4000~0x7FFF。可以通过相关的 */
60 /* 寄存器读写操作,可以对缓冲区进行设置及状态的读取。由于接收缓冲区 */
61 /* 是按页即256B来操作的,与缓冲区地址有关的寄存器中只需存储缓冲区的 */
62 /* 高16位地址即可。在本设计中,将前52页(0x4C00-0x8000)作为接收缓冲区 */
63 /* 将后12页(0x4000~0x4B00)作为发送缓冲区。 */
64 /********************************************************************************/
65 void rtl8019_initialize(void)
66 { unsigned char mdata;
67 1 net_delay_ms(10);
68 1 DEV_NET_COMMAND= NET_PAGE0+NET_NODMA+NET_STOP; //* 选择页0寄存器,网卡停止 运行
69 1
70 1 UART_printf("A-0x%bx.\r\n",DEV_NET_ID1);
71 1 UART_printf("B-0x%bx.\r\n",DEV_NET_ID0);
72 1
73 1 DEV_NET_PSTART = RX_START_PAGE; //* 接收缓冲区范围
74 1 DEV_NET_PSTOP = RX_STOP_PAGE; //* PSTOP,构造缓冲环:0x4C-0x80.
75 1 DEV_NET_BNRY = RX_START_PAGE; //* BNRY是读指针,指向用户已经读走的页
76 1 DEV_NET_TPSR = TX_START_PAGE; //* 发送缓冲区的指针
77 1 DEV_NET_TCR = 0xE2; //* 发送配置寄存器,loop back mode 使芯片处于mon和loopback模式,跟
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -