📄 read4442.h
字号:
#define uchar unsigned char
#define uint unsigned int
typedef signed char INT8S; /* Signed 8 bit quantity */
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
//#define unsigned char byte
//#define unsigned int word
#define OFF 1
#define ON 0
#define True 1
#define False 0
#define RMM_COMM 0x30 //读主存命令字
#define WMM_COMM 0x38 //写主存命令字
#define VER_COMM 0x33 //校验密码
#define RSM_COMM 0x31 //读密码存储区
#define WSM_COMM 0x39 //写密码存储区
#define RPM_COMM 0x34 //读保护存储区
#define WPM_COMM 0x3c //写保护存储区
#define LCDCOM XBYTE[0x8000] /* LCD Command Address */
#define LCDDAT XBYTE[0xc000] /* LCD Date Address */
//******************************************
// 定义IC卡接口
sbit OK = P4 ^ 0;
//sbit IC_Read_LED = P1 ^ 6;
//sbit IC_In_LED = P2 ^ 5;
//sbit IC_VCC_LED = P1 ^ 4;
//sbit IC_VCCC = P1 ^ 1;
//sbit IC_In = P1 ^ 0;
//sbit IC_RST = P3 ^ 7; /*ICCard复位线引脚 */
//sbit IC_CLK = P1 ^ 2; /*ICCard时钟线引脚 */
//sbit IC_IO = P1 ^ 3; /*ICCard数据线引脚 */
//sbit IC_PGM = P3^2; /*ICCard编程线引脚 */
sbit IC_IO = P1^2; /*ICCard数据线引脚 */
sbit IC_RST = P1^0; /*ICCard复位线引脚 */
sbit IC_CLK = P1^1; /*ICCard时钟线引脚 */
sbit IC_In = P3^2;
sbit IC_VCCC = P1^5;
#define LCD2002_MODE 0x3C /* 接口数据8位,显示2行,字体为1号 */
#define LCD2002_NO_FLASH 0x0C /* 屏幕显示开,无光标 */
#define LCD2002_HIDE 0x08 /* 屏幕显示关 */
#define LCD2002_FLASH 0x0D /* 屏幕显示开,并打开闪烁光标 */
#define LCD2002_SHIFT 0x07 /* 模块数据输入为增量方式,显示内容移动 */
#define LCD2002_NO_SHIFT 0x06 /* 模块数据输入为增量方式,显示光标移动 */
#define LCD2002_SH 0x14 /* 移动光标及整体显示 */
/* LCD地址相关控制宏 */
#define LCD2002_LINE1 0x80 /* 第一行DDRAM起始地址 */
#define LCD2002_LINE2 0xC0 /* 第二行DDRAM起始地址 */
#define LCD2002_CGRAM 0x40 /* 定义CGRAM的起始地址 */
/******************************************/
uchar Read_Buffer[16]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
//uchar xdata Read_Buffer[16];
bit IC_In_Flag;
bit IC_Read_Flag;
//************************************************************************
//4442卡底层程序的外部函数声明
void ReadMainMem(uchar addr,uchar idata *pt,uchar count); //读IC卡主存
void WriteMainMem(uchar addr,uchar idata *pt); //写IC卡主存
void ReadProtectMem(uchar idata *pt); //读保护存储器
void ProtectByte(uchar CardAdd,uchar idata *pt); //保护一字节,注意待保
//护的字节是已经写入过的,地址只能在保护存储区内
bit Verify(uchar idata *pt); //校验密码,成功返回1
void SendComm(uchar a,uchar b,uchar c); //发送命令
void ReadMode(uchar idata *pt,uchar count);
void ProcessMode(void);
void ResetCard(void);
void BreakOperate(void);
void StartComm(void);
void StopComm(void);
uchar ReadByte(void);
void WriteByte(uchar ch);
void Delay10us(void);
void Delay5us(void);
void init();
void Read_Send();
void Check_Send();
//extern void PowerOn(uchar idata *pt); //卡上电,延时约80us,卡复位,同时读入4个标示字节
//extern void PowerOff(void); //卡下电,延时约80us
//******************************************************************
void Lcd2002Clr(INT8U y);
void Lcd2002Init(void);
void Lcd2002DispStr(INT8U x, INT8U y, INT8S *Data);
void Lcd2002DispCha(INT8U x, INT8U y, INT8U Data);
void Lcd2002LoadC(INT8U Addr, INT8U *Data, INT8U Nchar);
#define LCD2002_SEND_COMMAND(a) \
LCDCOM = a;
//写数据
#define LCD2002_SEND_DATA(a) \
LCDDAT = a;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -