📄 main.lst
字号:
C51 COMPILER V7.09 MAIN 10/25/2005 09:06:03 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //程序从main()开始执行:
2 #define reg00 XBYTE[0xc000] /* 240H*/
3 #define reg01 XBYTE[0xc100] /* 241H*/
4 #define reg02 XBYTE[0xc200] /* 242H*/
5 #define reg03 XBYTE[0xc300] /* 243H*/
6 #define reg04 XBYTE[0xc400] /* 244H*/
7 #define reg05 XBYTE[0xc500] /* 245H*/
8 #define reg06 XBYTE[0xc600] /* 246H*/
9 #define reg07 XBYTE[0xc700] /* 247H*/
10 #define reg08 XBYTE[0xc800] /* 248H*/
11 #define reg09 XBYTE[0xc900] /* 249H*/
12 #define reg0a XBYTE[0xca00] /* 24aH*/
13 #define reg0b XBYTE[0xcb00] /* 24bH*/
14 #define reg0c XBYTE[0xcc00] /* 24cH*/
15 #define reg0d XBYTE[0xcd00] /* 24dH*/
16 #define reg0e XBYTE[0xce00] /* 24eH*/
17 #define reg0f XBYTE[0xcf00] /* 24fH*/
18 #define reg10 XBYTE[0xd000] /* 250H*/
19 #define reg11 XBYTE[0xd100] /* 251H*/
20 #define reg12 XBYTE[0xd200] /* 252H*/
21 #define reg13 XBYTE[0xd300] /* 253H*/
22 #define reg14 XBYTE[0xd400] /* 254H*/
23 #define reg15 XBYTE[0xd500] /* 255H*/
24 #define reg16 XBYTE[0xd600] /* 256H*/
25 #define reg17 XBYTE[0xd700] /* 257H*/
26 #define reg18 XBYTE[0xd800] /* 258H*/
27 #define reg19 XBYTE[0xd900] /* 259H*/
28 #define reg1a XBYTE[0xda00] /* 25aH*/
29 #define reg1b XBYTE[0xdb00] /* 25bH*/
30 #define reg1c XBYTE[0xdc00] /* 25cH*/
31 #define reg1d XBYTE[0xdd00] /* 25dH*/
32 #define reg1e XBYTE[0xde00] /* 25eH*/
33 #define reg1f XBYTE[0xdf00] /* 25fH*/
34 #define uint unsigned int //uint 代表unsigned int ,作者一般使用缩写uint
35 #define uchar unsigned char //uchar 代表unsigned char,我比较懒,不愿意多写
36 //extern uchar data XBYTE[0xdf00];
37 #include <AT89X51.H>
38 #include <ABSACC.h>
39 void delaymsecond();
40 void netcardreset();
41 void ne2000init();
42 main()
43 {
44 1 delaymsecond();//延时大约1秒,保证电源稳定和网卡自身的上电完成。
45 1 netcardreset();//复位网卡的子程序
46 1 ne2000init();//网卡初始化子程序
47 1 }
48 void delaymsecond()
49 {
50 1 uint i,j;
51 1 for (i=0;i<1000;i++)
52 1 for (j=0;j<120;j++)
53 1 ;
54 1
55 1 }
C51 COMPILER V7.09 MAIN 10/25/2005 09:06:03 PAGE 2
56 //-------------------------------------------------------------------------------------
57 //网卡的复位子程序:
58 //#define reg1f XBYTE[0xdf00] //网卡的复位端口的地址,对应于网卡的地址25FH。
59 sbit reset = P3 ^ 4; //单片机的p3.4脚连接到网卡的RSTDRV复位引脚
60 void netcardreset()
61 {uint data i;
62 1 uchar data temp;
63 1 reset=1; //使网卡的RSTDRV引脚变成高电平,网卡是高电平复位的。
64 1 for(i=0;i<250;i++);//延时程序,至少需要
65 1 reset=0; //使网卡的RSTDRV引脚变成低电平,网卡上电复位完毕
66 1 /*热复位程序
67 1 for(i=0;i<250;i++);
68 1 temp=reg1f;//读网卡的复位端口
69 1 reg1f=temp; //写网卡的复位端口,热复位
70 1 for(i=0;i<250;i++);
71 1 */
72 1 }
*** WARNING C280 IN LINE 62 OF MAIN.C: 'temp': unreferenced local variable
73 //---------------------------------------------------------------------------------------
74 //对网卡的工作参数进行设置
75 //#define reg00 XBYTE[0xc000] //对应于地址240H 为命令寄存器CR地址
76 void page(uchar pagenumber)
77 { uchar data temp;
78 1 temp=reg00;//command register
79 1 temp=temp&0x3B;
80 1 pagenumber=pagenumber <<6;
81 1 temp=temp | pagenumber;
82 1 reg00=temp;
83 1 }
84 //---------------------------------------------------------------------------------------
85 //网卡的初始化子程序
86 void ne2000init()
87 {
88 1 reg00=0x21; //选择页0的寄存器,网卡停止运行,因为还没有初始化。 0010 0001
89 1 reg01=0x4c; //寄存器Pstart 0x4c-0x80,考虑0x4c-0x60 datasheet p15 0100 1100
90 1 reg02=0x80; //Pstop
91 1 reg03=0x4c; //BNRY 读指针
92 1 reg04=0x40; //TPSR 为发送页的起始页地址。初始化为指向第一个发送缓冲区的页,0x40。
93 1 reg0c=0xcc; //RCR
94 1 reg0d=0xe0; //TCR
95 1 reg0e=0xc8; //DCR 数据配置寄存器 8位数据dma
96 1 reg0f=0x00; //IMR disable all interrupt
97 1 page(1); //选择页1的寄存器--------------------------------------读到这-----------------------
98 1 reg07=0x4d; //CURR 写指针
99 1 reg08=0x00; //MAR0|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
100 1 reg09=0x41; //MAR1| |
101 1 reg0a=0x00; //MAR2| |
102 1 reg0b=0x80; //MAR3| |
103 1 reg0c=0x00; //MAR4| 多播协议,有待参考 |
104 1 reg0d=0x00; //MAR5| |
105 1 reg0e=0x00; //MAR6| |
106 1 reg0f=0x00; //MAR7|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107 1 reg00=0x22;//选择页0寄存器,网卡执行命令。
108 1
109 1 }
110
111 /*
112 PSTART 接收缓冲区的起始页的地址。
113 PSTOP 接收缓冲区的结束页地址。(该页不用于接收)
114 BNRY 指向最后一个已经读取的页(读指针)
115 CURR 当前的接收结束页地址。(写指针)
116
C51 COMPILER V7.09 MAIN 10/25/2005 09:06:03 PAGE 3
117 --网卡含有16K字节的RAM,地址为0x4000-0x7fff(指的是网卡上的存储地址,而不是ISA总线的地址,是网卡工作用的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -