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

📄 5045 ok.txt

📁 基与51单片机的5045的存储测试程序 在设计中主要用LED来显示存储和读取数据是否成功来测试5045的好坏
💻 TXT
字号:
SCK   BIT p2.0  ;X5045时钟
SDI   BIT p1.7  ;X5045串行数据输入线
CS50  BIT p2.2  ;X5045片选信号, "0"有效
SDO   BIT p2.1  ;X5045串行数据输出线
;X5045 命令定义
WREN   EQU 06H  ;写使能命令(置位写使能锁存器)
WRDI   EQU 04H  ;写保护命令(复位写使能锁存器)
RDSR   EQU 05H  ;读状态寄存器命令
WRSR   EQU 01H  ;写状态寄存器命令
READD   EQU 03H  ;读数据命令(其中D3为数据地址A8)
WRITED  EQU 02H  ;写数据命令(其中D3为数据地址A8)
;*******************************************************************
ORG 00H
 LJMP MAIN
MAIN:
 NOP
 LCALL WRSRWDT
 LCALL WRDROM
 LCALL RDDROM
 LCALL CLRWDT
 LJMP  MAIN
;*****************************************************************
;X5045 WatchDog应用程序集
;===================================================================
;功能:向X5045串行输出8Bit数据
;入口参数:A=数据
;出口参数:(无)
;影响资源:A、R6
;占用堆栈:2
;===================================================================
 
SDO8B:
 MOV R6, #08H
SDO8B0:
 CLR SCK
 RLC A
 MOV SDI, C
 SETB SCK
 DJNZ R6, SDO8B0
 RET
;===================================================================
;功能:从X5045串行读出8Bit数据
;入口参数:(无)
;出口参数:A=数据
;影响资源:A、R6
;占用堆栈:2
;===================================================================
SDI8B:
 SETB SCK
 MOV R6, #8
SDI8B0:
 SETB SDO
 CLR SCK
 NOP
 MOV C, SDO
 RLC A
 SETB SCK
 DJNZ R6, SDI8B0
 RET
;===================================================================
;功能:检查WIP标志,只到WIP标志无效时退出
;入口参数:(无)
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:4
;===================================================================
CHKWIP:
 MOV R7, #200  ;设置最大循环次数
CHKWIP0:
 CLR SCK
 CLR CS50
 MOV A, #RDSR
 CALL SDO8B
 CALL SDI8B
 SETB CS50
 SETB SCK
 JNB ACC.0, CHKWIP1
 DJNZ R7, CHKWIP0
CHKWIP1:
 RET
;===================================================================
;功能:写X5045控制字节
;入口参数:ROMData=控制字节
;出口参数:(无)
;影响资源:A、R6、R7
;占用堆栈:8
;===================================================================
WRSRWDT:
 CLR SCK
 CLR CS50
 MOV A, #WREN
 CALL SDO8B
 SETB CS50
 NOP
 CLR CS50
 MOV A, #WRSR
 CALL SDO8B
 MOV A, #00
 CALL SDO8B
 SETB CS50
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:向X5045写入一字节数据
;入口参数:ROMData=数据、DPTR=数据存储地址
;出口参数:(无)
;影响资源:A、PSW、R6、R7
;占用堆栈:8
;===================================================================
WRDROM:
 CLR SCK
 CLR CS50
 MOV A,#WREN
 CALL SDO8B  ;允许写
 SETB CS50
 NOP
 CLR CS50  ;激活写操作
 MOV A, DPH
 RRC A
 MOV A, #WRITED
 MOV ACC.3, C ;插入地址第8位
 CALL SDO8B
 MOV A, DPL
 CALL SDO8B  ;写入存储地址
 MOV A,#00
 CALL SDO8B  ;写入数据
 SETB CS50  ;结束写操作
 SETB SCK
 CALL CHKWIP
 RET
;===================================================================
;功能:从X5045读出一字节数据
;入口参数:DPTR=数据存储地址
;出口参数:A=数据
;影响资源:A、PSW、R6
;占用堆栈:4
;===================================================================
RDDROM:
 MOV A, DPH
 RRC A
 CLR SCK
 CLR CS50
 MOV A, #READD
 MOV ACC.3, C
 CALL SDO8B  ;送读数据命令和第8位地址
 MOV A, DPL
 CALL SDO8B  ;送数据低8位地址
 CALL SDI8B  ;读取数据
 SETB CS50
 SETB SCK
 RET
;===================================================================
;功能:清除WatchDog定时器
;入口参数:(无)
;出口参数:(无)
;影响资源:A、DPTR、PSW、R6
;占用堆栈:4
;===================================================================
CLRWDT:
 CLR CS50
 NOP 
 SETB CS50
 RET
END

⌨️ 快捷键说明

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