⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 NE2000型兼容网卡的设计程序
💻 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 + -