📄 waterctrlv1.c
字号:
//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 + -