




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——8051軟件模擬I2C協(xié)議我覺(jué)的后面的的軟件模擬總線,是對(duì)下面I2C總線上的數(shù)據(jù)傳輸?shù)淖詈媒忉?。它?shí)實(shí)在在的表達(dá)了數(shù)據(jù)具體怎么傳輸?shù)摹.?dāng)看過(guò)I2CSPEC,我個(gè)人認(rèn)為只能說(shuō)是了解了,知道概念,不能說(shuō)是理解,由于我覺(jué)的那些協(xié)議說(shuō)明只算是規(guī)則,但如何去是實(shí)現(xiàn)這個(gè)規(guī)則,那才算是理解。
8051軟件模擬了下面幾塊:1,數(shù)據(jù)傳輸?shù)拈_(kāi)始和終止的信號(hào)。2,接收和發(fā)送ACK信號(hào)。3,發(fā)送和接受字節(jié)數(shù)據(jù)。
程序解釋很明白,我拿來(lái)和大家共享一下。
下面是總線特征和那幾個(gè)模塊的信號(hào)時(shí)序關(guān)系圖,捎帶說(shuō)明一下。I2C總線的一些特征
??只要求兩條總線線路一條串行數(shù)據(jù)線SDA一條串行時(shí)鐘線SCL
???每個(gè)連接到總線的器件都可以通過(guò)唯一的地址和一直存在的簡(jiǎn)單的主機(jī)從機(jī)關(guān)系軟件設(shè)定地
址主機(jī)可以作為主機(jī)發(fā)送器或主機(jī)接收器
??它是一個(gè)真正的多主機(jī)總線假使兩個(gè)或更多主機(jī)同時(shí)初始化數(shù)據(jù)傳輸可以通過(guò)沖突檢測(cè)和仲裁
防止數(shù)據(jù)被破壞
??串行的8位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s快速模式下可達(dá)400kbit/s高速
模式下可達(dá)3.4Mbit/s
???片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整??連接到一致總線的IC數(shù)量只受到總線的最大電容400pF限制
SCL為高,保持SDA的數(shù)據(jù),SCL為低,SDA才能跳變。
兩條線都要上拉,是由于高電平表示空閑狀態(tài),不影響別的或以后的數(shù)據(jù)傳輸。
SCL為高時(shí),SDA來(lái)個(gè)下降沿,表示傳輸開(kāi)始。SCL為高時(shí),SDA來(lái)個(gè)上升沿,表示傳輸終止。
數(shù)據(jù)傳輸必需帶響應(yīng)相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生在響應(yīng)的時(shí)鐘脈沖期間發(fā)送器釋放SDA線.在響應(yīng)的時(shí)鐘脈沖期間接收器必需將SDA線拉低使它在這個(gè)時(shí)鐘脈沖的高電平期間保持穩(wěn)定的低電平.
也就是說(shuō)接受端在SLC第九個(gè)高脈沖時(shí)拉一個(gè)穩(wěn)定的低電平,就表示ACK響應(yīng)。8051不帶I2C總線接口。//引腳定義
SDAEQUP1.2//用于模擬I2C總線的SDA信號(hào)線SLCEQUP1.3//用于模擬I2C總線的SCL信號(hào)線WDTEQUP1.4//看門狗喂狗用I/O引腳
//變量定義
COUNTER1BYTE7FH//延時(shí)子程序所用延時(shí)計(jì)數(shù)器
COUNTERBYTE7EH//I2C總線發(fā)送和接受數(shù)據(jù)字節(jié)時(shí)所用的位計(jì)數(shù)器I2CDATABYTE7DH//從I2C總線接受到的數(shù)據(jù)字節(jié)
////函數(shù)定義
//函數(shù)名稱:SOMENOP//函數(shù)用途:延時(shí)子程序
//SOMENOP:MOVCOUNTER1#00H//延時(shí)用計(jì)數(shù)器清零SOMNOP1:CPLWDT//看門狗喂狗
DJNZCOUNTER1,SOMENOP1//判斷延時(shí)延時(shí)計(jì)數(shù)器是否終止RET//返回
////函數(shù)定義
//函數(shù)名稱:START
//函數(shù)用途:產(chǎn)生I2C總線數(shù)據(jù)傳輸起始信號(hào)
//
START:SETBSDA//置SDA為高電平狀態(tài)SETBSCL//置SDA為高電平狀態(tài)ACALLSOMENOP//模擬SCL高電平狀態(tài)計(jì)數(shù)
CLRSDA//使SDA產(chǎn)生一個(gè)由高到低的跳變ACALLSOMENOP//延時(shí),模擬SDA低電平狀態(tài)計(jì)數(shù)CLRSCL//將SCL置為低電平狀態(tài)RET//返回
////函數(shù)名稱:STOP
//函數(shù)用途:產(chǎn)生I2C總線數(shù)據(jù)傳輸中止信號(hào)
//STOP:SETBSCL//置SCL為高電平狀態(tài)CLRSDA//置SDA為低電平狀態(tài)ACALLSOMENOP//延時(shí)
SETBSDA//使SDA產(chǎn)生一個(gè)由低到高的跳變ACALLSOMENOP//延時(shí)RET//返回
////函數(shù)名稱:WAITACK
//函數(shù)用途:等待從機(jī)(或接收器)返回一個(gè)響應(yīng)信號(hào)ACK(或新的開(kāi)始數(shù)據(jù)傳輸信號(hào))//WAITACK:CLRSCL//將SCL置為低電平狀態(tài)
SETBSDA//釋放SDA信號(hào)線
ACALLSOMENOP//延時(shí),從機(jī)或接收器的響應(yīng)信號(hào)
//應(yīng)當(dāng)在這段延時(shí)期出現(xiàn)
SETBSCL//置SCL為高電平,準(zhǔn)備判斷SDAACALLSOMENOP//延時(shí)WAITACK1:MOVC,SDA
JCWAITACK//SDA為低電平,返回了響應(yīng)信號(hào)//否則等待新的開(kāi)始數(shù)據(jù)傳輸信號(hào)CLRSDA//響應(yīng)信號(hào)ACK或新的開(kāi)始數(shù)據(jù)傳輸//信號(hào)出現(xiàn),將SDA置為低電平CLRSCL//將SCL置為低電平狀態(tài)RET//返回
////函數(shù)名稱:NOACK
//函數(shù)用途:在向從機(jī)(或接收器)返回一個(gè)非響應(yīng)信號(hào),迫使數(shù)據(jù)傳輸過(guò)程終止
//NOACK:SETBSDA//在SCL低電平期間置SDA為高電平
CLRSCL
ACALLSOMENOP//延時(shí)
SETBSCL//SCL低電平周期計(jì)數(shù)終止,置SCL高
ACALLSOMENOP//延時(shí)RET//返回
////函數(shù)名稱:SENDBYTE
//函數(shù)用途:向I2C總線發(fā)送一個(gè)字節(jié)
//入口參數(shù):ACC(待發(fā)送的數(shù)據(jù)字節(jié)存放在ACC中)
//SENDBYTE:MOVCOUNTER,#08H//一個(gè)字節(jié)共送出8為數(shù)據(jù)SENDBYTE1:CLRSCL//置SCL為低電平狀態(tài)
RLCA//帶進(jìn)位循環(huán)左移,將最高位移至CMOVSDA,C//將當(dāng)前數(shù)據(jù)位送到數(shù)據(jù)線SDAACALLSOMENOP//計(jì)數(shù)SCL低電平狀態(tài)周期數(shù)SETBSCL//置SCL為高電平
ACALLSOMENOP//計(jì)數(shù)SCL高電平狀態(tài)周期數(shù)
DJNZCOUNTER,SENDBYTE1//判斷8個(gè)數(shù)據(jù)位是否發(fā)送完成CLRSCL//字節(jié)發(fā)送完成,置SCL為低電平狀態(tài)RET//返回
////函數(shù)名稱:RCVBYTE
//函數(shù)用途:從I2C總線接受一個(gè)數(shù)據(jù)字節(jié)
//入口參數(shù):ACC(待發(fā)送的數(shù)據(jù)字節(jié)存放在ACC中)
//RCVBYTE:MOVCOUNTER,#8H//一個(gè)字節(jié)共接收8位數(shù)據(jù)
CLRA//ACC被用來(lái)暫存接受數(shù)據(jù),先清零SETBSDA//釋放SDA數(shù)據(jù)線
RCVBYTE1:CLRSCL//置SCL為低電平狀態(tài)
ACALLSOMENOP//計(jì)數(shù)SCL低電平狀態(tài)周期數(shù)//SDA的變化將在這段延時(shí)中出現(xiàn)SETBSCL//低電平周期終止,置SCL為高電平ACALLSOMENOP//計(jì)數(shù)SCL高電平狀態(tài)周期數(shù)MOVC,SDA//將SDA狀態(tài)讀入CRLCA//ACC帶進(jìn)位循環(huán)左移SETBSDA//釋放SDA數(shù)據(jù)線
DJNZCOUNTER,SENDBYTE1//判斷8個(gè)數(shù)據(jù)位是否接收完成MOVI2C
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度美容院顧客資源與合同權(quán)益轉(zhuǎn)讓書
- 腳手架班組承包協(xié)議(2025年度)包含環(huán)保責(zé)任條款
- 二零二五年度轉(zhuǎn)租協(xié)議甲乙丙三方房屋租賃合同
- 二零二五年度主播與網(wǎng)絡(luò)文學(xué)出版社解除合同
- 2025年度男女分手后共同子女保險(xiǎn)權(quán)益處理協(xié)議
- 二零二五年度返利協(xié)議書:健康體檢機(jī)構(gòu)返利合作協(xié)議
- 二零二五年度校園借車免責(zé)協(xié)議實(shí)施細(xì)則
- 二零二五年度航空航天服務(wù)分紅權(quán)協(xié)議書
- 2025年度銀行保險(xiǎn)公司養(yǎng)老金融服務(wù)合作協(xié)議
- 退隊(duì)儀式發(fā)言稿
- 高中語(yǔ)文基礎(chǔ)知識(shí)手冊(cè)薛金星
- 輪轂電機(jī)驅(qū)動(dòng)電動(dòng)車懸架和轉(zhuǎn)向系統(tǒng)設(shè)計(jì)與性能匹配
- 二年級(jí)第二學(xué)期體育知識(shí)結(jié)構(gòu)圖
- 特種設(shè)備使用單位名稱變更申請(qǐng)表(共2頁(yè))
- CASS勘測(cè)定界操作指導(dǎo)方案
- 中國(guó)商品條碼系統(tǒng)注冊(cè)登記表規(guī)范填寫
- 湘科教版小學(xué)信息技術(shù)四年級(jí)下冊(cè)全冊(cè)教案.doc
- JJG 840-1993 函數(shù)信號(hào)發(fā)生器檢定規(guī)程
- 胃瘍(慢性消化性潰瘍)中醫(yī)護(hù)理方案
- 護(hù)理工作質(zhì)量標(biāo)準(zhǔn)及考核細(xì)則
- CBCC中國(guó)建筑色卡千色卡色號(hào)查詢表
評(píng)論
0/150
提交評(píng)論