<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC單片機之I2C(從模式)

PIC單片機之I2C(從模式)

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

網(wǎng)上有許多講解單片機 實(shí)現主模式,但是的很少。我現在就來(lái)講講使用MSSP模塊實(shí)現。

有關(guān)協(xié)議的具體介紹可以看 《之I2C(主模式)》,我們這里直接講解實(shí)例

實(shí)例講解:我們模仿 AT24C02 EEPROM 的協(xié)議。讓一個(gè)主模式的單片機,來(lái)讀取單片機的數據。

下面為AT24C02的隨機地址讀取的協(xié)議。

第一個(gè)字節 :輸入7位地址和一位的寫(xiě)狀態(tài)位,

第二個(gè)字節:然后寫(xiě)入EEPROM數據地址,

第三個(gè)字節:輸入7位地址和一位的讀狀態(tài)位,

第四~N個(gè)字節:讀出的EEPROM的數據。

1.jpg

我們來(lái)講解下程序的基本思路:我們使能了MSSP中斷,即是I2C接收中斷,當接收到一個(gè)數據后就會(huì )產(chǎn)生中斷。那是接收到設備地址,還是接收到數據,由SSP1STAT寄存器的狀態(tài)位來(lái)判斷。

需要判斷的狀態(tài)位分別是 :

數據和地址: 用來(lái)判斷接收到是地址還是數據

啟動(dòng)位: 用來(lái)判斷是否接收到啟動(dòng)位

讀寫(xiě): 用來(lái)判斷是寫(xiě)狀態(tài)還是讀狀態(tài)。

緩存滿(mǎn): 用來(lái)判斷緩沖區是否滿(mǎn)

我們以隨機地址讀取為例:講講程序執行的過(guò)程

1,從單片機接收到啟示位和設備地址中斷:我們判斷SSP1STAT的狀態(tài)位為(寫(xiě)狀態(tài),地址,緩存滿(mǎn),接收到啟示位) 然后讀取緩存中的設備地址, 接著(zhù)在讀取 需要讀/寫(xiě)的數據地址。

2,單片機再次接收到設備地址:我們判斷是SSP1STAT的狀態(tài)為(讀狀態(tài))然后從設備就輸出數據

2.jpg

我們以寫(xiě)字節數據為例:

1,從單片機接收到啟示位和設備地址中斷:我們判斷SSP1STAT的狀態(tài)位為(寫(xiě)狀態(tài),地址,緩存滿(mǎn),接收到啟示位) 然后讀取緩存中的設備地址, 接著(zhù)在讀取 需要讀/寫(xiě)的數據地址。

2,單片機判斷SSP1STAT的狀態(tài)位為(寫(xiě)狀態(tài),數據,緩存滿(mǎn))那么單片機就接收輸入的數據。

初始化設置:

1,設置I2C通信的兩引腳為CLK SCL為輸入,

TRISB6 = input;

TRISB4 = input;

2,將MSSP設置為I2C從模式,七位從地址

SSP1CONbits.SSPM0 = 0;

SSP1CONbits.SSPM1 = 1;

SSP1CONbits.SSPM2 = 1;

SSP1CONbits.SSPM3 = 0;// I2C slave mode ,7bit address

3,使能CLK時(shí)鐘

SSP1CONbits.CKP = 1; // enable clock

4,設置從設備地址為 0xA0

SSP1ADD =0xA0; //slave address is 0xa0

5,開(kāi)啟I2C

SSP1CONbits.SSPEN=1;//enable I2c

6,清楚狀態(tài)標志

SSPSTAT=0;

單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理



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

關(guān)鍵詞: PIC單片機 I2C 從模式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>