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

📄 复件 7.c.bak

📁 刚学时编的小程序
💻 BAK
📖 第 1 页 / 共 2 页
字号:
				 jiage[i]=jiage[i]-10;
			 }
			 if(yijian()==1)	break;                            //按下一键,移到下一位
		}
	}
	loop:1;
	a=0;                                                          //退出后显示时间
	i=0;
}



void main()                                                       //主程序
{
	TMOD=0x42;							                          //初始化
	TH0=0x06;
	TL0=0x06;
	TH1=7192;
	TL1=7192;								
	TR0=1;												
	ET0=1;												
	ET1=1;
	EA=1;
	P0=duanma[shijian[dis]]	;                                     //P0口输出段码
	P2=weima[dis]	  ;                                           //P2口输出位码
	while(1)
	{	
		if(yijian()==1)						                      //一键按下,进入改时间程序
		{
			tiaoshi();
		} 	 
		if(erjian()==1)						                      //二键按下,进入计价程序
		{
			 jijia();
		} 
		if(shangjian()==1)					                      //三键按下,进入改价格程序
		{
			gaijia();
		}
		if(kaiguan()==1)					                      //白天,晚上转换开关
		{
			m=1;
		}
	}
}

void t0(void) interrupt 1 using 1						          //定时器0中断
{
	ms++;
	if(ms==8) 
	{
		ms=0;
		switch(a)                                                  //显示模块开关
		{	
			case 0:	if((i==dis|(i-1)==dis)&i>0)                    //0:显示时间
					{
						if(tcnt<1500)                              //闪动程序
						{
							P0=duanma[17];
						}
						else P0=duanma[shijian[dis]];
						break;
					}	 	
					else   P0=duanma[shijian[dis]];		break;
			case 1: P0=duanma[lucheng[dis]];    break;             //1:显示路程
			case 2:	if(i==dis&i>=0)                                //2:显示价格
					{
						if(tcnt<1500)
						{
							P0=duanma[17];
						}
						else P0=duanma[jiage[dis]] ;    break;
					}	 	
					else   P0=duanma[jiage[dis]] ;    break;
			case 3: if(shijian[1]%2==1)	                           //3:路程,总价循环显示
					{
						P0=duanma[lucheng[dis]]	;	 break;
					}	 
					else 	P0=duanma[zongjia[dis]];	break;
			case 4:	P0=duanma[zongjia[dis]];	break;             //4:总价显示
			case 5: if(i==dis&i>=0)                                //5:输密码显示
					{
						if(tcnt<1500)
						{
							P0=duanma[17];
						}
						else P0=duanma[mima[dis]];
						break;
					}	 	
					else   P0=duanma[mima[dis]];	break;
			case 6: if(i==dis&i>=0)                                //6:改密码显示
					{
						if(tcnt<1500)
						{
							P0=duanma[17];
						}
						else P0=duanma[mima1[dis]];
						break;
					}	 	
					else   P0=duanma[mima1[dis]];	break;
		}
		P2=weima[dis];	                                           //位码扫描
		dis++;
		if(dis==8)
		{
			dis=0;
		}
	}
	tcnt++;
	if(tcnt==3685)                                                
	{	
		if(TR1==1)                                                 //计数器开始状态,计时间
		{
			lucheng[0]++;
			if(lucheng[0]==10)
			{
				lucheng[0]=0;
				lucheng[1]++;
				if(lucheng[1]==6)
				{
					lucheng[1]=0;
					lucheng[2]++;
					if(lucheng[2]==28)
					{
						lucheng[2]=18;
						lucheng[3]++;
						if(lucheng[3]==6)
						lucheng[3]=0;
					}
				}
			}
		}
		tcnt=0;
		if(k==0)
	 	second++;                                                   //秒加1
		if(second>=60)																							//到60清0,分加1
		{
			if(w==1)
			{
				hour1++;
				if(hour1==2)
				{
					hour1=0;
					w=0;
				}
			}
			second=0;
			minite++;
			if(x==1&TR1==1)                                          //是否在进行中断(中途等待程序)
			{
				y++;                                                 //没进行y+1
				if(y==1)                                             //是否等待10分钟
				{
					y=0;                                             //清0
					zongjia[0]=jiage[3];                             //价格显示位显示中途等待价
					zongjia[1]=jiage[4];
					zongjia[5]=zongjia[5]+jiage[3];if(zongjia[5]>9)  //总价加中途等待价
													{ 
														n=1; zongjia[5]=zongjia[5]%10; 
													} 
					zongjia[6]=zongjia[6]+jiage[4];if(n==1)
						 								{
															zongjia[6]++;n=0;
						 								}
					zongjia[6]=zongjia[6]-18;   if(zongjia[6]>27)  
												{ 
													n=1; zongjia[6]=zongjia[6]-10; 
												}
					if(n==1)
					{
						zongjia[7]++;
						n=0;
						if(zongjia[7]>9)
						zongjia[7]=0;
					}
				 }
			}
			if(minite>=60)                                            //分到60清0
			{
				minite=0;
				hour++;                                               //时加1
				if(hour>=24)                                          //时到24清0
				{
					hour=0;
				}
			/*	if(w==1)
				{
					hour1++;
					if(hour1==24)
					{
						hour1=0;
						w=0;
					}
				}			*/
			}
		}
		shijian[0]=second%10;
		shijian[1]=second/10;
		shijian[3]=minite%10;
		shijian[4]=minite/10;
		shijian[6]=hour%10;
		shijian[7]=hour/10;
	}
}	
																
