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

📄 e25045.lst

📁 矿工定位系统单端
💻 LST
字号:
C51 COMPILER V7.05   E25045                                                                03/01/2002 11:49:00 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE E25045
OBJECT MODULE PLACED IN E25045.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE E25045.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          
   3          #include "e25045.h"
   4          sbit CS                 = P1^0;                 //EEPROM及看门狗片选
   5          sbit SI                 = P1^6;                 //串行数据输入
   6          sbit SCK                = P1^5;                 //串行时钟
   7          sbit SO                 = P1^1;                 //串行数据输出
   8          
   9          
  10          
  11          /***********************************************************************
  12          *    I2c BUS Related       sbit SCL= P1^0;  sbit SDA  = P1^1;          *
  13          ***********************************************************************/
  14          void    Delay5(void)            // 5 us
  15          {       unsigned char xdata i; for(i=0;i<23;i++);
  16   1      }
  17          //******************************************************
  18          void Watch_dog(void)
  19          {
  20   1          CS=1;
  21   1          CS=0;
  22   1          Delay5(); 
  23   1          CS=1;
  24   1      }
  25          //初始化X25043/25045
  26          /********************************************************************************
  27           _______________________________
  28          | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |   BL1         BL0            WD1  WD0
  29           --------------------------------    0     0     None     0      0  1.4Seconds
  30          | x | x |WD1|WD0|BL1|BL0|WEL|WIP|    0     1   180--1FF   0    1  600Milliseconds
  31          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     1     0   100--1FF   1    0  200Milliseconds
  32                                                   1     1   000--1FF   1    1  Disabled
  33          *********************************************************************************/
  34          void Init_X25045(unsigned char STATUS)
  35          {
  36   1              CS=0;
  37   1              SO=1;
  38   1              SCK=0;
  39   1              SI=0;
  40   1              Wrsr_Cmd(STATUS);
  41   1      }
  42          
  43          //设置写使能锁
  44          void Wren_Cmd(void)
  45          {
  46   1              SCK=0;
  47   1              CS=0;
  48   1              OutByte(WREN_INST);
  49   1              SCK=0;
  50   1              CS = 1;
  51   1      }
  52          
  53          //读状态寄存器
  54          unsigned char Rdsr_Cmd(void)
  55          {
C51 COMPILER V7.05   E25045                                                                03/01/2002 11:49:00 PAGE 2   

  56   1              unsigned char RetCode;
  57   1              SCK = 0;
  58   1              CS = 0;
  59   1              OutByte(RDSR_INST);
  60   1              RetCode = InByte();
  61   1              SCK = 0;
  62   1              CS  = 1;
  63   1              return RetCode;
  64   1      }
  65          
  66          //写状态寄存器
  67          /*******************************************
  68           ___________________________________________
  69          | X | X | WD1 | WD0 | BL1 | BL0 | WEL | WIP |
  70           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  71                                                  0                       0(1400) 0                       0(None)
  72                                                  0                       1(600)  0                       1($180-$1FF)
  73                                                  1                       0(200)  1                       0($100-$1FF)
  74                                                  1                       1       Disa    1                       1($000-$1FF)
  75          ********************************************/
  76          
  77          void Wrsr_Cmd(unsigned char STATUS)
  78          {
  79   1              if((Rdsr_Cmd()&0x01)==1) return;
  80   1              CS = 0;
  81   1              Wren_Cmd();
  82   1              SCK = 0;
  83   1              CS = 1;
  84   1              CS = 0;
  85   1        OutByte(WRSR_INST);
  86   1              OutByte(STATUS);
  87   1              SCK = 0;
  88   1              CS  = 1;
  89   1              //Wip_Poll();
  90   1      }
  91          
  92          //写一个字节
  93          void Byte_Write(unsigned int Addr,unsigned char wbyte)
  94          {
  95   1              unsigned char data HAddr,LAddr,Temp;
  96   1              while((Rdsr_Cmd()&0x01)==1);
  97   1              CS = 0;
  98   1              Wren_Cmd();
  99   1              SCK = 0;
 100   1              CS = 1;
 101   1              CS = 0;
 102   1              LAddr = (unsigned char)Addr;
 103   1              HAddr = Addr>>8;
 104   1              Temp = (WRITE_INST&0xF7)|((HAddr<<3)&0x08);
 105   1              OutByte(Temp);
 106   1              OutByte(LAddr);
 107   1              OutByte(wbyte);
 108   1              SCK = 0;
 109   1              CS  = 1;
 110   1              //Wip_Poll();
 111   1      }
 112          
 113          //读一个字节
 114          unsigned char Byte_read(unsigned int Addr)
 115          {
 116   1              unsigned char data HAddr,LAddr,Temp;
 117   1              while((Rdsr_Cmd()&0x01)==1); 
C51 COMPILER V7.05   E25045                                                                03/01/2002 11:49:00 PAGE 3   

 118   1              SCK = 0;
 119   1              CS = 0;
 120   1              LAddr = (unsigned char)Addr;
 121   1              HAddr = Addr>>8;
 122   1              Temp = (READ_INST&0xF7)|((HAddr<<3)&0x08);
 123   1              OutByte(Temp);
 124   1              OutByte(LAddr);
 125   1              Temp = InByte();
 126   1              SCK= 0;
 127   1              CS  = 1;
 128   1              //Wip_Poll();
 129   1              return Temp;
 130   1      }
 131          
 132          
 133          /*****************************************************************/
 134          //对串行FLASH进行读校验
 135          /*******************************************************************/
 136          unsigned char ByteRead_Check (unsigned int addrR)
 137          {
 138   1        unsigned char TempVar,TempVar1,TempVar2;
 139   1        TempVar2=0;
 140   1        TempVar=Byte_read(addrR);
 141   1        do
 142   1        {
 143   2                      TempVar1=Byte_read(addrR);
 144   2              if(TempVar==TempVar1)
 145   2                 {
 146   3              TempVar2++;
 147   3                      }
 148   2              else 
 149   2                      {  
 150   3                              TempVar2=0;
 151   3                  TempVar=TempVar1;           
 152   3                      }
 153   2        }
 154   1        while(TempVar2<=3);
 155   1        return(TempVar);  
 156   1      }
 157          /************************************************/
 158          //对串行FLASH进行写校验
 159          /*************************************************************/
 160          void ByteWrite_Check (unsigned int addrW ,unsigned char VarTemp)
 161          {
 162   1              Byte_Write(addrW,VarTemp);    
 163   1        while(VarTemp!=Byte_read(addrW))
 164   1                      Byte_Write(addrW,VarTemp);      
 165   1      }
 166          
 167          //送一个字节到EEPROM
 168          void    OutByte(unsigned char b)
 169          {
 170   1              unsigned char i;
 171   1              unsigned char bb=0x80;
 172   1              for(i=0;i<8;i++)
 173   1              {
 174   2                      //SCK=0;
 175   2                      SI=b&bb;
 176   2                      bb>>=1;
 177   2                      SCK=0;
 178   2                      Delay5();
 179   2                      SCK=1;
C51 COMPILER V7.05   E25045                                                                03/01/2002 11:49:00 PAGE 4   

 180   2                      Delay5();
 181   2              }       
 182   1      }
 183          
 184          //从EEPROM接收一个字节
 185          unsigned char InByte(void)
 186          {
 187   1              unsigned char i;
 188   1              unsigned char b=0;
 189   1              for(i=0;i<8;i++)
 190   1              {
 191   2                      Delay5();
 192   2                      SCK=1;
 193   2                      SCK=0;
 194   2                      Delay5();
 195   2                      b=2*b+(unsigned char)SO;
 196   2              }
 197   1              return b;       
 198   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    334    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      15
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -