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

📄 main.c

📁 我用ARM写的一些东西
💻 C
📖 第 1 页 / 共 2 页
字号:
						DelayNS(100);
						V6On;
						V1On;
						SysStd=Stop;
					}
					else if (SysStd==Error)
					{
						if (StartDone==1)
						{
							SysStd=StandBy;
						}
						else
							SysStd = Start;
					}
					
				break;
				case KeyZero: 
					SpKeyDel=3;
					if(SysStd==LeakDtc)
					{
						if (Zeroing==0)
						{
							EnBeep=1;
							Zeroing=0xff;
						}
						else if (Zeroing==0xff)
						{
							if (KeyRept[0]>5)
							{
								EnBeep=1;
								IO0CLR = BEEP;			// BEEP	蜂鸣
								DelayNS(60);
								IO0SET = BEEP;			// BEEP停止蜂鸣
								DelayNS(20);								
								Zeroing=0;
							}
						}	
							
						if (Zeroing==0xff)
						{
							EnBeep=1;
							ZeroLeakValue=ZeroLeakValueTp;
						}
					}	
						
				break;
				case KeyCal :
					//SysStd=Caling;
					
				break;
				case KeyUp :
				break;
				case KeyDown :
				break;
				case KeyLeft :
			
				break;					
				case KeyRt :
				break;		
				default:
					EnBeep=1;
				break;																		
			}
			
			if(EnBeep==1)
			{	
				EnBeep=0;
				IO0CLR = BEEP;			// BEEP	蜂鸣
				DelayNS(80);
				IO0SET = BEEP;			// BEEP停止蜂鸣
			}

			KeyReg[0]=0;
		}
		if ((X0Dat[0]&0x01==0x01)&&(SysStd==StandBy))
		{
			X0Dat[0]=X0Dat[0]&(~0x01);
			SysStd=Caling;
		}	
		
		if (X4Dat[11])	

		
