📄 da1302.lst
字号:
C51 COMPILER V8.08 DA1302 06/02/2007 17:59:28 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DA1302
OBJECT MODULE PLACED IN da1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE da1302.c DEBUG OBJECTEXTEND
line 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的CG
-ROM代码
11 extern void Print(uchar *);
12 extern void print_char(uchar);
13 extern void GotoXY(uchar ,uchar );
14
15 //从1302读取一个字节
16 uchar read_1302(void)
17 {
18 1 uchar i,data_1302;
19 1
20 1 for(i=0;i<8;i++)
21 1 {
22 2
23 2 data_1302>>=1;
24 2 if(IO_DATA)
25 2 {
26 3 data_1302|=0x80;
27 3 }
28 2 CLK=1;
29 2 //nop();
30 2 CLK=0;
31 2 }
32 1 return(data_1302);
33 1 }
34 //向1302写入一个字节
35 void write_1302(uchar data_1302)
36 {
37 1 uchar i;
38 1
39 1 for(i=0;i<8;i++)
40 1 {
41 2
42 2 data_1302>>=1;
43 2 IO_DATA=CY;
44 2 CLK=0;
45 2 //nop();
46 2 CLK=1;
47 2 //nop();
48 2 CLK=0;
49 2 }
50 1
51 1 }
52 //从1302的某地址读一个字节的数据
53 uchar read_byte_1302(uchar addr)
54 {
C51 COMPILER V8.08 DA1302 06/02/2007 17:59:28 PAGE 2
55 1 uchar data_1302;
56 1 RST=0;
57 1 CLK=0;
58 1 RST=1;
59 1 write_1302(addr|0x01);
60 1 data_1302=read_1302();
61 1 CLK=1;
62 1 RST=0;
63 1 CLK=0;
64 1 return (data_1302);
65 1 }
66 //向1302的某地址写入一个字节的数据
67 void write_byte_1302(uchar addr,uchar data_1302)
68 {
69 1 RST=0;
70 1 CLK=0;
71 1 RST=1;
72 1 write_1302(addr);
73 1 write_1302(data_1302);
74 1 CLK=1;
75 1 RST=0;
76 1 CLK=0;
77 1 }
78 //是否写保护
79 void protect_1302(bit flag)
80 {
81 1 if(flag)
82 1 write_byte_1302(DS1302_CONTROL,0x80);
83 1 else
84 1 write_byte_1302(DS1302_CONTROL,0x00);
85 1 }
86
87 //停止1302时钟
88 void stop_1302(void)
89 {
90 1 write_byte_1302(DS1302_SECOND,0x80);
91 1 }
92 //启动1302时钟
93 void start_1302(void)
94 {
95 1 write_byte_1302(DS1302_SECOND,0x00);
96 1 }
97
98 //读1302的时间序列
99 void read_data(uchar *j)
100 {
101 1 uchar i;
102 1 RST=0;
103 1 CLK=0;
104 1 RST=1;
105 1 write_1302(0xbf);
106 1 for(i=0;i<8;i++)
107 1 {
108 2 *(j)=read_1302();
109 2 j++;
110 2
111 2 }
112 1 CLK=1;
113 1 RST=0;
114 1 CLK=0;
115 1 }
116 //写1302的时间序列
C51 COMPILER V8.08 DA1302 06/02/2007 17:59:28 PAGE 3
117 void write_data(uchar *j)
118 {
119 1 uchar i;
120 1 RST=0;
121 1 CLK=0;
122 1 RST=1;
123 1 write_1302(0xbe);
124 1 for(i=0;i<8;i++)
125 1 {
126 2 write_1302(*j);
127 2 j++;
128 2 }
129 1 CLK=1;
130 1 RST=0;
131 1 CLK=0;
132 1 }
133 //显示时间
134 void display_time(uchar lowaddr,uchar highaddr)
135 {
136 1
137 1 read_data(time1);
138 1 GotoXY(0,1); //读时间
139 1
140 1 if(time1[2]&0x80) //如果成立,即12小时制,否则24小时制
141 1 { //显示小时
142 2 if(time1[2]&0x20) //如果成立,即下午,否则上午
143 2 {
144 3 Print("PM:");
145 3 if(time1[2]&0x10) //下午
146 3 {
147 4 print_char(time2[(time1[2]&0x10)>>4]+'0');
148 4 print_char(time2[time1[2]&0x0f]+'0');
149 4 }
150 3 else
151 3 {
152 4 Print("AM:");
153 4 print_char(time2[14]+'0');
154 4 print_char(time2[time1[2]&0x0f]+'0');
155 4 }
156 3 }
157 2 else //上午
158 2 {
159 3 print_char(time2[11]+'0');
160 3 print_char(time2[13]+'0');
161 3 if(time1[2]&0x10)
162 3 {
163 4 print_char(time2[(time1[2]&0x10)>>4]+'0');
164 4 print_char(time2[time1[2]&0x0f]+'0');
165 4
166 4 }
167 3 else
168 3 {
169 4 print_char(time2[14]+'0');
170 4 print_char(time2[time1[2]&0x0f]+'0');
171 4 }
172 3 }
173 2 }
174 1 else //24小时制
175 1 {
176 2 if(time1[2]&0x30)
177 2 {
178 3 print_char(time2[(time1[2]&0x30)>>4]+'0');
C51 COMPILER V8.08 DA1302 06/02/2007 17:59:28 PAGE 4
179 3 print_char(time2[time1[2]&0x0f]+'0');
180 3 }
181 2 else
182 2 {
183 3 print_char(time2[14]);
184 3 print_char(time2[time1[2]&0x0f]+'0');
185 3 }
186 2 }
187 1 print_char(time2[10]); //显示:
188 1
189 1 print_char((time2[(time1[1]&0x70)>>4]+'0')); //显示分钟
190 1 print_char(time2[time1[1]&0x0f]+'0');
191 1
192 1
193 1
194 1 print_char(time2[10]); //显示:
195 1
196 1
197 1 print_char((time2[(time1[0]&0x70)>>4]+'0')); //显示秒
198 1
199 1 print_char(time2[time1[0]&0x0f]+'0');
200 1 Print(" ");
201 1 print_char('0');
202 1 print_char(time2[time1[6]&0x07]+'0');
203 1 Print("-");
204 1 print_char(time2[time1[4]&0xf0>>4]+'0');
205 1 Print("-");
206 1 print_char(time2[time1[3]&0x0f]+'0');
207 1
208 1 }
*** WARNING C280 IN LINE 134 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 134 OF DA1302.C: 'highaddr': unreferenced local variable
209 //设置时间
210 void set_time(uchar *time)
211 {
212 1 protect_1302(0); //清除写保护
213 1 //写预设时间
214 1 write_data(time);
215 1
216 1 start_1302(); //启动1302
217 1
218 1 protect_1302(1); //开启写保护
219 1 }
220
221
222 //显示星期
223 void display_week(uchar lowaddr,uchar highaddr)
224 {
225 1 //显示星期几
226 1 }
*** WARNING C280 IN LINE 223 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 223 OF DA1302.C: 'highaddr': unreferenced local variable
227 //显示“现在时间”
228 void display_currenttime(uchar lowaddr,uchar highaddr)
229 {
230 1
231 1 }
*** WARNING C280 IN LINE 228 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 228 OF DA1302.C: 'highaddr': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.08 DA1302 06/02/2007 17:59:28 PAGE 5
CODE SIZE = 503 ----
CONSTANT SIZE = 2167 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 23 6
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 6 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -