CPU卡程序设计实例(十二)ESAM模块字节接收函数
ESAM模块字节接收函数
/**************************************
函数名称:EsamReceChar
函数功能:Esam接收一个字节
入口参数:无
出口参数:iTemp,ESAM复位响应的13个字节
描述:最多接收3次,与卡接收一字节函数功能一致
***************************************/
unsigned char EsamReceChar(void)
{
unsigned int iErrCoun;
unsigned long int iTemp;
unsigned char cTemp=0;
CardWorkFlag=~(ICXOR+MXOR)&CardWorkFlag;
for(iErrCoun=0;iErrCoun<3;iErrCoun++)
{
for(iTemp=0;iTemp<40000;iTemp++)
{
//判断起始位
if(!(EsamSDAInputCheck)) break;
else if(iTemp>(40000-2))
{
//超时错误
CardError=ErrorRWBIT|CardError;
goto RstOkEnd;
}
}
//接受1个字节,8位
for(iTemp=8;iTemp>=1;iTemp--)
{
cTemp=cTemp>>0x1;
Delay1ETU();
if(EsamSDAInputCheck)
{
//生成偶校验
CardWorkFlag=CardWorkFlag^0x80;
cTemp=0x80|cTemp;
}
else
{
cTemp=(~0x80)&cTemp;
}
}
Delay1ETU();
//判断偶校验是否正确
if(EsamSDAInputCheck) CardWorkFlag=ICXOR|CardWorkFlag;
if(CardWorkFlag&ICXOR)
{
if(CardWorkFlag&MXOR) goto RstOkEnd;
}
else if(!(CardWorkFlag&MXOR)) goto RstOkEnd;
//如果校验位错,则将I/O口置低—高,等待字符的再次发送。最多3次
CardError=ErrorRWBIT|CardError;
EsamSDAOutput;
EsamSDAOutputLow;
Delay1ETU();
EsamSDAOutputHigh;
}
RstOkEnd:
Delay05XETU();
return cTemp;
}
CPU卡程序设计实例(十二)ESAM模块字节接收函数相关推荐
- CPU卡程序设计实例(二十六)卡和ESAM之间外部认证
/******************************************* 函数名称:CardExterVali 函数功能:卡与ESAM之间外部认证 输入参数:cApplySerialN ...
- CPU卡程序设计实例(二十三)卡和ESAM之间内部认证
1.标识符宏定义 //CPU卡密钥标识 #define CardInfoDownKey 0x81 // #define CardInfoUpKey 0x82 // #define CardInside ...
- CPU卡程序设计实例(八)ESAM模块卡上、下电
1.3 ESAM模块上电程序 /******************************************* 函数名称:EsamPowerUp 函数功能:Esam上电 输入参数:无 输出参数 ...
- CPU卡程序设计实例(六)ETU配置
1.数据位宽时间(ETU)计算程序 前面已经说过,数据位宽是CPU卡程序设计中非常重要的一环,涉及到数据读写的可靠性和稳定性.下面这段程序就是在IAR环境下,基于MSP430单片机C语言的数据位宽计算 ...
- CPU卡程序设计实例(二十五)ESAM过程密钥内部认证
/******************************************* 函数名称:EsamInsideVali 函数功能:ESAM过程密钥内部认证 输入参数: pcReceCardR ...
- CPU卡程序设计实例(十)ESAM复位程序
ESAM复位程序 /************************************** 函数名称:*EsamRst 函数功能:Esam复位 入口参数:无 出口参数:复位数据 描述: Esam ...
- CPU卡程序设计实例(十三)终端向ESAM发送数据
终端向ESAM发送一个字节函数 /************************************** 函数名称:EsamSendChar 函数功能:向Esam发送一个字节 入口参数:cSen ...
- c语言压缩文本文件北京理工大学,北京理工大学C语言程序设计第十二章文件.ppt...
北京理工大学C语言程序设计第十二章文件 2000年1月25日 北京理工大学 / 第十二章 文件 第一节 文件概述 第二节 文件的处理 第三节 文件的顺序读写操作 第四节 文件的随机读写操作 第五节 文 ...
- 计算机基础函数运用,计算机应用基础第十二讲:EXCEL中函数的实际运用.doc
文档介绍: 计算机应用基础第十二讲:EXCEL中函数的实际运用.doc计算机应用基础第十二讲:EXCEL中函数的实际运用课 题EXCEL屮函数的实际运用课型多媒体课授课时间第20周教学目的实例分析,掌 ...
最新文章
- python环境搭建_搭建Python编程环境
- 【深度学习入门到精通系列】R2 Unet解释
- 代画PCB及C语言编程
- 5分钟带你理解一致性Hash算法
- centos6.5 安装 OpenResty
- mysql 导出所有表_Mysql导出(多张表)表结构及表数据 mysqldump用法
- 电流感应电阻器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- springMVC 简单事例
- java 定时器 quartz_Java定时器和Quartz使用
- 业务员的3个经典故事
- java青鸟影院项目_影院在线售票云平台(仿猫眼电影,附SpringBoot项目源码) 系统功能实现...
- 阿里云ASR 语音识别接口调用
- Linux UDP协议栈中的片段分析 - udp_recvmsg
- 计算机屏幕怎么设置键盘,[怎么用屏幕键盘]怎么用键盘调屏幕分辨率
- 怎么把柱形图和折线图放在一起_Excel图表制作:柱形图和折线图的组合图案例...
- Can‘t connect to any repository: 的解决办法, 在Push代码,提交代码到代码仓库的时候,提示不能连接到该代码仓库
- 前端自学Vue笔记干货(第一版,持续更新中~~~)
- 法拉科机器人接头_【发那科】图解FANUC机器人I/O信号板
- 日语语法(四):形容词
- Python08--文件读取及写入操作