📄 waterctrlv3.c
字号:
systemtempint1 = loopcnt & 0x1fff;
if(systemtempint1 == 0x01fff)
{
carderrorbyte=CheckCardIsMove();
if(carderrorbyte!=0x01) //card been remove
{
timerscnt = 0;
carderrorbyte =0x22;
goto stopusewater;
}
}
if(loopcnt==29000)
{
timerscnt += 1;
loopcnt=0;
ReflashLcdTimeDpy(1);
}
if(timerscnt==10)
{
timerscnt+=1;
if(systemflag2&0x80)
{
ClearNumDpy(1,1); //display SheDinLiang
DPY_SDZorDJ_Num(SheDSL,0x01);
}
ClearNumDpy(4,4);
DPY_LJSLorRQ_Num(LieJSL,1); //display LieJiLiang
systemflag4 |= 0x01;
}
if(timerscnt>22)
{
timerscnt=0;
ClearNumDpy(1,1); //display DJ
DPY_SDZorDJ_Num(DanJ,0x00);
ClearNumDpy(4,4);
DPY_LJSLorRQ_Num(systemtime,0) ; //display date
systemflag4 &= 0xfe;
}
//-------------------user turn on the ON/OFF KEY
if(systemflag2&0x08)
{
systemflag2 &= 0xf7;
KEYDOWNDS;
goto stopusewater;
}
//--------------------counter water
if( countWTRCNT > 0)
{
while( countWTRCNT)
{
countWTRCNT -= 1;
AddUsingValueOp();
WaterWheelStChg();
RtWrCdCNT+=1;
}
ReflhDisplayVal();
if(systemflag4&0x01) //reflash LieJiLiang
{
ClearNumDpy(4,4); //
DPY_LJSLorRQ_Num(LieJSL,1);
}
}
//--------------------GuanHuanGuang error
if(cntkeyerr!=0)
{
if(cntkeyerr&0x22)
{
carderrorbyte = 0x31;
cntkeyerr = 0;
cntorder = 0;
goto stopusewater;
}
if(GuHGERRCNT<12)
{
cntkeyerr = 0;
cntorder = 0;
}
else
{
GuHGERRCNT = 0;
carderrorbyte = 0x0c;
cntkeyerr = 0;
cntorder = 0;
goto stopusewater;
}
}
//-------------------return write card
if(RtWrCdCNT>9)
{
RtWrCdCNT = 0;
systemtemp = CntReturnWr();
if(systemtemp != 0x01 )
{
carderrorbyte = 0x22;
goto stopusewater;
}
}
//-------------------user use water stop
if(0)
{
stopusewater:
RSTVEL;
CLVEL;
UnDPY_Failure_Flg();
systemflag4 |= 0x04;
DPY_CloseValve_Flg();
while(VELSTAOPIN)
{
systemflag4 &= 0xfb;
while( countWTRCNT)
{
countWTRCNT -= 1;
AddUsingValueOp();
WaterWheelStChg();
ReflhDisplayVal();
ClearNumDpy(4,4); //
DPY_LJSLorRQ_Num(LieJSL,1);
}
ReflashLcdTimeDpy(1);
}
RSTVEL;
systemflag4 &= 0xfb;
while( countWTRCNT)
{
countWTRCNT -= 1;
AddUsingValueOp();
WaterWheelStChg();
systemflag2 &= 0xdf;
ReflhDisplayVal();
ClearNumDpy(4,4); //
DPY_LJSLorRQ_Num(LieJSL,1);
}
systemtemp=CntReturnWr();
if(systemtemp!=0x01) //card been remove
{
timerscnt = 0;
carderrorbyte =0x22;
}
if(carderrorbyte != 0x22)
{
for(systemtemp=0;systemtemp<10;systemtemp++) //add 50L
{
BCDBytesAdd(CardYE,DanJCnt,5); //
BCDBytesSub(YongSL,OPnum3,3); //Yong Shui Liang add 1unit
BCDBytesSub(YongJE,DanJCnt,5); //yong jing E add 1 unit
BCDBytesSub(LieJSL,OPnum4,5); //LIeJiShuiLiang add 1 unit
}
CntReturnWr();
}
else
{
ClearNumDpy(0,0);
Wr1BCDNumToLcd(23,0); //C
Wr1BCDNumToLcd(22,1); //a
Wr1BCDNumToLcd(24,2); //r
Wr1BCDNumToLcd(13,3); //d
Wr1BCDNumToLcd(19,4); //-
Wr1BCDNumToLcd(0,5); //o
Wr1BCDNumToLcd(25,6); //u Wr1BCDNumToLcd(31,7); //t
}
ReflhDisplayVal();
ClearNumDpy(4,4);
DPY_LJSLorRQ_Num(LieJSL,1);
ReflashLcdTimeDpy(1);
if(carderrorbyte != 1)
{
ClearNumDpy(1,1);
DisplayErrCode(carderrorbyte);
carderrorbyte = 0;
}
FM1702PWROFF;
Delay10KTCYx(255); // 0.16s
Delay10KTCYx(255); // 0.16s
Delay10KTCYx(220); // 0.16s
WRITE_E2PROM(LieJSL,LieJiShuiLiangADD,5,0);
for(systemtemp=4;systemtemp>0;systemtemp--)
{
ClearNumDpy(0,0);
ClearNumDpy(2,2);
ClearNumDpy(3,3);
ReflashLcdTimeDpy(1);
Delay10KTCYx(160); // 0.16s
DPY_Card_YLorJE_Num(CardYE,0);
DPY_SLorJE_Num(YongSL,0);
DPY_SLorJE_Num(YongJE,1);
ReflashLcdTimeDpy(1);
Delay10KTCYx(160); // 0.16s
}
ClearNumDpy(0,0);
Wr1BCDNumToLcd(0,1);
Wr1BCDNumToLcd(25,2);
Wr1BCDNumToLcd(14,3);
Wr1BCDNumToLcd(10,4);
Delay10KTCYx(0);
Delay10KTCYx(0);
ClearNumDpy(0,0);
ClearNumDpy(1,1);
ClearNumDpy(2,2);
ClearNumDpy(3,3);
ClearNumDpy(4,4);
ClearNumDpy(5,5);
LEDCTRL = 0; //CLOSE BACK LED LIGHT
UnDYP_CardOn_Flg();
UnDPY_Failure_Flg();
Dsdisplay();
systemflag |= 0x10; //set flag to note
CLOUT1;
CLOUT2;
SIN1INTDS;
SIN2INTDS;
CLR_INT0F;
CLR_INT1F;
KEYSELDS;
KEYONOFFDS;
KEYDOWNDS;
KEYUPDS;
break;
}
}
}
//-------------------------------------save user note and error manage
if(systemflag & 0x10)
{
systemflag &= 0xef;
WeOneCnToE2();
systemflag4 |= 0x08;
}
//-------------------------------------recevice whole frame from RS485?
if(systemflag & 0x40)//
{
systemflag &= 0xbf;
}
//------------------------------------is velev close??
if(systemflag4 & 0x08)
{
systemflag4 &= 0xf7;
if(VELSTAOPIN)
{
CLVEL;
while(VELSTAOPIN);
RSTVEL;
OPVEL;
Delay10KTCYx(10);
RSTVEL;
}
systemflag3 |= 0x01;
}
//-----------------------------------go to sleep
if(systemflag3 &= 0x01)
{
systemflag3 &= 0xfe;
KEYUPEN;
KEYDOWNEN;
KEYONOFFDS;
KEYSELDS;
countWTRCNT = 0;
Sleep();
}
//------------------------------------------------------
}
}
//*****************************************************************//
//Name :InitialPort
//Input :void
//Output :void
//Function :This function initialize all mcu i/oport
//D.R.P :QiuHao
//Date :06.06.05
//*****************************************************************//
void InitializeSystem(void)
{
INTCONbits.GIE=0;
INTCONbits.PEIE = 0;
//--------------------Close COMPARTOR MOUDLE
CMCON = 0xff;
CVRCON = 0x00;
//-----------------------FM1702 Using I/O Port
/* DS1302 */
SETDSCLK;
SETDSRST;
SETDSDA;
/* AT24C1024 */
SETE2WP;
SETE2CLK;
SETE2DA;
/* MOTOR DREVIC */
SETCLOSE;
SETOPEN;
SETVELSTAOP;
SETVELSTACL;
SETMTRDET_ANIN;
/* SIN1~3 */
SETSIN1;
SETSIN2;
SETSIN3;
SETSOUT1;
SETSOUT2;
SETSOUT3;
/* USER KEY */
SETKEYDOWN;
SETKEYUP;
SETKEYONOFF;
SETKEYSEL;
KEYONOFFDS ;
KEYSELDS;
KEYUPDS;
KEYDOWNDS;
SETKBINT;
/* HT1623 LCD DISPLAY */
SETLEDCTRL ;
SETLCDCS;
SETLCDRD;
SETLCDRW;
SETLCDDA;
/* FM1702 R/W CARD DEVICE */
SETHQCCLK;
SETHQCMN;
SETHQCDI;
SETHQCDO;
SETHQCRST;
SETHQCPWRCTRL;
DSFM1702IO;
/* TC35i R/T SMS DEVICE */
SETGSMPWRCTRL;
SETPD;
SETIGT;
SETDTETXD;
SETDTERXD;
/* buzzer */
SETBZ;
/* PRESSURE DETECT */
SETYLDET_ANIN;
SETYLPWRCTRL;
/* UART1 */
SETTXD1;
SETRXD1;
DSUART1485IO;
/* SOLAD battery charge up CONTRL */
SETCDCTRL;
/* Power Voltage detect */
SETPWRDET_ANIN;
/* SOLAD battery Voltage detect */
SETSPWRDET_ANIN;
/* Temputer detect */
SETTEMPUTERDET_ANIN;
/* Temputer2 detect */
SETTEMPUTER2DET_ANIN;
//-----------------------Pic18f6720 device
/* A/D Conversion Setting */
ADCON0bits.ADON = 0; //close AD moudule
PIE1bits.ADIE = 0; //disable AD Interrupt
ADCON1bits.VCFG1 = 0; //use vcc and vss for Vref
ADCON1bits.VCFG0 = 0;
ADCON1bits.PCFG3 = 1; //AN0~AN6 available
ADCON1bits.PCFG2 = 0;
ADCON1bits.PCFG1 = 0;
ADCON1bits.PCFG0 = 0;
// ADCON2 bits.ADCS2 = 1; //4uS a bit
ADCON2bits.ADCS1 = 1;
ADCON2bits.ADCS0 = 0;
/* close o/i */
SETSIN3OUT;
SIN3INTDS;
SIN3OUT=0;
SOUT3OUT = 0;
// PDOUT = 0;
// IGTOUT = 0;
// DTETXDOUT = 0;
// DDRGbits.RG1 = 0;
// DTERXDOUT = 0;
// BZOUT = 0;
// SETTXD1OUT;
// TXD1OUT = 0;
// DDRCbits.RC7 = 0;
// RXD1OUT = 0;
// HWPWCTRL = 0;
// RS485RT = 0 ;
// HW38KOUT = 0;
/* UART1 for infrared ray */
/*
SPBRG1 = 207; //1.2Kbit/s
//Sent mode
TXSTA1bits.SYNC = 0; //ASYN mode
TXSTA1bits.BRGH = 0; //Low buad reta Mode
TXSTA1bits.TXEN = 1; //TX enialbe
RCSTA1bits.CREN = 1; //Continuum receive enialbe
RCSTA1bits.SPEN = 1; //Serial port1 enabled.
PIE1bits.TX1IE = 0;
IPR1bits.TX1IP = 0;
IPR1bits.RC1IP = 0; //Low prionty int
PIE1bits.RC1IE = 1;
*/
/* UART2 for GSM TC35i */
/*
SPBRG2 = 25; // 25:= 9.6Kbit/s
//Sent mode
TXSTA2bits.SYNC = 0; //ASYN mode
TXSTA2bits.BRGH = 0; //Low buad reta Mode
TXSTA2bits.TXEN = 1; //TX enialbe
RCSTA2bits.CREN = 1; //Continuum receive enialbe
RCSTA2bits.SPEN = 1; //Serial port2 enabled.
PIE3bits.TX2IE = 0;
IPR3bits.TX2IP = 0;
PIE3bits.RC2IE = 1;
IPR3bits.RC2IP = 0;
*/
/* timer0 */
/*
//Do 1s timer for system display
T0CONbits.TMR0ON = 0;
T0CONbits.T08BIT = 0; //16bit timer
T0CONbits.T0CS = 0;
// T0CONbits.T0SE = 0;
T0CONbits.PSA = 0;
T0CONbits.T0PS2 = 1; //64:1
T0CONbits.T0PS1 = 0;
T0CONbits.T0PS0 = 1;
INTCONbits.TMR0IF = 0; //Clear interrupt flag
INTCON2bits.TMR0IP = 0; //low interrupt pironty
TMR0L = 0x00;
TMR0H = 0x00;
INTCONbits.TMR0IE = 0; //Enable interrupt Timer0
*/
/* RBINT */
SETRBINTIP;
IBINTDS;
CLR_RBINTF;
RSTVEL;
while(VELSTAOPIN)
{
CLVEL;
}
RSTVEL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -