📄 x5045.asm
字号:
SO BIT P3.7
WP BIT P2.0
SI BIT P3.7
SCK BIT P3.6
CS BIT P2.1
ORG 0000H
AJMP START
ORG 0040H
START: MOV SP,#60H
SETB WP ;写操作不保护
TEST: MOV R4,#89H ;定义R4为写入的数据(89H)
MOV R3,#00H ;定义R3为写入数据的地址(00H)
ACALL WRITE_B
ACALL READ_B
SJMP TEST
;读状态寄存器子程序,将读出的X5045的状态存在A累加器中
READ_SR :LCALL STAX ;调"启动X5045"指令
MOV A,#00000101B ;将读状态寄存器指令送A累加器
LCALL WRITE ;调"写指令子程序"
LCALL READ ;调"读数据子程序"
LCALL ENDX ;调"结束X5045"指令
RET
;写状态寄存器子程序
WRITE_SR: LCALL STAX ;调"启动X5045"指令
LCALL READ_SR ;调"读状态寄存器"子程序
JB ACC.0,WRITE_SR ;ACC.0(WIP)等于1,转WRITE_SR
WRITE_SR1:LCALL STAX ;调"启动X5045"指令
MOV A,#00000110B ;打开写使能开关
LCALL WRITE ;将指令写入
LCALL STAX ;调"启动X5045"指令
MOV A,#00000001B ;送写状态寄存器指令
LCALL WRITE ;将指令写入
MOV A,#00011000B ;设看门狗定时时间为600ms,块保护地址为100H~1FFH
LCALL WRITE ;将数据写入
LCALL ENDX ;调"结束X5045"指令
RET
;读X5045存储器1个字节数据子程序,待读出的地址在R3中,读出后数据存R4
READ_B:LCALL READ_SR ;调"读状态寄存器"子程序
JB ACC.0,READ_B ;ACC.0(WIP)等于1,转READ_B等待
LCALL STAX ;调"启动X5045"指令
MOV A,#03H ;送"读EEPROM"指令,地址在00H~FFH间
LCALL WRITE ;将指令写入
MOV A,R3 ;将R3中的地址送A
LCALL WRITE ;将地址写入X5045
LCALL READ ;读出X5045中的内容
MOV R4,A ;将读出的内容送R4
LCALL ENDX ;调"结束X5045"指令
RET
;写一个字节数据子程序,写入地址在R3中,数据在R4中
WRITE_B:LCALL READ_SR ;调"读状态寄存器"子程序
JB ACC.0,WRITE_B ; ACC.0(WIP)等于1,转WRITE_B等待
LCALL STAX ;调"启动X5045" 子程序
MOV A,#06H ;打开写使能开关
LCALL WRITE ;将指令写入
LCALL STAX ;调"启动X5045" 子程序
MOV A,#02H ;送写EEPROM指令,地址在00H~FFH间
LCALL WRITE ;将指令写入
MOV A,R3 ;将R3中的地址送A
LCALL WRITE ;将地址写入X5045
MOV A,R4 ;送待写数据
LCALL WRITE ;将数据写入
LCALL ENDX ;调"结束X5045"子程序
RET
;以下是启动X5045子程序
STAX:SETB CS ;启动X5045指令
NOP ;先拉高CS,再拉低SCK,最后拉低CS
CLR SCK
NOP
CLR CS
NOP
RET
;以下是结束X5045子程序
ENDX:CLR SCK ;结束X5045指令
SETB CS ;先拉低SCK后拉高CS
NOP
NOP
RET
;以下是写X5045子程序
WRITE: MOV R0,#08H ;写8位数据
WRITE1:RLC A ;将A中的指令数据循环左移
MOV SI,C ;将C中的第1位(最高位)送X5045的SI
CLR SCK
SETB SCK ;将SCK设置为上升沿,以便通过SI脚进行数据的输入
DJNZ R0,WRITE1 ;R0不等0则转WRITE1,以便将A中的8位数据写完
RET
;以下是读X5045子程序
READ: MOV R0,#08H ;读8位数据
READ1: SETB SCK
CLR SCK ;将SCK设置为下降沿,以便通过SO脚进行数据的输出
MOV C,SO ;将X5045中的数据通过SO脚输出到C
RLC A ;将A中的数据循环左移
DJNZ R0,READ1 ;若R0不等0转READ1,以便将X5045中8位数据读完
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -