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

📄 waterctrlv1.c

📁 一个基于PIC18F单片机的开发的流量计量仪表
💻 C
📖 第 1 页 / 共 5 页
字号:
//Date		:06.06.11
//*****************************************************************//
void interruptl(void)
{
	//---------------------------------------------------------------
	if(INTCON3bits.INT3IF) 									// 'select' key been on
	{
		INTCON3bits.INT3IF = 0;
		systemflag1 |= 0x02;
	}
	//---------------------------------------------------------------
	if(INTCONbits.RBIF = 1)
	{
		INTCONbits.RBIF = 0;
	}
	//---------------------------------------------------------------
	if(INTCONbits.TMR0IF)									//timer0 1S Interrupt is happen
	{
		INTCONbits.TMR0IF=0;
	}
	//---------------------------------------------------------------
	if(PIR1bits.TMR1IF)										//timer1 131.072mS Interrupt for valve
	{
		PIR1bits.TMR1IF = 0;
		valvetime+=1;
		if(valvetime >= setvalvetime)						//valve actiontime is over
		{
			valvetime = 0;
			CLOSE = 0;
			OPEN  = 0;
			StopTimer1;										//stop timer1
		}
	}
	//--------------------------------------------------------------
	if(PIR2bits.TMR3IF)											//timer3 
	{
		PIR2bits.TMR3IF = 0;
		timer3counter++;
		if(timer3counter>=timer3cntadj)
		{
			timer3counter = 0;
			wheelcnt1++;
			if(wheelcnt1==1)
				DPY_WaterWheelSt1();
			else
			{
				if(wheelcnt1==2)
				{
					DPY_WaterWheelSt2();
				}
				else
				{
					DPY_WaterWheelSt3();
					wheelcnt1=0;					
				}
			}
				
		}
	}	

	//---------------------------------------------------------------
	INTCONbits.PEIE  = 1; 
	return;
}						

//*****************************************************************//
//Name 		:Interrupl
//Input		:void
//Output	:void
//Function	:Low address interrupt ISR (high prinoty)
//D.R.P		:QiuHao
//Date		:06.06.11
//*****************************************************************//
void interrupth(void)												
{   
	//---------------------------------------------------------------	
	if(INTCON3bits.INT1IF)     //SIN2
	{
		WaterWheelStChg();
		INTCON3bits.INT1IF=0;
		SIN2INTEN = 0;
		SIN1INTEN = 0;
		Delay10KTCYx(100);
		if(SIN2==0)
		{
			counterflag |= 0x01;						
		}
		else
		{
			INTCON3bits.INT1IF=0;
			SIN1INTEN = 1;
			SIN2INTEN = 1;			
		}
	}
	//---------------------------------------------------------------
	if(INTCON3bits.INT2IF)		//SIN1
	{
		WaterWheelStChg();
		INTCON3bits.INT2IF=0;
		SIN2INTEN = 0;
		SIN1INTEN = 0;
		Delay10KTCYx(100);
		if(SIN1==0)
		{
			counterflag |= 0x02;
		}
		else
		{
			INTCON3bits.INT2IF=0;
			SIN1INTEN = 1;
			SIN2INTEN = 1;			
		}
	}
	//---------------------------------------------------------------
	if(INTCONbits.INT0IF) // '0k' key been on
	{
		INTCONbits.INT0IF = 0;
		systemflag1 |= 0x01;
	}
	//---------------------------------------------------------------
	if(PIR1bits.RC1IF)
	{
				RevBuffer[com1bufaerapointer] = RCREG1;
				switch(com1bytecnt)
					{			
							case 0:
							if(RevBuffer[com1bufaerapointer]==0x17)
								com1bytecnt=1;
							else
								{
									if(RevBuffer[com1bufaerapointer]==0x45)
									{
										com1bytecnt=20;	
									}
									else
									{
										com1bufaerapointer=0;
										com1bytecnt=0;
									}
								}
							break;
							case 1:

								if(RevBuffer[com1bufaerapointer]==0x02)
									com1bytecnt=2;
		 						else
									{
									com1bytecnt=0;
									com1bufaerapointer=0;	
									}							
							break;         
							case 2:
							com1bytecnt=3;
							com1cmdlth=RevBuffer[0];
							break;			
							case 3:
							if(com1cmdlth==(++com1bufaerapointer))
							{
								com1bytecnt=0;					
								com1bufaerapointer=0;
								com1cmdlth=0;
								systemflag|=0x80;
							}
							break;

							case 20:
							if(RevBuffer[com1bufaerapointer]==0x03)
								{
								systemflag1 |= 0x08;

								}
							if(RevBuffer[com1bufaerapointer]==0x04)			
								{
								systemflag1 |= 0x04;
								}
							com1bytecnt=0;					
							com1bufaerapointer=0;
							com1cmdlth=0;								
							break;
							default:
							com1bytecnt=0;					
							com1bufaerapointer=0;
							com1cmdlth=0;
							break;		
					}
	}
	//---------------------------------------------------------------
	INTCONbits.GIE = 1;	
	return;
}

//*****************************************************************//
//Name 		:Uart1senddata
//Input		:unsigned char num        //Number of bytes that will sent 
//			:unsigned char *dpoint    //data area pointer
//Output	:void
//Function	:Uart1 sent data
//D.R.P		:QiuHao
//Date		:06.06.11
//*****************************************************************//
void Uart1senddata(unsigned char num , unsigned char *dpoint)
{
	for(;num>0;num--)
	{ 
		TXREG1 = *(dpoint++);
		while(!TXSTA1bits.TRMT);  //if TRMT == 1 that RCREG! is empyt, the data did been sent   
 	}
}

