<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
93AA46控制子程序
一、93AA46与单片机的接口电路
VCC
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> AT<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />89C2051
93AA46
P1.0 CS
P1.1 DI
P1.2 CLK
P1.3 DO
P1.4 ORG
93AA46在ORG=1(´16结构)时的命令集
命 令 | S | 命令码 | 地 址 | DI | DO |
读 READ | 1 | 10 | A5A4A3A2A1A0 | — | D15~D0 |
擦写使能 EWEN | 1 | 00 | 1 1 X X X X | — | 高阻 |
擦除 ERASE | 1 | 11 | A5A4A3A2A1A0 | — | RDY/BSY |
片擦除 ERAL | 1 | 00 | 1 0 X X X X | — | RDY/BSY |
写 WRITE | 1 | 01 | A5A4A3A2A1A0 | D15~D0 | RDY/BSY |
片写 WRAL | 1 | 00 | 0 1 X X X X | D15~D0 | RDY/BSY |
擦写禁止 EWDS | 1 | 00 | 0 0 X X X X | — | 高阻 |
二、控制子程序清单
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; 1、RD_DB 读16位数据子程序
; 2、WD_DB 写16位数据子程序
: 3、WR_B 送命令及地址子程序
; 4、RD 读16位数据子程序
; 5、EWDS 擦写禁止子程序
; 6、EREN 擦写使能子程序
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;I/O口定义
CS EQU P1.0
DI EQU P1.1
DO EQU P1.3
CLK EQU P1.2
OG EQU P1.4
;读16位数据子程序,待读出数据地址在R3中,读出的16位数据存在20H、
;21H中。
RD_DB: CLR CS ;复位93AA46
SETB CS
CLR CLK
SETB OG ;选´16数据结构
RD_DB1: JB DO,RD_DB1 ;检查93AA46是否正在进行写操作
MOV R7,#20H ;数据存放首址送R7
MOV A,R3 ;将待读出数据地址送A累加器(低6位)
ORL A,#80H ;READ命令码送A累加器高2位
LCALL WR_B ;送命令及地址
LCALL RD ;读16位数据并送20H、21H中
CLR CS
SETB CS
RET
WR_B: SETB DI ;送起始位
SETB CLK
CLR CLK
WR_B1: MOV R0,#08H ;送命令及地址
WR_B2: RLC A
MOV DI,C
SETB CLK
CLR CLK
DJNZ R0,WR_B2
RET
RD: MOV R1,#02H ;读16位数据
RD1: MOV R0,#08H
RD2: SETB CLK
CLR CLK
MOV C,DO
RLC A
DJNZ R0,RD2
MOV @R7,A
INC R7
DJNZ R1,RD1
RET
;写16位数据子程序。待写入数据地址在R3中,写入的16位数据存在20H、]
;21H中。F0为写成功与否标志,F0=0,写成功;F0=1,写失败。
WR_DB: CLR CS ;复位93AA46
SETB CS
CLR CLK
SETB OG ;选´16数据结构
CLR F0
JNB DO,WR_DB1 ;DO=0,93AA46准备好
SETB F0 ;DO=1,1®F0后返回
RET
WR_DB1:LCALL EWEN ;送擦写使能命令
MOV A,R3 ;将待写入数据地址送A累加器(低6位)
ORL A,#40H ;送写命令及地址
LCALL WR_B
MOV R7,#20H
MOV A,@R7 ;写数据(16位)
LCALL WR_B1
INC R7
MOV A,@R7
LCALL WR_B1
CLR CS ;启动写周期
SETB CS
RET
;擦写禁止子程序
EWDS: CLR CS
SETB CS
MOV A,#00H ;送擦写禁止命令
LCALL WR_B
CLR CS
SETB CS
RET
;擦写使能子程序
EREN: CLR CS
SETB CS
MOV A,#30H ;送擦写使能命令
LCALL WR_B
CLR CS
SETB CS
RET
文章评论(0条评论)
登录后参与讨论