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

📄 x5045.lst

📁 X5045的底层驱动
💻 LST
字号:
C51 COMPILER V7.50   X5045                                                                 01/07/2008 11:13:13 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN x5045.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE x5045.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          /*-------------------------------------------
   4          //X5045状态字定义
   5          #define WREN_INST 0x06          //写允许命令
   6          #define WRDI_INST 0x04          //写禁止
   7          #define WRSR_INST 0x01          //写状态寄存器命令
   8          #define RDSR_INST 0x05          //读状态寄存器命令
   9          #define WRITE_INST 0x02         //写存储器命令
  10          #define RDAD_INST 0x03          //读存储器命令  
  11          #define MAX_POLL 0x99           //测试的最大次数
  12          //-------------------------------------------*/
  13          
  14          sbit CS_5045=P1^4;
  15          sbit SIO=P1^1;
  16          sbit CLK=P1^0;
  17          sfr16 DPTR=0x82;
  18          unsigned char time;
  19          unsigned char eeprom_data;
  20          void timer0_int(void) interrupt 1
  21          {
  22   1              TH0=0xdc;
  23   1              TL0=0x00;
  24   1              if(time--==0)
  25   1                      {
  26   2                              time=100;
  27   2                      }
  28   1      }
  29          void mDelay(unsigned int DelayTime)
  30          {
  31   1              unsigned char j=0;
  32   1              for(;DelayTime>0;DelayTime--)
  33   1              {
  34   2                      for(j=0;j<125;j++)
  35   2                      {;}
  36   2              }
  37   1      }
  38          
  39          //----------------------------------------------------
  40          //名称:clear_dog
  41          //功能:x5045看门狗定时器复位子程序
  42          //
  43          //----------------------------------------------------
  44          void clear_dog(void)
  45          {
  46   1              CS_5045=1;
  47   1              _nop_();_nop_();
  48   1              CS_5045=0;
  49   1              _nop_();_nop_();
  50   1              CS_5045=1;
  51   1      }
  52          //----------------------------------------------------
  53          //名称:read_dog
  54          //功能:读x5045,1字节数据子程序
  55          //rd为读出数
