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

📄 ds1302.lst

📁 51单片机实现的温湿度采集监控
💻 LST
字号:
C51 COMPILER V8.08   DS1302                                                                01/11/2009 23:45:34 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: F:\Keil\C51\BIN\C51.EXE DS1302.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<DS1302.h>
   2          #include<reg52.h>
   3          
   4          sbit ACC0       =ACC^0;
   5          sbit ACC7       = ACC^7;
   6          sbit DS_CLK     = P1^0;
   7          sbit DS_IO      = P1^1;
   8          sbit DS_RST     = P1^2;
   9          
  10          /******************************************************************** 
  11          函 数 名:RTInputByte()
  12          功    能:实时时钟写入一字节
  13          说    明:往DS1302写入1Byte数据 (内部函数)
  14          入口参数:d 写入的数据 
  15          返 回 值:无  
  16          ***********************************************************************/
  17          void RTInputByte(uchar d) 
  18          { 
  19   1          uchar i;
  20   1          ACC = d;
  21   1          for(i=8; i>0; i--)
  22   1          {
  23   2              DS_IO = ACC0;           /*相当于汇编中的 RRC */
  24   2              DS_CLK = 1;
  25   2              DS_CLK = 0;
  26   2              ACC = ACC >> 1; 
  27   2          } 
  28   1      }
  29          /******************************************************************** 
  30          函 数 名:RTOutputByte()
  31          功    能:实时时钟读取一字节
  32          说    明:从DS1302读取1Byte数据 (内部函数)
  33          入口参数:无  
  34          返 回 值:ACC
  35          设    计:zhaojunjie           日    期:2002-03-19
  36          修    改:                     日    期: 
  37          ***********************************************************************/
  38          uchar RTOutputByte(void) 
  39          { 
  40   1          uchar i;
  41   1          for(i=8; i>0; i--)
  42   1          {
  43   2              ACC = ACC >>1;         /*相当于汇编中的 RRC */
  44   2              ACC7 = DS_IO;
  45   2              DS_CLK = 1;
  46   2              DS_CLK = 0;
  47   2          } 
  48   1          return(ACC); 
  49   1      }
  50          /******************************************************************** 
  51          函 数 名:W1302()
  52          功    能:往DS1302写入数据
  53          说    明:先写地址,后写命令/数据 (内部函数)
  54          调    用:RTInputByte() , RTOutputByte()
  55          入口参数:ucAddr: DS1302地址, ucData: 要写的数据
C51 COMPILER V8.08   DS1302                                                                01/11/2009 23:45:34 PAGE 2   

  56          返 回 值:无
  57          ***********************************************************************/
  58          void W1302(uchar ucAddr, uchar ucDa)
  59          {
  60   1          DS_RST = 0;
  61   1          DS_CLK = 0;
  62   1          DS_RST = 1;
  63   1          RTInputByte(ucAddr);       /* 地址,命令 */
  64   1          RTInputByte(ucDa);       /* 写1Byte数据*/
  65   1          DS_CLK = 1;
  66   1          DS_RST = 0;
  67   1      }
  68          /******************************************************************** 
  69          函 数 名:R1302()
  70          功    能:读取DS1302某地址的数据
  71          说    明:先写地址,后读命令/数据 (内部函数)
  72          调    用:RTInputByte() , RTOutputByte()
  73          入口参数:ucAddr: DS1302地址
  74          返 回 值:ucData :读取的数据
  75          ***********************************************************************/
  76          uchar R1302(uchar ucAddr)
  77          {
  78   1          uchar ucData;
  79   1          DS_RST = 0;
  80   1          DS_CLK = 0;
  81   1          DS_RST = 1;
  82   1          RTInputByte(ucAddr);             /* 地址,命令 */
  83   1          ucData = RTOutputByte();         /* 读1Byte数据 */
  84   1          DS_CLK = 1;
  85   1          DS_RST = 0;
  86   1          return(ucData);
  87   1      }
  88          
  89          /******************************************************************** 
  90          函 数 名:Set1302()
  91          功    能:设置初始时间
  92          说    明:先写地址,后读命令/数据(寄存器多字节方式)
  93          调    用:W1302()
  94          入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年
  95                                         7Byte (BCD码)1B 1B 1B 1B 1B  1B  1B
  96          返 回 值:无
  97          ***********************************************************************/
  98          void Set1302(uchar *pClock) 
  99          {
 100   1          uchar i;
 101   1          uchar ucAddr = 0x80; 
 102   1          W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作*/
 103   1          for(i =7; i>0; i--)
 104   1          { 
 105   2              W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
 106   2              pClock++;
 107   2              ucAddr +=2;
 108   2          }
 109   1          W1302(0x8e,0x80);           /* 控制命令,WP=1,写保护*/
 110   1      }
 111          /*
 112          void Get1302(uchar *pTime)
 113          {
 114                  uchar i;
 115                  uchar ucAddr = 0x81;
 116                  for(i=7;i>0;i--)
 117                  {
C51 COMPILER V8.08   DS1302                                                                01/11/2009 23:45:34 PAGE 3   

 118                          *pTime=R1302(ucAddr);
 119                          pTime++;
 120                          ucAddr+=2;
 121                  }
 122          }                 
 123          */


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