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

📄 计价器存储.c

📁 刚学时编的小程序
💻 C
📖 第 1 页 / 共 2 页
字号:
				tcnt2=0;
				a=4;
			}
			if(k==0)                                                  //第二次按下,显示时间,数据清0
			{
				led=1;
				a=0;
				lucheng[5]=0;
				lucheng[6]=18;
				lucheng[7]=0;
                lucheng[0]=0; 
                lucheng[1]=0;
                lucheng[2]=18;
                lucheng[3]=0;
				zongjia[0]=18;
				zongjia[1]=0;
				zongjia[5]=0;
				zongjia[6]=18;
				zongjia[7]=0;
				break;
			} 
		}
	}
}

gaijia()                                                        //改价子程序
{
	a=2;                                                          //改价显示
	i=8;
	while(1)
	{
		if(shangjian()==1)                                          //三键按下,退出程序
		goto loop;
		if(erjian()==1)                                             //二键按下,进入输密码程序
		{
			if(mi()==1)                                               //密码正确,跳出循环
			{
				a=2;
				break; 
			}
			else 
			{
				a=0;goto loop;                                          //密码错误,退出
			}	 
		}
		if(yijian()==1)                                             //按下一键,进入改密码单元
		{
			gaimi();
			goto loop;
		}
	}	
	for(i=7;i>=0;i--)                                             //循环8次
	{
		if(i==5|i==2)	continue;                                     //如果是第二位或第五位,不改
		if((i==7|i==4|i==1)&jiage[i]<18)  jiage[i]=18;              //一、四、七位显示小数点
		while(1)
		{	
			if(shangjian()==1)                                        //按下三键,价格减1
			 {
				 jiage[i]--;
				 if(jiage[i]<0|jiage[i]==17)
				 jiage[i]=jiage[i]+10;
			 }
			 if(erjian()==1)                                          //按下二键,价格加1
			 {
				 jiage[i]++;
				 if(jiage[i]==10|jiage[i]==28)
				 jiage[i]=jiage[i]-10;
			 }
			 if(yijian()==1)	break;                                  //按下一键,移到下一位
		}
	}
	wrtorom(jiage,8,8);
	jia=1;
	loop:;
	a=0;                                                          //退出后显示时间
	i=0;
}

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

void t0(void) interrupt 1 using 1						                    //定时器0中断
{
	
	TH1=(65536-65000)/256;
	TL1=(65536-65000)%256;
	tcnt++;
	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;
		}
	}
	
	if(tcnt==5000)                                                
	{	
		tcnt=0;
		if(a==1|a==3)                                                  //计数器开始状态,计时间
		{
			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;
					}
				}
			}
		}
		
		if(k==0)
	 	second++; 											//秒加1
		//if(second==10) TR0=0; 
		if(second>=60)							//到60清0,分加1
		{
			if(w==1)
			{
				hour1++;
				if(hour1==2)
				{
					hour1=0;
					w=0;
				}
			}
			second=0;
			minite++;
			if(x==1&EX1==1)                                           //是否在进行中断(中途等待程序)
			{
				y++;                                                    //没进行y+1
				if(y==1)                                                //是否等待1分钟
				{
					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;
	}
	TH0=(65536-100)/256;
	TL0=(65536-100)%256;
}	
																
void int1(void) interrupt 2 using 0
{
	 x=0;                                                         //进入中断标志
	 tcnt2++;
	 if(tcnt2>5000)
	 {
	 	 tcnt2=0;
	  	tcnt3++;
	  	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(tcnt3<=20)
		 {
		 	zongjia[6]=23;
		 }
		 else
		 {
	 		c++;
	 		if(c==10)
			{
				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;                                                         //中断完成标志
}

void t1(void) interrupt 3 using 2
{
	 P3^=0;
	 P3^=1; 
}

⌨️ 快捷键说明

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