C51 COMPILER V7.50   X5045                                                                 01/07/2008 11:13:13 PAGE 2   

  56          //----------------------------------------------------
  57          unsigned char read_dog(void)
  58          {
  59   1              unsigned char n,rd;
  60   1              for(n=0;n<8;n++){
  61   2                      CLK=1;
  62   2                      _nop_();_nop_();
  63   2                      CLK=0;
  64   2                      if(SIO==1)
  65   2                              rd|=0x01;
  66   2                      else
  67   2                              rd&=0xFE;
  68   2                      if(n<7)
  69   2                      rd=rd<<1;}
  70   1              return rd;
  71   1      }
  72          //----------------------------------------------------
  73          //名称:write_dog
  74          //功能:写x5045,1字节数据子程序
  75          //wr为写入数
  76          //----------------------------------------------------
  77          void write_dog(unsigned char wr)
  78          {
  79   1              unsigned char n;
  80   1              for(n=0;n<8;n++){       
  81   2              CLK=0;
  82   2                      if(wr&0x80)
  83   2                              SIO=1;
  84   2                      else 
  85   2                              SIO=0;
  86   2                      CLK=1;
  87   2                      wr=wr<<1;}
  88   1      }
  89          //----------------------------------------------------
  90          //名称:write_enable
  91          //功能:写x5045使能允许子程序
  92          //
  93          //----------------------------------------------------
  94          void write_enable(void)
  95          {
  96   1              CLK=0;
  97   1              CS_5045=0;
  98   1              write_dog(0x06);/*写使能锁存器*/
  99   1              CLK=0;
 100   1              CS_5045=1;
 101   1      }
 102          //读写状态寄存器或E2PROM操作函数-----------------------
 103          //-----------------------------------------------------
 104          //名称:read_dogstate
 105          //功能:x5045读状态寄存器子程序
 106          //status为返回状态字
 107          //----------------------------------------------------
 108          unsigned char read_dogstate(void)
 109          {
 110   1              unsigned char status;   
 111   1              CLK=0;  
 112   1              CS_5045=0;
 113   1              write_dog(0x05);        /*RSDR,读状态寄存器*/
 114   1              status=read_dog();      /*读出状态字节*/
 115   1              CLK=0;
 116   1              CS_5045=1;
 117   1              return status;          
C51 COMPILER V7.50   X5045                                                                 01/07/2008 11:13:13 PAGE 3   

 118   1      }
 119          //----------------------------------------------------
 120          //名称:write_dogstatus
 121          //功能:x5045写状态寄存器子程序
 122          //wr为写入状态
 123          //----------------------------------------------------
 124          void write_dogstate(unsigned char wr)
 125          {
 126   1              unsigned char status;
 127   1              do{status=read_dogstate();}
 128   1              while(status&0x01);
 129   1              write_enable();  /*写使能允许*/ 
 130   1              CLK=0;
 131   1              CS_5045=0;
 132   1              write_dog(0x01); /*WRSR,写状态寄存器*/
 133   1              write_dog(wr);  /*写状态字节*/
 134   1              CLK=0;
 135   1              CS_5045=1;
 136   1      }
 137          //----------------------------------------------------
 138          //名称:read_dogdata
 139          //功能:读x5045单元指定位置1字节数据子程序
 140          //com为读出数
 141          //addr为指定地址
 142          //----------------------------------------------------
 143          unsigned char read_dogdata(unsigned int addr)
 144          {
 145   1              unsigned char com;
 146   1              DPTR=addr;
 147   1              CLK=0;
 148   1              CS_5045=0;
 149   1              com=0x03;
 150   1              if(DPH&0x01)
 151   1                      com|=0x08;
 152   1              write_dog(com);  
 153   1              write_dog(DPL);  /*写数据起始地址*/
 154   1              com=read_dog();  /*读数据*/
 155   1              CLK=0;
 156   1              CS_5045=1;
 157   1              return com;
 158   1      }
 159          //----------------------------------------------------
 160          //名称:write_dogdata
 161          //功能:向x5045单元指定位置写1字节数据子程序
 162          //wr为写入数
 163          //addr为指定地址
 164          //----------------------------------------------------
 165          void write_dogdata(unsigned int addr,unsigned char wr)
 166          {
 167   1              unsigned char status;
 168   1              do{status=read_dogstate();}
 169   1              while(status&0x01);
 170   1              write_enable();  /*WREN,写使能允许*/ 
 171   1              DPTR=addr;
 172   1              CLK=0;
 173   1              CS_5045=0;
 174   1              status=0x02;
 175   1              if(DPH&0x01)
 176   1                      status|=0x08;
 177   1              write_dog(status);      /*WRITE,写数据命令*/
 178   1              write_dog(DPL); /*写数据起始地址*/
 179   1              write_dog(wr);  /*写数据*/
C51 COMPILER V7.50   X5045                                                                 01/07/2008 11:13:13 PAGE 4   

 180   1              CLK=0;
 181   1              CS_5045=1;
 182   1      }
 183          
 184          main()
 185          {
 186   1      //      CKCON=0x00;     //时钟控制
 187   1      //      AUXR=0x01;      //      禁止ALE输出
 188   1              P0=0xff;
 189   1              P1=0xff;
 190   1              P2=0xff;
 191   1      //      P3=0xff;
 192   1      /*  设置t0 */
 193   1              mDelay(1000);
 194   1              TMOD=0x21;
 195   1              TH0=0xdc;
 196   1              TL0=0x00;
 197   1      
 198   1              IE=0x82;
 199   1              IP=0x02;
 200   1              TR0=1;
 201   1              EA=1;
 202   1              
 203   1              time=100;
 204   1              clear_dog();
 205   1              mDelay(1000);
 206   1              write_dogstate(0x00);
 207   1      
 208   1              while(1)
 209   1              {       
 210   2                      write_dogdata(0x0001,0xaa);
 211   2                      eeprom_data=read_dogdata(0x0001);
 212   2                      mDelay(1000);
 213   2                      write_dogdata(0x0003,0x55);
 214   2                      eeprom_data=read_dogdata(0x0003);
 215   2                      mDelay(1000);   //1s
 216   2                      //      LED=!LED;
 217   2              }
 218   1      }
 219          
 220          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    384    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      2    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -