单片机控制AT88SC1604卡的应用实例
如果对芯片各标识数据区进行读出操作,除FZ和IZ区外,需要使SV标志置“1”后才能执行。
如果对芯片各应用数据区进行读出操作,需要在SV=1且Rn=1(n=1,2,3,4)状态下才能执行。
注:在CLK的下降沿时,地址计数器加1,地址计数器当前所指的地址单元的数据被输出到I/O线上。因此,在整个时钟周期Tdk期间,包含了地址加1(INC)和读出(REA)两项操作。
读IC数据子程序(R2:需读IC卡字节数,R0:数据区存放低位首地址)
RICDAZ: MOV A,#KXXDZ ;卡信息地址送A
LCALL SADR ;寻卡地址
RICDA: MOV R3,#08
RICDA1: SETB ICSDA
NOP
MOV C,ICSDA ;位读到A
RLC A
SETB ICCLK
NOP
CLR ICCLK
NOP
DJNZ R3,RICDA1
MOV @R0,A ;8位数据送数据区
DEC R0
DJNZ R2,RICDA
RET
; 寻IC卡位地址子程序(调用前16进制地址送ACC)
SADR: LCALL FWZCX
MOV B,#08
MUL AB ;计算位地址: 16进制地址*8
MOV R4,A ;低位位地址送R4
MOV R5,B ;高位位地址送R5
JNZ SADR1 ;低位地址不为0转
MOV A,R5
JZ SADR3
DEC R5
SADR1: SETB ICREST ;复位端置1
SETB ICSDA
CLR ICPGM
CLR ICCLK
CLR ICREST
SADR2: SETB ICCLK
SETB ICCLK
CLR ICCLK
CLR ICCLK
DJNZ R4,SADR2
MOV A,R5
JZ SADR3
DEC R5
SJMP SADR2
SADR3: RET
;
(3)比较操作:在进行比较操作时,必须保证使RST脚和PGM脚同时保持为低。比较操作只能对芯片密码控制区执行,且由芯片内部来判断。在FUSE2未熔断时,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。SV=1时,芯片不做任何比较操作。在FUSE2熔断后,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。
注:上述芯片密码比较时序图中是假设密码计数器中前两位为0,第三位寻到1的处理时序。
有关芯片SC的时序关系如图2~5图所示:
从操作(B)到(F),地址计数器不变,密码比较的过程是:
(A)比较安全密码/擦除密码序列
(B)在密码输入比较计数器中找出一位为“1”的位
(C)在这个为“1”的单元写“0”
(D)芯片输出“0”
(E)如果比较成功,在PGM的上升沿安全密码/擦除密码的相应标志
(SV,Sn或En)被置“1”,同时安全密码/擦除密码输入比较计数器
(SCAC,SnAC或EnAC)被擦除。
(F)如果擦除成功,相应安全密码/擦除密码标志被置“1”,芯片将输出“1”,否则芯片输出“0”。
(G)在CLK的下降沿,地址计数器加1,并输出下一位的状态。
比较用户密码子程序(地址0AH,0BH)
CPSC: MOV R0,#CMM+2
MOV R1,#06
MOV R2,#02
LCALL MVITI
MOV A,#0AH
LCALL SADR ;寻址
MOV R0,#06
LCALL BJMMRET
; 比较密码程序
BJMM: CLR ICREST
CLR ICPGM
MOV R2,#02
BJMM1: MOV A,@R0
MOV R3,#08
BJMM2: RLC A
MOV ICSDA,C
NOP
SETB ICCLK
NOP
CLR ICCLK
NOP
DJNZ R3,BJMM2
INC R0
DJNZ R2,BJMM1
MOV R2,#08;查8位
BJMM4: SETB ICSDA
NOP
MOV C,ICSDA
JC BJMM5 ;是1转
SETB ICCLK ;指向下一位
NOP
CLR ICCLK
NOP
DJNZ R2,BJMM4
LJMP BJMM8 ;计数器为00,卡锁死转
BJMM5: SETB ICPGM
NOP
CLR ICSDA ;写0
NOP
SETB ICCLK
NOP
CLR ICPGM
NOP
LCALL DELY5
CLR ICCLK
NOP
SETB ICSDA
NOP
MOV C,ICSDA
JNC BJMM6
LJMP BJMM7 ;未写入0,转出错
BJMM6: SETB ICPGM
NOP
SETB ICSDA ;写1(擦除)
NOP
SETB ICCLK
NOP
CLR ICPGM
NOP
LCALL DELY5
CLR ICCLK
NOP
SETB ICSDA
NOP
MOV C,ICSDA
NOP
SETB ICCLK
JNC BJMM7 ;擦除不成功(密码错)转
SETB FGICG1 ;置已校对密码标志
RET
BJMM7: CLR FGICG1 ;建密码错标记
RET
BJMM8: SETB FGICG2 ;置卡锁死标志
RET
液位计相关文章:磁翻板液位计原理
评论