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

📄 ds1302.lst

📁 这个也是51单片机的应用程序
💻 LST
字号:
C51 COMPILER V7.06   DS1302                                                                05/09/2007 10:46:29 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE ds1302.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************************************/ 
   2          /*                                                               */                                       
             -                         
   3          /*名称:                ds1302读写+显示程序                      */                                       
             -                                                                                                                        
             -            
   4          /*功能:           读写DS1302,通过LCD12864显示出来。            */                                       
             -             
   5          /*难度等级:                   高                                */                                       
             -                              
   6          /* 作者:                  zengrenliang                          */
   7          /* 版权:           http://www.51kaifa.com                       */
   8          /*编写日期:        2006.05.21                                   */                                       
             -                                                                                                                        
             -                                              
   9          /*****************************************************************/
  10          
  11          #include<reg52.h>
  12          #define uchar  unsigned char
  13          
  14          extern void delay(unsigned int i);
  15          /*********************************************************************/
  16          /*                                                                   */
  17          /* 实时时钟模块 时钟芯片型号:DS1302                                 */ 
  18          /*                                                                   */
  19          /*********************************************************************/
  20          sbit T_CLK = P1^0; /*实时时钟时钟线引脚 */
  21          sbit T_IO = P1^2;  /*实时时钟数据线引脚 */
  22          sbit lck = P3^5;   
  23          sbit ACC0 = ACC^0;
  24          sbit ACC7 = ACC^7;
  25          
  26          
  27          /*********************************************************************/ 
  28          /*                                                                   */
  29          /* 名称: v_RTInputByte                                               */
  30          /* 说明:                                                             */
  31          /* 功能: 往DS1302写入1Byte数据                                       */
  32          /* 调用:                                                             */
  33          /* 输入: ucDa 写入的数据                                             */ 
  34          /* 返回值: 无                                                        */
  35          /*********************************************************************/
  36          void v_RTInputByte(uchar ucDa) 
  37          { 
  38   1      uchar i;
  39   1      ACC = ucDa;
  40   1      for(i=8; i>0; i--)
  41   1      {
  42   2      T_IO = ACC0; /*相当于汇编中的 RRC */
  43   2      T_CLK = 1;
  44   2      T_CLK = 0;
  45   2      ACC = ACC >> 1; 
  46   2      } 
  47   1      }
  48          /*********************************************************************/ 
C51 COMPILER V7.06   DS1302                                                                05/09/2007 10:46:29 PAGE 2   

  49          /*                                                                   */
  50          /* 名称: uchar uc_RTOutputByte                                       */
  51          /* 说明:                                                             */
  52          /* 功能: 从DS1302读取1Byte数据                                       */
  53          /* 调用:                                                             */
  54          /* 输入:                                                             */
  55          /* 返回值: ACC                                                       */
  56          /*********************************************************************/
  57          uchar uc_RTOutputByte(void) 
  58          { 
  59   1      uchar i;
  60   1      for(i=8; i>0; i--)
  61   1      {
  62   2      ACC = ACC >>1; /*相当于汇编中的 RRC */
  63   2      ACC7 = T_IO;
  64   2      T_CLK = 1;
  65   2      T_CLK = 0;
  66   2      } 
  67   1      return(ACC); 
  68   1      }
  69          /*********************************************************************/ 
  70          /*                                                                   */
  71          /* 名称: v_W1302                                                     */
  72          /* 说明: 先写地址,后写命令/数据                                     */
  73          /* 功能: 往DS1302写入数据                                            */
  74          /* 调用: v_RTInputByte()                                             */
  75          /* 输入: ucAddr: DS1302地址, ucDa: 要写的数据                        */
  76          /* 返回值: 无                                                        */
  77          /*********************************************************************/
  78          void v_W1302(uchar ucAddr, uchar ucDa)
  79          {
  80   1      lck = 0;
  81   1      P1 = 0xdf;//RST = 0;
  82   1      lck = 1;
  83   1      
  84   1      T_CLK = 0;
  85   1      
  86   1      lck = 0;
  87   1      P1 = 0xff;//RST = 1;
  88   1      lck = 1;
  89   1      v_RTInputByte(ucAddr); /* 地址,命令 */
  90   1      v_RTInputByte(ucDa); /* 写1Byte数据*/
  91   1      T_CLK = 1;
  92   1      lck = 0;
  93   1      P1 = 0xdf;//RST = 0;
  94   1      lck = 1;
  95   1      } 
  96          /*********************************************************************/ 
  97          /*                                                                   */
  98          /* 名称: uc_R1302                                                    */
  99          /* 说明: 先写地址,后读命令/数据                                     */
 100          /* 功能: 读取DS1302某地址的数据                                      */
 101          /* 调用: v_RTInputByte() , uc_RTOutputByte()                         */
 102          /* 输入: ucAddr: DS1302地址                                          */
 103          /* 返回值: ucDa :读取的数据                                          */
 104          /*********************************************************************/
 105          uchar uc_R1302(uchar ucAddr)
 106          {
 107   1      uchar ucDa;
 108   1      
 109   1      lck = 0;
 110   1      P1 = 0xdf;//RST = 0;
C51 COMPILER V7.06   DS1302                                                                05/09/2007 10:46:29 PAGE 3   

 111   1      lck = 1;
 112   1      
 113   1      T_CLK = 0;
 114   1      
 115   1      lck = 0;
 116   1      P1 = 0xff;//RST = 1;
 117   1      lck = 1;
 118   1      v_RTInputByte(ucAddr); /* 地址,命令 */
 119   1      ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
 120   1      T_CLK = 1;
 121   1      lck = 0;
 122   1      P1 = 0xdf;//RST = 0;
 123   1      lck = 1;
 124   1      return(ucDa);
 125   1      }
 126          
 127          /*********************************************************************/ 
 128          /*                                                                   */
 129          /* 名称: v_Set1302                                                   */
 130          /* 说明:                                                             */
 131          /* 功能: 设置初始时间                                                */
 132          /* 调用: v_W1302()                                                   */
 133          /* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年*/
 134          /* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B                                */ 
 135          /* 返回值: 无                                                        */
 136          /*********************************************************************/
 137          void v_Set1302(uchar *pSecDa) 
 138          {
 139   1      uchar i;
 140   1      uchar ucAddr = 0x80; 
 141   1      v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 142   1      for(i =7;i>0;i--)
 143   1      { 
 144   2      v_W1302(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */
 145   2      
 146   2      pSecDa++;
 147   2      ucAddr +=2;
 148   2      }
 149   1      v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
 150   1      }
 151          /******************************************************************************/ 
 152          /*                                                                            */
 153          /* 名称: v_Get1302                                                            */
 154          /* 说明:                                                                      */
 155          /* 功能: 读取DS1302当前时间                                                   */
 156          /* 调用: uc_R1302()                                                           */
 157          /* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年  */ 
 158          /* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B                                         */
 159          /* 返回值: 无                                                                 */
 160          /******************************************************************************/
 161          void v_Get1302(uchar ucCurtime[]) 
 162          {
 163   1      uchar i;
 164   1      uchar ucAddr = 0x81;
 165   1      for (i=0;i<7;i++)
 166   1      {
 167   2      ucCurtime[i] = uc_R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
 168   2      ucAddr += 2;
 169   2      delay(100);
 170   2      }
 171   1      }
 172          /**************************************结束**************************************/ 
C51 COMPILER V7.06   DS1302                                                                05/09/2007 10:46:29 PAGE 4   



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