📄 untitled.c
字号:
HQCPWRCTRLOUT = 0;
DSFM1702IO;
CloseValve();
DPY_CloseValve_Flg();
RevBuffer[19]=6;
UnDYP_CardOn_Flg();
WRITE_E2PROM(LieJSL,LieJiShuiLiangADD,5,0); //write LieJiShuiLiang
for(RevBuffer[19];RevBuffer[19]>0;RevBuffer[19]--)
{
if(systemflag2&0x80) //setting mode or directness mode
{
ClearNumDpy(1,1);
ClearNumDpy(2,2);
Delay10KTCYx(255);// 0.16s
DPY_SLorJE_Num(YongSL,0);
DPY_SDZorDJ_Num(SheDSL,1);
Delay10KTCYx(0);// 0.16s
}
else
{
Delay10KTCYx(255);// 0.16s
Delay10KTCYx(255);// 0.16s
}
}
DYP_Failure_Flg();
ClearNumDpy(1,1);
DisplayErrCode(carderrorbyte);
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
Delay10KTCYx(0);
Delay10KTCYx(0);
Delay10KTCYx(0);
Delay10KTCYx(0);
Delay10KTCYx(0);
Delay10KTCYx(0);
ClearNumDpy(0,0);
ClearNumDpy(1,1);
ClearNumDpy(2,2);
ClearNumDpy(3,3);
ClearNumDpy(4,4);
ClearNumDpy(5,5);
UnDPY_Failure_Flg();
KEYONOFFEN;
KEYDOWNEN;
// KEYUPDS;
// KEYSELDS;
LEDCTRL = 0; //CLOSE BACK LED LIGHT
Dsdisplay();
systemflag |= 0x10; //
systemflag3 |= 0x01;
break;
}
//-------------------user turn on the ON/OFF KEY
if(systemflag2&0x01)
{
systemflag2 &= 0xfe;
systemflag3 |= 0x08;
}
//-------------------user setting water value is over
if(systemflag2 &0x20)
{
systemflag2 &= 0xdf;
systemflag3 |= 0x08;
}
//-------------------count water value
if(systemflag3 & 0xc0) //count key turn on
{
if(systemflag3 & 0x80) //SOUT1OUT
{
systemflag3 &= 0x7f;
DSGIE;
if(CntReturnWr()==0x00)
{
systemflag2|=0x10;
}
ReflhDisplayVal();
SIN2INTEN;
ENGIE;
}
if(systemflag3 & 0x40) //SOUT2OUT
{
systemflag3 &= 0xbf;
DSGIE;
if(CntReturnWr()==0x00)
{
systemflag2|=0x10;
}
ReflhDisplayVal();
SIN1INTEN;
ENGIE;
}
WaterWheelStChg();
if(systemflag4&0x01) //reflash LieJiLiang
{
ClearNumDpy(4,4); //
DPY_LJSLorRQ_Num(LieJSL,1);
}
CLR_INT0F;
CLR_INT1F;
}
//-------------------user use water stop in geal?
if(systemflag3&0x08)
{
systemflag3&=0xf7;
// AddUsingValueOp();
CLOUT1;
CLOUT2;
SIN1INTEN;
SIN2INTEN;
CLR_INT0F;
CLR_INT1F;
DSGIE;
carderrorbyte = CntReturnWr();
ENGIE;
if(carderrorbyte!=0x01)
{
systemflag2 |= 0x10;
break;
}
UnDPY_Failure_Flg();
WRITE_E2PROM(LieJSL,LieJiShuiLiangADD,5,0); //write LieJiShuiLiang
usercardstateB&=0x00;
CloseValve();
HQCPWRCTRLOUT = 0; //fm1702 power down
DSFM1702IO;
for(systemtemp=6;systemtemp>0;systemtemp--)
{
ClearNumDpy(1,1);
ClearNumDpy(2,2);
Delay10KTCYx(200); // 0.16s
DPY_SLorJE_Num(YongSL,0);
if(systemflag2&0x80)
{
DPY_SDZorDJ_Num(SheDSL,1);
}
Delay10KTCYx(200); // 0.16s
}
ClearNumDpy(0,0);
Wr1BCDNumToLcd(0,1);
Wr1BCDNumToLcd(25,2);
Wr1BCDNumToLcd(14,3);
Wr1BCDNumToLcd(10,4);
Delay10KTCYx(0);
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();
Dsdisplay();
// KEYUPDS;
// KEYSELDS;
systemflag |= 0x10; //set flag to note and error manage
systemflag3 |= 0x01;
break;
}
}
}
//-------------------------------------save user note and error manage
if(systemflag & 0x10)
{
systemflag &= 0xef;
WeOneCnToE2();
systemflag3 &= 0x01;
}
//-------------------------------------recevice whole frame from RS485?
if(systemflag & 0x40)//
{
systemflag &= 0xbf;
}
if(systemflag3 &= 0x01)
{
systemflag3 &= 0xfe;
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;
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;
/* 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;
/* timer1 */
/*
//Do 0.131s timer for system Open/Close valve
T1CONbits.TMR1ON = 0;
T1CONbits.TMR1CS = 0; //using internal clock
T1CONbits.T1OSCEN = 0; //
T1CONbits.T1CKPS0 = 1; //1:8
T1CONbits.T1CKPS1 = 1; //
T1CONbits.RD16 = 1; //set 16 bit timer
PIR1bits.TMR1IF = 0; //
IPR1bits.TMR1IP = 0; //low interrupt pirnoty
TMR1L = 0x00;
TMR1H = 0x00;
PIE1bits.TMR1IE = 0;
*/
/* timer2 */
/*
//ues for infrared
// TCON2bits.TMR2ON = 0;
// TCON2bits.T2CKPS1 = 0;
// TCON2bits.T2CKPS0 = 0; //Fclk/1=4MHz Tt2 = 0.25uS
// TCON2bits &= 0x00; //0.25uS one
// PR2 = 26; //for 38K
// PR2 = 17; //for 56K
// PR2 = 8; //for 115K
IPR1bits.TMR2IP = 0;
PIR1bits.TMR2IF = 0;
PIE1bits.TMR2IE = 0;
*/
/* timer3 */
/*
//ues for
T3CONbits.TMR3ON = 0;
T3CONbits.T3CKPS1 = 1; // 1/4
T3CONbits.T3CKPS0 = 0;
T3CONbits.RD16 = 1; //16 bit timer
T3CONbits.TMR3CS = 0; //clock from fosc/4 T3CONbits.TMR3ON = 0;
IPR2bits.TMR3IP = 0; //low interrupt pirnoty
PIE2bits.TMR3IE = 0;
PIR2bits.TMR3IF = 0;
TMR3L = 0x00;
TMR3H = 0x00;
*/
/* System Device initialez */
InitE2prom();
En_dswork();
InitHT1623Port();
InitLcdDpy();
Dsdisplay();
READ_E2PROM(&carderrorbyte,BeingUserFlagADD,1,0);
if(carderrorbyte!=0xa5)
{
KEY_B[0]=0xff;
KEY_B[1]=0xff;
KEY_B[2]=0xff;
KEY_B[3]=0xff;
KEY_B[4]=0xff;
KEY_B[5]=0xff;
WRITE_E2PROM(KEY_B,HartCardLoadPWAdd,6,0);
Systemnum[0]=0xff;
Systemnum[1]=0xff;
Systemnum[2]=0xff;
WRITE_E2PROM(Systemnum,SystemNumADD,3,0);
}
/* enaible all key */
KEYDOWNEN;
KEYUPEN;
KEYONOFFEN;
KEYSELEN;
KBINTINTEN;
/* INTERRUPT */
RCONbits.IPEN = 1; //enaible interrput pirnoty
INTCONbits.PEIE = 1; //Open low interrupt enailbe
INTCONbits.GIE = 1; //Open interrupt enaible
/* WDT */
// CONFIG2Hbits.WDTPS2 =
// CONFIG2Hbits.WDTPS1 =
// CONFIG2Hbits.WDTPS0 =
// WDTCOMbits.SWDTEN = 1; //enaible WDT
// CLRDOG;
systemflag = 0;
systemflag2 = 0;
systemflag3 = 0;
systemflag3 |= 0x01;
}
//*****************************************************************//
//Name :Interrupl
//Input :void
//Output :void
//Function :Low address interrupt ISR(low prinoty)
//D.R.P :QiuHao
//Date :06.06.11
//*****************************************************************//
void interruptl(void)
{
//---------------timer0
if(TIMER0INTF)
{
CLRTIMER0INTF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -