93C46的ZJB程序和对应的汇编程序
;******************************************************************
;93C46串行EEPROM储存器子程序库(8位配置)
;******************************************************************
CS==P1.0,DI==P1.1,DO==P1.2,SK==P1.3
;------------------------------------------------------------------
;入口:无,出口:无,命令:1001100000B
;------------------------------------------------------------------
允许93C46写:
A=10011000B,CS=0,CS=1
R7=8{ <A,DI=C,SK=0,SK=1,??R7 <}
SK=0,SK=1,SK=0,SK=1
CS=0,/
;------------------------------------------------------------------
;入口:无,出口:无,命令:1000000000B
;------------------------------------------------------------------
禁止93C46写:
CS=SK=0,CS=DI=SK=1
DI=0,R7=9{SK=0,SK=1,??R7 <}
CS=0,/
;------------------------------------------------------------------
;入口:A=地址,返回:A=数据,命令:110+7位地址
;------------------------------------------------------------------
读93C46:
A=A&00111111B,A=|10000000B ;A中的地址加上读命令
CS=SK=0,CS=DI=SK=1 ;送入启动信号
R2=8{DI= <A,SK=0,SK=1,??R2 <} ;送入读命令和地址
R2=8{SK=0,SK=1,DO= <A,??R2 <} ;读出数据
CS=0,/ ;关闭芯片,返回数据在A中
;------------------------------------------------------------------
;入口:A=地址,B=数据,返回:无,命令:101+7位地址
;------------------------------------------------------------------
写93C46:
A=&00111111B,A=|01000000B ;A中的地址加上写命令
CS=SK=0,CS=DI=SK=1 ;送入启动信号
R2=8{DI= <A,SK=0,SK=1,??R2 <} ;送入写命令和地址
A=B,R2=8{DI= <A,SK=0,SK=1,??R2 <} ;送入数据
CS=0,CS=1,{?DO=0 <} ;等待芯片写入完毕
CS=0,/ ;关闭芯片,返回
;------------------------------------------------------------------
;结束
;------------------------------------------------------------------
;******************************************************************
;对应的汇编编制的93C46子程序库
;******************************************************************
CS EQU P1.0
DI EQU P1.1
DO EQU P1.2
SK EQU P1.3
;------------------------------------------------------------------
;入口:无,出口:无,命令:1001100000B
;------------------------------------------------------------------
允许93C46写:
MOV A,#10011000B
CLR CS
SETB CS
MOV R7,#8
A1: RLC A
MOV DI,C
CLR SK
SETB SK
DJNZ R7,A1
CLR SK
SETB SK
CLR SK
SETB SK
CLR CS
RET
;------------------------------------------------------------------
;入口:无,出口:无,命令:1000000000B
;------------------------------------------------------------------
禁止93C46写:
CLR CS
CLR SK
SETB CS
SETB DI
SETB SK
CLR DI
MOV R7,#9
A2: CLR SK
SETB SK
DJNZ R7,A2
CLR CS
RET
;------------------------------------------------------------------
;入口:A=地址,返回:A=数据,命令:110+7位地址
;------------------------------------------------------------------
读93C46:
ANL A,#00111111B
ORL A,#10000000B
CLR CS
CLR SK
SETB CS
SETB DI
SETB SK
MOV R7,8
A3: RLC A
MOV C,DI
CLR SK
SETB SK
DJNZ R7,A3
MOV R7,#8
A4: CLR SK
SETB SK
RLC A
MOV DO,C
DJNZ R7,A4
CLR CS
RET
;------------------------------------------------------------------
;入口:A=地址,B=数据,返回:无,命令:101+7位地址
;------------------------------------------------------------------
写93C46:
ANL A,#00111111B
ORL A,#01000000B
CLR CS
CLR SK
SETB CS
SETB DI
SETB SK
MOV R7,#8
A5: RLC A
MOV C,DI
CLR SK
SETB SK
DJNZ R7,A5
MOV R7,#8
A6: CLR SK
SETB SK
RLC A
MOV DO,C
DJNZ R7,A6
CLR CS
RET
;------------------------------------------------------------------
;结束
;------------------------------------------------------------------
发表时间:2007年7月20日5:44:42