<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > I2C總線的程序設(shè)計

          I2C總線的程序設(shè)計

          作者: 時間:2011-07-20 來源:網(wǎng)絡(luò) 收藏
            采用I2C總線工作方式驅(qū)動MAX518芯片時,MSSP模塊在產(chǎn)生啟動條件的基礎(chǔ)上,連續(xù)發(fā)送3個字節(jié)信息,分別為地址字節(jié)、命令字節(jié)及所需轉(zhuǎn)換的數(shù)椐字節(jié),3個宇節(jié)發(fā)送完畢后,MSSP模塊產(chǎn)停止條件,MAX518才開始進(jìn)行模/數(shù)轉(zhuǎn)換.

          因為MAX518的地址字節(jié)為58H,所以只有向其發(fā)送58H地址時,才能選通它。命令字節(jié)可以為00H或01H 當(dāng)為00H時,選擇OUT0通逍輸出模擬量:當(dāng)為01H時,選擇OUT1通道輸出模擬量。

          本程序中的命令字節(jié)為01H,即選擇D/A1通道輸出正弦波信號.待輸出的數(shù)據(jù)量根掂需耍在00H~FFH間變化。MSSP模塊產(chǎn)生啟動條件后,地址字節(jié)、命令字節(jié)、待轉(zhuǎn)換的數(shù)據(jù)發(fā)送成功,且產(chǎn)生停止條件時,SSIFG都會被置1。

          因此在編寫程序時,可以通過查詢該標(biāo)志位來判斷相應(yīng)的步驟是否完成。若該步驟沒有完成,則繼續(xù)等待查詢;若已完成,則清除SSIFG標(biāo)志位,繼續(xù)進(jìn)行下一步操作。本設(shè)計的程序流程如圖1和圖2所示。

            

          圖1 I2C的初始化程序流程   圖2 主程序流程及I2C發(fā)送數(shù)據(jù)子程序流程   

          實現(xiàn)代碼如下。

          (1)首先定義數(shù)據(jù)組存放正弦表,通過在數(shù)組名前加const標(biāo)識,把該數(shù)組存放到ROM中.   

          (2)初始化I2C模塊,設(shè)置SCL為輸入口、SDA為輸出口,通過設(shè)HSSP7ADD寄存器來確定I2C的工作頻率,最后使能I2C。   

          (3)該字函數(shù)通過5個do-while語句成I2C的啟動、發(fā)送地址字節(jié)、發(fā)送命令字節(jié)、發(fā)送數(shù)據(jù)字節(jié)和產(chǎn)生停止條件的功能,最后通過對SSPIF清0,清楚發(fā)送標(biāo)志。   

          (4)主函數(shù)3完成各個子函數(shù)的調(diào)用功能,在while循環(huán)中調(diào)用I2C總線輸出數(shù)據(jù)子函數(shù)。  

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();