/* iccard.h
前一阵子做了个IC卡读写程序,可以读写SLE4442系统逻辑加密卡的,本来想在网上找一个,没找到,自己写了一个,为了让后来人可以轻松一点,所以就奉献给大家:)
注释比较少(本人的坏习惯),看起来有点累,不过建议你在自己看之前先熟悉一下SLE4442的协议。
程序是经过测试的,在我的931上工作的很好,有什么问题,发信给我
Ploto_zhu@etang.com
*/
#ifndef IC_CARD_H
#define IC_CARD_H
#include <REG931.H>
#define RdMainMem 0x30 // outgoing data
#define UpdMainMem 0x38 // processing
#define RdPrtMem 0x34 // outgoing data
#define WrPrtMem 0x3C // processing
#define RdSecMem 0x31 // outgoint data
#define UpdSecMem 0x39 // processing
#define CmpVerDat 0x33 // processing
sbit CCIO = P0^3;
sbit CCRST = P0^1;
sbit CCCLK = P0^2;
sbit CCIN = P2^7;
#ifndef uchar
#define uchar unsigned char
#endif
void IC_Reset(uchar *buffer);
void ReadMainMemory(uchar addrFrom,uchar* buffer,uchar ulen);
void ReadProtectedMem(uchar rdBuf[4]) ;
void UpdateMainMemory(uchar addr,uchar value) ;
void WriteProtectedMem(uchar addr, uchar value) ;
void ReadSecMemory(uchar buffer[4]) ;
void UpdateSecMem(uchar addr, uchar value) ;
bit CompareVerifData(uchar value[3]) ;
#endif
/* --------------------- ICCard.c ----------*/
#include "iccard.h"
#include <REG931.H>
/* 2005-9-4 常州中天科技有限公司 祝启忠*/
#ifndef uchar
#define uchar unsigned char
#endif
//sbit CCRST=P0^1;
//sbit CCCLK=P0^2;
//sbit CCIO=P0^3;
//void sendtoPC(uchar*);
//void sendBuffer(char* buf,char len) ;
void Delay(int x)
{
int i;
for(i=(x<<1);i>0;i--);
}
void OnePlus()
{
CCCLK=1;
Delay(20);
CCCLK=0;
Delay(20);
}
unsigned char ReadByte()
{
uchar TempByte;
uchar Value;
uchar i;
Value=0;
for(i=0;i<8;i++)
{
CCCLK=1;
TempByte=(unsigned char)CCIO;
Delay(10);
CCCLK=0;
Delay(10);
Value |= (TempByte<<i);
}
return Value;
}
void ICSendByte(uchar byte)
{
uchar TempByte;
uchar i;
for(i=0;i<8;i++)
{
TempByte= ((byte>>i) & 0x01);
CCIO=(bit)TempByte;
Delay(8);
CCCLK=1;
Delay(10);
CCCLK=0;
Delay(8);
}
}
void IC_Reset(uchar *buffer)
{
uchar len;
CCCLK=0;
CCRST=0;
CCIO=1;
Delay(800);
CCRST=1;
Delay(10);
CCCLK=1;
Delay(10);
[本文共有 4 页,当前是第 1 页] <<上一页 下一页>>