📄 da1302.lst
字号:
C51 COMPILER V7.02a DA1302 08/21/2007 08:23:04 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE DA1302
OBJECT MODULE PLACED IN da1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE da1302.c DEBUG OBJECTEXTEND
stmt level source
1 //#include <at89c51RB2.h>
2 #include <intrins.h>
3 #include "ds1302.h"
4 //#include "lm3228.h"
5 #include "hanzi.h"
6
7 #define uchar unsigned char
8 #define nop() _nop_()
9 //uchar time1[8];
10 //uchar time2[15]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,':','A','P','M',0x00};//0-9,:,A,P,M的
-CGROM代码
11 //extern void Print(uchar *);
12 //extern void print_char(uchar);
13 //extern void GotoXY(uchar ,uchar );
14
15
16 //从1302读取一个字节
17 uchar read_1302(void)
18 {
*** ERROR C132 IN LINE 18 OF DA1302.C: 'read_1302': not in formal parameter list
*** ERROR C141 IN LINE 18 OF DA1302.C: syntax error near '{'
19 uchar i,data_1302;
*** ERROR C132 IN LINE 19 OF DA1302.C: 'i': not in formal parameter list
*** ERROR C132 IN LINE 19 OF DA1302.C: 'data_1302': not in formal parameter list
20
21 for(i=0;i<8;i++)
*** ERROR C141 IN LINE 21 OF DA1302.C: syntax error near 'for'
*** ERROR C141 IN LINE 21 OF DA1302.C: syntax error near '=', expected ')'
*** ERROR C129 IN LINE 21 OF DA1302.C: missing ';' before '<'
22 {
23
24 data_1302>>=1;
25 if(IO_DATA)
26 {
27 data_1302|=0x80;
28 }
29 CLK=1;
30 //nop();
31 CLK=0;
32 }
33 return(data_1302);
34 }
35 //向1302写入一个字节
36 void write_1302(uchar data_1302)
37 {
38 uchar i;
39
40 for(i=0;i<8;i++)
41 {
42
43 data_1302>>=1;
44 IO_DATA=CY;
45 CLK=0;
46 //nop();
47 CLK=1;
C51 COMPILER V7.02a DA1302 08/21/2007 08:23:04 PAGE 2
48 //nop();
49 CLK=0;
50 }
51
52 }
53 //从1302的某地址读一个字节的数据
54 uchar read_byte_1302(uchar addr)
55 {
56 uchar data_1302;
57 RST=0;
58 CLK=0;
59 RST=1;
60 write_1302(addr|0x01);
61 data_1302=read_1302();
62 CLK=1;
63 RST=0;
64 CLK=0;
65 return (data_1302);
66 }
67 //向1302的某地址写入一个字节的数据
68 void write_byte_1302(uchar addr,uchar data_1302)
69 {
70 RST=0;
71 CLK=0;
72 RST=1;
73 write_1302(addr);
74 write_1302(data_1302);
75 CLK=1;
76 RST=0;
77 CLK=0;
78 }
79 //是否写保护
80 void protect_1302(bit flag)
81 {
82 if(flag)
83 write_byte_1302(DS1302_CONTROL,0x80);
84 else
85 write_byte_1302(DS1302_CONTROL,0x00);
86 }
87
88 //停止1302时钟
89 void stop_1302(void)
90 {
91 write_byte_1302(DS1302_SECOND,0x80);
92 }
93 //启动1302时钟
94 void start_1302(void)
95 {
96 write_byte_1302(DS1302_SECOND,0x00);
97 }
98
99 //读1302的时间序列
100 void read_data(uchar *j)
101 {
102 uchar i;
103 RST=0;
104 CLK=0;
105 RST=1;
106 write_1302(0xbf);
107 for(i=0;i<8;i++)
108 {
109 *(j)=read_1302();
C51 COMPILER V7.02a DA1302 08/21/2007 08:23:04 PAGE 3
110 j++;
111
112 }
113 CLK=1;
114 RST=0;
115 CLK=0;
116 }
117 //写1302的时间序列
118 void write_data(uchar *j)
119 {
120 uchar i;
121 RST=0;
122 CLK=0;
123 RST=1;
124 write_1302(0xbe);
125 for(i=0;i<8;i++)
126 {
127 write_1302(*j);
128 j++;
129 }
130 CLK=1;
131 RST=0;
132 CLK=0;
133 }
134 //显示时间
135 DS1302_GetTime(SYSTEMTIME *Time)
136 {
137
138
139 unsigned char time1[8];
140 unsigned char ReadValue;
141 read_data(time1);
142 ReadValue=time1[0];
143 Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
144 ReadValue=time1[1];
145 Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
146 ReadValue = time1[2];
147 Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
148 ReadValue = time1[3];
149 Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
150 ReadValue = time1[5];
151 Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
152 ReadValue = time1[4];
153 Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
154 ReadValue = time1[6];
155 Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
156
157 }
158 //设置时间
159 void set_time(uchar *time)
160 {
161 protect_1302(0); //清除写保护
162 //写预设时间
163 write_data(time);
164
165 start_1302(); //启动1302
166
167 protect_1302(1); //开启写保护
168 }
169
170
171 //显示星期
C51 COMPILER V7.02a DA1302 08/21/2007 08:23:04 PAGE 4
172 void display_week(uchar lowaddr,uchar highaddr)
173 {
174 //显示星期几
175 }
176 //显示“现在时间”
177 void display_currenttime(uchar lowaddr,uchar highaddr)
178 {
179
180 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 7 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -