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

📄 9at24c02存储器i2c总线实验.asm

📁 本原码是51单片机的实验原程序
💻 ASM
字号:
;=================================================
; 24C02存储器I2C总线实验      
;=================================================
;
;	zsMCU51实验板配套学习例程
;
;	中山单片机学习网	智佳科技
;
;	作者:逸风	QQ:105558851
;
;	http://www.zsmcu.com
;	E-mail:info@zsmcu.com
;=================================================
SDA	EQU	P2.0
SCL	EQU	P2.1
Address	EQU	08H
I2CData	EQU	09H	

ORG 0000H 
LJMP START;转入主程序
ORG 0010H ;外部中断P3.2脚INT0入口地址
START:
	MOV	SP,#60H

	MOV	Address,#00H
	MOV	I2CData,#55H
	CALL	I2C_WRITE	;写入数据

	MOV	I2CDATA,#0AAH   ;


	MOV	Address,#00H
	CALL	I2C_READ
	MOV	I2CData,A	;读出数据
	NOP
	NOP

MAIN:




/*------------------------------------------------------
写一个字节	Address地址	I2CDatata写入的数据
------------------------------------------------------*/
I2C_WRITE:
    I2C_WRITE_A:
	LCALL	I2C_START
	MOV	A,#10100000B
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK
	JC	I2C_WRITE_A	;=1,表示无确认,再次发送
	
	MOV	A,Address
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK	

	MOV	A,I2CData
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK	
	LCALL	I2C_STOP
RET	



/*------------------------------------------------------
读一个字节	Address地址	Data读出的数据
------------------------------------------------------*/

I2C_READ:
    I2C_READ_A:
	LCALL	I2C_START
	MOV	A,#10100000B
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK
	JC	I2C_READ_A	;=1,表示无确认,再次发送

	MOV	A,Address
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK	

    I2C_READ_B:
	LCALL	I2C_START
	MOV	A,#10100001B
	LCALL	I2C_SEND8BIT
	LCALL	I2C_ACK
	JC	I2C_READ_B

	LCALL	I2C_RECEIVE8BIT
	MOV	I2CData,A
	LCALL	I2C_ACK
	LCALL	I2C_STOP
RET



;发送开始信号
I2C_START:
	SETB	SCL
	SETB	SDA
	NOP
	NOP
	CLR	SDA
	NOP
	NOP
	CLR	SCL
RET
;发送结束信号
I2C_STOP:
	CLR	SDA
	NOP
	NOP
	SETB	SCL
	NOP
	NOP
	SETB	SDA
RET

;发送接收确认信号
I2C_ACk:
	SETB	SDA
	SETB	SCL
	NOP
	NOP
	JB	SDA,I2C_ACK0
	CLR	C	
	SJMP	I2C_ACK_END
    I2C_ACK0:
	SETB	C
    I2C_ACK_END:
	CLR	SCL
RET

;送八位数据
I2C_SEND8BIT:
	MOV	B,#08H
I2C_SEND8BIT_A:	
	RLC	A
	
	MOV	SDA,C
	SETB	SCL
	NOP
	NOP
	CLR	SCL
	DJNZ	B,I2C_SEND8BIT_A
RET


;接收八位数据
I2C_RECEIVE8BIT:
	MOV	B,#08H
	CLR	A
	SETB	SDA
I2C_RECEIVE8IT_A:
	SETB	SCL
	NOP
	NOP
	MOV	C,SDA
	RLC	A
	CLR	SCL
	DJNZ	B,I2C_RECEIVE8IT_A

RET

⌨️ 快捷键说明

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