📄 x5045.asm
字号:
;==============================================================
; 文件名称: X5045.ASM
; 功能描述: 先写再读 X5045
;==============================================================
CS BIT 94H ; P1.4
SPDR DATA 086H ; SPI寄存器声明
SPSR DATA 0AAH
SPCR DATA 0D5H
ADDR DATA 30H
BYTE DATA 31H
ORG 0000H
LJMP START
ORG 0100H
START: NOP
MOV SPCR, #51H ; 设置 SPI 的控制寄存器
MOV ADDR, #00H ; 写入X5045的地址
MOV BYTE, #20H ; 写入X5045的数据
MOV R4, #00H ; 写数据个数计数
STLP1: LCALL WRITE ; 调用写函数
INC ADDR
INC BYTE
MOV R6, #80H ; 延时
LCALL DELAY
INC R4
CJNE R4, #16, STLP1
MOV R0, #40H ; 读出数据存放首地址
MOV R4, #00H ; 计数
MOV ADDR, #00H ; 读取地址
CLR CS ; 设备使能
MOV A, #03H ; 读命令
LCALL SST_MASTERIO
MOV A, ADDR ; 地址
LCALL SST_MASTERIO
STLP2: MOV A, #00H
LCALL SST_MASTERIO ; 读取数据
MOV A, R1
MOV @R0, A ; 保存数据
INC R0
INC R4
CJNE R4, #16, STLP2
SETB CS
SJMP $
; 延时子程序
; 入口参数: R6(增加延时)
; 影响寄存器: R7
DELAY: MOV R7, #10
DLAY1: DJNZ R7, DLAY1
DJNZ R6, DELAY
RET
; 处理主从控制器间的字节传输
; 入口参数: A (SPI 输出)
; 出口参数: R1
SST_MASTERIO:
MOV SPDR, A
MIO1: MOV A, SPSR
ANL A, #80H
CJNE A, #80H, MIO1
ANL SPSR, #7FH
MOV R1, SPDR
RET
; 读取状态寄存器
; 出口参数: R1
;READ_STATUS_REG:
; CLR CS ; 使能设备
; MOV A, #05H ; 发送 RDSR 命令
; LCALL SST_MASTERIO
; MOV A, #00H
; LCALL SST_MASTERIO ; 接收字节
; SETB CS ; 禁止设备
; RET
; 写状态寄存器(看门狗设置)
; 入口参数: R2 (状态字)
;WRSR: CLR CS
; MOV A, #01H
; LCALL SST_MASTERIO
; MOV A, R2
; LCALL SST_MASTERIO
; SETB CS
; RET
; 使能写操作
WREN: CLR CS
MOV A, #06H
LCALL SST_MASTERIO
SETB CS
RET
; 禁止写操作
;WRDI: CLR CS
; MOV A, #04H
; LCALL SST_MASTERIO
; SETB CS
; RET
; 读一个字节
; 入口参数: ADDR (操作地址)
; 出口参数: R1
;READ: CLR CS
; MOV A, #03H
; LCALL SST_MASTERIO
; MOV A, ADDR
; LCALL SST_MASTERIO
; SETB CS
; RET
; 写一个字节
WRITE: LCALL WREN ; 写使能
MOV R6, #01H
LCALL DELAY ; 延时
CLR CS ; 设备使能
MOV A, #02H ; Write 命令
LCALL SST_MASTERIO
MOV A, ADDR
LCALL SST_MASTERIO
MOV A, BYTE
LCALL SST_MASTERIO
SETB CS ; 禁止设备
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -