📄 1302.lst
字号:
C51 COMPILER V7.06 1302 07/31/2008 22:35:06 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1302
OBJECT MODULE PLACED IN 1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1302.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #include "def.h"
4 #include <reg52.h>
5 #include <stdio.h>
6 #include <math.h>
7 #include <intrins.h>
8 #include <public.h>
9
10 void Write_Ds1302_byte(unsigned char temp);
11 void Write_Ds1302( unsigned char address,unsigned char dat );
12 unsigned char Read_Ds1302 ( unsigned char address );
13
14 void Read_RTC(void);//read RTC
15 void Set_RTC(void);//set RTC
16
17 /***************************************************************************************/
18
19 sbit SCL2=P1^3; //SCL2定义为P1口的第3位脚,连接DS1302SCL和ADC0831SCL脚
20 sbit SDA2=P1^4; //SDA2定义为P1口的第4位脚,连接DS1302SCL和ADC0831SDA脚
21 //sbit CS2=P1^6; //CS2定义为P1口的第4位脚,连接ADC0831CS脚
22 sbit RST = P1^5; // DS1302片选脚
23
24
25
26 /*********************************************************************/
27
28 void Write_Ds1302_Byte(unsigned char temp)
29 {
30 1 unsigned char i;
31 1 for (i=0;i<8;i++) //循环8次 写入数据
32 1 {
33 2 SCL2=0;
34 2 SDA2=temp&0x01; //每次传输低字节
35 2 temp>>=1; //右移一位
36 2 SCL2=1;
37 2 }
38 1 }
39
40 /****************************************************************************/
41 void Write_Ds1302( unsigned char address,unsigned char dat )
42 {
43 1 RST=0;
44 1 _nop_();
45 1 SCL2=0;
46 1 _nop_();
47 1 RST=1;
48 1 _nop_(); //启动
49 1 Write_Ds1302_Byte(address); //发送地址
50 1 Write_Ds1302_Byte(dat); //发送数据
51 1 RST=0; //恢复
52 1 }
53 /****************************************************************************/
54 unsigned char Read_Ds1302 ( unsigned char address )
55 {
C51 COMPILER V7.06 1302 07/31/2008 22:35:06 PAGE 2
56 1 unsigned char i,temp=0x00;
57 1 RST=0;
58 1 _nop_();
59 1 SCL2=0;
60 1 _nop_();
61 1 RST=1;
62 1 _nop_();
63 1 Write_Ds1302_Byte(address);
64 1 for (i=0;i<8;i++) //循环8次 读取数据
65 1 {
66 2 if(SDA2)
67 2 temp|=0x80; //每次传输低字节
68 2 SCL2=0;
69 2 temp>>=1; //右移一位
70 2 SCL2=1;
71 2 }
72 1 RST=0;
73 1 _nop_(); //以下为DS1302复位的稳定时间
74 1 RST=0;
75 1 SCL2=0;
76 1 _nop_();
77 1 SCL2=1;
78 1 _nop_();
79 1 SDA2=0;
80 1 _nop_();
81 1 SDA2=1;
82 1 _nop_();
83 1 return (temp); //返回
84 1 }
85 /****************************************************************************/
86 void Read_RTC(void) //读取 日历
87 {
88 1 unsigned char i,*p;
89 1 p=read_rtc_address; //地址传递
90 1 for(i=0;i<7;i++) //分7次读取 年月日时分秒星期
91 1 {
92 2 l_tmpdate[i]=Read_Ds1302(*p);
93 2 // l_tmpdate[i]=i;
94 2 p++;
95 2 }
96 1 }
97 /***********************************************************************/
98 void Set_RTC(void) //设定 日历
99 {
100 1 unsigned char i,*p,tmp;
101 1 for(i=0;i<7;i++){
102 2 tmp=l_tmpdate[i]/10;
103 2 l_tmpdate[i]=l_tmpdate[i]%10;
104 2 l_tmpdate[i]=l_tmpdate[i]+tmp*16;
105 2 }
106 1 Write_Ds1302(0x8E,0X00);
107 1
108 1 p=write_rtc_address; //传地址
109 1 for(i=0;i<7;i++) //7次写入 年月日时分秒星期
110 1 {
111 2 Write_Ds1302(*p,l_tmpdate[i]);
112 2 p++;
113 2 }
114 1 Write_Ds1302(0x8E,0x80);
115 1 }
116
117 /*********************************************************************/
C51 COMPILER V7.06 1302 07/31/2008 22:35:06 PAGE 3
118
119
120
121
122 //1302读出16进制数的转化程序
123 void chang()
124 {
125 1 l_tmpdate1[0]=(l_tmpdate[6]/16) + 0x30;
126 1 l_tmpdate1[1]=(l_tmpdate[6]&0x0f) + 0x30;
127 1 l_tmpdate1[2]='/';
128 1 l_tmpdate1[3]=(l_tmpdate[4]/16)+0x30;
129 1 l_tmpdate1[4]=(l_tmpdate[4]&0x0f) +0x30;
130 1 l_tmpdate1[5]='/';
131 1
132 1 l_tmpdate1[6]=(l_tmpdate[3]/16)+0x30;
133 1 l_tmpdate1[7]=(l_tmpdate[3]&0x0f)+ 0x30;
134 1
135 1 l_tmpdate1[8]=((l_tmpdate[2]/16)& 0x03)+0x30;
136 1 l_tmpdate1[9]=(l_tmpdate[2]&0x0f) + 0x30;
137 1 l_tmpdate1[10]=':';
138 1 l_tmpdate1[11]=(l_tmpdate[1]/16)+0x30;
139 1 l_tmpdate1[12]=(l_tmpdate[1]&0x0f) +0x30;
140 1 l_tmpdate1[13]=':';
141 1 l_tmpdate1[14]=((l_tmpdate[0]/16) & 0x07)+0x30;
142 1 l_tmpdate1[15]=(l_tmpdate[0]&0x0f) +0x30;
143 1
144 1
145 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 323 ----
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 + -