📄 main.lst
字号:
413 5 }
414 4 display_time();
415 4 break;
416 4 case 4:
417 4 if(hour<1)
418 4 hour=23;
419 4 else
420 4 hour--;
421 4 display_time();
422 4 break;
423 4 case 5:
424 4 if(minute<1)
425 4 minute=59;
426 4 else
C51 COMPILER V7.06 MAIN 06/08/2006 23:56:16 PAGE 8
427 4 minute--;
428 4 display_time();
429 4 break;
430 4 case 6:
431 4 if(second<1)
432 4 second=59;
433 4 else
434 4 second--;
435 4 display_time();
436 4 break;
437 4 case 7:
438 4 if(week<2)
439 4 week=7;
440 4 else
441 4 week--;
442 4 display_time();
443 4 break;
444 4 case 8:
445 4 if(alarm_hour1<1)
446 4 alarm_hour1=23;
447 4 else
448 4 alarm_hour1--;
449 4 display_alarm_time(1);
450 4 break;
451 4 case 9:
452 4
453 4 if(alarm_minute1<1)
454 4 alarm_minute1=59;
455 4 else alarm_minute1--;
456 4 display_alarm_time(1);
457 4 break;
458 4 case 10:
459 4 alarm_1_en=0;
460 4 display_alarm_time(1);
461 4 break;
462 4 case 11:
463 4 if(alarm_hour2<1)
464 4 alarm_hour2=23;
465 4 else
466 4 alarm_hour2--;
467 4 display_alarm_time(2);
468 4 break;
469 4 case 12:
470 4 if(alarm_minute2<1)
471 4 alarm_minute2=59;
472 4 else
473 4 alarm_minute2--;
474 4 display_alarm_time(2);
475 4 break;
476 4 case 13:
477 4 alarm_2_en=0;
478 4 display_alarm_time(2);
479 4 break;
480 4
481 4 default:break;
482 4 }
483 3 default: break;
484 3 }
485 2 Key.Value=0;
486 2 }
487 1 }
488
C51 COMPILER V7.06 MAIN 06/08/2006 23:56:16 PAGE 9
489 void main(void) //主函数
490 {
491 1 LCMInit();
492 1 KEYBoardInit();
493 1 system_initial(); //系统开机初始化
494 1 while(1)
495 1 {
496 2 key_ctrl(); //键盘扫描
497 2 if(key_time>=20)//如果20秒内无任何按键按下,则自动返回
498 2 {
499 3 WriteCommandLCM(0xcb,0);
500 3 LCD_prints(" ");//清除相关显示
501 3 menu_status=0;
502 3 key_time=0;
503 3 }
504 2 //刷新显示时间
505 2 if(time_1s_ok==1)
506 2 {
507 3 time_1s_ok=0;
508 3 key_time++;
509 3 if(menu_status<7)
510 3 display_time();
511 3 if((alarm_1_ok==1)||(alarm_2_ok==1))//如果触发了闹钟,则对闹铃持续时间进行秒计时
512 3 ring_time++;
513 3 //检测闹铃时间
514 3 if((alarm_1_en)&&(alarm_1_ok==0))
515 3 {
516 4 if(alarm_hour1==hour)
517 4 {
518 5 if(alarm_minute1==minute)
519 5 {
520 6 if(second==0)//为了在闹铃被按键取消以后,用户能立即设置,所以强制在秒为0时才匹配/进行检测
521 6 {
522 7 alarm_1_ok=1;//置闹铃1标志
523 7 alarm_1_off=0;
524 7 ring_time=0;//清闹铃时间,同时两个闹钟的闹铃时间不叠加
525 7 }
526 6 }
527 5 }
528 4 }
529 3 if((alarm_2_en)&&(alarm_2_ok==0))//如果开了闹钟且闹钟当前没有正在闹铃,则进行检测
530 3 {
531 4 if(alarm_hour2==hour)
532 4 {
533 5 if(alarm_minute2==minute)
534 5 {
535 6 if(second==0)
536 6 {
537 7 alarm_2_ok=1; //置闹铃2标志
538 7 alarm_2_off=0;
539 7 ring_time=0;
540 7 }
541 6 }
542 5 }
543 4 }
544 3
545 3 //执行闹铃声音提示
546 3 if(alarm_1_ok==1)
547 3 {
548 4 if(alarm_1_off==0)//如果用户没有按下停止键
549 4 {
550 5 if(ring_time<120)
C51 COMPILER V7.06 MAIN 06/08/2006 23:56:16 PAGE 10
551 5 {
552 6 WriteCommandLCM(0xc0,0);
553 6 LCD_printc('1');
554 6 long_bell();
555 6 led_on;
556 6 }
557 5 else
558 5 {
559 6 ring_time=0;
560 6 led_off;
561 6 alarm_1_ok=0;
562 6 }
563 5
564 5 }
565 4 else
566 4 {
567 5 ring_time=0;
568 5 led_off;
569 5 alarm_1_ok=0;
570 5 }
571 4 }
572 3
573 3 if(alarm_2_ok==1)
574 3 {
575 4 if(alarm_2_off==0)
576 4 {
577 5 if(++ring_time<120)
578 5 {
579 6 WriteCommandLCM(0xc0,0);
580 6 LCD_printc('2');
581 6 long_bell();
582 6 led_on;
583 6 }
584 5 else
585 5 {
586 6 ring_time=0;
587 6 led_off;
588 6 alarm_2_ok=0;
589 6 }
590 5 }
591 4 else
592 4 {
593 5 ring_time=0;
594 5 led_off;
595 5 alarm_2_ok=0;
596 5 }
597 4
598 4 }
599 3 }
600 2
601 2 }
602 1 }
603
604
605
606
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1668 ----
CONSTANT SIZE = 86 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.06 MAIN 06/08/2006 23:56:16 PAGE 11
PDATA SIZE = ---- ----
DATA SIZE = 13 ----
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 + -