📄 1302.lst
字号:
C51 COMPILER V7.20 1302 08/21/2007 08:13:24 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 1302
OBJECT MODULE PLACED IN 1302.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE 1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #define uchar unsigned char
3 sbit clock_clk =P1^5; //与硬件相关的连线 clk为DS1302的时钟信号线
4 sbit clock_dat=P1^6; //DAT为DS1302的I/O数据线
5 sbit clock_Rst =P1^7; //RST为DS1302的RST信号线
6
7 sbit a0 = ACC ^ 0;
8 sbit a1 = ACC ^ 1;
9 sbit a2 = ACC ^ 2;
10 sbit a3 = ACC ^ 3;
11 sbit a4 = ACC ^ 4;
12 sbit a5 = ACC ^ 5;
13 sbit a6 = ACC ^ 6;
14 sbit a7 = ACC ^ 7;
15 sbit key1=P1^2;
16
17 sbit key2=P1^3;
18 sbit key4=P1^5;
19 uchar set;
20 uchar j0,j1,j2,j3,j4,j5,j6,j7,k0,k1,k2,k3,k4,k5,k6,k7;
21 uchar code time[] = {0x00,0x10,0x7,0x1,0x1,0x01,0x07};
22 uchar year,month,day,week,hour,min,sec;
23 /****************************函数定义**************************************/
24
25 /******************************************************************/
26 /* 函数名:write(address);
27 /* 参 数:地址/数据字节
28 /* 功 能:用于向DS1302输入地址或数据信息
29 /******************************************************************/
30 void clock_out(unsigned char dd){ //write ds1302
31 1 ACC=dd;
32 1 clock_dat=a0; clock_clk=1; clock_clk=0;
33 1 clock_dat=a1; clock_clk=1; clock_clk=0;
34 1 clock_dat=a2; clock_clk=1; clock_clk=0;
35 1 clock_dat=a3; clock_clk=1; clock_clk=0;
36 1 clock_dat=a4; clock_clk=1; clock_clk=0;
37 1 clock_dat=a5; clock_clk=1; clock_clk=0;
38 1 clock_dat=a6; clock_clk=1; clock_clk=0;
39 1 clock_dat=a7; clock_clk=1; clock_clk=0;
40 1 }
41 /*****************************************************************************/
42 unsigned char clock_in(void){ //read ds1302
43 1 clock_dat=1;
44 1 a0=clock_dat;
45 1 clock_clk=1; clock_clk=0; a1=clock_dat;
46 1 clock_clk=1; clock_clk=0; a2=clock_dat;
47 1 clock_clk=1; clock_clk=0; a3=clock_dat;
48 1 clock_clk=1; clock_clk=0; a4=clock_dat;
49 1 clock_clk=1; clock_clk=0; a5=clock_dat;
50 1 clock_clk=1; clock_clk=0; a6=clock_dat;
51 1 clock_clk=1; clock_clk=0; a7=clock_dat;
52 1 return(ACC);
53 1 }
54 /*****************************************************************************/
55
C51 COMPILER V7.20 1302 08/21/2007 08:13:24 PAGE 2
56 unsigned char read_clock(unsigned char ord){
57 1 unsigned char dd=0;
58 1 clock_clk=0;
59 1 clock_Rst=0;
60 1 clock_Rst=1;
61 1 clock_out(ord);
62 1 dd=clock_in();
63 1 clock_Rst=0;
64 1 clock_clk=1;
65 1 return(dd);
66 1 }
67 void write_clock(unsigned char ord, unsigned char dd){
68 1 clock_clk=0;
69 1 clock_Rst=0;
70 1 clock_Rst=1;
71 1 clock_out(ord);
72 1 clock_out(dd);
73 1 clock_Rst=0;
74 1 clock_clk=1;
75 1 }
76 void Init_1302(void){ //(2000年1月1日00时00分00秒星期一)
77 1 uchar i;
78 1 write_clock(0x8e,0x00);//允许写操作
79 1 for(i=0;i<7;i++){
80 2 write_clock(0x80+i+i,time[i]);
81 2 }
82 1
83 1 write_clock(0x90,0xa5);//充电
84 1 write_clock(0x8e,0x80);//禁止写操作
85 1
86 1 }
87 void delay0(uchar x){
88 1 uchar i,j;
89 1 for(i=0;i<x;i++)
90 1 for(j=0;j<125;j++);
91 1 }
92
93 uchar DeToBCD(uchar DE){
94 1 return (DE/10)*16+DE%10;
95 1 }
96 time_set(){
97 1 if(!key1){
98 2 delay0(20);
99 2 if(!key1){
100 3 set++;
101 3 if(set == 8){
102 4 set = 0;
103 4 }
104 3 }while(!key1);
105 2 }
106 1 if(set == 1){//秒
107 2 write_clock(0x8e,0x00);
108 2 if(!key2){
109 3 delay0(20);
110 3 if(!key2){
111 4 j0++;
112 4 if(j0==59){
113 5 j0=0;
114 5 }
115 4 }
116 3 while(!key2);
117 3 }
C51 COMPILER V7.20 1302 08/21/2007 08:13:24 PAGE 3
118 2 k0 = DeToBCD(j0);
119 2 write_clock(0x80,0+k1);
120 2 write_clock(0x8e,0x80);
121 2 }
122 1 if(set == 2){//分
123 2 write_clock(0x8e,0x00);
124 2 if(!key2){
125 3 delay0(20);
126 3 if(!key2){
127 4 j1++;
128 4 if(j1==59){
129 5 j1=0;
130 5 }
131 4 }
132 3 while(!key2);
133 3 }
134 2 k1 = DeToBCD(j1);
135 2 write_clock(0x82,0+k1);
136 2 write_clock(0x8e,0x80);
137 2 }
138 1 if(set == 3){//时
139 2 write_clock(0x8e,0x00);
140 2 if(!key2){
141 3 delay0(20);
142 3 if(!key2){
143 4 j2++;
144 4 if(j2==24){
145 5 j2=1;
146 5 }
147 4 }
148 3 while(!key2);
149 3 }
150 2 k2= DeToBCD(j2);
151 2 write_clock(0x84,0+k2);
152 2 write_clock(0x8e,0x80);
153 2 }
154 1 if(set == 4){//日
155 2 write_clock(0x8e,0x00);
156 2 if(!key2){
157 3 delay0(20);
158 3 if(!key2){
159 4 j3++;
160 4 if(j3==31){
161 5 j3=1;
162 5 }
163 4 }
164 3 while(!key2);
165 3 }
166 2 k3 = DeToBCD(j3);
167 2 write_clock(0x86,0+k3);
168 2 write_clock(0x8e,0x80);
169 2 }
170 1 if(set == 5){//月
171 2 write_clock(0x8e,0x00);
172 2 if(!key2){
173 3 delay0(20);
174 3 if(!key2){
175 4 j4++;
176 4 if(j4==12){
177 5 j4=1;
178 5 }
179 4 }
C51 COMPILER V7.20 1302 08/21/2007 08:13:24 PAGE 4
180 3 while(!key2);
181 3 }
182 2 k4 = DeToBCD(j4);
183 2 write_clock(0x88,0+k4);
184 2 write_clock(0x8e,0x80);
185 2 }
186 1 if(set == 6){//周
187 2 write_clock(0x8e,0x00);
188 2 if(!key2){
189 3 delay0(20);
190 3 if(!key2){
191 4 j5++;
192 4 if(j5==7){
193 5 j5=1;
194 5 }
195 4 }
196 3 while(!key2);
197 3 }
198 2 k5 = DeToBCD(j5);
199 2 write_clock(0x8a,0+k5);
200 2 write_clock(0x8e,0x80);
201 2 }
202 1 if(set == 7){//年
203 2 write_clock(0x8e,0x00);
204 2 if(!key2){
205 3 delay0(20);
206 3 if(!key2){
207 4 j6++;
208 4 if(j6==99){
209 5 j6=0;
210 5 }
211 4 }
212 3 while(!key2);
213 3 }
214 2 k6 = DeToBCD(j6);
215 2 write_clock(0x8c,0+k6);
216 2 write_clock(0x8e,0x80);
217 2 }
218 1 }
219
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 621 ----
CONSTANT SIZE = 7 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 ----
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 + -