📄 clock.lst
字号:
202 1 Delay(3);
203 1 P2_6 = 1;
204 1
205 1 P2_7 = 0;//第8个数码管显示闹钟秒的十位。
206 1 Led[5] =naozhong.miao % 10;
207 1 P0 = SEG_TAB1[Led[5]];
208 1 Delay(3);
209 1 P2_7= 1;
210 1 }
211
212 /********************************************************************************************/
213
214 void IsrTimer0(void) interrupt 1 using 1 //定时器0中断服务程序
215 {
216 1 static unsigned char count = 0; //定义静态变量count
217 1
218 1 TR0 = 0; //以下调整出栈入栈的时间误差
219 1 TL0 += (_TH0_TL0_ + 9) % 256;
220 1 TH0 += (_TH0_TL0_ + 9) / 256 + (char)CY;
221 1 TR0 = 1;
222 1
223 1 count++;
224 1 if(count == M) //1秒种时间到
225 1 {
226 2 count = 0;
227 2 clock.sec++;
228 2 if( clock.sec == 60) //1分钟时间到
229 2 {
230 3 clock.min++;
231 3 clock.sec = 0;
232 3 if( clock.min == 60) //1小时时间到
233 3 {
234 4 clock.hour++;
235 4 clock.min = 0;
236 4 if( clock.hour == 24) //24小时时间到
237 4 {
238 5 clock.hour = 0;
239 5 clock.min = 0;
240 5 clock.sec = 0;
241 5 rili.day++;
C51 COMPILER V6.12 CLOCK 07/05/2007 08:11:03 PAGE 5
242 5 if(rili.day==31) //一天
243 5 {
244 6 rili.month++;
245 6 rili.day=0;
246 6 if(rili.month==13) //一月
247 6 {
248 7 rili.year++;
249 7 rili.month=0;
250 7 }
251 6 }
252 5 }
253 4 }
254 3 }
255 2 }
256 1 }
257
258 /**********************************************************************************/
259
260 int keypressed1() //键盘调节时间函数
261 {
262 1 if(P3_4 == 0)
263 1 {
264 2 Delay(50);
265 2 if(P3_4 == 0)
266 2 clock.sec ++;
267 2
268 2 }
269 1
270 1 if(P3_5 == 0)
271 1 {
272 2 Delay(50);
273 2 if(P3_5 == 0)
274 2 clock.min ++;
275 2 }
276 1
277 1 if(P3_6 == 0)
278 1 {
279 2 Delay(50);
280 2 if(P3_6 == 0)
281 2 clock.hour ++;
282 2 }
283 1
284 1 if(clock.sec ==60) clock.sec =0;
285 1 if(clock.min==60) clock.min =0;
286 1 if(clock.hour==24) clock.hour =0;
287 1 }
288
289 int keypressed2() //键盘调节日期函数
290 {
291 1 if(P3_4 == 0)
292 1 {
293 2 Delay(50);
294 2 if(P3_4 == 0)
295 2 rili.day ++;
296 2 }
297 1
298 1 if(P3_5 == 0)
299 1 {
300 2 Delay(50);
301 2 if(P3_5 == 0)
302 2 rili.month ++;
303 2 }
C51 COMPILER V6.12 CLOCK 07/05/2007 08:11:03 PAGE 6
304 1
305 1 if(P3_6 == 0)
306 1 {
307 2 Delay(50);
308 2 if(P3_6 == 0)
309 2 rili.year ++;
310 2 }
311 1
312 1 if(rili.day ==31) rili.day =1;
313 1 if(rili.month==13) rili.month =1;
314 1 if(rili.year==2031) rili.year =1997;
315 1 }
316
317 int keypressed3() //键盘调节闹钟时间函数
318 {
319 1 if(P3_4 == 0)
320 1 {
321 2 Delay(50);
322 2 if(P3_4 == 0)
323 2 naozhong.miao++;
324 2 }
325 1
326 1 if(P3_5 == 0)
327 1 {
328 2 Delay(50);
329 2 if(P3_5 == 0)
330 2 naozhong.fen++;
331 2 }
332 1
333 1 if(P3_6 == 0)
334 1 {
335 2 Delay(50);
336 2 if(P3_6 == 0)
337 2 naozhong.shi++;
338 2 }
339 1
340 1 if(naozhong.miao==60) naozhong.miao=0;
341 1 if(naozhong.fen==60) naozhong.fen=0;
342 1 if(naozhong.shi==24) naozhong.shi=0;
343 1 }
344
345
346 /********************************************************************************/
347
348
349 void Timer0Init(void) //初始化定时器0程序
350 {
351 1 TMOD = 0x01; //设置模式1 定时器0 工作方式0
352 1
353 1 TH0 = HI; //给TH0,TL0赋初始值
354 1 TL0 = LO;
355 1
356 1 TR0 = 1; //启动定时器0
357 1 ET0 = 1; //定时器中断开
358 1 EA = 1; //总中断开
359 1 }
360
361
362 void main(void)
363 {
364 1 int j=0,r=0;
365 1 Timer0Init();
C51 COMPILER V6.12 CLOCK 07/05/2007 08:11:03 PAGE 7
366 1 while(1)
367 1 {
368 2 if(P3_7 == 0)
369 2 {
370 3 Delay(20);
371 3 if(P3_7 == 0)
372 3 r++; //按键被按下次数
373 3 if(r==6) r=0;
374 3 if(r<2) j=0;
375 3 if(r>=2&&r<=3)j=1 ; //考虑到硬件不稳定,让每按两次才实现模块转换功能
376 3 if(r<6&&r>4)j=2;}
377 2 switch(j)
378 2 {
379 3 case 0:Disp1();
380 3 keypressed1();break;
381 3 case 1:Disp3();
382 3 keypressed3();break;
383 3 case 2:Disp2();
384 3 keypressed2();break;
385 3 default:break;
386 3 }
387 2
388 2 if(clock.sec==naozhong.miao&&clock.min==naozhong.fen&&clock.hour==naozhong.shi)
389 2 { //闹钟和时钟时间相同,闹铃
390 3 BEEP_on;
391 3 Delay(100);
392 3 BEEP_off;
393 3 }
394 2 }
395 1 }
396
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1078 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 45 2
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 + -