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

📄 14-6.asm

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 ASM
字号:
;*********************************************************************** 
; 功能		:X25045读写子程序
; 作者		:LIHJ
; 创建日期	:04-04-04
; 版本		:V1.0
; 修改日期	:
;************************************************************************

;公共函数声明,这些函数可以被外部程序所使用
PUBLIC	WDTINI,KILLDOG,_WrtEEP,_RdEEP

;串行输入、输出、时钟、片选等引脚定义
EECS			EQU	P1.2				;X25045片选线
EESIO		EQU	P1.1				;输入、输出信号线
CLK			EQU	P1.0				;时钟

;命令码定义
WREN_INST	EQU	06H				;写使能命令
WRDI_INST	EQU	04H				;写禁止命令
RDSR_INST	EQU	05H				;读状态寄存器命令
WRSR_INST	EQU	01H				;写状态寄存器命令
READ_INST	EQU	03H				;读X25045命令
WRITE_INST	EQU	02H				;写X25045命令

;看门狗复位时间定义
WDT_2HMS		EQU	20H				;200 ms复位时间
WDT_6HMS		EQU	10H				;600 ms复位时间
WDT_14HMS	EQU	00H				;1.4s复位时间

;子程序
;X25045初始化
WDTINI:	     
	LCALL	WREN					;写操作使能	
	CLR	EECS					;选中X25045
MOV		A,#WRSR_INST			;参数准备
	LCALL	EEP_TXD				;写状态寄存器 
	MOV	A,#WDT_6HMS			;
	LCALL	EEP_TXD				;设置复位时间
	SETB	EECS						
	RET

;喂X25045看门狗,选中一次X25045即可
KILLDOG:			
	CLR	EECS						
	SETB	EECS
	RET	

;CPU向存储器X25045写数据
;入口:R7(数据读写个数),R5(待写存储器地址),R3(数据区指针)
;R7(修改),R5(不变),R3(不变)
_WRTEEP:
	LCALL	WREN					;写操作使能
	CLR	EECS				;选中X25045
MOV		A,#WRITE_INST				
	LCALL	EEP_TXD					;写操作命令
	MOV	A,R5				;获取写存储区基地址
	LCALL	EEP_TXD					;发送存储区基地址
	MOV	A,R3
	MOV	R0,A						
;循环写操作,直到完成写操作								
wrteep?LP:								  
	MOV	A,@R0				;从发送缓冲区中取出数据
	LCALL	EEP_TXD					;写1byte
	INC	R0				;更新写计数
	DJNZ	R7,wrteep?LP				;写操作完成判断
	
	SETB	EECS					;完成写操作,取消选中X25045
	RET

;CPU读存储器X25045数据
;入口:R7(数据读写个数),R5(待写存储器地址),R3(数据区指针)
;R7(修改),R5(不变),R3(不变)
_RDEEP:	
	CLR	EECS				;选中X25045
MOV		A,#READ_INST				;准备参数	
	LCALL	EEP_TXD		 			;发送读命令
	MOV	A,R5					
	LCALL	EEP_TXD					;发送读数据区的基地址
	MOV	A,R3
	MOV	R0,A
rdeep?LP:	 
	MOV	A,#0FFH
	LCALL	EEP_RXD					;读1byte
	MOV	@R0,A				;将读取的数据写到缓冲区
	INC	R0								
	DJNZ	R7,rdeep?LP				;判断读操作是否完成

	SETB	EECS
	RET

;CPU与X25045通信,发送数据到X25045
;SCK上升沿锁存,下降沿移位
EEP_TXD:	
	MOV	B,#8					;发送一个字节,8bits
EEP_TXD?LP:
	RLC	A				;A的最高位移到C
	MOV	EESIO,C				;发送一位
	SETB	CLK					;产生一个时钟上升沿
	NOP						;保持时钟信号高电平状态
	NOP
	NOP
	NOP
	CLR	CLK
	DJNZ	B,EEP_TXD?LP				;判断发送是否完成
	RLC	A				;恢复C状态
	RET

;CPU与X25045通信,接收X25045发送的数据
;SCK上升沿锁存,下降沿移位
EEP_RXD:	
	MOV	B,#8				;接收一个字节,8bits
EEP_RXD?LP:
	SETB	CLK
	SETB  	EESIO					;读数据之前,先拉高信号线
	NOP
	MOV	C,EESIO	
	RLC	A				;A带C循环左移一位
	CLR	CLK
	DJNZ	B,EEP_RXD?LP				;判断一个字节数据是否接收完毕
	RET

;写使能命令
wren:		 
	MOV	A,#WREN_INST					
	CLR	EECS
	LCALL	EEP_TXD					;发送写使能命令
	SETB	EECS
	RET
 
  	END

⌨️ 快捷键说明

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