📄 1302.lst
字号:
524 1 { write_str3(2,9,':');
525 2 write_str3(2,12,':');
526 2 }
527 1 else
528 1 { write_str3(2,9,0x20);
529 2 write_str3(2,12,0x20);
530 2 }
531 1 }
532 /*************************************************************************************************
533 函数描述:中断处理
534 入口参数:无
535 出口参数:无
536 全局变量:flag
537 ***************************************************************************************************/
538 void time0(void) interrupt 1 using 0
539 { TH0 = 0x4C;
540 1 TL0 = 0x00;
541 1 inter++;
542 1 if(inter>10)
543 1 { flag = ~flag;
544 2 inter=0;
545 2 }
546 1 if(inter1>4)
547 1 { flag1 = ~flag1;
548 2 inter1 = 0 ;
549 2 }
550 1 }
551 void main()
C51 COMPILER V7.06 1302 12/03/2007 08:44:24 PAGE 10
552 {
553 1
554 1 uchar str2[8] = {0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00};//
555 1 uchar str3[8] = {0x01,0x1b,0x00,0x19,0x1d,0x1b,0x01,0x00};
556 1 uchar str4[8] = {0x31,0x31,0x35,0x34,0x35,0x37,0x39,0x37};
557 1 uchar nian,yue,ri,xingqi,shi,fen,miao,cont;
558 1
559 1 TMOD = 0x11;
560 1 TH0 = 0x4C;
561 1 TL0 = 0x00;
562 1 EA = 1;
563 1 ET0 =1;
564 1 TR0 = 1;
565 1 ET1 =1;
566 1 TR1 = 1;
567 1 init_lcd();
568 1 writetab(1,tab);
569 1 init_1302();
570 1 write_str1(1,1,str,16);
571 1 write_str1(2,1,str1,16);
572 1
573 1 while(1)
574 1 { read_time(0x81,init1,8);
575 2 change_time(init1,init2);
576 2 lcd_time(init2);
577 2 flash();
578 2 ok = 0;
579 2 if(!K3) //按下K3键进行时间设置
580 2 { delay1(20);
581 3
582 3 write_1302(0x8e,0x00);
583 3 write_1302(0x80,0x80);
584 3 nian = 1;
585 3 time[0] = init2[12]-0x30;
586 3 time[1] = init2[13]-0x30;
587 3 write_str3(2,9,':');
588 3 write_str3(2,12,':');
589 3 while(nian) //设置年
590 3 { key_set(1,1,99);
591 4 if(ok)
592 4 {
593 5 nian = 0;
594 5 yue = 1;
595 5 ok = 0;
596 5 cont = (time[0]<<4)+time[1];
597 5 write_1302(0x8c,cont);
598 5 }
599 4 //delay1(10);
600 4 }
601 3 time[0] = init2[8]-0x30;
602 3 time[1] = init2[9]-0x30;
603 3 while(yue) //设置月
604 3 { key_set(1,4,12);
605 4 if(ok)
606 4 {
607 5 yue = 0;
608 5 ri = 1;
609 5 ok = 0;
610 5 cont = (time[0]<<4)+time[1];
611 5 write_1302(0x88,cont);
612 5 }
613 4 //delay1(10);
C51 COMPILER V7.06 1302 12/03/2007 08:44:24 PAGE 11
614 4 }
615 3 time[0] = init2[6]-0x30;
616 3 time[1] = init2[7]-0x30;
617 3 while(ri) //设置日
618 3 { key_set(1,7,31);
619 4 if(ok)
620 4 {
621 5 ri = 0;
622 5 xingqi = 1;
623 5 ok = 0;
624 5 cont = (time[0]<<4)+time[1];
625 5 write_1302(0x86,cont);
626 5 }
627 4 //delay1(10);
628 4 }
629 3 week = init2[11]-0x30;
630 3 while(xingqi) //设置星期
631 3 { key_set_xq(1,16);
632 4 if(ok)
633 4 {
634 5 xingqi = 0;
635 5 shi = 1;
636 5 ok = 0;
637 5 write_1302(0x8a,week);
638 5 }
639 4 // delay1(10);
640 4 }
641 3 time[0] = init2[4]-0x30;
642 3 time[1] = init2[5]-0x30;
643 3 while(shi) //设置时
644 3 { key_set(2,7,23);
645 4 if(ok)
646 4 {
647 5 shi = 0;
648 5 fen = 1;
649 5 ok = 0;
650 5 cont = (time[0]<<4)+time[1];
651 5 write_1302(0x84,cont);
652 5 }
653 4 //delay1(10);
654 4 }
655 3 time[0] = init2[2]-0x30;
656 3 time[1] = init2[3]-0x30;
657 3 while(fen) //设置分
658 3 { key_set(2,10,59);
659 4 if(ok)
660 4 {
661 5 fen = 0;
662 5 miao = 1;
663 5 ok = 0;
664 5 cont = (time[0]<<4)+time[1];
665 5 write_1302(0x82,cont);
666 5 }
667 4 //delay1(10);
668 4 }
669 3 time[0] = init2[0]-0x30;
670 3 time[1] = init2[1]-0x30;
671 3 while(miao) //设置秒
672 3 { key_set(2,13,59);
673 4 if(ok)
674 4 {
675 5 miao = 0;
C51 COMPILER V7.06 1302 12/03/2007 08:44:24 PAGE 12
676 5 ok = 0;
677 5 cont = (time[0]<<4)+time[1];
678 5 write_1302(0x80,cont);
679 5 }
680 4 // delay1(20);
681 4 }
682 3 write_1302(0x8e,0x80);
683 3
684 3 }
685 2 if(!K2) //按下K2键使能或取消报警功能
686 2 { delay1(20);
687 3 alarm_flag = ~alarm_flag;
688 3 if(alarm_flag)
689 3 { xianshitab(2,16,1);
690 4 }
691 3 else
692 3 write_str3(2,16,0x20);
693 3 }
694 2 if(!K1)
695 2 { delay1(10);
696 3 if(!K4) //按下K1与K4键,设置报警时间
697 3 { delay1(10);
698 4 set_alarm_time();
699 4 }
700 3 if(!K2)
701 3 { see_alarm_time(); //按下K1与K2键,查看报警时间
702 4 }
703 3 }
704 2
705 2 time_campare();
706 2 }
707 1 }
708 /***************************************************************************************
709 函数描述:在设置数据过程中显示所设置的数据
710 出口参数:row:显示的行
711 col:显示的列
712 出口参数:无
713 全局变量:time[0],time[1]
714 调用模块:key_set(),key_set_xq
715 *******************************************************************************************/
716 void set_flash(uchar row,uchar col)
717 { if(flag)
718 1 { write_str3(row,col,'0'+time[0]);
719 2 write_str3(row,col+1,'0'+time[1]);
720 2 }
721 1 else
722 1 { write_str3(row,col,0x20);
723 2 write_str3(row,col+1,0x20);
724 2 }
725 1 }
726 /*********************************************************************************************
727 函数描述:对所设数据加一,减一
728 入口参数:row:所设数据显示位置的行
729 col:所设数据显示位置的列
730 max:所设数据的最大值
731 出口参数:无
732 全局变量:time[0],time[1]
733 调用模块:main(),set_alarm_time()
734 ***********************************************************************************************/
735 void key_set(uchar row,uchar col,uchar max)
736 { uchar temp,max0,max1 ;
737 1 max0 = max/10;
C51 COMPILER V7.06 1302 12/03/2007 08:44:24 PAGE 13
738 1 max1 = max%10;
739 1 temp = time[0]*10+time[1];
740 1 delay1(20);
741 1 if(!K1)
742 1 { if(temp <= 0)
743 2 { time[1] = max1;
744 3 time[0] = max0;
745 3 }
746 2 else
747 2 { if(time[1]==0)
748 3 { time[0] = time[0]-1;
749 4 time[1] = 9;
750 4 }
751 3 else
752 3 time[1] = time[1]-1;
753 3 }
754 2 }
755 1 if(!K2)
756 1 {
757 2 if(temp>=max)
758 2 { time[0] = 0;
759 3 time[1] =1;
760 3 }
761 2 else
762 2 { if(time[1]==9)
763 3 { time[0] = time[0]+1;
764 4 time[1] = 0;
765 4
766 4 }
767 3 else
768 3 time[1] = time[1]+1;
769 3
770 3 }
771 2 }
772 1 set_flash(row,col);
773 1 if(!K3)
774 1 { ok = 1;
775 2 delay1(10);
776 2 write_str3(row,col,'0'+time[0]);
777 2 write_str3(row,col+1,'0'+time[1]);
778 2 }
779 1
780 1
781 1 }
782 /*********************************************************************************************
783 函数描述:设置星期的值
784 入口参数:row:星期显示位置的行
785 col:星期显示位置的列
786 出口参数:无
787 全局变量
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -