📄 untitled.c
字号:
//---------------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;
}
if(KEYUPIN)
{
systemflag2 |= 0x04;
}
if(KEYONOFFIN) //Read card
{
systemflag2 |= 0x01;
}
if(KEYSELIN)
{
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; //
while(!KBINTIN);
Delay10KTCYx(1);
while(!KBINTIN);
KBINTINTEN;
CLR_INT3F;
}
//---------------RBINT
if(_RBINTF)
{
CLR_RBINTF;
if(systemflag4&0x02) //will close velue
{
if(!VELSTACLIN)
{
Delay10TCYx(2);
if(!VELSTACLIN)
{
RSTVEL;
IBINTDS;
Delay10TCYx(2);
OPVEL;
Delay10KTCYx(100);
RSTVEL;
systemflag4 &= 0xfd;
systemflag3 |= 0x01;
}
}
}
if(systemflag4&0x04) //will open velue
{
if(!VELSTAOPIN)
{
Delay10TCYx(2);
if(!VELSTAOPIN)
{
RSTVEL;
IBINTDS;
Delay10TCYx(2);
CLVEL;
Delay10TCYx(2);
RSTVEL;
systemflag4 &= 0xfb;
}
}
}
CLR_RBINTF;
}
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;
CLR_INT0F;
SIN1INTDS;
SOUT2OUT = 0;
if(!SIN2IN) //two count key on at same time set error flag ?
{
cntkeyerr |= 0x02 ;
}
// if(SIN1IN) //SIN1 disturb?
// {
// cntkeyerr |= 0x01;
// }
if(cntorder==0x01) //SIN1 key on two times?
{
cntkeyerr |= 0x04;
}
else
{
cntorder &= 0x01;
}
systemflag3 |= 0x80;
AddUsingValueOp();
}
//---------------------------------------------------------------
if(_INT1F) //SIN2
{
SOUT2OUT = 1;
CLR_INT1F;
SIN2INTDS;
SOUT1OUT = 0;
if(!SIN1IN) //two count key on at same time set error flag
{
cntkeyerr |= 0x20;
}
// if(SIN2IN)
// {
// cntkeyerr |= 0x10;
// }
if(cntorder == 0x02)
{
cntkeyerr |= 0x40;
}
else
{
cntorder &= 0x02;
}
systemflag3 |= 0x40;
AddUsingValueOp();
}
/*SIN3 is not be use
//---------------------------------------------------------------
if(_INT2F) // SIN3
{
ICLR_INT2F;
SOUT3OUT = 1;
SOUT3OUT = 0;
}
*/
ENPIE;
ENGIE;
}
//*****************************************************************//
//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];
CdBnk5Grp[11] = RevBuffer[13];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -