⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sky_main.lst

📁 公共广播系统:定时开机,定时广播,定时关机
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -