新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > I2C總線在單片機(jī)上的實(shí)現(xiàn)

I2C總線在單片機(jī)上的實(shí)現(xiàn)

作者: 時(shí)間:2012-03-07 來源:網(wǎng)絡(luò) 收藏

MOV A,#0A1H ;SEND THE CNOTROL BYTE

LCALL SENDBYTE

LCALL ACK

LCALL READBYTE

LCALL BSTOP

POP 0EH

RET

送字節(jié)程序:

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

讀字節(jié)子程序:

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.寫數(shù)據(jù)程序:

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

連續(xù)寫的兩個(gè)字節(jié)之間最好是有10ms的延時(shí)。當(dāng)然,也可以進(jìn)行頁(yè)寫(PAGE WRITE),即一次性連續(xù)寫8個(gè)字節(jié),但采用頁(yè)寫方式時(shí)每個(gè)字節(jié)后要有一個(gè)應(yīng)答信號(hào)。

d.停止位程序:

BSTOP:CLR P1.3

NOP

NOP

CLR P1.2

NOP

NOP

NOP

SETB P1.3

NOP

NOP

NOP

SETB P1.2

RET


上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