CPU卡程序设计实例(十四)终端向CPU卡发送数据
2017-04-28 19:22
246 查看
终端向CPU卡发送一个字节函数
/**************************************
函数名称:CardSendChar
函数功能:向CPU卡发送一字节
入口参数:cSendChar,要发送的字节
出口参数:无
描述:发送10位,第一位起始位(始终为低),第10位是校验位,
最多发3次,
***************************************/
void CardSendChar(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);
//开始数据发送
CardSDAOutput;
for(iErrCoun=0;iErrCoun<3;iErrCoun++)
{
//发送1个字节,8位
for(iTempTran=0;iTempTran<10;iTempTran++)
{
if(iTemp&0x01)
{
CardSDAOutputHigh;
}
else
{
CardSDAOutputLow;
}
iTemp=iTemp>>0x01;
Delay1ETU();
}
CardSDAInput;
Delay05XETU();
//发送OK
if(CardSDAInputCheck)
{
Delay1ETU();
Delay05XETU();
goto SendCharOk;
}
//发送错误
else
{
CardError=ErrorRWBIT|CardError;
Delay1ETU();
CardSDAOutput;
Delay1ETU();
}
}
SendCharOk:;
}
/**************************************
函数名称:CardSendChar
函数功能:向CPU卡发送一字节
入口参数:cSendChar,要发送的字节
出口参数:无
描述:发送10位,第一位起始位(始终为低),第10位是校验位,
最多发3次,
***************************************/
void CardSendChar(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);
//开始数据发送
CardSDAOutput;
for(iErrCoun=0;iErrCoun<3;iErrCoun++)
{
//发送1个字节,8位
for(iTempTran=0;iTempTran<10;iTempTran++)
{
if(iTemp&0x01)
{
CardSDAOutputHigh;
}
else
{
CardSDAOutputLow;
}
iTemp=iTemp>>0x01;
Delay1ETU();
}
CardSDAInput;
Delay05XETU();
//发送OK
if(CardSDAInputCheck)
{
Delay1ETU();
Delay05XETU();
goto SendCharOk;
}
//发送错误
else
{
CardError=ErrorRWBIT|CardError;
Delay1ETU();
CardSDAOutput;
Delay1ETU();
}
}
SendCharOk:;
}
相关文章推荐
- CPU卡程序设计实例(十三)终端向ESAM发送数据
- CPU卡程序设计实例(十一)CPU卡字节数据接收
- CPU卡程序设计实例(十九)取响应数据命令
- CPU卡程序设计实例(十五)数据校验
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
- php 通过curl post发送json数据实例
- STM32F4 串口实验中收不到超级终端发送的数据,调试工具却可以
- C# usb Hid 访问上位机USB通讯实例 实现设备在线或者离线和发送接收数据通讯功能
- 我要学ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格
- php通过curl post和get发送json数据实例 curl命令转为php源码
- Android学习笔记十四.Android数据存储与IO.SD卡的读写实例
- [MPI] MPI具有不连续数据发送的程序设计
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
- 客户端向服务器发送普通数据和紧急数据的实例
- 网络编程-TCP程序实例(只是发送了数据,在服务器显示)
- STM32F4 串口实验中收不到超级终端发送的数据,调试工具却可以
- php使用curl发送json格式数据实例
- 面向对象的程序设计学习笔记-18-静态数据成员实例
- ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格
- STM32F4 串口实验中收不到超级终端发送的数据,调试工具却可以