新闻中心

EEPW首页>嵌入式系统>设计应用> I2C总线在单片机上的实现

I2C总线在单片机上的实现

作者: 时间:2012-03-07 来源:网络 收藏

MOV A,#0A1H ;SEND THE CNOTROL BYTE

LCALL SENDBYTE

LCALL ACK

LCALL READBYTE

LCALL BSTOP

POP 0EH

RET

送字节程序:

SENDBYTE:PUSH 0EH

PUSH 00H

MOV R0,#08H

LOOP1:CLR P1.3

NOP

NOP

RLC A

MOV P1.2,C

CPL P1.3 ;P1.3=1

NOP

NOP

DJNZ R0,LOOP1

POP 00H

POP 0EH

RET

读字节子程序:

READBYTE:PUSH 0EH

PUSH 00H

MOV R0,#08H;READ THE CONTENT

CLR A

LOOP4:CLR P1.3

NOP

NOP

NOP

SETB P1.3 ;P1.3=1

MOV C,P1.2

RLC A

DJNZ R0,LOOP4

MOV R2,A

POP 00H

POP 0EH

RET

c.写数据程序:

WRITE:PUSH 0EH

CLR P1.4

LCALL BSTART

MOV A,#0A0H

CLALL SENDBYTE ;SEND THE CONTROL BYTE

LCALL ACK

MOV A,R1 ;SEND THE ADDRESS

LCALL SENDBYTE

LCALL ACK

MOV A,R2 ;WRITE THE CONTENT

LCALL SENDBYTE

LCALL ACK

LCALL BSTOP

POP 0EH

RET

连续写的两个字节之间最好是有10ms的延时。当然,也可以进行页写(PAGE WRITE),即一次性连续写8个字节,但采用页写方式时每个字节后要有一个应答信号。

d.停止位程序:

BSTOP:CLR P1.3

NOP

NOP

CLR P1.2

NOP

NOP

NOP

SETB P1.3

NOP

NOP

NOP

SETB P1.2

RET


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