加密IC卡保险柜控制器的设计
READ:MOV R0,#30H ;设置存放IC卡读入数据的首地址为30H
LCALL RESET ;调IC卡复位子程序
MOV R2,#10H ;读IC卡数据的个数送R2
LCALL START ;调起始条件子程序
MOV R5,#00110000B ;发送读的命令码
LCALL SPOUT ;调发送一个字节子程序
MOV R5,#20H ;发送IC卡的起始地址
LCALL SPOUT
MOV R5,#00H ;将数据00H发送出去
LCALL SPUT
LCALL STOP ;调停止条件子程序
READ1:LCALL SPINC ;调数据采集子程序
MOV A,R6
MOV @R0,A
INC R0
DJNZ R2,READ1
LCALL PLUSE ;调发送脉冲子程序
RET ;读IC卡数据子程序结束
写子程序
WRT:LCALL RESET ;写IC卡数据子程序开始,调IC卡复位子程序
MOV R2,#10H ;写入IC卡的字节个数送R2
MOV R1,#40H ;将40H为首地址的内容写入IC卡
MOV R4,#30H ;R4中放的是写到IC卡起始地址30H
WRT1:LCALL START ;调起始条件子程序
MOV R5,#00111000B ;发送写的命令码
LCALL SPOUT
MOV A,R4 ;发出要写入的IC卡地址
MOV R5,A
LCALL SPOUT
MOV A,@R1 ;写入IC卡数据
MOV R5,A
LCALL SPOUT
LCALL STOP ;调停止条件子程序
LCALL PROCE ;调一个编程过程子程序
INC R1 ;数据指针加1,直到数据写完
INC R4
DJNZ R2,WRT1
RET ;写子程序结束
PROCE:MOV R3,#0FFH ;一个编程过程子程序
PROC1:SETB P1.2
NOP
CLR P1.2
DJNZ E3,PROC1
RET
SPINC:MOV R3,#08H ;数据采集子程序
SPIN1:CLR P1.2
MOV C,P1.4
MOV A,R6
RLC A
MOV R6,A ;读出的一字节内容送R6
SETB P1.2
DJNZ R3,SPIN1
RET
SPOUT:MOV R3,#08H ;一字节发送子程序
MOV A,R5
SPTC1:CLR P1.2
RLC A
MOV P1.4,C
NOP
SETB P1.2
DJNZ R3,SPTC1
RET
START:SETB P1.2 ;起始条件子程序
NOP
CLR P1.4
NOP
RET
STOP:CLR P1.2 ;停止条件子程序
NOP
CLR P1.4
NOP
SETB P1.2
CLR C
NOP
SETB P1.2
NOP
CLR P1.2
RET
RESET:SETB P1.3 ;复位IC卡子程序
NOP
CLR P1.3
NOP
RET
END
保险柜的安全性能是本控制器系统设计的出发点之一,为此,在软件上,将IC卡分为母卡和子卡,母卡由管理人员掌握,子卡由客人掌握。在每次客人走后,将母卡插入保险柜,那么原来的开机子卡宣布作废,这时可以插入一个新的卡形成一个新的子卡。母卡的功能是负责生成新的子卡,而不负责开门,从而确保了保险柜的安全性能。javascript:window.open(this.src);" style="cursor:pointer;"/>
结束语
该IC卡保险柜控制器具有结构简单、功耗低、体积小、成本低等特点,完全达到了用户的要求,目前已投入了小批量的生产。如果将现有的产品稍作改动和扩展,就能实现其他的功能。例如,给它扩展上一个语音芯片,即可进行语音提示或报警;如果将本控制器应用于防盗门就可制成IC卡防盗门,从而实现对传统防盗门的更新换代,具有广阔的市场前景。