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

📄 e2prom.asm

📁 通过调节一个可变电阻得到变化的电压来模拟一个湿度度传感器
💻 ASM
字号:
PUBLIC _READ_E2PROM
PUBLIC _WRITE_E2PROM
DE SEGMENT CODE
RSEG DE

CAT24C021_CLK BIT P3.0
CAT24C021_DIO BIT P3.1

_READ_E2PROM:
	MOV	A,R7
	MOV	R2,A
	MOV	A,R5
	MOV	R0,A
	ACALL	STR_24C021
	MOV	A,#0A0H
	ACALL	WBYTE_24C021
	JC	READFAIL
	MOV	A,R2
	ACALL	WBYTE_24C021
	JC	READFAIL
	ACALL	STR_24C021
	MOV	A,#0A1H
	ACALL	WBYTE_24C021
	JC	READFAIL
	CLR	F0
	DJNZ	R3,RD24C021_NEXT
	SJMP	RD24C021_LAST
RD24C021_NEXT:
	ACALL	RDBYTE_24C021
	MOV	@R0,A
	INC	R0
	DJNZ	R3,RD24C021_NEXT
RD24C021_LAST:
	SETB	F0
	ACALL	RDBYTE_24C021
	MOV	@R0,A
	ACALL	STOP_24C021
	MOV	A,#00H
	RET

_WRITE_E2PROM:
	MOV	A,R7
	MOV	R2,A
	MOV	A,R5
	MOV	R0,A                
	ACALL	STR_24C021
	MOV	A,#0A0H
	ACALL	WBYTE_24C021
	JC	WRITEFAIL
	MOV	A,R2
	ACALL	WBYTE_24C021
	JC	WRITEFAIL

WR24C021_NEXT:
	MOV	A,@R0
	ACALL	WBYTE_24C021
	;JC	WRITEFAIL
	INC	R0
	DJNZ	R3,WR24C021_NEXT
	ACALL	STOP_24C021

	MOV	R7,#30H
DELAY2:
	MOV	R6,#34H
DELAY1:
	DJNZ	R6,DELAY1
	DJNZ	R7,DELAY2
	MOV	A,#00H
	RET

;================================================
;以下为I2C总线模拟子程序
READFAIL:
	ACALL	STOP_24C021
	MOV	A,#0FFH
	RET

WRITEFAIL:
	ACALL	STOP_24C021
	MOV	A,#0FFH
	RET

STR_24C021:
	SETB	CAT24C021_DIO
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	NOP
	NOP
	CLR	CAT24C021_DIO
	NOP
	NOP
	NOP
	NOP
	CLR	CAT24C021_CLK
	RET
;________________________________________
STOP_24C021:
	CLR	CAT24C021_DIO
	NOP
	NOP
	NOP
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	NOP
	NOP
	SETB	CAT24C021_DIO
	NOP
	NOP
	NOP
	NOP
	RET
;*****************************************
WBYTE_24C021:
	MOV	R7,#08H
WBYO:
	RLC	A
	JC	WBY_ONE
	CLR	CAT24C021_DIO
	SJMP	WBY_ZERO
WBY_ONE:
	SETB	CAT24C021_DIO
	NOP
WBY_ZERO:
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	NOP
	NOP
	CLR	CAT24C021_CLK
	DJNZ	R7,WBYO
	MOV	R6,#5
WAITLOOP:
	SETB	CAT24C021_DIO
	NOP
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	NOP
	JB	CAT24C021_DIO,NOACK
	CLR	C
	CLR	CAT24C021_CLK
	RET

NOACK:	DJNZ	R6,WAITLOOP
	SETB	C
	CLR	CAT24C021_CLK
	RET
;*******************************
RDBYTE_24C021:
	SETB	CAT24C021_DIO
	MOV	R7,#08H
RD24C021_CY1:
	NOP
	CLR	CAT24C021_CLK
	NOP
	NOP
	NOP
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	CLR	C
	JNB	CAT24C021_DIO,RD24C021_ZERO
	SETB	C
RD24C021_ZERO:
	RLC	A
	NOP
	NOP
	DJNZ	R7,RD24C021_CY1

	CLR	CAT24C021_CLK
	NOP
	NOP
	NOP
	CLR	CAT24C021_DIO
	JNB	F0,RD_ACK
	SETB	CAT24C021_DIO
RD_ACK:
	NOP
	NOP
	SETB	CAT24C021_CLK
	NOP
	NOP
	NOP
	CLR	CAT24C021_CLK
	NOP
	NOP
	CLR	F0
	CLR	CAT24C021_DIO
	RET
	END

⌨️ 快捷键说明

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