//*****************************************************************//
//Name 		:Uart2senddata
//Input		:unsigned char num        //Number of bytes that will sent 
//			:unsigned char *dpoint    //data area pointer
//Output	:void
//Function	:Uart2 sent data
//D.R.P		:QiuHao
//Date		:06.06.11
//*****************************************************************//
void Uart2senddata(unsigned char num , unsigned char *dpoint)
{
	for(;num>0;num--)
	{
		RCREG2 = *dpoint;
		while(!TXSTA2bits.TRMT);  
		//if TRMT == 1 that RCREG2 is empyt, the data did been sent   
		dpoint++;
 	}
}

void Uart1RevInt(void)
{
;
}



////////////////////////////////// LCD Display Flag /////////////////////////
//*****************************************************************//
//Name 		:OneLcdFlagSet
//Input		:unsigned char dpy_memory: which address in HT1623 display
//									   memory that the flag 
//Output	:void
//Function	:be set HT1623 display memory data D3 
//D.R.P		:HaoQiu
//Date		:06.06.
//*****************************************************************//
void OneLcdFlagSET(unsigned char dpy_memory)
{
	unsigned char templcd;
	templcd = RdHT1623OneByte(dpy_memory);
	templcd = templcd | 0x08; // All LCD Flag is at D3 bit , set this bit
	WrHT1623OneByte(dpy_memory,templcd);
}

//*****************************************************************//
//Name 		:OneLcdFlagClear
//Input		:unsigned char dpy_memory: which address in HT1623 display
//									   memory that the flag 
//Output	:void
//Function	:be clear HT1623 display memory data D3  
//D.R.P		:HaoQiu
//Date		:06.06.
//*****************************************************************//
void OneLcdFlagClear(unsigned char dpy_memory)
{
	unsigned char templcd;
	templcd = RdHT1623OneByte(dpy_memory);
	templcd = templcd & 0x07; // All LCD Flag is at D3 bit , claer this bit
	WrHT1623OneByte(dpy_memory,templcd);
}

void DYP_OpenValve_Flg(void)
{
	OneLcdFlagSET(37);
	OneLcdFlagSET(59);
	OneLcdFlagClear(57);
}
void DPY_CloseValve_Flg(void)
{
	OneLcdFlagSET(37);
	OneLcdFlagSET(57);
	OneLcdFlagClear(59);
}
void UnDPY_Valve_FLg(void)
{
	OneLcdFlagSET(37);
	OneLcdFlagClear(59);
	OneLcdFlagClear(57);
}

void DYP_Failure_Flg(void)
{
	OneLcdFlagSET(75);
}
void UnDPY_Failure_Flg(void)
{
	OneLcdFlagClear(75);
}

void DYP_CardOn_Flg(void)
{
	OneLcdFlagSET(33);				//z13
}
void UnDYP_CardOn_Flg(void)
{
	OneLcdFlagClear(33);			//z13
}

void DPY_0Pow_Flg(void)
{
	OneLcdFlagSET(67);
	OneLcdFlagClear(61);			//t9
	OneLcdFlagClear(65);			//t8
	OneLcdFlagClear(71);			//t7
}
void DPY_1Pow_Flg(void)
{
	OneLcdFlagSET(67);
	OneLcdFlagClear(61);			//t9
	OneLcdFlagClear(65);			//t8
	OneLcdFlagSET(71);				//t7
}
void DPY_2Pow_Flg(void)
{
	OneLcdFlagSET(67);
	OneLcdFlagClear(61);			//t9
	OneLcdFlagSET(65);				//t8
	OneLcdFlagSET(71);				//t7
}
void DPY_3Pow_Flg(void)
{
	OneLcdFlagSET(67);				//
	OneLcdFlagSET(61);				//t9
	OneLcdFlagSET(65);				//t8
	OneLcdFlagSET(71);				//t7
}

void DPY_Full_SigleLv_Flg(void)
{
	OneLcdFlagSET(11);				//t1
	OneLcdFlagSET(17);				//t2
	OneLcdFlagSET(19);				//t3
	OneLcdFlagSET(23);				//t4
}
void DPY_Half_sigleLv_Flg(void)
{
	OneLcdFlagSET(11);				//t1
	OneLcdFlagClear(23);			//t4
}
void UnDPY_Sigle_Flg(void)
{
	OneLcdFlagClear(11);			//t1
	OneLcdFlagClear(23);			//t4
}


void DPY_CardYL_Area(void)	       //卡余量   。   M2
{
	OneLcdFlagSET(7);				//z0
	OneLcdFlagSET(9);				//p1
	OneLcdFlagSET(13);				//y1
	OneLcdFlagClear(5);				//z1
	OneLcdFlagClear(15);			//z12
}

void DPY_CardJE_Area(void)			//卡金额   。   元
{
	OneLcdFlagSET(5);				//z1
	OneLcdFlagSET(9);				//p1
	OneLcdFlagSET(15);				//z12
	OneLcdFlagClear(7);				//z0
	OneLcdFlagClear(13);			//y1
}

void UnDPY_CardJEorYL_Area(void)
{
	OneLcdFlagClear(5);				//z1
	OneLcdFlagClear(15);			//z12
	OneLcdFlagClear(7);				//z0
	OneLcdFlagClear(9);				//p1
	OneLcdFlagClear(13);			//y1
	OneLcdFlagClear(5);				//z1
	OneLcdFlagClear(15);			//z12
}

void DPY_SL_Area(void)				//水量     。   M2
{
	OneLcdFlagSET(3);				//z2
	OneLcdFlagSET(21);				//p2
	OneLcdFlagSET(27);				//y2
}
void UnDPY_SL_Area(void)
{
	OneLcdFlagClear(3);				//z2
	OneLcdFlagClear(21);			//p3
	OneLcdFlagClear(27);			//y2
}

void 

⌨️ 快捷键说明

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