串行FLASHSSF1101在单片机
;读IC卡子程序,采用闪存直接读方式
RCARD: SETB CS
SETB SI ;初始化SPI
SETB SO
CLR SCK
MOV RCMD,#10H;“闪存直接读”命令
MOV DAH,#00H ;00页面
MOV DAL,#00H
MOV BAH,#00H ;00地址
MOV BAL,#00H
CLR CS ;选中芯片
MOV R0,#RCMD ;指向命令单元
MOV R1,#04H ;4字节命令
T RCMD: MOV A,@R0
LCALL S OUT ;调用发送子程序
INC R0
DJNZ R1,T RCMD
MOV R0,#ICRDATA ;指向读写数据
缓冲区首址
MOV R1,#NUMBER
RICDATA: LCALL SIN ;调用接收子程序
MOV @R0,A ;读128字节数据到主机
INC R0
DJNZ R1,RICDATA
SETB CS
RET
;写IC卡子程序;数据首先写入缓冲区,再使用内建擦除周期的从缓冲区1到内存传送命令写入主存
WCARD: SETB CS
SETB SI
SETB SO
CLR SCK
MOV RCMD,#60H ;“写缓冲区1”命令
MOV BAH,#00H ;写00H地址
MOV BAL,#00H ;单元
CLR CS
MOV R0,#RCMD
MOV R1,#04H
T RCMD1: MOV A,@R0
LCALL S OUT
INC R0
DJNZ R1,T RCMD
MOV R0,#ICRDATA;指向读写缓冲区
MOV R1,#NUMBER
T RDATA: MOV A,@R0
LCALL S OUT
INC R0
DJNZ R1,T-RDATA
SETB SCK
CLR SCK
SETB SCK
CLR SCK
SETB SCK
CLR SCK
MOV RCMD,#0A0H
MOV DAH,#00H
MOV DAC,#00H
CLR CS
MOV R0,#RCMD
MOV R1,#04H
T RCMD2: MOV A,@R0
LCALL S OUT
INC R0
DJNZ R1,T-RCMD
SETB CS
LCALL DL30MS ;延时30ms
RET
;接收一字节数据程序
S-IN: MOV R6,#8
RSHIFT: MOV C,SO
SETB SCK
RLC A
CLR SCK
DJNZ R6,RSHIFT
RET
;发送一字节数据子程序
S OUT: MOV R7,#8
TSHIFT: RLC A
MOV SI,C
SETB SCK
NOP
CLR SCK
NOP
CLR SCK
DJNA R7,TSHIFT
RET
5 结束语
SSF1101串行闪速存储器的串行IC卡封装形式非常便于和单片机接口,以便构成便携式数据存储装置,同时其较大的存储容量也可满足数据存储量较大的应用系统要求,因而该器件在数据存储领域有着较为广泛的应用前景。