新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 模擬I2C總線多主節(jié)點(diǎn)通信原理及實(shí)現(xiàn)方法

模擬I2C總線多主節(jié)點(diǎn)通信原理及實(shí)現(xiàn)方法

作者: 時(shí)間:2010-12-14 來(lái)源:網(wǎng)絡(luò) 收藏

  MOV B,#37H

  WWAIT1: JB SCL,WWAIT1;等待SCL為低

  JC WR1;判斷是發(fā)送“1”還是發(fā)送“0”

  SETB SDA;發(fā)送“1”

  AJMP COM

  WR1:  CLR SDA;發(fā)送“0”

  COM:  DJNZ R0,WWAIT2;判斷是否發(fā)送完畢

  WWAIT3: JNB SCL,WWAIT3;發(fā)送完畢等待應(yīng)答信號(hào)

  WWAIT4: JB SCL,WWAIT4

  WWAIT5: JNB SCL,WWAIT5

  CLR ACK

  JB  SDA,ST0

  SETB ACK

  ST0:  RET;返回

  WWAIT2: JNB SCL,WWAIT2;等待SCL為高

  SJMP WAGAIN

  從的讀字節(jié)同時(shí)判斷是否有起始信號(hào)的子程序。如果有起始信號(hào),則轉(zhuǎn)為寫字節(jié)子程序:

  SRDBYTE:MOV R0,#08H

  SETB 20H;設(shè)置標(biāo)志位判斷是讀還是寫

  SETB SDA;釋放

  RWAITJ: JNB SCL,RWAITJ;等待SCL為高

  MOV C,SDA;從上讀取數(shù)據(jù)

  RRC A;存入累計(jì)器

  DEC R0

  MOV C,ACC.7;判斷是否為起始信號(hào)

  JNC RWAITJ1;為低繼續(xù)讀取數(shù)據(jù)

  REWAIT: JNB SCL,RWAITJ1;開(kāi)始判斷是否為起始信號(hào)

  JB  SDA,REWAIT

  CLR 20H;是,則清標(biāo)志位并返回

  AJMP SjRDOUT

  RWAITJ1:JB SCL,RWAITJ1;等待SCL為低

  RWAITJ3:JNB SCL,RWAITJ3;等待SCL為高

  MOV C,SDA

  RRC A

  DJNZ R0,RWAITJ2

  SjRDOUT:RET

  RWAITJ2:JB SCL,RWAITJ2;等待SCL為低繼續(xù)讀數(shù)據(jù)

  SJMP RWAITJ3

  5 總結(jié)

  根據(jù)協(xié)議中的仲裁,提出的基于延時(shí)比較的多主,不僅能夠體現(xiàn)了總線的高效性,而且還具有良好的擴(kuò)展性。它使普通不具有接口的MCU可以應(yīng)用在多主的系統(tǒng)中,既增加了普通MCU的使用范圍,又突破了I2C總線的應(yīng)用局限性,為I2C總線的推廣起到了積極的作用


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

評(píng)論


相關(guān)推薦

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

關(guān)閉