📄 ds1302.lst
字号:
C51 COMPILER V7.06 DS1302 05/14/2007 22:03:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1302.C LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 ///////////////////////////////系统时钟////////////////////////////////
2 #include <at89x52.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit RST = P1^6;
7 sbit SCL = P1^4;
8 sbit SDA = P1^5;
9
10 #define READ 1
11 #define WRITE 0
12
13 unsigned char SetTimeBuf[7] = {0x0,0x18,0x17,0x31,0x1,0x3,0x7};
14 //2007年1月18日20:30:00,当前时间格式为: 秒 分 时 日 月 星期 年
15 unsigned char TimeBuf[7];
16
17 void DS1302_SendByte(unsigned char Data)
18 {
19 1 unsigned char i;
20 1 for(i=0;i<8;i++)
21 1 {
22 2 SDA = (bit)(Data & 0x01);
23 2 SCL = 1;
24 2 SCL = 0;
25 2 Data >>= 1;
26 2 }
27 1 return;
28 1 }
29
30
31 unsigned char DS1302_ReadByte(void)
32 {
33 1 unsigned char i,Data;
34 1 for(i=0;i<8;i++)
35 1 {
36 2 SDA=0;
37 2 Data >>= 1;
38 2 if(SDA==1) Data |= 0x80;
39 2 SCL = 1;
40 2 SCL = 0;
41 2
42 2 }
43 1 return(Data);
44 1 }
45
46 void DS1302WriteByte(unsigned char Addr, unsigned char Data)
47 {
48 1 SCL = 0;
49 1 RST = 1;
50 1 DS1302_SendByte(Addr);
51 1 DS1302_SendByte(Data);
52 1 RST = 0;
53 1 }
54
55 unsigned char DS1302ReadByte(unsigned char Addr)
C51 COMPILER V7.06 DS1302 05/14/2007 22:03:39 PAGE 2
56 {
57 1 unsigned char Data;
58 1 SCL = 0;
59 1 RST = 1;
60 1 DS1302_SendByte(Addr | READ);
61 1 Data = DS1302_ReadByte();
62 1 RST = 0;
63 1 return Data;
64 1 }
65
66
67 void SetTime(void)
68 {
69 1 uchar i,temp=0x80;
70 1 DS1302WriteByte(0x8e,0x00); //允许读写WP=0
71 1 for(i=0;i<7;i++)
72 1 {
73 2 DS1302WriteByte(temp,SetTimeBuf[i]);
74 2 temp+=2;
75 2 }
76 1 DS1302WriteByte(0x90,0xa5); //充电器设置,禁止充电
77 1 //DS1302WriteByte(0x8e,0x80); //禁止写WP=1,write protect
78 1 }
79
80
81
82 unsigned char BCDConvert(unsigned char ucBCD)//ucBCD为待转换的BCD码;
83 {
84 1 unsigned char TempH,TempL;
85 1 TempH = (ucBCD&0xF0)>>4; //TempH保存十进制数的高位
86 1 TempL = ucBCD&0x0f; //TempL保存十进制数的低位
87 1 return TempH*10+TempL;
88 1 }
89
90 void ReadTime(void)
91 {
92 1 uchar i,temp,adderss=0x81;
93 1 for(i=0;i<7;i++)
94 1 {
95 2 temp=DS1302ReadByte(adderss);
96 2 TimeBuf[i]=BCDConvert(temp);
97 2 adderss+=2;
98 2 }
99 1 }
100
101
102
103
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 171 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 14 ----
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 + -