📄 clock.lst
字号:
464 6 if(I2cRead24C02(j)==I2cEndByte)break;
465 6 RingDataH[i]=I2cRead24C02(j++);
466 6 RingDataL[i]=I2cRead24C02(j++);
467 6 RingCount++;
468 6 }
469 5 EA=1;
470 5 goto L2;
471 5 case 8://确定
472 5 j=1;
473 5 RingDataL[ShowRingCount]=ShowRing[0];
474 5 RingDataH[ShowRingCount]=ShowRing[1];
475 5 Taxis();//排序
476 5 for(i=0;i<RingCount;i++)
477 5 {
478 6 EA=0;
479 6 I2cWrite24C02(j++,RingDataH[i]);
480 6 EA=1;
481 6 Display(ShowRing,FlagBit);
482 6 EA=0;
483 6 I2cWrite24C02(j++,RingDataL[i]);
484 6 EA=1;
485 6 Display(ShowRing,FlagBit);
486 6 }
487 5 EA=0;
488 5 I2cWrite24C02(j,I2cEndByte);
489 5 EA=1;
C51 COMPILER V8.08 CLOCK 10/11/2007 17:28:37 PAGE 9
490 5 if(RingCount==0)
491 5 Display(Null,5);
492 5 else
493 5 Display(ShowRing,FlagBit);
494 5 goto L2;
495 5
496 5 }
497 4 }
498 3 BeforKey=NowKey;
499 3 count2--;
500 3 if(count2==0)
501 3 {
502 4 count2=0x40;
503 4 count1--;
504 4 if(count1==0)
505 4 goto L3;
506 4 }
507 3 }
508 2 else KeyCount++;
509 2 }
510 1 L2:S_Ray_Flag=0;
511 1 }
512
513 //-------------时间设置的程序--------------------------------------------
514 void Control_Time_Set_Key()
515 {
516 1 uchar S_Flag=1;
517 1 uchar M_Flag=1;
518 1 uchar H_Flag=1;
519 1 uchar count1=0x40;//无操作时的时间控制
520 1 uchar count2=0xff;//无操作时的时间控制
521 1 uchar NowKey=0xff;
522 1 uchar BeforKey=0xff;
523 1 uchar KeyCount=0;
524 1 uchar FlagBit=1;
525 1 uchar LS_ClockData[3];
526 1 LS_ClockData[2]=ClockData[2];
527 1 LS_ClockData[1]=ClockData[1];
528 1 LS_ClockData[0]=ClockData[0];
529 1 while(1)
530 1 {
531 2 if(S_Flag)LS_ClockData[0]=ClockData[0];
532 2 if(M_Flag)LS_ClockData[1]=ClockData[1];
533 2 if(H_Flag)LS_ClockData[2]=ClockData[2];
534 2 Display(LS_ClockData,FlagBit);//动态扫描显示
535 2 if(KeyCount==2)
536 2 {
537 3
538 3 KeyCount=0;
539 3 NowKey=GetKey();
540 3 if(NowKey!=BeforKey)
541 3 {
542 4 count1=0x40;
543 4 count2=0xff;
544 4 switch(GetKey())
545 4 {
546 5 case 3://向左移动
547 5 if(FlagBit==3)FlagBit=1;
548 5 else FlagBit++;
549 5 break;
550 5 case 4://增加
551 5 switch(FlagBit)
C51 COMPILER V8.08 CLOCK 10/11/2007 17:28:37 PAGE 10
552 5 {
553 6 case 1://秒增加
554 6 if(LS_ClockData[0]==59)
555 6 LS_ClockData[0]=0;
556 6 else LS_ClockData[0]++;
557 6 S_Flag=0;
558 6 break;
559 6 case 2://分增加
560 6 if(LS_ClockData[1]==59)
561 6 LS_ClockData[1]=0;
562 6 else LS_ClockData[1]++;
563 6 M_Flag=0;
564 6 break;
565 6 case 3://时增加
566 6 if(LS_ClockData[2]==23)
567 6 LS_ClockData[2]=0;
568 6 else LS_ClockData[2]++;
569 6 H_Flag=0;
570 6 break;
571 6 }
572 5 break;
573 5 case 5://减小
574 5 switch(FlagBit)
575 5 {
576 6 case 1://秒减小
577 6 if(LS_ClockData[0]==0)
578 6 LS_ClockData[0]=59;
579 6 else LS_ClockData[0]--;
580 6 S_Flag=0;
581 6 break;
582 6 case 2://分减小
583 6 if(LS_ClockData[1]==0)
584 6 LS_ClockData[1]=59;
585 6 else LS_ClockData[1]--;
586 6 M_Flag=0;
587 6 break;
588 6 case 3://时减小
589 6 if(LS_ClockData[2]==0)
590 6 LS_ClockData[2]=23;
591 6 else LS_ClockData[2]--;
592 6 H_Flag=0;
593 6 break;
594 6 }
595 5 break;
596 5 case 6://向右移动
597 5 if(FlagBit==1)FlagBit=3;
598 5 else FlagBit--;
599 5 break;
600 5 case 7://取消
601 5 goto L1;
602 5 case 8://确定
603 5 ClockData[2]=LS_ClockData[2];
604 5 ClockData[1]=LS_ClockData[1];
605 5 ClockData[0]=LS_ClockData[0];
606 5 goto L1;
607 5 }
608 4 }
609 3 BeforKey=NowKey;
610 3 count2--;
611 3 if(count2==0)
612 3 {
613 4 count2=0x40;
C51 COMPILER V8.08 CLOCK 10/11/2007 17:28:37 PAGE 11
614 4 count1--;
615 4 if(count1==0)
616 4 goto L1;
617 4 }
618 3 }
619 2 else KeyCount++;
620 2 }
621 1 L1:;
622 1 }
623
624 //----------------------主程序-----------------------------------------------
625 void main()
626 {
627 1 uchar NowKey;
628 1 uchar BeforKey=0xff;
629 1 uchar KeyCount=0;
630 1 uchar i=1;
631 1 Alarm=0;
632 1 S_Ray=1;
633 1 s_ray=1;
634 1 Initializtion();//读24C02
635 1 TMOD=0x10;//设置T1
636 1 EA=1;
637 1 ET1=1;
638 1 PT1=1;
639 1 TH1=0x3c;
640 1 TL1=0xb0;
641 1 TR1=1;
642 1 while(1)
643 1 {
644 2 Display(ClockData,0);//动态扫描
645 2 //闹铃监视
646 2 for(i=0;i<RingCount;i++)
647 2 {
648 3 if((RingDataH[i]==ClockData[2]) && (RingDataL[i]==ClockData[1]))
649 3 {
650 4 Alarm=1;
651 4 break;
652 4 }
653 3 else Alarm=0;
654 3 }
655 2 //按键控制
656 2 if(KeyCount==2)
657 2 {
658 3
659 3 KeyCount=0;
660 3 NowKey=GetKey();
661 3 if(NowKey!=BeforKey)
662 3 {
663 4 switch (NowKey)
664 4 {
665 5 case 1:
666 5 Control_Time_Set_Key();
667 5 break;
668 5 case 2:
669 5 Alarm=0;
670 5 Control_Ring_Set_Key();
671 5 break;
672 5 default:
673 5 break;
674 5 }
675 4 }
C51 COMPILER V8.08 CLOCK 10/11/2007 17:28:37 PAGE 12
676 3 BeforKey=NowKey;
677 3 }
678 2 else KeyCount++;
679 2 }
680 1 }
681
682
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1983 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 88 39
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 + -