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

📄 ds1302.lst

📁 51edn开发板程序
💻 LST
字号:
C51 COMPILER V7.50   DS1302                                                                06/02/2008 20:59:14 PAGE 1   


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

line level    source

   1          /******************************************************************
   2             本程序只供学习使用,未经作者许可,不得用于其它任何用途
   3                                  
   4                          欢迎访问我的USB专区:http://group.ednchina.com/93/
   5                          欢迎访问我的blog:   http://www.ednchina.com/blog/computer00
   6                                                                   http://computer00.21ic.org
   7                                                                                                                                                                                                                                                  
   8          DS1302.C  file
   9          
  10          作者:Computer-lov
  11          建立日期: 2008.05.19
  12          修改日期: 2008.05.19
  13          版本:V1.0
  14          版权所有,盗版必究。
  15          Copyright(C) Computer-lov 2008-2018
  16          All rights reserved
  17          *******************************************************************/
  18          
  19          #include <intrins.h>
  20          #include <at89x52.h>
  21          #include "ds1302.h"
  22          #include "MyType.h"
  23          
  24          /********************************************************************
  25          函数功能:DS1302写一字节函数。
  26          入口参数:一字节数据。
  27          返    回:无。
  28          备    注:RST脚要先设置好。
  29          ********************************************************************/
  30          void DS1302WriteByte(uint8 d)
  31          {
  32   1              uint8 i;
  33   1              for(i=0;i<8;i++)
  34   1              {
  35   2                      if(d&0x01)
  36   2                      {
  37   3                              DS_IO=1;
  38   3                      }
  39   2                      else
  40   2                      {
  41   3                              DS_IO=0;
  42   3                      }
  43   2                      DS_SCLK=1;
  44   2                      _nop_();
  45   2                      DS_SCLK=0;
  46   2                      d>>=1;
  47   2              }
  48   1              DS_IO=1;
  49   1      }
  50          ////////////////////////End of function//////////////////////////////
  51          
  52          /********************************************************************
  53          函数功能:DS1302读一字节函数。
  54          入口参数:无。
  55          返    回:一字节数据。
C51 COMPILER V7.50   DS1302                                                                06/02/2008 20:59:14 PAGE 2   

  56          备    注:RST要先设置好。
  57          ********************************************************************/
  58          uint8 DS1302ReadByte(void)
  59          {
  60   1              uint8 i,d;
  61   1              for(i=0;i<8;i++)
  62   1              {
  63   2                      d>>=1;
  64   2                      if(DS_IO)
  65   2                      {
  66   3                              d|=0x80;
  67   3                      }
  68   2                      DS_SCLK=1;
  69   2                      _nop_();
  70   2                      DS_SCLK=0;
  71   2              }
  72   1              return(d);
  73   1      }
  74          ////////////////////////End of function//////////////////////////////
  75          
  76          uint8 Time[7];
  77          
  78          /********************************************************************
  79          函数功能:获取时间函数。
  80          入口参数:保存时间的指针。
  81          返    回:无。
  82          备    注:无。
  83          ********************************************************************/
  84          void GetTime(uint8 *p)
  85          {
  86   1              uint8 i;
  87   1              DS_SCLK=0;
  88   1              DS_RST=1;
  89   1              DS1302WriteByte(0xBF); //Burst read ??只写一次不行,返回全1。
  90   1              DS_RST=0;
  91   1              DS_SCLK=0;
  92   1              
  93   1              DS_RST=1;
  94   1              DS1302WriteByte(0xBF); //Burst read
  95   1              for(i=0;i<7;i++)
  96   1              {
  97   2                      p[i]=DS1302ReadByte();
  98   2              }
  99   1              DS_RST=0;
 100   1              DS_SCLK=0;
 101   1      }
 102          ////////////////////////End of function//////////////////////////////
 103          
 104          /********************************************************************
 105          函数功能:设置时间函数。
 106          入口参数:设置时间的数据指针。
 107          返    回:无。
 108          备    注:。
 109          ********************************************************************/
 110          void SetTime(uint8 *p)
 111          {
 112   1              uint8 i;
 113   1              DS_SCLK=0;
 114   1              DS_RST=1;
 115   1              p[0]&=0x7F; //启动
 116   1              p[2]&=0x7F; //24小时制
 117   1              DS1302WriteByte(0xBE); //Burst write
C51 COMPILER V7.50   DS1302                                                                06/02/2008 20:59:14 PAGE 3   

 118   1              for(i=0;i<7;i++)
 119   1              {
 120   2                      DS1302WriteByte(p[i]);
 121   2              }
 122   1              DS1302WriteByte(0x00);
 123   1              DS_RST=0;
 124   1              DS_SCLK=0;
 125   1      }
 126          ////////////////////////End of function//////////////////////////////
 127          
 128          /********************************************************************
 129          函数功能:DS1302初始化函数。
 130          入口参数:无。
 131          返    回:无。
 132          备    注:无。
 133          ********************************************************************/
 134          void DS1302Init(void)
 135          {
 136   1              uint8 x;
 137   1              DS_RST=0;
 138   1              DS_SCLK=0;
 139   1              DS_RST=1;
 140   1              DS1302WriteByte(0x8E); //写WP
 141   1              DS1302WriteByte(0x00);
 142   1              DS_RST=0;
 143   1              DS_SCLK=0;
 144   1              
 145   1              DS_RST=1;
 146   1              DS1302WriteByte(0x81); //读地址0
 147   1              x=DS1302ReadByte();
 148   1              DS_RST=0;
 149   1              DS_SCLK=0;
 150   1              
 151   1              x&=0x7F;
 152   1              
 153   1              DS_RST=1;
 154   1              DS1302WriteByte(0x80); //写地址0
 155   1              DS1302WriteByte(x);
 156   1              DS_RST=0;
 157   1              DS_SCLK=0;
 158   1              
 159   1              DS_RST=1;
 160   1              DS1302WriteByte(0x90); //充电控制
 161   1              DS1302WriteByte(0xA5);
 162   1              DS_RST=0;
 163   1              DS_SCLK=0;
 164   1      }
 165          ////////////////////////End of function//////////////////////////////


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