|
终端向ESAM发送一个字节函数
/**************************************
函数名称:EsamSendChar
函数功能:向Esam发送一个字节
入口参数:cSendChar,要发送的字节
出口参数:无
描述:发送10位,第一位起始位(始终为低),第10位是校验位,
最多发3次,
***************************************/
void EsamSendChar(unsigned char cSendChar)
{
unsigned int iTempTran,iErrCoun;
unsigned int iTemp=cSendChar;
iTemp=iTemp<<1;
iTemp=iTemp&(~BIT0);
CardWorkFlag=~(ICXOR+MXOR)&CardWorkFlag;
PorCheckBit(cSendChar);
if(CardWorkFlag&0x80) iTemp=iTemp|BIT9;
else iTemp=iTemp&(~BIT9);
EsamSDAOutput;
for(iErrCoun=0;iErrCoun<3;iErrCoun++)
{
for(iTempTran=0;iTempTran<10;iTempTran++)
{
if(iTemp&0x01)
{
EsamSDAOutputHigh;
}
else
{
EsamSDAOutputLow;
}
iTemp=iTemp>>0x01;
Delay1ETU();
}
EsamSDAInput;
Delay05XETU();
//发送OK
if(EsamSDAInputCheck)
{
Delay1ETU();
Delay05XETU();
goto EsamSendCharOk;
}
//发送错误
else
{
CardError=ErrorRWBIT|CardError;
Delay1ETU();
EsamSDAOutput;
Delay1ETU();
}
}
EsamSendCharOk:;
}
|
|