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

📄 ds1302.lst

📁 基于51单片机的时钟芯片DS1302的驱动程序。。。希望对大家有用
💻 LST
字号:
C51 COMPILER V8.02   DS1302                                                                05/27/2008 11:54:25 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: d:\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          */
  31          uchar rt_rbyte()//从ds1302 中读一个字节的信息
  32          {
  33   1      uchar i;
  34   1      uchar R_Byte;
  35   1      R_Byte = 0x00;
  36   1      DSIO = 1;
  37   1      for(i=0; i<8; ++i)
  38   1      {
  39   2      R_Byte >>= 1;
  40   2      DSCK = 1;
  41   2      DSCK = 0;
  42   2      if(DSIO){
  43   3      R_Byte |= 0x80;
  44   3      }
  45   2      }
  46   1      return R_Byte;
  47   1      }
  48          /* ----------------------------------------- */
  49          void GetTime(struct time *p)//读DS1302 内部的时间信息,存在结构指针*p 中
  50          {
  51   1      rt_reset();
  52   1      rt_wbyte(0xbf); /* clock burst read (eight registers) */
  53   1      p->sec = rt_rbyte();//秒
  54   1      p->minute = rt_rbyte();//分
  55   1      p->hour = rt_rbyte();//时
C51 COMPILER V8.02   DS1302                                                                05/27/2008 11:54:25 PAGE 2   

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


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