/*****************************************************************************/	
/*								     启动                                    */  
/*****************************************************************************/
					
		switch(SysStd)
		{
			case  Start 	:
			
				WindowsFg=30;
				V1On;V2Off;V3Off;
				V4Off;V5Off;V6Off;
				EnPe=0;
				//TpumVaccum=GetVaccum(IntAdDat[1]);
				/*if (KeyReg[0]==KeyStSp)
				{
					KeyReg[0]=0;
					SysStd=Stop;
				}	
				/*if(SysSec>0)
				{
					SysSec=0;
					StartTm++;
				}*/
					
				if (TpumVaccumMain>5) //分子泵排气口压力>5 mbar
				{
					IO0CLR	=	TmpCtrl	;
				
					if (StartTm>300)
					{
						SysStd=Error;
						StartTm=0;
						V1Off;
						StartDone=0;
						SysErrNum=1;
					}
				}
				
				else
				{
					IO0SET	=	TmpCtrl	;
					
					if ((IO0PIN & TpumOk)==TpumOk)
					{
						if (StartTm>600)
						{
							IO0CLR	=	TmpCtrl	;
							SysStd=Error;
							StartTm=0;
							V1Off;
							StartDone=0;
							SysErrNum=2;
							
						}
					} 
					else  //分子泵OK
					{	
						
						if(StartDlyed==0)
						{
							StartDlyed=1;
							if (VDly0==0)
							{
								VDly0=30;
								TmpOk=1;
							}	
						}	
								//DelayNS(100);  //延时15秒
						if 	(VDly0==0)
						{	
							
							for(TryTms=0;TryTms<5;TryTms++)
							{	
								if (KeyReg[0]==KeyStSp)
								{
									KeyReg[0]=0;
									SysStd=Stop;
								}	
								IO1CLR=DxBoard	;//灯丝板断电
								DelayNS(100);
								IO1SET=DxBoard	;//灯丝板加电
								DelayNS(100);
								
								ReadIntAd(2);	//读取灯丝电流
								if (IntAdDat[2]<100)
								{
									if ((TryTms==3)||(IO0PIN & Dx10r2)==0)
									{
										IO0SET=Dx10r2;
										TryTms=0;
									}
									else if ((TryTms==3)||(IO0PIN & Dx10r2)==1)
									{
										SysStd=Error;
										StartDone=0;
										SysErrNum=3;
										break;
									}
									
								}
								else
								{
									StartDone=1;
									StartBar=250;
									IO0CLR = BEEP;			// BEEP	蜂鸣
									DelayNS(150);
									IO0SET = BEEP;			// BEEP停止蜂鸣
									MsOk=1;
									//TmpOk=1;
									
									StartTm=0;
									break;
								}
								
							}	
							
							if (StartDone==0)
							{
								;
							}
							else
							{
								//DelayNS(1);
								//StartTm=StartTm+10;
								//if (StartTm>=280)
									SysStd=StandBy;
							}
						}
					}	
					
				}
							
				
			break;
			
/****************************************************************/	
/*								待机                            */
/****************************************************************/			
			case  StandBy	:
				WindowsFg=31;
				StartLkDec=1;
				VdFg1=0;
				VdFg2=0;
				VdFg3=0;
				VdFg4=0;
				VdFg5=0;
				VdFg6=0;
				VdFg7=0;
				VdFg8=0;
				/*
				if (KeyReg[0]==KeyStSp)
				{
					SysStd = LeakDtc;
				}*/
				StartDone=1;
				//SetAmp(2);
				//AmpRate=2;
				OverPort=1;
				Overed=0;
				MsOk=1;
				TmpOk=1;
				EnPe=0;
				V1On;
			break;
			
			
/****************************************************************/	
/*								检漏                            */
/****************************************************************/			
			case  LeakDtc	:
			
				V6Off;
				//EnPe=0;
				if (LkPtVaccumMain>8)
				{	
					WindowsFg=32;			
					V1Off ;V3Off; V4Off;	V5Off;	V6Off;
					if ((IO0PIN & Var2 )==0)
					{	
						if(VdFg1==0)
						{
							VdFg1=1;
							if(VDly1==0)
								VDly1=2;
						}		
						//DelayNS(200); //延时1。5秒
					}
					if (VDly1==0)
					{
						V2On;
						
						if (SysSec%2)
						{
							SysSec=0;
							StartTm++;
						}
						
						if ((StartTm%300)==299)
						{
							V2On;
							DelayNS(1000);
							V1Off;	
							DelayNS(500);
							V2Off;
							DelayNS(500);
							V1On;	
				
						}
						
						if (StartTm>1800)
						{
							V1Off;V2Off;
							
							SysStd=Error;
							SysErrNum=4;
						}
					}	
				}
				
				else if ((LkPtVaccumMain<7.5)&&(VDly1==0))//检漏口压力小于7.5mbar
				{
					WindowsFg=33;
					//V1On;
					if (ZeroMode==1)
					{
						if (ZeroDelTm!=0)
						{
							if (AutoZeroFg==0)
							{
								AutoZeroTm=(ZeroDelTm*1000)/16;
								AutoZeroFg=1;
							}	
							if (AutoZeroTm==0)
							{
								Zeroing=0xff;
							}
						}	
					}
					//EnPe=1;	
					if ((LkPtVaccumMain>1)||(OverPort==1)|| (DecPort==1)||(VDly2!=0)  )
					{
						OverPort=1;
						if ((IO0PIN & Var1 )==0)
						{
							if(VdFg2==0)
							{
								VdFg2=1;
								if (VDly2==0)
								{
									VDly2=4;//070329
								}
							}	
							//DelayNS(200); //延时1。5秒
							
						}	
						if(VDly2==0)
						{
							V1On;V3Off;V4Off;V5Off;V6Off;
							MustV3=1;
						}	
						
						if ((IO0PIN & Var2 )==0)
						{
							if(VdFg3==0)
							{
								VdFg3=1;
								if (VDly3==0)
								{
									VDly3=5;
								}
							//DelayNS(200); //延时1。5秒	
							}
							
						}	
						if(VDly3==0)
						{
							V2On;
									
							StartLkDec=1;//CHANGE 3
						}
						
							
												
						//CHANGE 3StartLkDec=1;

						
						
					}	
					
					if ((LkPtVaccumMain<0.8)&&(VDly2==0)||(VDly4!=0)||(MustV3==1))//???????????
					{
						EnPe=1;
						
						if ((MustV3==1)||
						      (
						        (LkPtVaccumMain>0.2) //&&
							   // (
							      // (DecPort==0)	 	 ||
							      // (DecPort>1) 		 ||
							      // (OverPort==2)
							  //  )
							  ) 					 ||
							  
							  (
							  	(LkPtVaccumMain<=0.2) &&
							    (
							      // (DecPort==0)	 	 ||
							       (DecPort==2) 		 ||
							       (OverPort==2)
							     )  
							  )
							
						   )	
						{
							OverPort=2;					
							//CHANGE 2	StartLkDec=2;
							if (((IO0PIN & Var3 )==0))
							{
								if(VdFg4==0)
								{
									VdFg4=1;							
									if(VDly4==0)
										VDly4=8;
								}
								//DelayNS(200); //延时1。5秒		
							}		
											
							if(VDly4==0)
							{						
								V2Off;V4Off;V1On,V3On;
								MustV3=0;
								StartLkDec=2;
							}
								
							/*if ((IO0PIN & Var3 )==0)
							{
								if(VdFg5==0)
								{
									VdFg5=1;							
									if (VDly5==0)
									{
										VDly5=10;  //070329
									}
								}	
								//DelayNS(200); //延时1。5秒		
							}
									
							if (VDly5==0)
							{
								V3On;							
								StartLkDec=2;//CHANGE 2
							}	*/
						}
						
						if (
							((VDly4==0)||((LkPtVaccumMain<0.1)) &&             ////////?????????
								 ( (DecPort==0)       ||
								   (DecPort>2)		  || 	
								   (OverPort==3)
								 )
								 
								 					  
								  	
								&&(Overed==0))&&(MustV3==0)
								
								)
						{
							OverPort=3; 					
							 //CHANGE 1StartLkDec=3;
							if ((IO0PIN & Var4 )==0)
							{
								if(VdFg6==0)
								{
									VdFg6=1;								
									if(VDly6==0)
									{
										VDly6=8;//070329
									}
								}
								//DelayNS(200); //延时1。5秒	
							}
									
																			
							if(VDly6==0)
							{	
								 StartLkDec=3;//CHANGE 1			
								V2Off;V3Off;V4On; V1On;
							}	
						}
					}
					
					
				}
				
			break;
/****************************************************************/	
/*								定标中                          */
/****************************************************************/				
			case Caling:
			
				V6Off;
				V5On;
				
				if (LkPtVaccumMain>8)
				{	
					WindowsFg=32;	
					StartLkDec=0;
					CalTm=0;		
					V1Off ;V3Off; V4Off;	V5Off;	V6Off;
					if ((IO0PIN & Var2 )==0)
						DelayNS(500); //延时1。5秒
					V2On;
					if (SysSec%2)
					{
						SysSec=0;
						StartTm++;
					}
					
					if ((StartTm%300)==299)
					{
						V2On;
						DelayNS(1000);
						V1Off;	
						DelayNS(500);
						V2Off;
						DelayNS(500);
						V1On;	
			
					}
					
					if (StartTm>1800)
					{
						V1Off;V2Off;
						
						SysStd=Error;
						SysErrNum=4;
					}
				}
				
				else if (LkPtVaccumMain<7.5)//检漏口压力小于7.5mbar
				{
					WindowsFg=35;

					if (LkPtVaccumMain>1) 
					{
						
						if ((IO0PIN & Var1 )==0)
							DelayNS(500); //延时1。5秒
						V1On;V3Off;V5Off;V6Off;
						
						if ((IO0PIN & Var2 )==0)
							DelayNS(500); //延时1。5秒	
						V2On;	
												
						//StartLkDec=1;
						
					}	
					
					else if (LkPtVaccumMain<0.8)
					{
						if ((LkPtVaccumMain>0.2) )	
						{
							//StartLkDec=2;
							if ((IO0PIN & Var3 )==0)
								DelayNS(500); //延时1。5秒	
													
							V2Off;V4Off;V1On;
							if ((IO0PIN & Var3 )==0)
								DelayNS(500); //延时1。5秒		
							V3On;							
						}
						
						else if ((LkPtVaccumMain<0.1))
						{
							StartLkDec=3;
							if ((IO0PIN & Var4 )==0)
								DelayNS(500); //延时1。5秒	
																			
							V2Off;V3Off;V4On; V1On;
							
							if (CalExp>=8)
							{
								IRQDisable();
								SetAmp(4);
								IRQEnable();
							}
							else
							{
								IRQDisable();
								SetAmp(3);
								IRQEnable();
							}	
							if (SysSec%2)
							{	
								SysSec=0;
								CalTm++;
							}		
							
							if (CalTm>20)
							{
								CalTm=20;
								RemCal=LeakValue;
								WriteTmp[0]=(uint16)(RemCal)/256;
								WriteTmp[1]=(uint16)(RemCal)%256;
								//DisTm0;
								//DisTm1;
								//DisUart0;
								//DisUart1;		
								//EnI2C0;									
								//I2C_WriteNByte (0xa0, 1,0xfe, WriteTmp, 2);//070305
								//EnTm0;
								//EnTm1;
								//EnUart0;
								//EnUart1;		
								//EnI2C0;	
							}
							
						}
						
					}
					
					
				}
			break;
/****************************************************************/	
/*								停 机                           */
/****************************************************************/			
			case  Stop	:
				
				V2Off;V3Off;
				V4Off;V5Off;V6Off;
				DelayNS(100);
				//IO0CLR	=	TmpCtrl	;
				
				//if (KeyReg[0]==KeyStSp)
				{
					//KeyReg[0]=0;
					//if (StartDone==1)
					{
					//	SysStd=LeakDtc;
					}
				//	else
					{
				//		SysStd=Start;
					}
				}
			
			break;
			case  Error 	:
				SysStd=Error;	
			break;
			default:
			break;
		}
		 
		
		if (SysStd==Error)
		{
			//while(1)
			{
				VdFg1=0;
				VdFg2=0;
				VdFg3=0;
				VdFg4=0;
				VdFg5=0;
				VdFg6=0;
				VdFg7=0;
				VdFg8=0;
				V2Off;V3Off;
				V4Off;V5Off;V6Off;
				BeepAlarm(3);
				
			}
		}

	if (DispRate>2) 
	{
			DispRate=0;
			MbusDel();
	}

	}

	
	DelayNS(1);
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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