📄 waterctrl4.c
字号:
Systemnum[2]=0xff;
WRITE_E2PROM(Systemnum,SystemNumADD,3,0);
}
/* enaible all key */
KEYDOWNEN;
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;
}
//---------------timer1
if(TIMER1INTF) //openning velve at this time
{
CLRTIMER1INTF;
}
//---------------timer2
if(TIMER2INTF)
{
CLRTIMER2INTF;
}
//---------------timer3
if(TIMER3INTF)
{
CLRTIMER3INTF;
}
//---------------UART1 RXD1
if(UART1RXINTIF)
{
CLRUART1RXINTF;
}
//---------------UART2 RXD2
if(UART2RXINTIF)
{
CLRUART2RXINTF;
}
//---------------A/D module
//---------------KBINT-INT3
if(_INT3F)
{
CLR_INT3F;
KBINTINTDS;
SETKEYDOWNIN;
SETKEYUPIN ;
SETKEYONOFFIN ;
SETKEYSELIN;
SETKBINTOUT;
KBINTOUT = 1;
Delay10KTCYx(15);
if(KEYDOWNIN)
{
systemflag2 |= 0x08; //give water
}
if(KEYUPIN)
{
systemflag2 |= 0x01; //setting
}
if(KEYONOFFIN) //Add
{
systemflag2 |= 0x04;
}
if(KEYSELIN) //DCE
{
systemflag2 |= 0x02;
}
if((systemflag2&0x0f)==0x03) //more than one key turn on that is user error opeation
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x05)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x06)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x07)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x09)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0a)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0b)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0c)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0d)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0e)
systemflag2 &= 0xf0;
if((systemflag2&0x0f)==0x0f)
systemflag2 &= 0xf0;
SETKBINTIN;
KBINTOUT = 1;
SETKEYDOWNOUT;
SETKEYUPOUT;
SETKEYONOFFOUT;
SETKEYSELOUT;
KEYDOWNOUT = 0; //all keys are close
KEYUPOUT = 0; //
KEYONOFFOUT = 0; //
KEYSELOUT = 0; //
Delay10KTCYx(10);//
while(!KBINTIN);
KBINTINTEN;
CLR_INT3F;
}
//---------------RBINT
/*
if(_RBINTF)
{
CLR_RBINTF;
if(systemflag4&0x02)
{
if(VELSTACLIN=0)
{
RSTVEL;
RSTVEL;
IBINTDS;
systemflag4 &= 0xfd;
}
}
}
*/
ENPIE;
ENGIE;
}
//*****************************************************************//
//Name :Interruph
//Input :void
//Output :void
//Function :High address interrupt ISR (high prinoty)
//D.R.P :QiuHao
//Date :06.12.6
//*****************************************************************//
void interrupth(void)
{
//---------------------------------------------------------------
if(_INT0F) //SIN1
{
// SOUT1OUT = 1;
// SOUT1OUT = 0;
SIN1INTDS;
if(cntorder & 0x01)
{
cntkeyerr |= 0x04 ;
countWTRCNT +=1;
GuHGERRCNT+=1;
}
cntorder = 0x01; //set sin1 flag
if(!SIN2IN) //two count key on at same time set error flag ?
{
cntkeyerr = 0x02 ;
}
countWTRCNT +=1;
CLR_INT0F;
SIN1INTEN;
// ENPIE;
// ENGIE;
return;
}
//---------------------------------------------------------------
if(_INT1F) //SIN2
{
// SOUT2OUT = 1;
// SOUT2OUT = 0;
SIN2INTDS;
if(cntorder & 0x02)
{
cntkeyerr |= 0x40 ;
countWTRCNT +=1;
GuHGERRCNT+=1;
}
cntorder = 0x02; //set sin2 flag
if(!SIN1IN) //two count key on at same time set error flag
{
cntkeyerr |= 0x20;
}
countWTRCNT +=1;
CLR_INT1F;
SIN2INTEN;
// ENPIE;
// ENGIE;
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++;
}
}
//*****************************************************************//
//Name :IsFindCard
//Input :void
//Output :unsigned char :0x01:Been find Card
// 0x00:found on Card
//Function :Estimate has find card?
//D.R.P :QiuHao
//Date :06.07.05
//*****************************************************************//
unsigned char IsFindCard(void)
{
unsigned char tempa;
RevBuffer[0] = 0x02 ; //Load Command
RevBuffer[1] = 0x26 ; //Load Command
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0] == 0x03) && (RevBuffer[1] == 0x00))
return 0x01;
}
return 0x00;
}
//*****************************************************************//
//Name :IsConflictOk
//Input :void
//Output :unsigned char :0x01:ok
// 0x02:defeated
//Function :
//D.R.P :QiuHao
//Date :06.07.05
//*****************************************************************//
unsigned char IsConflictOk(void)
{
unsigned char tempa;
RevBuffer[0] = 0x03 ; //Load Command
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0] == 0x05) && (RevBuffer[1] == 0x00))
return 0x01;
}
return 0x02;
}
//*****************************************************************//
//Name :IsSelectCradOk
//Input :void
//Output :unsigned char :0x01:ok
// 0x03:defeated
//Function :
//D.R.P :QiuHao
//Date :06.7.05
//*****************************************************************//
unsigned char IsSelectCradOk(void)
{
unsigned char tempa;
RevBuffer[0] = 0x04 ; //Load Command
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0] == 0x01) && (RevBuffer[1] == 0x00))
return 0x01;
}
return 0x03;
}
//*****************************************************************//
//Name :DownLoadm1CradKey
//Input :unsigned char :sectornum (0-15)
// :unsigned char :keyab (0x60 keya || 0x61 keyb)
//Output :unsigned char :0x01:download m1 crad key code ok
// 0x04:mater is be using and download m1 crad key code defeated
// 0x05:mater is not be using and download m1 crad key code defeated
//
//Function :download m1 crad key code ok
//D.R.P :QiuHao
//Date :06.07.05
//*****************************************************************//
unsigned char DownLoadm1CradKey(unsigned char sectornum,unsigned char keyab)
{
unsigned char tempa;
unsigned char tempab;
RevBuffer[0] = 0x06;
RevBuffer[1] = keyab; //load keya or keyb
RevBuffer[2] = sectornum; //load sector number
READ_E2PROM(&tempa,BeingUserFlagADD,1,0);
if(tempa==0xa5)
{
READ_E2PROM(RevBuffer+3,HartCardLoadPWAdd,6,0);
}
else
{
RevBuffer[1]=0x60;
RevBuffer[3]=0xff;
RevBuffer[4]=0xff;
RevBuffer[5]=0xff;
RevBuffer[6]=0xff;
RevBuffer[7]=0xff;
RevBuffer[8]=0xff;
}
DsInt;
Cmd_process();
OpInt;
for(tempab=100;tempab>0;tempab--)
{
if(RevBuffer[0]==1)
if(RevBuffer[1]==0)
return 0x01; //Down load mi crad key ok
}
if(tempa==0xa5)
{
return 0x04;
}
else
{
return 0x09;
}
}
//*****************************************************************//
//Name :RdCdOneBnk
//Input :unsigned char banknum:which bank in the card
//Output :unsigned char :0x01:ok
// 0x05:read card is error
// 0x06:read data checksun is error
//Function :
//D.R.P :QiuHao
//Date :06.12.4
//*****************************************************************//
unsigned char RdCdOneBnk(unsigned char whichbank)
{
unsigned char tempa=0,tempb=0,tempc=0;
RevBuffer[0] = 0x08;
RevBuffer[1] = whichbank;
DsInt;
Cmd_process();
OpInt;
for(tempa=100;tempa>0;tempa--)
{
if((RevBuffer[0]== 0x11)&&( RevBuffer[1]==0x00))
{
for(tempb=2;tempb<17;tempb++)
tempc += RevBuffer[tempb];
if(tempc!=RevBuffer[17]) //check bank cs
return 0x06; //bank cs error
if(whichbank == 4)
{
CdBnk4Grp[0] = RevBuffer[2];
CdBnk4Grp[1] = RevBuffer[3];
CdBnk4Grp[2] = RevBuffer[4];
CdBnk4Grp[3] = RevBuffer[5];
CdBnk4Grp[4] = RevBuffer[6];
CdBnk4Grp[5] = RevBuffer[7];
CdBnk4Grp[6] = RevBuffer[8];
CdBnk4Grp[7] = RevBuffer[9];
CdBnk4Grp[8] = RevBuffer[10];
CdBnk4Grp[9] = RevBuffer[11];
CdBnk4Grp[10] = RevBuffer[12];
CdBnk4Grp[11] = RevBuffer[13];
CdBnk4Grp[12] = RevBuffer[14];
CdBnk4Grp[13] = RevBuffer[15];
CdBnk4Grp[14] = RevBuffer[16];
CdBnk4Grp[15] = RevBuffer[17];
}
if(whichbank == 5)
{
CdBnk5Grp[0] = RevBuffer[2];
CdBnk5Grp[1] = RevBuffer[3];
CdBnk5Grp[2] = RevBuffer[4];
CdBnk5Grp[3] = RevBuffer[5];
CdBnk5Grp[4] = RevBuffer[6];
CdBnk5Grp[5] = RevBuffer[7];
CdBnk5Grp[6] = RevBuffer[8];
CdBnk5Grp[7] = RevBuffer[9];
CdBnk5Grp[8] = RevBuffer[10];
CdBnk5Grp[9] = RevBuffer[11];
CdBnk5Grp[10] = RevBuffer[12];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -