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

📄 ds1302.lst

📁 基于51单片机
💻 LST
字号:
C51 COMPILER V6.12  DS1302                                                                 04/23/2008 15:12:07 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN D:\FSGUDO~1\单片机~1\DS1302~1\DS1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\FSGUDO~1\单片机~1\DS1302~1\DS1302.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          
   3          /*************************宏定义******************************/
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          
   7          /************************管脚定义******************************/
   8          sbit  DS1302_CLK = P1^6;              //实时时钟时钟线引脚 
   9          sbit  DS1302_IO  = P1^7;              //实时时钟数据线引脚 
  10          sbit  DS1302_RST = P1^5;              //实时时钟复位线引脚
  11          sbit  ACC0 = ACC^0;
  12          sbit  ACC7 = ACC^7;
  13          
  14          /************************DS1302数据地址************************/
  15          #define DS1302_SECOND	0x80
  16          #define DS1302_MINUTE	0x82
  17          #define DS1302_HOUR		0x84 
  18          #define DS1302_WEEK		0x8A
  19          #define DS1302_DATE		0x86
  20          #define DS1302_MONTH	   0x88
  21          #define DS1302_YEAR		0x8C
  22          
  23          /************************外部调用数组************************/
  24          //extern uchar data time[7];//秒,分,时,周,日,月,年
  25          
  26          
  27          /*******************DS1302InputByte()*******************/
  28          void DS1302InputByte(unsigned char d) 	//实时时钟写入一字节(内部函数)
  29          { 
  30   1          unsigned char i;
  31   1          ACC = d;
  32   1          for(i=8; i>0; i--)
  33   1          {
  34   2              DS1302_IO = ACC0;           	//相当于汇编中的 RRC
  35   2              DS1302_CLK = 1;
  36   2              DS1302_CLK = 0;
  37   2              ACC = ACC >> 1; 
  38   2          } 
  39   1      }
  40          
  41          /*******************DS1302OutputByte()*******************/
  42          unsigned char DS1302OutputByte(void) 	//实时时钟读取一字节(内部函数)
  43          { 
  44   1          unsigned char i;
  45   1          for(i=8; i>0; i--)
  46   1          {
  47   2              ACC = ACC >>1;         			//相当于汇编中的 RRC 
  48   2              ACC7 = DS1302_IO;
  49   2              DS1302_CLK = 1;
  50   2              DS1302_CLK = 0;
  51   2          } 
  52   1          return(ACC); 
  53   1      }
  54          
  55          /*******************DS1302OWrite1302()*******************/
C51 COMPILER V6.12  DS1302                                                                 04/23/2008 15:12:07 PAGE 2   

  56          void Write1302(unsigned char ucAddr, unsigned char ucDa)	//ucAddr: DS1302地址, ucData: 要写的数据
  57          {
  58   1          DS1302_RST = 0;
  59   1          DS1302_CLK = 0;
  60   1          DS1302_RST = 1;
  61   1          DS1302InputByte(ucAddr);       	// 地址,命令 
  62   1          DS1302InputByte(ucDa);       	// 写1Byte数据
  63   1          DS1302_CLK = 1;
  64   1          DS1302_RST = 0;
  65   1      } 
  66          
  67          /*******************DS1302ORead1302()*******************/
  68          unsigned char Read1302(unsigned char ucAddr)	//读取DS1302某地址的数据
  69          {
  70   1          unsigned char ucData;
  71   1          DS1302_RST = 0;
  72   1          DS1302_CLK = 0;
  73   1          DS1302_RST = 1;
  74   1          DS1302InputByte(ucAddr|0x01);        // 地址;最低有效位(位0)如为0表示要进行写操作,反之为读
  75   1          ucData = DS1302OutputByte();         // 读1Byte数据
  76   1          DS1302_CLK = 1;
  77   1          DS1302_RST = 0;
  78   1          return(ucData);
  79   1      }
  80          
  81          /*******************DS1302_SetProtect()*******************/
  82          void DS1302_SetProtect(bit flag)        //是否写保护 1为打开写保护,0为关闭写保护
  83          {
  84   1      	if(flag)
  85   1      		Write1302(0x8E,0x10);          // 控制命令,WP=1,写保护
  86   1      	else
  87   1      		Write1302(0x8E,0x00);          // 控制命令,WP=0,写操作
  88   1      }
  89          
  90          /*******************DS1302_SetTime()*******************/
  91          void DS1302_SetTime(unsigned char Address, unsigned char Value)        // 设置时间函数
  92          {
  93   1      	DS1302_SetProtect(0);
  94   1      	Write1302(Address, ((Value/10)<<4 | (Value%10))); 
  95   1      }
  96          
  97          /*******************DS1302_GetTime()*******************/
  98          void DS1302_GetTime(char *time)
  99          {
 100   1      	unsigned char ReadValue;
 101   1      	ReadValue = Read1302(DS1302_SECOND);
 102   1      	time[0] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
 103   1      	ReadValue = Read1302(DS1302_MINUTE);
 104   1      	time[1] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
 105   1      	ReadValue = Read1302(DS1302_HOUR);
 106   1      	time[2] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
 107   1      	ReadValue = Read1302(DS1302_DATE);
 108   1      	time[3] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);	
 109   1      	ReadValue = Read1302(DS1302_WEEK);
 110   1      	time[4] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
 111   1      	ReadValue = Read1302(DS1302_MONTH);
 112   1      	time[5] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
 113   1      	ReadValue = Read1302(DS1302_YEAR);
 114   1      	time[6] = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);	
 115   1      
 116   1      }
 117          
C51 COMPILER V6.12  DS1302                                                                 04/23/2008 15:12:07 PAGE 3   

 118          
 119          /*******************Initial_DS1302*******************/
 120          void Initial_DS1302(void)
 121          {
 122   1      	unsigned char Second=Read1302(DS1302_SECOND);
 123   1      	if(Second&0x80)		  
 124   1      		DS1302_SetTime(DS1302_SECOND,0);
 125   1      }
 126          
 127          
C51 COMPILER V6.12  DS1302                                                                 04/23/2008 15:12:07 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


ACC7 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E7H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
DS1302OutputByte . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
Initial_DS1302 . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  Second . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
DS1302_CLK . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0096H  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
_Read1302. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ucAddr . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  ucData . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
_Write1302 . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  ucAddr . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  ucDa . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
DS1302_RST . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0095H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
ACC. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E0H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
_DS1302_GetTime. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  time . . . . . . . . . . . . . . . .  * REG *  DATA   PTR      0001H  3
  ReadValue. . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
DS1302_SetProtect. . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  flag . . . . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
DS1302_IO. . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0097H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
C51 COMPILER V6.12  DS1302                                                                 04/23/2008 15:12:07 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
_DS1302_SetTime. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  Address. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
  Value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
_DS1302InputByte . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  d. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1
ACC0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    340    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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