AT88SC0104C读写程序

来源:互联网 发布:Linux用wine玩英雄联盟 编辑:程序博客网 时间:2024/04/26 09:01

AT88SC0104开发包(AT88SC0104C读写程序)C语言

2010-8-22 16:02:51 本站原创 佚名 【字体:大 中 小】

 

 本程序适用于读写AT88SC0104C系列器件。直接调用相应的读写函数即可完成对器件的操作。

注意:

●本程序仅向已签定NDA的用户提供。

●在将AT88SC0104C焊装到电路板之前,必须先对其进行配置并在本程序的GC_TABLE/PASSWORD_TABLE填好Gc Password。

●配置器件可使用本公司提供的参考配置文件和AT88SC0104C系列读写编程器。

                

一般说明

1.1 程序执行时间

适用晶振频率范围(对51系列单片机):10 MHz~40MHz。不同晶振频率下,完成“认证校密码选区并读出和解密16字节”所用的时间如下表所示。

晶振频率(MHz)

12

24

36

40

执行时间(ms)

268

142

100

92

1.2 使用工作单元

片内RAM:3AH字节

工作寄存器:A、B、R0~R7(8字节)、DPTR

堆栈深度:09H字节

1.  访问AT88SC0104C的基本流程

在下面的流程中,每个步骤对应一个子程序。

只读:认证=>校验读密码=>选择用户区=>读出用户区密文数据=>解密出用户区明文数据

只写:认证=>校验写密码=>选择用户区=>写数据到用户区

读写交替:认证=>校验写密码=>选择用户区=>读出用户区密文数据=>解密出用户区明文数据=>写数据到用户区

注意:

●     解密出明文可分成多次完成或一次完成,一次完成的执行时间最少,多次完成有利于进一步提高数据的安全性。

●     分步解密或分步写时,应保持p值和本程序所用的2AH个单元的内容不变。

3.子程序调用

p:工作单元的起始地址(STU)

3.1认证

程序名:AUTHENTICATION();

入口条件:

工作单元

内容

备注

STU+1

套数序号

于程序中“GC_TABLE”标号处顺序安排(0~3套)密钥和密码;bit5-bit4设置Gc套数序号,bit3-bit0设置Password套数序号

认证后,释放p+2A到p+39单元

3.2校验密码

程序名:verify_write_password();verify_read_password();

入口条件:

工作单元

内容

备注

STU+1

套数序号

于程序中“GC_TABLE”标号处顺序安排(0~3套)密钥和密码;bit5-bit4设置Gc套数序号,bit3-bit0设置Password套数序号

3.3选择用户区

程序名:set_user_zone();

入口条件:

工作单元

内容

备注

STU

用户分区号

选择用户区

3.4读用户区数据

程序名:read_user_zone();

入口条件:

工作单元

内容

备注

STU+2

读用户区的起始地址

 

STU+3

读用户区的结束地址

 

STU+4

读出的密文存放地址

 

3.5解密出明文

程序名:decrypto_data(解密密文字节数)

入口条件:

工作单元

内容

备注

STU+5

解出的明文存放地址

 

3.6写数据到用户区

程序名:write_user_zone();

入口条件:

工作单元

内容

备注

STU+7

写用户区的起始地址

 

STU+8

写用户区的结束地址

 

STU+9

写明文入口地址

 

如分步解密或数据分步写时中间嵌入其它程序,应保持p值与本程序所用的2AH个单元不变;

如读出的密文未解完,不得改变密文值,也不得进行写操作

密文和明文不能存放在 地址值为p到p+29H之间;