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

📄 ds1302.lst

📁 proteus 数字时钟 ds1302
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   DS1302                                                               08/07/2007 23:36:32 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\DS1302.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\DS1302.
                    -lst) OBJECT(DS1302.obj)

line level    source

   1          //*************************************************************************************************
   2          //*                                                                                                                                                                                               *
   3          //*                             ***************************DS1302驱动程序*************************                                *
   4          //*                                                                                                                                                                                               *
   5          //*************************************************************************************************
   6          
   7          
   8          //*************************************************************************************************
   9          //*                                                                                                                                                                                               *
  10          //*                      ******************************头文件及宏定义**************************                           *
  11          //*                                                                                                                                                                                               *
  12          //*************************************************************************************************
  13          #include <at89x51.h>
  14          
  15          #define DSIO P1_2                                          //实时时钟数据线引脚
  16          #define DSCLK P1_1                                         //实时时钟时钟线引脚 
  17          #define DSRST P1_0                                         //实时时钟复位线引脚
  18          
  19          #define DS_SECOND       0x80                       //DS1302数据地址。
  20          #define DS_MINUTE       0x82
  21          #define DS_HOUR         0x84 
  22          #define DS_WEEK         0x8A
  23          #define DS_DAY          0x86
  24          #define DS_MONTH        0x88
  25          #define DS_YEAR         0x8C
  26          
  27          
  28          //*************************************************************************************************
  29          //*                                                                                                                                                                                               *
  30          //*                       ********************************全局变量******************************                          *
  31          //*                                                                                                                                                                                               *
  32          //*************************************************************************************************       
             -     
  33          sbit  ACC0 = ACC^0;
  34          sbit  ACC7 = ACC^7;
  35          
  36          typedef struct TIME                       //定义的时间类型
  37          {
  38                  unsigned char ucSecond;
  39                  unsigned char ucMinute;
  40                  unsigned char ucHour;
  41                  unsigned char ucWeek;
  42                  unsigned char ucDay;
  43                  unsigned char ucMonth;
  44                  unsigned char ucYear;
  45                  unsigned char ucaDateString[9];
  46                  unsigned char ucaTimeString[9];
  47          }TIME;  
  48          
  49          
  50          
  51          //*************************************************************************************************
  52          //*                                                                                                                                                                                               *
  53          //*                      *********************实时时钟写入一字节(内部函数)*************************                       *
C51 COMPILER V8.05a   DS1302                                                               08/07/2007 23:36:32 PAGE 2   

  54          //*                                                                                                                                                                                               *
  55          //*************************************************************************************************
  56          void vWriteByte(unsigned char ucByte) 
  57          { 
  58   1          unsigned char ucCount;
  59   1      
  60   1          ACC = ucByte;
  61   1      
  62   1          for(ucCount=8;ucCount>0;ucCount--)
  63   1          {
  64   2              DSIO = ACC0;                              //把累加器第0位赋给DSIO口。
  65   2      
  66   2              DSCLK = 1;                                                //DSCLK下降沿,写入数据。
  67   2              DSCLK = 0;
  68   2      
  69   2              ACC = ACC >> 1;                                   //把累加器里的数据右移一位。
  70   2          } 
  71   1      }
  72          
  73          
  74          //*************************************************************************************************
  75          //*                                                                                                                                                                                               *
  76          //*                      *********************实时时钟读入一字节(内部函数)************************                        *
  77          //*                                                                                                                                                                                               *
  78          //*************************************************************************************************
  79          unsigned char ucReadByte(void)  
  80          { 
  81   1          unsigned char ucCount;
  82   1      
  83   1          for(ucCount=8;ucCount>0;ucCount--)
  84   1          {
  85   2              ACC = ACC >>1;                     //把累加器右移一位。
  86   2                                      
  87   2              ACC7 = DSIO;                       //把DSIO的数据传给累加器最高位。
  88   2      
  89   2              DSCLK = 1;                                 //DSCLK下降沿读出数据。
  90   2              DSCLK = 0;
  91   2          } 
  92   1      
  93   1          return ACC; 
  94   1      }
  95          
  96          
  97          //*************************************************************************************************
  98          //*                                                                                                                                                                                               *
  99          //*                      *************************向实时时钟写入一字节***************************                         *
 100          //*                                                                                                                                                                                               *
 101          //*************************************************************************************************
 102          void vDSWriteDirect(unsigned char ucAddr, unsigned char ucData) //ucAddr: DS1302地址, ucData: 要写的数据
 103          {
 104   1          DSRST = 0;
 105   1          DSCLK = 0;
 106   1          DSRST = 1;
 107   1      
 108   1          vWriteByte(ucAddr);         // 地址,命令 
 109   1          vWriteByte(ucData);         // 写1Byte数据
 110   1      
 111   1          DSCLK = 1;
 112   1          DSRST = 0;
 113   1      } 
 114          
 115          //*************************************************************************************************
C51 COMPILER V8.05a   DS1302                                                               08/07/2007 23:36:32 PAGE 3   

 116          //*                                                                                                                                                                                               *
 117          //*                      *************************读取DS1302某地址的数据*************************                         *
 118          //*                                                                                                                                                                                               *
 119          //*************************************************************************************************
 120          unsigned char vDSReadDirect(unsigned char ucAddr)       
 121          {
 122   1          unsigned char ucData;
 123   1      
 124   1          DSRST = 0;
 125   1          DSCLK = 0;
 126   1          DSRST = 1;
 127   1      
 128   1          vWriteByte(ucAddr|0x01);        // 地址,命令 
 129   1          ucData = ucReadByte();         // 读1Byte数据
 130   1      
 131   1          DSCLK = 1;
 132   1          DSRST = 0;
 133   1      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -