⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x25045.asm

📁 X25045的汇编代码。因为看到别处有类似的代码
💻 ASM
字号:


;(1)X25045数据写入程序

;功能:将缓冲区数据写入指定地址开始的单元。

;入口:F0、R3是E2PROM单元地址最高位和低八位;R0是8051缓冲区首地址;R2是缓冲区长度。

WRITEX: LCALL STAX ;指令启动

MOV A,#06H ;输出WREN

LCALL BYTE_OUT

LCALL STAX ;下一指令启动

MOV A,#02H ;输出WRITE

MOV C,F0 ;插入单元地址最高位

MOV ACC.3,C

LCALL BYTE_OUT

MOV A,R3 ;输出单元地址低八位

LCALL BYTE_OUT

BYWR: MOV A,@R0 ;从缓冲区取数输出,写入到X5045中

LCALL BYTE_OUT

INC R0 ;指针加1

DJNZ R2,BYWR ;缓冲区未空则继续输出

LCALL ENDX ;指令结束

LCALL WIP_CHK ;等待WIP=0

RET


;(2)X25045数据读出程序

;功能:把指定地址开始的单元数据读出并放入缓冲区

;入口:F0、R3是E2PROM单元地址最高位和低八位;R0是8051缓冲区首地址;R2是缓冲区长度。

READX: LCALL STAX

MOV A,#03H ;输出READ

MOV C,F0

MOV ACC.3,C

LCALL BYTE_OUT

MOV A,R3 ;输出低八位地址

LCALL BYTE_OUT

BYRD: LCALL BYTE_IN ;输入数据送入缓冲区

MOV @R0,A

INC R0 ;指针加1

DJNZ R2,BYRD ;缓冲区未满则继续输入

LCALL ENDX

RET

;(3)X25045状态寄存器写入程序

;功能:对状态寄存器进行设置。

;入口:ACC是修改值。

WRSR: LCALL STAX

PUSH ACC

MOV A,#06H ;输出WREN

LCALL BYTE_OUT

LCALL STAX

MOV A,#01H ;输出WRSR

LCALL BYTE_OUT

POP ACC ;输出设置值

LCALL BYTE_OUT

LCALL ENDX

LCALL WIP_CHK ;等待WIP=0

RET

;(4)X25045状态寄存器读出程序

;功能:读出状态寄存器当前值。

;出口:ACC是当前值。

RDSR:LCALL STAX

MOV A,#05H

LCALL BYTE_OUT

LCALL BYTE_IN

LCALL ENDX

RET

;(5)其他子程序

WIP_CHK: LCALL RDSR ;等待X25045结束内部写周期

JB ACC.0,WIP_CHK

RET

STAX: SETB CS ;启动X25045

NOP ;先拉高CS,再拉低SCK,最后拉低CS

CLR SCK

NOP

CLR CS

NOP

RET

ENDX: CLR SCK ;结束X25045指令

SETB CS ;先拉低SCK后拉高CS

NOP

NOP

RET

BYTE_OUT: MOV R4,#08H ;向X25045中写入一字节数据,R4中存放的是一字节数据的位数:8

BOUT1: CLR SCK

RLC A

MOV SI,C

SETB SCK

NOP

NOP

DJNZ R4,BOUT1

RET

BYTE_IN: MOV R4,#08H ;从X25045中读出一字节数据,R4中存放的是一字节数据的位数:8

BIN1: CLR SCK

MOV C,SO

RLC A

SETB SCK

NOP

NOP

DJNZ R4,BIN1

RET

RST_DOG:SETB CS ;复位看门狗定时器

NOP

CLR CS

NOP

SETB CS

RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -