单片机实现通用存贮器IC卡读写
3.5 从IC卡读一字节(RD+BYTE)
从IC卡中读一字节的源程序如下:
RD_BYTE:MOV R5,#08
SETB SDA ;设备SDA为读状态
CLR A ;清空A寄存器
RD_BTYE1:MOV C,SDA ;读一位数据到进位位
RLC A ;左移数据到A.0
SETB SCL
NOP
NOP
CLR SCL
NOP
NOP
DJNZ R5,RD_BYTE1;依次读出8位数据到A中
RET ;无应答信号
利用该程序可将读出的数据存放在A中。需要注意的是:读数据的器件不是通过确认状态来应答的,而是随后产生一个停止状态。
3.6 字节写入模式写数据(WRITE_BYTE)
下列程序中的参数为:R6= =目的地址,A= =数据;数据如下:
WRITE_BYTE:PUSH ACC ;保存A中的数据
LCALL START_IC ;发开始信号
MOV A,#DEVICEAD_W;写入器件地址
LCAL WR_BYTE
MOV A,R6 ;写入字节地址
LCALL WR_BYTE
POP ACC ;恢复A中数据
LCALL WR_BYTE ;写入数据
LCALL STOP_IC
RET
在收到8位数据后,EEPROM将通过SDA来回送确认信号,而传送设备必须用停止状态来终止写操作。这时,EEPROM将进入一个内时固定存贮器的写入周期并且禁止在此其间的所有输入,直到写操作完成后才对通讯应答。其写入周期可自定义,最大为10ms。
3.7 页面写入模式写数据(WRITE_PAGE)
以下程序中的参数为P0= =源指针,R6= =目的地址,R7= =页面长度。
WRITE_PAGE:LCALL START_IC
MOV A,#DEVICEAD_W
LCALL WR_BYTE
MOV A,R6
LCALL WR_BYTE
WRITE_PAGE1:MOV A,@R0
LCALL WR_BYTE
INC R0
DJNZ R7,WRITE_PAGE1
LCALL STOP_IC
RET
AT24C01/02可利用上述程序进行8字节的页面写入,它的操作类似于写字节。不同的是,它无需在第一个字节送出后才以停止状态,不同在收到确认信号后,再传送7个字节的数据码,最后以停止状态来终止页面写序列。AT24C04/08/16的页面为16字节。
3.8 立即地址读模式(READ_BYTEC)
立即地址读模式读一字节数据的程序如下:READ_BYTEC:LCALL START_IC
MOV A,#DEVICEAD_R
LCALL WR_BYTE
LCALL RD_BYTE ;读出默认地址数据
LCALL STOP_IC ;发停止状态应答
RET
该程序执行后,其内部数据字地址指针将保持在上次读写操作访问的最后一个地址,并按1递增且在芯片上电期间一直有效。只有当地址为页面的最末时,下次访问才滚动到该页面的首地址。
3.9 随机地址读模式(READ_BYTER)
在下列程序中,R6= =源地址,程序如下:
READ_BYTER:LCALL START_IC
MOV A,#DEVICEAD_W ;执行空字节写序列
LCALL WR_BYTE ;载入数据地址
MOV A,R6
LCALL WR_BYTE
LCALL START_IC
MOV A,#DEVICEAD_R ;立即地址读取
LCALL WR_BYTE
LCALL DR_BYTE
LCALL STOP_IC
RET
读操作模式需要一个字节写序列载入数据地址。在器件和数据地址写入并得到确认后,将再产生另一个开始条件,并送出读操作器件的地址,同时激发一个立即地址读取。
3.10 顺序地址读取(READ_BYTES)
在下列程序中:R0= =目的指针;R7= =数据长度,程序如下:
READ+BYTES:LCALL START_IC
MOV A,#DEVICEAD_R
LCALL WR_BYTE
READ_BYTES2:LCALL RD_BYTE
MOV @R0,A ;存放数据到目的地址
INC R0
DJNZ R7,READ_BYTES1
LCALL STOP_IC ;读写指定长度后停止
RET
READ_BYTES1:LCALL ACK_IC ;收到数据后发确认信号SJMP READ_BYTES2
其中顺序读取由立即寻址读或随机地址读激发,并在收到一字节数据后发确认信号应答。当读数器件以停止状态应答时,操作被终止。
4、总结
该系统结构简单,在实际运行时具有很高的可靠性,同时具有一定的可扩展性,并可通过单片机的串行口经电平转换后直接与计算机相连,以进行数据通讯。另外,也可根据需要连接到其它引脚或卡座触点,如果适当改进电路和程序,还可读写加密卡和CPU卡等。
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)