📄 clock.lst
字号:
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE clock.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X51.h>
2 #include <intrins.h>
3 unsigned char second,mininute,hour;
4 unsigned char s_second,s_mininute,s_hour;
5 unsigned char t_second,t_mininute,t_hour;
6 unsigned char a_second,a_mininute,a_hour;
7 unsigned char setw = 0;
8 unsigned char count_num=0;
9 unsigned char show_count=0;
10
11 bit rset_flag=0;
12 bit aset_flag=0;
13 bit atime =0;
14
15 unsigned char dis_dc[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x
-00};
16 unsigned char dis[8]={0,0,15,0,0,15,0,0};
17
18
19 unsigned char get_key();
20 unsigned char key_is();
21
22 void key_deal(unsigned char k);
23
24 void show();
25
26 void main()
27 {
28 1 unsigned char t_key;
29 1 second =0; mininute = 0; hour=0;
30 1 P1 =0x00;
31 1 TMOD = 0x01;
32 1 TL0 = 0xb0;
33 1 TH0 = 0x3c;
34 1 TR0 =1;
35 1 ET0 =1;
36 1 EA =1;
37 1
38 1 while(1)
39 1 {
40 2
41 2 t_key = get_key();
42 2 key_deal(t_key);
43 2 if(aset_flag==1&&rset_flag==0)
44 2 {
45 3 if(a_second==second&&a_mininute==mininute&&a_hour==hour)
46 3 atime =1;
47 3 }
48 2 if(atime ==1)
49 2 P3_0=1;
50 2 else
51 2 P3_0=0;
52 2
53 2 show();
54 2 }
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 2
55 1 }
56 ///////////////////////////////////////////////////////////////////////////////////////////////////
57 void delay1()
58 {
59 1 unsigned char i,j;
60 1 for(i=0;i<0x02;i++)
61 1 for(j=0;j<0xff;j++)
62 1 ;
63 1 }
64 void show()
65 {
66 1
67 1
68 1
69 1
70 1 unsigned char shreg = 0x70;
71 1 unsigned char shi;
72 1
73 1
74 1
75 1 if(rset_flag==1)
76 1 {
77 2 dis[0]=t_second%10;
78 2 dis[1]=t_second/10;
79 2 dis[3]=t_mininute%10;
80 2 dis[4]=t_mininute/10;
81 2 dis[6]=t_hour%10;
82 2 dis[7]=t_hour/10;
83 2
84 2 }
85 1 else
86 1 {
87 2 dis[0]=second%10;
88 2 dis[1]=second/10;
89 2 dis[3]=mininute%10;
90 2 dis[4]=mininute/10;
91 2 dis[6]=hour%10;
92 2 dis[7]=hour/10;
93 2 }
94 1 if(rset_flag==1)
95 1 {
96 2 if(show_count<30)
97 2 {
98 3 switch(setw)
99 3 {
100 4 case 0:
101 4 dis[0]=0x0a;
102 4 dis[1]=0x0a;
103 4 break;
104 4 case 1:
105 4 dis[3]=0x0a;
106 4 dis[4]=0x0a;
107 4 break;
108 4 case 2:
109 4 dis[6]=0x0a;
110 4 dis[7]=0x0a;
111 4 break;
112 4 }
113 3
114 3
115 3 }
116 2 if(show_count>=60)
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 3
117 2 show_count =0;
118 2 else
119 2 show_count++;
120 2 }
121 1
122 1 if(atime==1)
123 1 {
124 2 unsigned char i;
125 2 if(show_count<30)
126 2 for(i=0;i<8;i++)
127 2 dis[i]=0x0a;
128 2 if(show_count>60)
129 2 show_count=0;
130 2 else
131 2 show_count++;
132 2 }
133 1
134 1
135 1
136 1 for (shi=0;shi<8;shi++)
137 1 {
138 2 P2 = shreg + dis[shi];
139 2 delay1();
140 2 shreg-=0x10;
141 2 }
142 1
143 1
144 1
145 1
146 1 return;
147 1
148 1
149 1
150 1
151 1 }
152 ///////////////////////////////////////////////////////////////////////////////////////////////////////
153 void t0 (void)interrupt 1 using 0
154 {
155 1 TL0 = 0xb0;
156 1 TH0 = 0x3c;
157 1 if(count_num==19)
158 1 {
159 2 count_num = 0;
160 2 second++;
161 2 if(second>59)
162 2 {
163 3 second =0;
164 3 mininute++;
165 3 if(mininute>59)
166 3 {
167 4 mininute = 0;
168 4 hour++;
169 4 if(hour>23)
170 4 hour =0;
171 4 }
172 3 }
173 2
174 2 }
175 1 else
176 1 count_num++;
177 1
178 1 }
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 4
179
180
181
182 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-//////
183
184 unsigned char get_key()
185 {
186 1 unsigned char tm_key;
187 1
188 1 if(tm_key=key_is())
189 1 {
190 2 while(key_is())
191 2 show();
192 2 return tm_key ;
193 2
194 2 }
195 1 return 0;
196 1
197 1
198 1
199 1
200 1 }
201
202
203 void delay10()
204 {
205 1 unsigned char i,j;
206 1 for(i=0;i<0x0a;i++)
207 1 for(j=0;j<0xff;j++)
208 1 ;
209 1
210 1
211 1 }
212 unsigned char key_is()
213 {
214 1 unsigned char tem_key,tem_key0;
215 1 tem_key = P1;
216 1 tem_key &= 0x1f;
217 1 switch (tem_key)
218 1 {
219 2 case 0x01:
220 2 case 0x02:
221 2 case 0x04:
222 2 case 0x08:
223 2 case 0x10:
224 2 delay10();
225 2 tem_key0 = P1;
226 2 tem_key &= 0x1f;
227 2 if(tem_key==tem_key0)
228 2 return tem_key;
229 2 else
230 2 return 0;
231 2 default:
232 2 return 0;
233 2 }
234 1
235 1 }
236
237
238 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-/////////////
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 5
239 void key_deal( unsigned char k)
240 {
241 1
242 1 switch(k)
243 1 {
244 2
245 2
246 2
247 2 case 0x01:
248 2 if(rset_flag==0)
249 2 {
250 3 t_second = second;
251 3 t_mininute = mininute;
252 3 t_hour = hour;
253 3 rset_flag=1;
254 3 }
255 2 else if (rset_flag==1)
256 2 {
257 3 if(aset_flag ==0)
258 3 {
259 4 second = t_second;
260 4 mininute= t_mininute;
261 4 hour = t_hour;
262 4
263 4 }
264 3 else if(aset_flag ==1)
265 3 {
266 4 a_second = t_second;
267 4 a_mininute= t_mininute;
268 4 a_hour = t_hour;
269 4
270 4 }
271 3 rset_flag = 0;
272 3 }
273 2 break;
274 2 case 0x02:
275 2 setw++;
276 2 if(setw>3)
277 2 setw =0;
278 2
279 2 break;
280 2
281 2 case 0x04:
282 2 switch(setw)
283 2 {
284 3 case 0:
285 3 t_second++;
286 3 if(t_second>59)
287 3 t_second = 0;
288 3 break;
289 3
290 3
291 3
292 3 case 1:
293 3 t_mininute++;
294 3 if(t_mininute>59)
295 3 t_mininute = 0;
296 3 break;
297 3
298 3 case 2:
299 3 t_hour++;
300 3 if(t_hour>23)
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 6
301 3 t_hour =0;
302 3 break;
303 3 default:
304 3 break;
305 3
306 3
307 3 }
308 2 break;
309 2
310 2
311 2 case 0x08:
312 2 switch(setw)
313 2 {
314 3 case 0:
315 3 t_second--;
316 3 if(t_second==255)
317 3 t_second = 59;
318 3 break;
319 3
320 3
321 3
322 3 case 1:
323 3 t_mininute--;
324 3 if(t_mininute==255)
325 3 t_mininute =59;
326 3 break;
327 3
328 3 case 2:
329 3 t_hour--;
330 3 if(t_hour==255)
331 3 t_hour =23;
332 3 break;
333 3 default:
334 3 break;
335 3
336 3
337 3 }
338 2 break;
339 2
340 2
341 2
342 2 case 0x10:
343 2 if(aset_flag==0)
344 2 aset_flag=1;
345 2 else
346 2 {
347 3 aset_flag =0;
348 3 if(atime==1)
349 3 atime =0;
350 3
351 3 }
352 2 break;
353 2
354 2 default:
355 2 break;
356 2
357 2 }
358 1
359 1
360 1
361 1 }
362
C51 COMPILER V7.00 CLOCK 07/29/2008 10:39:37 PAGE 7
363
364
365 ////////////////////////////////////////////////////////////////////////////////////
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 654 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 40 2
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -