rw.asm

来自「MCS-51单片机实验 39个实用实验和源码」· 汇编 代码 · 共 111 行

ASM
111
字号
;将字节数据5BH写入到24C0X的00H空间,并从00H空间读出到A
	SCL EQU P1.0
	SDA EQU P1.1
	ORG 0000H
	SJMP MAIN
	ORG  0030H
MAIN:
	MOV  P1,#0FFH
	MOV  SP,#60H
	
	LCALL WR_DATA
	NOP
	LCALL RD_DATA
	NOP
	
	SJMP $	
;------------------------------------------	
WR_DATA:
	LCALL START		;发启动命令
	
	MOV   A,#0A0H   ;写地址命令0A0H
	LCALL WBYTE	
	MOV   A,#00H    ;待写入地址
	LCALL WBYTE
    
    MOV   A,#5BH	;待写入数据
	LCALL WBYTE
	
	LCALL STOP24 	;发停止指令
	RET
;------------------------------------------
RD_DATA:
	LCALL START		;发启动命令
	
	MOV   A,#0A0H	;写芯片地址命令0A0H
	LCALL WBYTE	
	MOV   A,#00H    ;写入数据起始地址
	LCALL WBYTE
	
	LCALL START		;发启动命令
	
	MOV   A,#0A1H	;写读地址命令0A1H
	LCALL WBYTE
	
	LCALL RBYTE		;读出数据
	
	LCALL STOP24	;发停止指令
	RET	
;----------------------------------------------
WBYTE: 				;字节写子程序
	MOV R3,#08H
WBY0: 
	CLR SCL
	NOP
	RLC A
	MOV SDA,C		;写位
	SETB SCL
	DJNZ R3,WBY0	;循环8次
	CLR SCL
	NOP
	SETB SCL
	NOP
	JB SDA,$       ;等待SEEPROM应答
	CLR SCL
	NOP
	RET
;------------------------------------------
RBYTE:			  	;字节读子程序
	NOP
	MOV R3,#08H
RBY0:
	CLR SCL
	NOP
	SETB SCL
	NOP
	MOV C,SDA		;读位
	RLC A
	DJNZ R3,RBY0	;循环8次
	CLR SCL
	NOP
	SETB SDA		;发应答信号ACK
	NOP
	SETB SCL
	RET

;---------------------------------------------
START: CLR SCL		;启动子程序
	NOP
	SETB SDA
	NOP
	SETB SCL
	NOP
	CLR SDA
	NOP
	NOP
	NOP
	CLR SCL
	RET
;---------------------------------
STOP24: 		   ;停止子程序
	CLR SCL
	NOP
	CLR SDA
	NOP
	SETB SCL
	NOP
	SETB SDA
	NOP
	CLR SCL
	RET
END

⌨️ 快捷键说明

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