二、控制器的软件设计

该软件包括三部分:

(1)IC卡信息的读取及AT24C01数据的读取;

(2)比较校验数据,修改存储器数据;

(3)各种控制功能的实现,包括门锁开启,声、光报警等操作。

限于篇幅,这里只给出了利用51汇编语言编写的加密IC卡SLE4442的读/写程序,并给出了主程序的流程图,如图7所示。

读子程序

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