📄 sky_main.lst
字号:
850 2 begin=0;
851 2 end=60;
852 2 mid=(begin+end)/2;
853 2 ClearWatchDog();
854 2 while(1)
855 2 {
856 3 addr=(15*60*w+60*i+mid)*6+0x80;
857 3 sh=EEPROMByteRead0(addr);
858 3 Delay1(100);
859 3 sm=EEPROMByteRead0(addr+1);
860 3 Delay1(100);
861 3 ss=EEPROMByteRead0(addr+2);
862 3 Delay1(100);
863 3 eh=EEPROMByteRead0(addr+3);
864 3 Delay1(100);
865 3 em=EEPROMByteRead0(addr+4);
866 3 Delay1(100);
867 3 es=EEPROMByteRead0(addr+5);
868 3 Delay1(100);
869 3 if((Hour>sh||(Hour==sh && Minute>sm)||(Hour==sh && Minute==sm && Second>ss))&&( Hour<eh ||(Hour==eh &&
-Minute<em) ||(Hour==eh && Minute==em && Second<es)))
870 3 {
871 4 ocflag=1;
872 4 break;
873 4 }
874 3 else if(Hour<sh ||(Hour==sh && Minute<sm)||(Hour==sh && Minute==sm && Second<ss))
875 3 {
C51 COMPILER V6.14 SKY_MAIN 12/30/2004 22:34:59 PAGE 16
876 4 end=mid-1;
877 4 mid=(begin+end)/2;
878 4 }
879 3 else if(Hour>eh || (Hour==eh && Minute>em)||(Hour==eh && Minute==em && Second>es))
880 3 {
881 4 begin=mid+1;
882 4 mid=(begin+end)/2;
883 4 }
884 3 if(begin>end)
885 3 break;
886 3 }
887 2 if(ocflag==1)
888 2 {
889 3 if(Luopencloseflag[i]==0)
890 3 {
891 4 BeepFlag=1;
892 4 count1=0;
893 4 }
894 3 Contral8255(i,1);
895 3 LedContral(i,1);
896 3 Luopencloseflag[i]=1;
897 3 }
898 2 else
899 2 {
900 3 Contral8255(i,0);
901 3 LedContral(i,1);
902 3 Luopencloseflag[i]=0;
903 3 }
904 2 }
905 1 }
906 void timer0(void) interrupt 1//时钟0中断取理
907 {
908 1 static data UINT8 count=0;
909 1 //data UINT8 i;
910 1
911 1 count++;
912 1 count2++;
913 1 if(count2>=24000)
914 1 {
915 2 CloseFlag=0;
916 2 count2=0;
917 2 }
918 1 if(count>=40)
919 1 {
920 2 count=0;
921 2 SecondFlag=1;
922 2 Second_moudel();
923 2 count1++;
924 2 if(count1>=25 && BeepFlag==1)
925 2 {
926 3 SPEAKER=SPEAKERON;
927 3 BeepFlag=0;
928 3 }
929 2 else if(count1==31)
930 2 {
931 3 count1=0;
932 3 SPEAKER=SPEAKEROFF;
933 3 }
934 2 }
935 1 TH0 = 0x3c;
936 1 TL0 = 0xe5;
937 1 TR0 = 1;
C51 COMPILER V6.14 SKY_MAIN 12/30/2004 22:34:59 PAGE 17
938 1 }
939
940 UINT8 KeyScan(void)//键盘扫描
941 {
942 1 data UINT8 key_val;
943 1 data UINT8 current_key,k;
944 1 static data UINT8 flag=0;
945 1
946 1 key_val =P3;
947 1 key_val &=0x3b;
948 1 if(key_val==0x3b)
949 1 {
950 2 if(CloseFlag==0)
951 2 {
952 3 //SingleCmd(DISPLAY_OFF);
953 3 LCD_LED=LEDOFF;
954 3 }
955 2 return(0x00);
956 2 }
957 1 Delay1(500);
958 1 key_val =P3;
959 1 key_val &=0x3b;
960 1 k=0;
961 1 if(key_val==0x3b)
962 1 {
963 2 return(0x00);
964 2 }
965 1 while(1)
966 1 {
967 2 Delay1(400);
968 2 current_key=P3;
969 2 current_key &=0x3b;
970 2 k++;
971 2 ClearWatchDog();
972 2 if(current_key==0x3b)
973 2 {
974 3 flag=0;
975 3 break;
976 3 }
977 2 if(flag==0 && (k>250 && (current_key==0x33 || current_key==0x2b || current_key==0x1b)))
978 2 {
979 3 flag=1;
980 3 break;
981 3 }
982 2 if(flag==1 && (k>50 && (current_key==0x33 || current_key==0x2b || current_key==0x1b)))
983 2 break;
984 2 }
985 1 current_key =0x00;
986 1 if(key_val == 0x3a) current_key = ESC; //返回
987 1 else if(key_val == 0x39) current_key = ENTER; //开关
988 1 else if(key_val == 0x33) current_key = DOWN;//移动
989 1 else if(key_val == 0x2b) current_key = MOVE; //确认菜单
990 1 else if(key_val == 0x1b) current_key = UP;//修改
991 1 count2=0;
992 1 if(current_key!=0 && Voice==1)
993 1 {
994 2 Beep1(1);
995 2 }
996 1 if(current_key!=0 && CloseFlag==0)
997 1 {
998 2 //SingleCmd(DISPLAY_ON);
999 2 LCD_LED=LEDON;
C51 COMPILER V6.14 SKY_MAIN 12/30/2004 22:34:59 PAGE 18
1000 2 CloseFlag=1;
1001 2 changflag=1;
1002 2 return(0x00);
1003 2 }
1004 1 return(current_key);
1005 1 }
1006
1007 void Second_moudel(void)//秒表
1008 {
1009 1 Second=Second+1;
1010 1 if(Second==60)
1011 1 {
1012 2 Second=0;
1013 2 Minute++;
1014 2 MinuteFlag=1;
1015 2 if(Minute==60)
1016 2 {
1017 3 Minute=0;
1018 3 HourFlag=1;
1019 3 Hour++;
1020 3 if(Hour==24)
1021 3 {
1022 4 Hour=0;
1023 4 Date++;
1024 4 Week++;
1025 4 DateFlag=1;
1026 4 if(Week==7)
1027 4 Week=0;
1028 4 if(Month==4 || Month== 6 || Month==9 || Month==11)
1029 4 {
1030 5 if(Date>30)
1031 5 {
1032 6 Date=1;
1033 6 Month++;
1034 6 MonthFlag=1;
1035 6 }
1036 5 }
1037 4 else if(Month==2)
1038 4 {
1039 5 if(Year%4==0)
1040 5 {
1041 6 if(Date>29)
1042 6 {
1043 7 Date=1;
1044 7 Month++;
1045 7 MonthFlag=1;
1046 7 }
1047 6 }
1048 5 else
1049 5 {
1050 6 if(Date>28)
1051 6 {
1052 7 Date=1;
1053 7 Month++;
1054 7 MonthFlag=1;
1055 7 }
1056 6 }
1057 5 }
1058 4 else
1059 4 {
1060 5 if(Date>31)
1061 5 {
C51 COMPILER V6.14 SKY_MAIN 12/30/2004 22:34:59 PAGE 19
1062 6 Date=1;
1063 6 Month++;
1064 6 MonthFlag=1;
1065 6 }
1066 5 }
1067 4 if(Month>12)
1068 4 {
1069 5 Month=1;
1070 5 Year++;
1071 5 YearFlag=1;
1072 5 if(Year>99)
1073 5 Year=0;
1074 5 }
1075 4 }
1076 3 }
1077 2 }
1078 1 }
1079
1080 void MenuDisplay(UINT8 class,UINT8 back)//菜单显示
1081 {
1082 1 data UINT8 i,temp;
1083 1 if(class==2)
1084 1 temp=2;
1085 1 else
1086 1 temp=3;
1087 1 for(i=1;i<=temp;i++)
1088 1 {
1089 2 if(back==i)
1090 2 {
1091 3 Display_Line(class*3+i,(i-1)*2,6,1);
1092 3 }
1093 2 else
1094 2 {
1095 3 Display_Line(class*3+i,(i-1)*2,6,0);
1096 3 }
1097 2 }
1098 1 }
1099
1100 void MainMenu(void)//主菜单选择
1101 {
1102 1 data UINT8 temp;
1103 1 bit flag=1;
1104 1
1105 1 clearRAM(0,8);
1106 1 while(1)
1107 1 {
1108 2 temp=KeyScan();
1109 2 if(count2>2400)
1110 2 {
1111 3 Function=1;
1112 3 clearRAM(0,8);
1113 3 return;
1114 3 }
1115 2 ClearWatchDog();
1116 2 switch(temp)
1117 2 {
1118 3 case ENTER:
1119 3 Function=BackNum+1;
1120 3 clearRAM(0,8);
1121 3 return;
1122 3 case MOVE:
1123 3 BackNum++;
C51 COMPILER V6.14 SKY_MAIN 12/30/2004 22:34:59 PAGE 20
1124 3 if(BackNum>3)
1125 3 BackNum=1;
1126 3 flag=1;
1127 3 break;
1128 3 case ESC:
1129 3 Function=1;
1130 3 clearRAM(0,8);
1131 3 return;
1132 3 default:
1133 3 break;
1134 3 }
1135 2 if(flag==1)
1136 2 {
1137 3 flag=0;
1138 3 MenuDisplay(0,BackNum);
1139 3 }
1140 2 }
1141 1 }
1142
1143
1144 UINT8 Weekjs(y,m,d)//星期计算
1145 {
1146 1 data UINT8 i,w;
1147 1 w=6;
1148 1 for(i=0;i<y;i++)
1149 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -