IS23SC1604芯片介绍
发布时间:2013-04-09 来源:未知
关键字: ISSI公司IS23SC1604芯片
IS23SC1604是采用ISSI公司不错的的CMOS技术生产的低成本、低功耗、安全性高的带有保密功能的16K位串行EEPROM。
IS23SC1604的安全特性为智能卡应用提供了较高级别的存储器安全保护。存储器分为四个不等分应用区,每个应用区有多个密码保护,能够有效保护对该区的读/写/擦除操作。
IS23SC1604的存储区分布如表1所示。
表1存储器分布表
另外,在每一区都有一个读写允许标志位。其中一、二、三、四区的写允许标志位的位地址(十进制)分别是:216、9816、11904、13992;而一、二、三、四区的读允许标志位的位地址(十进制)分别为:217、9817、11905、13993。是否允许对芯片存储区读写,除了和相应的密码有关之外,还与相应的读写标志有关。
以下为IS23SC1604的汇编语言读写程序,仅供有关技术人员参考。
; R1=DATA TO CHIP
; R0=DATA FROM CHIP
; R2=8 BIT COUNTER
; R7=TIME DELAY COUNTER
; R3=BYTE NUMBER
; 40H=ATR INPUT ADDRESS
; 50H=READ DATA OUT
; 79H=WRITE/ERASE OK/NOT OK ID
; 71H=READ DATA ADDRESS HIGH 8 BIT
; 72H=READ DATA ADDRESS LOW 8 BIT
; 73H=DATA BYTE
; 76H=BYTE NUMBER
; 77H=FIRST PSC BYTE
; 78H=SECOND PSC BYTE ORG 00H START:
PIN_CLK EQU P1.0
PIN_IO EQU P1.1
PIN_RST EQU P1.4
PIN_FUS EQU P1.3
PIN_PGM EQU P1.2 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 读 复 位 应 答 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * READ_ATR:
MOV R0,# 40H
MOV R3,# 40H
SETB PIN_RST
SETB PIN_CLK
SETB PIN_PGM
SETB PIN_IO
LCALL DELAY_10US
CLR PIN_PGM
CLR PIN_CLK
LCALL DELAY_5US
CLR PIN_RST LOOP_1_BYTE:
LCALL READ_8_BIT
MOV @R0,A
INC R0
DJNZ R3,LOOP_1_BYTE
RET ADDRESS:
MOV P1,# 0FFH
SETB PIN_RST
SETB PIN_CLK
SETB PIN_PGM
SETB PIN_IO
LCALL DELAY_10US
CLR PIN_PGM
CLR PIN_CLK
LCALL DELAY_5US
CLR PIN_RST
LCALL DELAY_3US
LCALL MUL_8
MOV A,71H
MOV B,72H
ORL A,B
JZ ZERO_BACK
MOV A,71H
JZ HIGH_ZERO
MOV A,72H
JZ LOW_ZERO
LCALL HIGH_Z
LCALL LOW_Z
JMP ZERO_BACK HIGH_ZERO:
LCALL HIGH_Z
JMP ZERO_BACK LOW_ZERO:
LCALL LOW_Z ZERO_BACK:
RET HIGH_Z:
MOV R0,72H
CLK_LOOPH:
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US
DJNZ R0,CLK_LOOPH
RET LOW_Z:
MOV R0,# 0H
MOV R1,71H CLK_LOOPL:
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US
DJNZ R0,CLK_LOOPL
DJNZ R1,CLK_LOOPL
RET MUL_8:
MOV R2,# 03H
CLR C MUL_LOOP:
MOV A,72H
RLC A
MOV 72H,A
MOV A,71H
RLC A
MOV 71H,A
DJNZ R2,MUL_LOOP
RET ; * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 读 数 据 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * READ_EE:
LCALL ADDRESS
MOV R0,# 40H
MOV R3,76H LOOP_BYTE:
LCALL READ_8_BIT
MOV @R0,A
INC R0
DJNZ R3,LOOP_BYTE
RET ; * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 擦 除 数 据 ( 将 字 节 写 成 “ FFH” ) ; * * * * * * * * * * * * * * * * * * * * * * * * * * * ERASE_BYTE:
LCALL ADDRESS
MOV R3,76H ERASE_LOOP:
SETB PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
MOV C,PIN_IO
JNC LOOP_ERASEWRONG ; ERASE CHECK ERROR
CLR PIN_CLK
DEC R3
CJNE R3,# 0H,ERASE_NEXT
JMP ERASE_END ERASE_NEXT:
LCALL READ_8_BIT
JMP ERASE_LOOP LOOP_ERASEWRONG:
MOV 79H,# 00H ; SET THE ID TO ZERO ERASE_END:
RET ; * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 写 字 节 ( 将 相 应 的 位 写 成 “ 0” ) ; * * * * * * * * * * * * * * * * * * * * * * * * * * * WRITE_BYTE:
LCALL ADDRESS
MOV R3,76H
MOV R0,# 30H WRITE_LOOP:
MOV A,@R0
LCALL WRITE_1_BYTE
INC R0
DJNZ R3,WRITE_LOOP
RET WRITE_1_BYTE:
MOV R2,# 08H WR_BYTE_LOOP:
RLC A
JC NEXT_BIT
CLR PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
MOV C,PIN_IO
JC LOOP_WRITEWRONG ; WRITE CHECK ERROR
CLR PIN_CLK
LCALL DELAY_3US
JMP SKIP_BIT NEXT_BIT:
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US SKIP_BIT:
DJNZ R2,WR_BYTE_LOOP LOOP_WRITEWRONG:
MOV 79H,# 00H ; SET WRITE ERROR ID TO ZERO
RET ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 核 对 密 码 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * COMPAR_CODE:
LCALL ADDRESS
MOV R0,# 77H
MOV R3,76H
COMPAR_LOOP:
MOV A,@R0
LCALL COMPARE
INC R0
DJNZ R3,COMPAR_LOOP
SETB PIN_IO
RET CODE_VALI:
LCALL COMPAR_CODE
MOV R2,# 08H FIND_NEXT:
LCALL DELAY_3US
MOV C,PIN_IO
LCALL DELAY_3US
JC FOUND_ONE
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
DJNZ R2,FIND_NEXT
JMP NO_ONE FOUND_ONE:
CLR PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
SETB PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
NO_ONE:
NOP
RET
COMPARE:
MOV R2,# 08H
LOOP_COMPAR:
RLC A
MOV PIN_IO,C
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
DJNZ R2,LOOP_COMPAR
RET
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; 熔 断 熔 丝 ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * FUS_BLOW:
MOV 71H,# 07H
MOV 72H,# 0F4H
LCALL BLOW_BYTE
RET
BLOW_BYTE:
LCALL ADDRESS
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US
SETB PIN_RST
LCALL DELAY_3US
CLR PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US
CLR PIN_IO
SETB PIN_PGM
LCALL DELAY_3US
SETB PIN_CLK
LCALL DELAY_3US
CLR PIN_PGM
LCALL DELAY_5MS
CLR PIN_CLK
LCALL DELAY_3US
CLR PIN_RST
LCALL DELAY_3US
RET
READ_8_BIT:
MOV R2,# 08H
LOOP_8BIT_OUT:
SETB PIN_CLK
MOV C,PIN_IO
RLC A
CALL DELAY_3US
CLR PIN_CLK
LCALL DELAY_3US
DJNZ R2,LOOP_8BIT_OUT
RET
DELAY_10US:
MOV R7,# 05H LOOP_10:
DJNZ R7,LOOP_10
RET DELAY_5US:
MOV R7,# 02H LOP_5:
DJNZ R7,LOP_5
RET DELAY_3US:
MOV R7,# 01H LOP_3:
DJNZ R7,LOP_3
RET DELAY_5MS:
MOV R7,# 0FFH LOOP_5MS:
DJNZ R7,LOOP_5MS
RET