智能卡概述
IC卡(Integrated Circuit Card集成电路卡),又称SMART
CARD、智能卡。这种集成电路卡集成了处理芯片和存储芯片,因而具有运算能力、较大的存储容量和高安全性等特点。自从1979年法国Bull公司生产出世界第一张实用的IC卡至今,IC卡已经在全球范围内得到了广泛的应用,涉及到金融财务、医疗保健、社会保险、公用事业、交通、通信、教育、娱乐等各个领域。
ADMEL智能卡读写、控制器特点:
ADMEL智能卡读写、控制器除具有一般IC卡读写器的特点外,还具有如下特点:
具有64位DES加密算法,可将数据加密后进行存储。
读写器内置EEPROM芯片,可象操作IC卡一样进行读写,便于数据存储。
设计有去静电功能,更适合气候干燥地区使用,绝对不死机。
带有IC卡管脚短路保护功能。
带有可控制的8位数据输出端口(外置读写、控制器)。
带有两个可控制的继电器(外置读写、控制器)。
带有编、解码控制功能,可控制256个解码器的16种状态(外置读写、控制器)。
带有可编程的控制功能,控制精度为10ms(外置读写、控制器)。
第二章系统要求及安将说明
系统运行环境:
硬件要求:
INTEL 80486或更高版本兼容处理器(推荐Pentium100或以上)
8M或以上内存(推荐32M或以上)。
5M以上硬盘剩余空间。
主机内有一空余电源插头和一3.5英寸软驱安装位置(内置读写器)。
一个空余的RS-232串行通讯口。
软件运行环境:
WINDOWS95、WINDOWS98、WINDOWS2000或WINDOWS
NT等视窗操作系统。
系统安装说明:
硬件安装:
ADMEL IC卡读写、控制机带有防插反功能的电源端口和通讯端口插头,将电源线和数据通讯线分别正确连接即可。对于外置读写、控制机,其各控制端口在电路板上均已标明。
软件安装:
插入安装软盘或光盘,运行SETUP.EXE文件进行工具软件的安装。
文件清单:
demo.exe ADMEL IC卡读写、控制器操作、演示系统执行文件。
icrw.dll
用于二次开发的接口函数动态连接库。
icrw.lib 为Visual C++,Borland C++等开发环境提供的库文件。
icrw.h 为Visual C++,Borland C++等开发环境提供的接口函数声明的头文件。
icrw.bas 为Visual Basic开发环境提供的接口函数声明的单元文件。
icrw.pas 为Borland Delphi开发环境提供的接口函数声明的模板文件。
icrw.prg 为Visual Foxpro开发环境提供的接口函数声明的源文件。
icrw.sr1 为Power Builder开发环境提供的接口函数声明的源文件。
C<DIR> Visual C++,Borland C++等开发环境下应用系统演示源代码。
VB<DIR> Visual Basic开发环境下应用系统演示源代码。
DELPHI<DIR> Borland Delphi开发环境下应用系统演示源代码。
FOX<DIR> Visual Foxpro开发环境下应用系统演示源代码。//
PBUILD<DIR> Power Builder开发环境下应用系统演示源代码。
第三章 多功能操作软件使用说明
多功能操作软件使用说明:
本操作软件分为基本操作、批量操作、端口控制、控制编程、实用工具五大功能模块,其中端口控制和控制编程只适用于外置式IC卡读写、控制机。
基本操作包括对各类型IC卡的上下电操作、读写操作、密码操作等;
批量操作包括对各类型IC卡的批量复制、读写卡、核对、更改密码等操作;
端口控制功能可通过鼠标直接控制外置式IC卡读写、控制机附带的控制端口以及各解码控制盒内继电器的工作状态;
控制编程功能可以通过编程方式实现全自动控制各端口继电器;
实用工具可以实现对数据文件的加密、解密功能;可以将AT45D041卡模拟成软磁盘进行文件的复制。
第四章,接口函数
接口函数:
接口函数清单:
InitCom 初始化串口;
CloseCom 关闭串口;
SetCardType 设置卡型;
PowerOn 给卡上电;
PowerOff 给卡下电;
CheckSc 核对密码;
ChangeSc 更改密码;
RwBeep
读写机内置蜂鸣器鸣叫一声(60ms);
RwGetState 取读写机当前状态;
RdAsc 读卡中HEX码数据;
RdStr 读卡中ASCII码数据;
WrAsc 将HEX码数据写入卡中;
WrStr 将ASCII码数据写入卡中;
RdInt 读卡中4个字节的整型数;
WrInt 将4个字节的整型数写入卡中;
Relay1On 使继电器1闭合;
Relay1Off 使继电器1断开;
Relay2On 使继电器2闭合;
Relay2Off 使继电器2断开;
GetPortValue 取8位数据端口值;
SetPortValue 置8位数据端口值;
RwProgram
读写、控制机可编程控制工作状态设置;
RwGetTime
取读写、控制机当前时间;
RwSetTime
置读写、控制机当前时间;
RwGetDate
取读写、控制机当前日期;
RwSetDate
置读写、控制机当前日期;
GetCtrlState
取读写、控制机当前控制状态;
ControllerOn
置一解码控制盒某状态继电器闭合;
ControllerOff
置一解码控制盒某状态继电器断开;
DESFile 用DES加密算法加密或解密一文件;
DESBuf 用DES加密算法加密或解密一字符缓冲区;
函数返回码列表:
-1 打开源文件错误
-2 打开目标文件错误
- 返回值正确
- 校验和错误
- 无卡
- 卡未上电
- 串口错误
- 退卡错误
- 区域错误
- 页号错误
- 地址错误
- 数据长度错误
- 数据错误
- 密码错误
- 擦除密码错误
- 擦除密码计数器为0
- 卡损坏错误
- 命令格式错误
- 卡型错误
- 内存不足
- 无此功能
- IC卡管脚短路
- HEX字符串错误
卡型设置列表:
卡型代码 卡型名称
0 AT24C01A芯片
4 AT24C16芯片
5 AT24C32芯片
6 AT24C65芯片
7 AT24C64芯片
10 AT88SC101卡
11 AT88SC102卡
12 AT88SC103卡
14 AT88SC1604卡
15 AT88SC1604A卡
16 AT88SC1608卡
20 AT24C01A卡
21 AT24C02卡
22 AT24C04卡
23 AT24C08卡
24 AT24C16卡
25 AT24C32卡
26 AT24C65卡
27 AT24C64卡
64 AT45D041卡
30 AT93C46卡
42 SLE4442卡
43 SLE4428卡
50 SLE4432卡
51 SLE4418卡
接口函数使用说明:
int InitCom(void)
功能:初始化串口函数,系统自动将与读写机相连的计算机串行通讯口初始化,波特率为9600bps;
参数:无;
返回值:0:与读写机相连的通讯口为串口1;1--串口2;2--串口3;3--串口4;4--串口错误;
说明:系统应用最初首先要调用此函数,并且调用此函数后若未调用CloseCom()关闭串口,再次调用InitCom()时将产生串口错误。
事例:InitCom();
int CloseCom(void)
功能:关闭与读写机相连的串口,并释放内存;
参数:无;
返回值:0:正确;4:串口错误;
说明:应用系统操作结束时,需要用此函数关闭串口,否则下次调用InitCom()将产生串口错误;
事例:CloseCom()。
int SetCardType(int cardno)
功能:设置要进行操作的卡型;
参数:cardno为卡型代码;
返回值:0:正确;4:串口错误;16:卡型错误;
说明:未经声明时,ADMEL内置读写机的内部存储芯片为AT24C01A芯片,即读写操作前设置的卡型代码为0;ADMEL外置读写、控制器的内部存储芯片为AT24C64芯片,即读写操作前设置的卡型代码为7;在系统应用中若只对一种卡操作,在操作卡之前只进行一次卡型设置即可,在系统应用中若对多种卡进行操作,在操作另外一种卡之前要重新进行卡型设置;
事例:SetCardType(64);设置要操作的卡型为AT45D041。
int PowerOn()
功能:给卡上电;
参数:无;
返回值:0:正确;2:无卡;4:串口错误;
说明:读写机在卡未插入时自动下电,以确保IC卡插入时不带电,当插入IC卡后,在对卡操作前必须用此函数给卡上电;
事例:PowerOn();给卡上电。
int PowerOff()
功能:给卡下电,对于自弹式读写、控制机同时退卡;
参数:无;
返回值:0:正确;2:无卡;4:串口错误;
说明:在操作结束后,拔卡前最好调用此函数将卡下电,以保护卡不受损害;
事例:PowerOff();给卡下电。
int CheckSc(int sctype,int zone,LPSTR ScHStr)
功能:核对加密卡主密码、区域密码或擦除密码;
参数:sctype:核对密码类型(0
�主密码、区域密码;1�擦除密码);
zone:区域代码(0
�主密码;1�应用区1;2--应用区2;3�应用区3;4--应用区4);
ScHStr:用于存储密码的字符串型指针;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;11:密码错误;14:卡已损坏;18:无此功能;
说明:对加密卡进行读写前须用此函数核对密码后才能进行;
事例:
int ChangeSc(int sctype,int zone,LPSTR ScHStr)
功能:更改加密卡主密码、区域密码或擦除密码;
参数:sctype:更改密码类型(0
�主密码、区域密码;1�擦除密码);
zone:区域代码(0
�主密码;1�应用区1;2--应用区2;3�应用区3;4--应用区4);
ScHStr:用于存储密码的字符串型指针;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;11:密码错误;14:卡已损坏;18:无此功能;
说明:调用此函数前应调用CheckSc核对密码正确后再进行,对于AT88SC101、AT88SC102、AT88SC103、AT88SC1604、AT88SC1604B等卡不必先进行擦除操作,可直接更改密码。
int RwBeep(void)
功能:使读写机内置蜂鸣器鸣叫(60ms);
参数:无;
返回值:0:正确;4:串口错误;
说明:使用此函数可进行读写机操作错误报警或其他信息提示;
事例:RwBeep();使蜂鸣器鸣叫一次。
int RwGetState(LPSR buff)
功能:获取读写机对卡操作的历史状态;
参数:buff为用于存储读写机状态的字符型指针;
返回值:0:正确;4:串口错误;
说明:buff[0]为密码核对正确否标志,“00”:正确,“FF”错误;
buff[1]为卡损坏否标志,“00”:正常,“FF”损坏;
buff[2]为应用区2毁坏否标志,“00”:正常,“FF”毁坏;
buff[3]为应用区2擦除密码核对正确否标志,“00”:正确,“FF”错误;
buff[4] 为应用区1擦除密码核对正确否标志,“00”:正确,“FF”错误;
buff[5]为IC卡上电否标志,“00”:上电,“FF”下电;
buff[6]为IC卡插入否标志,“00”:已插入,“FF”未插入;
int fuse()
功能:熔丝操作;
参数:无;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;18:无此功能;
说明:此函数适用于操作AT88SC102、AT88SC1604等类型卡。熔丝后会造成几个不可修复的状态,包括发行区可见但不可变、密码不可见但可变、擦除密码不可见且不可变。
事例:fuse();
int RdAsc(int zone,int address,int
length,LPSTR buff)
功能:读卡中的数据或读写机内置存储芯片中的数据,并以HEX码形式返回数据;
参数:zone:为区域代码;address:要读字节的起始地址;length:要读字节的长度;buff:用于存储数据的HEX码的字符型指针;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;9:长度超出错误;
说明:调用此函数时对buff分配的内存尺寸应为length的2倍;
参数中的区域代码zone,不同的卡型定义也不相同。对于AT88SC101、AT88SC102、AT88SC103、AT88SC1604、AT88SC1604B等卡型,定义为:0
�公用区;1�应用区1;2�应用区2;3�应用区3;4�应用区4;对于SIEMENS卡,定义为:0�公用区;1:应用区;对于其它非加密卡,定义为:0�应用数据区;
int RdStr(int zone,int address,int
length,LPSTR buff)
功能:读卡中的数据或读写机内置存储芯片中的数据,并以ASCII码形式返回数据;
参数:buff:用于存储数据的ASCII码的字符型指针,其它同RdAsc;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;9:长度超出错误;
说明:调用此函数时对buff分配的内存尺寸应为length值;区域代码定义同RdAsc;
int WrAsc(int zone,int address,int
length,LPSTR buff)
功能:向IC卡中或读写机内置存储芯片中写入HEX码数据;
参数:同RdAsc;
返回值:同RdAsc;
说明:调用此函数时length值应为buff尺寸的二分之一;区域代码定义同RdAsc;
int WrStr(int zone,int address,int
length,LPSTR buff)
功能:向IC卡中或读写机内置存储芯片中写入ASCII码数据;
参数:同RdStr;
返回值:同RdStr;
说明:调用此函数时length值应为buff的尺寸;区域代码定义同RdAsc;
int RdInt(int zone,int address,int num)
功能:读IC卡中或读写机内置存储芯片中的数据,并以整型数返回;
参数:zone:为区域代码;address:要读字节的起始地址;num:要返回的整型数;
返回值:0:正确;2:无卡;3:卡未上电;4:串口错误;9:长度超出错误;
说明:此函数读取从address开始的4个字节的数据以整型数返回;区域代码定义同RdAsc;
int WrInt(int zone,int address,int num)
功能:将整型数写入IC卡中或读写机内置存储芯片中;
参数:num:要写入的整型数,其它同RdInt;
返回值:同RdInt;
说明:此函数将整型数num写入从address开始的4个字节中,区域代码定义同RdAsc;
int DESFile(LPCSTR inName,LPCSTR
outName,LPCSTR pswd,bool EncOrDec)
功能:将一个文件用DES加密算法加密或解密;
参数:inName:存储源文件名的字符型指针;outName:存储目标文件名的字符型指针;pswd:存储8个字节密匙的字符型指针;EncOrDec:加密或解密操作类型,0
�加密,1�解密;
返回值:0:正确;-1:打开源文件错误;-2:打开目标文件错误;-3:内存分配错误;
说明:密匙长度为8个字节;
int DESBuf(LPSTR bufStr,int bufLen,LPCSTR
pswd,bool EncOrDec)
功能:将一个字符串用DES加密算法加密或解密;
参数:bufStr:存储目标字符串的字符型指针;bufLen:目标字符串长度;pswd:存储密匙的字符型指针;EncOrDec:加密或解密操作类型;
返回值:0:正确;-3:内存分配错误;
说明:密匙长度为8个字节,加密后生成的目标字符串存放于bufStr;
int Relay1On(void)
功能:控制读写、控制机内继电器1闭合;
参数:无;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int Relay1Off(void)
功能:控制读写、控制机内继电器1断开;
参数:无;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int Relay2On(void)
功能:控制读写、控制机内继电器2闭合;
参数:无;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int Relay2Off(void)
功能:控制读写、控制机内继电器2断开;
参数:无;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int GetPortValue(int val)
功能:取8位数据口数据;
参数:val:8位数据口的值;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int SetPortValue (int val)
功能:置8位数据口数据;
参数:val:要写入的8位数据口的值(数值范围0
�255);
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int RwProgram(bool EnableOrDisable,LPSTR
Tasklist)
功能:设置或取消读写、控制机的可编程控制功能;
参数:EnableOrDisable:禁止或允许读写、控制机工作在可编程控制状态下(0
�禁止;1�允许);Tasklist:编程控制的任务列表;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int RwGetTime(LPSTR time)
功能:取读写、控制机当前时间;
参数:存储要读取的当前时间的字符串指针;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int RwSetTime(LPSTR time)
功能:置读写、控制机当前时间;
参数:存储要写入的当前时间的字符串指针;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
Int RwGetDate(LPSTR date)
功能:取读写、控制机当前日期;
参数:存储要读取的当前日期的字符串指针;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
Int RwSetDate(LPSTR date)
功能:置读写、控制机当前日期;
参数:存储要写入的当前日期的字符串指针;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int GetCtrlState(LPSTR buff)
功能:取读写、控制机当前的状态;
参数:buff:存储状态字符串的指针;
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int ControllerOn(int serialno,int stateno)
功能:使一解码控制盒的某状态继电器闭合;
参数:serialno:解码控制盒序号(0
�255);stateno:状态继电器编号(0�15);
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
int ControllerOff(int serialno,int stateno)
功能:使一解码控制盒的某状态继电器断开;
参数:serialno:解码控制盒序号(0
�255);stateno:状态继电器编号(0�15);
返回值:0:正确;4:串口错误;18:无此功能;
说明:适用于外置读写、控制机;
视窗系统下各开发软件对接口函数的调用、声明技巧
:
常用接口函数调用流程:
在一个应用系统中,应在启动应用系统处调用InitCom()进行初始化串口工作且只能工作一次。
选择卡型:
在对IC卡操作前应先选择卡型,如果一个应用系统只使用一种IC卡,可以只进行一次选择卡型操作,如果一个应用系统同时使用几种IC卡,则在更换卡型对卡操作前必须进行设置卡型操作。
对卡操作:
对于非加密卡,对卡操作包括读操作和写操作等。
对于AMTEL加密卡,对卡操作包括核对密码操作、读操作、擦除/核对擦除密码操作、写操作等。在应用区保护属性写0时,在未核对密码前,只能对发行区、代码保护区进行读操作;在应用区属性未写0时,未核对密码前,可以对发行区、代码保持区、应用区进行读操作;在个人化后,只有在正确核对密码和擦除密码后,,才能进行擦除和写操作;在未个人化时,只有在正确核对密码后,才能进行擦除和写操作。
对于SIEMENS加密卡,对卡操作包括核对操作、读操作、写操作等。在未核对密码时,可以进行读操作;只有在正确核对密码后,才能进行写操作。对已经写保护的字节,写操作无效。
关闭串口:
关闭串口是与初始化串口对应的,在一个应用系统退出时也要进行关闭串口工作且要进行初始化串口工作。
第五章
常用智能卡存储结构和使用说明
智能卡存储结构和使用说明
AT/MICROCHIP24C01A/02/04/08/16/32/64/93C46/45D041卡
ATMEL公司AT24C01A/02/04/08/16/32/64/93C46和
MICROCHIP公司24LC01A/02/04/08/16/32/64/45D041属于非加密卡。
特点
低电压和标准电压工作(低电压需特别指明)
5.0(Vcc=4.5~5.5v) 2.5(Vcc=2.5v~5.5v)
3.0 (Vcc=2.7~5.5v) 2.0(Vcc=1.8v~5.5v)
- 内部组态: 128×8(1K)、256×8(2K)
512×8(4K)、1024×8(8K)及
2048×8(16K)、4096×8(32K)
8192×8(64K)、540672×8(4M)
- 2线串行接口
- 双向数据传送协议
- 写保护管脚,用于硬件数据保护
- 8字节页(1K,2K),16字节页(4K,8K,16K)写模式,64字节页(32K,64K)写模式
- 允许部分页写
- 自定时写周期(最大10ms)
- 高可靠性
寿命:100,000个周期
可提供寿命更长的器件(需特别指明)
数据保存:100年
- AT88SC101/102/103/1604/1608卡
ATMEL公司AT88SC101/102/103/1604/1608属于加密卡,其中AT88SC102和AT88SC1604最为常用。
- AT88SC102卡
特点
- 带加密逻辑的1K×1串行E2PROM
- 存储器组态方式:2 512×1 存储区
- 支持ISO/IEC 7816-3同步协议
- 存贮效验密码
- 对误码操作进行计数
- 提供密码传送
- 采用低功耗CMOS工艺生产
- 内部产生Vpp
- 2μs读取时间:1ms写周期时间
- 温度范围:-25。C~70。C
- ESD抗性 > 4KV
- 高可靠性
100,000次写/擦周期
100年数据保存期
加密特性包括
:
- 密码有效后才存取数据
- 连续四次密码给错后,器件将永久损坏
- 特定存储区读/写保护
- 掉电复位
- 使用密码比较方式来保护器件的安全传递
存储器图
|
存储器分区
|
地 址
|
位
|
|
预制区(FZ)
|
0-15
|
16
|
|
发行区(IZ)
|
16-79
|
64
|
|
密码(SC)
|
80-95
|
16
|
|
误码计数器(SCAC)
|
96-111
|
16
|
|
代码保护区(CPZ)
|
112-175
|
64
|
|
应用区1(AZI)
|
176-687
|
512
|
|
应用区1擦除钥匙(EZI)
|
688-735
|
48
|
|
应用区2(AZI)
|
736-1247
|
512
|
|
应用区2擦除钥匙(EZ2)
|
1248-1279
|
32
|
|
擦除计数器(EC)
|
1280-1407
|
128
|
|
存储器测试区(MTZ)
|
1408-1423
|
16
|
|
总 位
|
|
1424
|
AT88SC102各存储区定义
预制区(16位):由生产厂商为每个用户编入特定标识码。生产厂商在编入预制码后,熔丝“1”熔断,这样使得预制区不可更改。
发行区(64位):由发行者在最后“个人化”前编程,熔丝“2”熔断后,发行区里的数据不可再更改。
密码(16位):发行者在存取电路存储器时必须给出密码,在熔断熔断2
前,使器件专用化。这样就保证了发行者和生产者间移交安全性。在器件“个人化”,且熔丝“2”熔断后,该密码保护对卡应用区的存取。
误码计数器(16位):对误码进行计数,连续4次误码后,器件将锁死。
用户保护区(64位):对该区的擦写是受保护的。编程/擦写周期次数保证达100,000次。
应用区(1024或512位):对该区的读和编程受该区的前两位(PR,RD)及密码(表1和表2)的控制。每个区的擦除由每个区的专用擦除钥匙保护。
应用区擦除钥匙(32或48位):在擦除应用区前必须给出。在电路“个人化”时必须对钥匙编程。
擦除计数器(128位):将最后一个区的擦除次数据限制在128次,或128次以下。
存储器测试区(16位):器件在该存储器位置进行特性测试。
对AT88SC102存储器的存取
对该存储区的存取受内部熔丝的状态和FUS脚上的供电电压控制
|
FUS脚电压
|
熔丝状态
熔丝1 熔丝2
|
存取条件
|
|
0V
|
任何状态 任何状态
|
表2
|
|
5V
|
熔断 未熔断
|
表1
|
|
5V
|
未熔断 熔断
|
表2
|
表1。 “个人化”时AT88SC102的存取情况(熔丝2未熔断)
|
区
|
S
C
|
1
P
R
|
1
R
D
|
2
P
R
|
2
R
D
|
S
Z
1
|
S
Z
2
|
E
C
|
读
|
写1
(擦除)
|
写0
(编程)
|
比
较
|
|
FZ
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
YES
|
NO
|
NO
|
NO
|
|
IZ
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
NO
YES
|
NO
NO
|
|
SC
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
NO
YES
|
NO
YES
|
NO
YES
|
YES
NO
|
|
SCAC
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
YES
YES
|
NO
NO
|
|
CPZ
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
NO
YES
|
NO
NO
|
|
AZ1
|
0
0
1
|
X
X
X
|
0
1
X
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
NO
YES
YES
|
NO
NO
YES
|
NO
NO
YES
|
NO
NO
NO
|
|
EZ1
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
NO
YES
|
NO
YES
|
NO
YES
|
NO
NO
|
|
AZ2
|
0
0
1
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
X
X
X
|
NO
YES
YES
|
NO
NO
YES
|
NO
NO
YES
|
NO
NO
NO
|
|
EZ2
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
NO
YES
|
NO
YES
|
NO
YES
|
NO
NO
|
|
EC
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
YES
YES
|
NO
NO
|
|
MTZ
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
YES
|
YES
|
YES
|
NO
|
注:SC:密码有效后SC=1
1PR:AZ1的第一位(176位)
1RD:AZ1的第二位(177位)
2RP:AZ2的第一位(736位)-仅对AT88SC102而言
2RD:AZ2的第二位(737位)-仅对AT88SC102而言
EZ1:擦除钥匙1有效后EZ=1
EZ2:擦除钥匙2有效后EZ2=1 EC:计数器未空时EC=1
表2。 “个人化”AT88SC101/102的存取情况(熔丝“2”熔断)
|
区
|
S
C
|
1
P
R
|
1
R
D
|
2
P
R
|
2
R
D
|
S
Z
1
|
S
Z
2
|
E
C
|
读
|
写 1
(擦除)
|
写 0
(编程)
|
比
较
|
|
FZ
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
YES
|
NO
|
NO
|
NO
|
|
IZ
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
YES
|
NO
|
NO
|
NO
|
|
SC
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
NO
NO
|
NO
YES
|
NO
YES
|
YES
NO
|
|
SCAC
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
YES
YES
|
NO
NO
|
|
CPZ
|
0
1
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
X
X
|
YES
YES
|
NO
YES
|
NO
YES
|
NO
NO
|
|
AZ1
|
0
0
1
1
1
1
|
X
X
0
0
1
1
|
0
1
X
X
X
X
|
X
X
X
X
X
X
|
X
X
X
X
X
X
|
X
X
0
1
0
1
|
X
X
X
X
X
X
|
X
X
X
X
X
X
|
NO
YES
YES
YES
YES
YES
|
NO
NO
NO
YES
NO
YES
|
NO
NO
NO
NO
YES
YES
|
NO
NO
NO
NO
NO
NO
|
|
EZ1
|
X
|
X
|
X
|
X
|
0
|
X
|
X
|
X
|
NO
|
NO
|
NO
|
YES
|
|
AZ2
|
0
0
1
1
1
1
1
1
|
X
X
X
X
X
X
X
X
|
X
X
X
X
X
X
X
X
|
X
X
0
0
0
1
1
1
|
0
1
X
X
X
X
X
X
|
X
X
X
X
X
X
X
X
|
X
X
0
X
1
0
X
1
|
X
X
X
0
1
X
0
1
|
NO
YES
YES
YES
YES
YES
YES
YES
|
NO
NO
NO
NO
YES
NO
NO
YES
|
NO
NO
NO
NO
NO
YES
YES
YES
|
NO
NO
NO
NO
NO
NO
NO
NO
|
|
EZ2
|
0
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
NO
|
NO
|
NO
|
YES
|
|
EC
|
X
|
X
|