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

📄 x5045.lst

📁 Keil C51完整的128X64LCD显示的电子打铃仪代码,内含DS1302X5045等操作代码
💻 LST
字号:
C51 COMPILER V7.50   X5045                                                                 06/10/2006 08:26:04 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN X5045.OBJ
COMPILER INVOKED BY: D:\ExpertTools\Keil\C51\BIN\C51.EXE X5045.c OPTIMIZE(5,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define X5045_H
   2          #include "config.h"
   3          //--------------------------------------------------------------------------------------
   4          void flash()  //延时子程序
   5          {
   6   1         _NOP_();
   7   1         _NOP_();
   8   1      }
   9          
  10          //基本操作函数
  11          void STAX(void)//;启动X25045指令
  12          {   cs5045=1;
  13   1              flash();
  14   1              sck=0;
  15   1              flash();
  16   1          cs5045=0;
  17   1              flash();
  18   1      }
  19          void ENDX(void)//;结束X25045指令
  20          {   sck=0;
  21   1              flash();
  22   1          cs5045=1;
  23   1              flash();
  24   1              sck=1;
  25   1          flash();
  26   1      }
  27          
  28          #ifdef MYUSE
              //2)写状态寄存器子程序
              void write_dogstate(uint8 wr)
              {
                  WrReady();
              
                  write_enable();  /*写使能允许*/ 
                      sck=0;
                      cs5045=1;
                      flash();
                  cs5045=0;
                  write_dog(WRSR); /*WRSR,写状态寄存器*/
                  write_dog(wr);  /*写状态字节*/
                  sck=0;
                  cs5045=1;
              }
              void clear_dog(void)//1)看门狗定时器复位子程序
              {
                  cs5045=1;
                      flash();
                  cs5045=0;
                      flash();
                  cs5045=1;
              }
              #endif
  53          //2)读1字节数据子程序
  54          uint8 read_dog(void)
  55          {
C51 COMPILER V7.50   X5045                                                                 06/10/2006 08:26:04 PAGE 2   

  56   1          uint8 n;
  57   1          uint8 rd;
  58   1      
  59   1          for(n=8;n>0;n--)
  60   1              {
  61   2              sck=1;
  62   2                      flash();
  63   2              sck=0;
  64   2      
  65   2              if(so==1)
  66   2                  rd|=0x01;
  67   2              else
  68   2                  rd&=0xFE;
  69   2      
  70   2              if(n>1)rd=rd<<1;
  71   2              }
  72   1      
  73   1          return rd;
  74   1      }
  75          
  76          //3)写1字节数据子程序
  77          void write_dog(uint8 wr)
  78          {
  79   1          uint8 n;
  80   1          for(n=8;n>0;n--)
  81   1              {    
  82   2              sck=0;
  83   2      
  84   2              if(wr&0x80)
  85   2                  si=1;
  86   2              else 
  87   2                  si=0;
  88   2      
  89   2              sck=1;
  90   2              wr=wr<<1;
  91   2              }
  92   1      }
  93          
  94          //4)写使能允许子程序
  95          void write_enable(void)
  96          {
  97   1          STAX();
  98   1              sck=0;
  99   1          cs5045=0;
 100   1          write_dog(WREN);/*写使能锁存器*/
 101   1          sck=0;
 102   1          cs5045=1;
 103   1              ENDX();
 104   1      }
 105          
 106          //读写状态寄存器或E2PROM操作函数
 107          //1)读状态寄存器子程序
 108          uint8 read_dogstate(void)
 109          {
 110   1          uint8 status; 
 111   1          
 112   1              sck=0;    
 113   1          cs5045=0;
 114   1          write_dog(RSDR);    /*RSDR,读状态寄存器*/
 115   1          status=read_dog();    /*读出状态字节*/
 116   1          sck=0;
 117   1          cs5045=1;
C51 COMPILER V7.50   X5045                                                                 06/10/2006 08:26:04 PAGE 3   

 118   1      
 119   1          return status;         
 120   1      }
 121          
 122          void WrReady()
 123          {
 124   1              uint16 i=0;
 125   1              uint8 status;
 126   1      
 127   1              do
 128   1              {
 129   2                      status=read_dogstate();
 130   2                      i++;
 131   2              }while(status&0x01 && i<MAX_POLL);
 132   1      }
 133          
 134          
 135          
 136          //3)读单元指定位置1字节数据子程序
 137          uint8 EepromRead(uint16 addr)
 138          {
 139   1          uint8 com;
 140   1      
 141   1          STAX();
 142   1      
 143   1          DPTR=addr;
 144   1          sck=0;
 145   1          cs5045=0;
 146   1          com=0x03;
 147   1      
 148   1          if(DPH&0x01)com|=0x08;
 149   1      
 150   1          write_dog(com);  /*READ,读数据命令*/
 151   1          write_dog(DPL);  /*写数据起始地址*/
 152   1          com=read_dog();  /*读数据*/
 153   1          sck=0;
 154   1          cs5045=1;
 155   1          ENDX();
 156   1          return com;
 157   1      }
 158          
 159          //4)向单元指定位置写1字节数据子程序
 160          void EepromWrite(uint16 addr,uint8 wr)
 161          {
 162   1          uint8 status;
 163   1      
 164   1              WrReady();
 165   1      
 166   1          write_enable();  /*WREN,写使能允许*/ 
 167   1      
 168   1              DPTR=addr;
 169   1          sck=0;
 170   1          cs5045=0;
 171   1          status=0x02;
 172   1      
 173   1          if(DPH&0x01)status|=0x08;
 174   1      
 175   1          write_dog(status);    /*WRITE,写数据命令*/
 176   1      
 177   1          write_dog(DPL);    /*写数据起始地址*/
 178   1      
 179   1          write_dog(wr);    /*写数据*/
C51 COMPILER V7.50   X5045                                                                 06/10/2006 08:26:04 PAGE 4   

 180   1          
 181   1              sck=0;
 182   1      
 183   1          cs5045=1;
 184   1      }


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