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

📄 ds1302.lst

📁 DS1302时钟芯片的驱动程序。希望对各位仁兄有用
💻 LST
字号:
C51 COMPILER V8.02   DS1302                                                                10/31/2008 10:53:39 PAGE 1   


C51 COMPILER V8.02, 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          #include "ds1302.h"
   2          #include <reg52.h>
   3          #define uchar unsigned char
   4          #define uchar unsigned char
   5          /* -----------------------------------------------------------------------
   6          */
   7          void rt_reset()//复位DS1302
   8          {
   9   1      DSCK = 0;
  10   1      DSRST = 0;
  11   1      DSRST = 1;
  12   1      }
  13          /* --------------------------------------------------------------------- */
  14          void rt_wbyte(uchar W_Byte)//写一个字节的内容到ds1302 中
  15          {
  16   1      uchar i;
  17   1      for(i = 0; i < 8; ++i)
  18   1      {
  19   2      DSIO = 0;
  20   2      if(W_Byte & 0x01)
  21   2      {
  22   3      DSIO = 1; /* set port pin high to read data */
  23   3      }
  24   2      DSCK = 0;
  25   2      DSCK = 1;
  26   2      W_Byte >>= 1;
  27   2      }
  28   1      }
  29          /* -----------------------------------------------------------------------*/
  30          uchar rt_rbyte()//从ds1302 中读一个字节的信息
  31          {
  32   1      uchar i;
  33   1      uchar R_Byte;
  34   1      R_Byte = 0x00;
  35   1      DSIO = 1;
  36   1      for(i=0; i<8; ++i)
  37   1      {
  38   2      R_Byte >>= 1;
  39   2      DSCK = 1;
  40   2      DSCK = 0;
  41   2      if(DSIO){
  42   3      R_Byte |= 0x80;
  43   3      }
  44   2      }
  45   1      return R_Byte;
  46   1      }
  47          /* ----------------------------------------- */
  48          void GetTime(struct time *p)//读DS1302 内部的时间信息,存在结构指针*p 中
  49          {
  50   1      rt_reset();
  51   1      rt_wbyte(0xbf); /* clock burst read (eight registers) */
  52   1      p->sec = rt_rbyte();//秒
  53   1      p->minute = rt_rbyte();//分
  54   1      p->hour = rt_rbyte();//时
  55   1      p->date = rt_rbyte(); //date,星期
C51 COMPILER V8.02   DS1302                                                                10/31/2008 10:53:39 PAGE 2   

  56   1      p->month = rt_rbyte();//月
  57   1      p->week = rt_rbyte(); //day,日
  58   1      p->year = rt_rbyte();//年
  59   1      rt_rbyte(); /* must read control register in
  60   1      burst mode */
  61   1      rt_reset();
  62   1      DSRST = 0;
  63   1      }
  64          /* ----------------------------------------- */
  65          void SetTime(struct time *p)//将结构指针p 中的时间写入DS1302,更新其内部的时间
  66          {
  67   1      rt_reset();
  68   1      rt_wbyte(0x8e); /* control register */
  69   1      rt_wbyte(0); /* disable write protect */
  70   1      rt_reset();
  71   1      rt_wbyte(0xbe); /* clock burst write (eight registers) */
  72   1      rt_wbyte(p->sec);
  73   1      rt_wbyte(p->minute);
  74   1      rt_wbyte(p->hour);
  75   1      rt_wbyte(p->date); //date
  76   1      rt_wbyte(p->month);
  77   1      rt_wbyte(p->week); //day
  78   1      rt_wbyte(p->year);
  79   1      rt_wbyte(0x80); /* must write control register in burst mode,enable write protect*/
  80   1      rt_reset();
  81   1      DSRST = 0;
  82   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    197    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   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 + -