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

📄 ds1307.lst

📁 ds1307 driver by c clock chip
💻 LST
字号:
C51 COMPILER V7.04   DS1307                                                                03/04/2006 08:52:54 PAGE 1   


C51 COMPILER V7.04, COMPILATION OF MODULE DS1307
OBJECT MODULE PLACED IN DS1307.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1307.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "ds1307.h"
   2          #include "viic.h"
   3          #include <string.h>
   4          
   5          
   6          
   7          extern uchar g_valuearr[8];
   8          
   9          //读写任意位置ram
  10          uchar Ds1307ReadRam(uchar addr,uchar *Buffer,uchar Length);
  11          uchar Ds1307WriteRam(uchar addr,uchar *Buffer,uchar Length);
  12          
  13          //初始化时钟芯片
  14          uchar Ds1307Init(void);
  15          
  16          //声音及模式
  17          uchar ReadSpeakMode(uchar *mode);
  18          uchar SetSpeakMode(uchar mode);
  19          uchar open_speak();
  20          uchar close_speak();
  21          
  22          //读写时间信息
  23          //time[]={century year month day hour minute seconds week}
  24          uchar read_alltime(uchar *time);
  25          //time[]={century year month day hour minute seconds week}
  26          uchar  write_alltime(uchar *time);
  27          
  28          
  29          
  30          uchar Ds1307ReadRam(uchar addr,uchar *Buffer,uchar Length)
  31          {
  32   1              if(IRcvStr(DS1307_DEVICEADDR,addr,Buffer,Length))
  33   1              {
  34   2                      return ID_OK;
  35   2              }
  36   1              else
  37   1              {
  38   2                      return ID_ERR;
  39   2              }
  40   1              
  41   1      }
  42          uchar Ds1307WriteRam(uchar addr,uchar *Buffer,uchar Length)
  43          {
  44   1      
  45   1              if(ISendStr(DS1307_DEVICEADDR,addr,Buffer,Length))
  46   1              {
  47   2                      return ID_OK;
  48   2              }
  49   1              else
  50   1              {
  51   2                      return ID_ERR;
  52   2              }
  53   1              
  54   1      }
  55          
C51 COMPILER V7.04   DS1307                                                                03/04/2006 08:52:54 PAGE 2   

  56          
  57          uchar Ds1307Init(void)
  58          {
  59   1              idata uchar strTemp[8];
  60   1      
  61   1              if(Ds1307ReadRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
  62   1              
  63   1              //初始化控制字  
  64   1              strTemp[0]=(strTemp[0]&0x03);//SQW,OUT
  65   1              if(Ds1307WriteRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
  66   1      
  67   1              return ID_OK;
  68   1      
  69   1      }
  70          
  71          
  72          //time[]={century year month day hour minute seconds week}
  73          uchar read_alltime(uchar *time)
  74          {
  75   1          
  76   1              
  77   1              idata uchar strTemp[8];
  78   1      
  79   1              if(Ds1307ReadRam(0x00,strTemp,7)!=ID_OK)return ID_ERR;
  80   1      
  81   1              memcpy(g_valuearr,strTemp,7);
  82   1                 
  83   1          time[0]=0X20;                               //CENTURY ;
  84   1          time[1]=strTemp[6];                 //year
  85   1          time[2]=strTemp[5];                 //mon
  86   1          time[3]=strTemp[4];                 //day
  87   1          time[4]=(strTemp[2]&0x3f);  //hour
  88   1          time[5]=(strTemp[1]&0x7f);  //min
  89   1          time[6]=(strTemp[0]&0x7f);  //sec
  90   1          time[7]=strTemp[3];                 //week
  91   1      
  92   1      
  93   1      
  94   1          return ID_OK ;    
  95   1          
  96   1      }
  97          
  98          //time[]={century year month day hour minute seconds week}
  99          uchar  write_alltime(uchar *time)
 100          {
 101   1          
 102   1          
 103   1              idata uchar strTemp[8];
 104   1       
 105   1              //关掉crystal   
 106   1              //if(Ds1307ReadRam(0x00,strTemp,1)!=ID_OK)return ID_ERR;
 107   1              //strTemp[0]=(strTemp[0]|0x80); //CH关掉
 108   1              //if(Ds1307WriteRam(0x00,strTemp,1)!=ID_OK)return ID_ERR;
 109   1              
 110   1      
 111   1              //构造数据    
 112   1              strTemp[6]=time[1];             //year
 113   1          strTemp[5]=time[2];         //mon
 114   1          strTemp[4]=time[3];         //day
 115   1              strTemp[2]=time[4];             //hour
 116   1              strTemp[1]=time[5];             //min
 117   1              strTemp[0]=time[6];             //sec
C51 COMPILER V7.04   DS1307                                                                03/04/2006 08:52:54 PAGE 3   

 118   1              strTemp[3]=time[7];             //week
 119   1      
 120   1              //写时钟
 121   1              strTemp[0]=(strTemp[0]&0x7f);//写同时开时钟
 122   1              if(Ds1307WriteRam(0x00,strTemp,7)!=ID_OK)return ID_ERR; 
 123   1      
 124   1      
 125   1              return ID_OK ;    
 126   1       
 127   1      }
 128          
 129          uchar ReadSpeakMode(uchar *mode)
 130          {
 131   1      
 132   1              xdata uchar strTemp[8];  
 133   1          
 134   1              if(Ds1307ReadRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
 135   1              *mode=(strTemp[0]&0x03);   
 136   1          
 137   1          return ID_OK ;
 138   1          
 139   1      }
 140          
 141          uchar SetSpeakMode(uchar mode)
 142          {
 143   1          
 144   1          xdata uchar strTemp[8];  
 145   1          
 146   1          if(Ds1307ReadRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;   
 147   1              strTemp[0]=(strTemp[0]&0xfc)+mode;
 148   1              if(Ds1307WriteRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
 149   1              return ID_OK ;   
 150   1          
 151   1      }
 152          
 153          uchar open_speak()
 154          {
 155   1              xdata uchar strTemp[8];  
 156   1          
 157   1          if(Ds1307ReadRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;   
 158   1              strTemp[0] |= 0x10;
 159   1              if(Ds1307WriteRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
 160   1              return ID_OK ;      
 161   1          
 162   1      }
 163          uchar close_speak()
 164          {
 165   1          
 166   1              xdata uchar strTemp[8];  
 167   1          
 168   1          if(Ds1307ReadRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;   
 169   1              strTemp[0] &= 0xef;
 170   1              if(Ds1307WriteRam(0x07,strTemp,1)!=ID_OK)return ID_ERR;
 171   1              return ID_OK ;         
 172   1      
 173   1      }
 174          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    470    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.04   DS1307                                                                03/04/2006 08:52:54 PAGE 4   

   XDATA SIZE       =   ----      32
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   IDATA SIZE       =   ----      24
   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 + -