void t1(void) interrupt 3 using 2
{
	 x=0;                                                           //进入中断标志
	 tcnt2++;
	 switch(m)                                                      //判断白天还是晚上
	 {
	 	case 0:	zongjia[0]=jiage[0];                                //白天总价0、1位显示白天单价
				zongjia[1]=jiage[1];
				break;
		case 1:	zongjia[0]=jiage[6];                                //晚上总价0、1位显示白天单价
				zongjia[1]=jiage[7];
				break;
	 } 
	 if(tcnt2<=10)
	 {
	 	zongjia[6]=23;
	 }
	 else
	 {
	 	c++;
	 	if(c==5)
		{
			c=0;
			switch(m)                                                  //判断白天还是晚上
			{
				case 0:	zongjia[5]=zongjia[5]+jiage[0];if(zongjia[5]>9)//白天:总价加白天单价 
														{ 
															n=1; zongjia[5]=zongjia[5]%10; 
														} 
						zongjia[6]=zongjia[6]+jiage[1];if(n==1)
						 								{
															zongjia[6]++;n=0;
						 								}
						zongjia[6]=zongjia[6]-18;if(zongjia[6]>27)  
												{ 
													n=1; zongjia[6]=zongjia[6]-10; 
												}
						if(n==1)
						{
						 	zongjia[7]++;
							n=0;
							if(zongjia[7]>9)
							zongjia[7]=0;
						}
						break;
				case 1:	zongjia[5]=zongjia[5]+jiage[6];if(zongjia[5]>9) //晚上:总价加晚上单价 
														{ 
															n=1; zongjia[5]=zongjia[5]%10; 
														} 
						zongjia[6]=zongjia[6]+jiage[7];if(n==1)
						 								{
															zongjia[6]++;n=0;
						 								}
						zongjia[6]=zongjia[6]-18;if(zongjia[6]>27)  
												{ 
													n=1; zongjia[6]=zongjia[6]-10; 
												}
						 if(n==1)
						 {
						 	zongjia[7]++;
							n=0;
							if(zongjia[7]>9)
							zongjia[7]=0;
						 }
						 zongjia[0]=jiage[6];
						 zongjia[1]=jiage[7];
						 break;
			}
		}
	 }
	 lucheng[5]++;                                                  //路程位加1
	 if(lucheng[5]>9)
	 {
	 	n=1;                                                        //大于9进1位 
		lucheng[5]=lucheng[5]%10;                                   //本位10取余
	 }
	 if(n==1)                                                       //是否有进位
	{
		n=0;                                                        //进位清0
	 	lucheng[6]++;                                               //上一位加1
		if(lucheng[6]>27)                                           //是否到有小数点的9
		{
			n=1;                                                    //进位
			lucheng[6]=lucheng[6]-10;                               //本位减10
		} 	   		
	 }
	 if(n==1)                                                       //是否有进位
  	 {
  		 n=0;                                                       //进位清0
		 lucheng[7]++;                                              //加1    
		 if(lucheng[7]>9)                                           //如果大于9清0
		 {
		 	  lucheng[7]=0; 
		 }                                             
	 }
	 x=1;                                                           //中断完成标志
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -