色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于IIC總線的單片機排隊系統(tǒng)接口設計

          基于IIC總線的單片機排隊系統(tǒng)接口設計

          作者: 時間:2013-11-04 來源:網(wǎng)絡 收藏

            參數(shù)存儲器(E2PROM)[6]使用較低功耗的CMOS串行IIC電路,通過片內存儲空間,記錄柜臺操作和儲戶排隊等信息。其操作控制完全遵循IIC協(xié)議。

            3 系統(tǒng)總線軟件模擬的實現(xiàn)方法

            排隊系統(tǒng)原理圖如圖4所示,由P3.4、P3.3模擬串行總線的SDA端及SCL輸出端,構成模擬的IIC串行總線系統(tǒng)??偩€功能的實現(xiàn)除了簡單硬件連接,大部分功能通過軟件模擬來實現(xiàn),下面給出部分總線常用子程序,這些子程序通用性較好,基本適用于大部分接口的芯片[2-3].

            

            3.1 總線啟動、停止函數(shù)

            void IIC_Start(void)

            {

            IIC_SCL=1;

            IIC_Delay();

            IIC_SDA=1;

            IIC_Delay();

            IIC_SDA=0;

            IIC_Delay();

            IIC_SCL=0;

            IIC_Delay();

            }

            void IIC_Stop(void)

            {

            IIC_SDA=0;

            IIC_Delay();

            IIC_SCL=1;

            IIC_Delay();

            IIC_SDA=1;

            IIC_Delay();

            IIC_SCL=1;

            IIC_Delay();

            }

            3.2 從IIC器件指定位置讀若干字節(jié)

            bit RetBit;

            unsigned char i;

            IIC_Start(); /*啟動總線*/

            RetBit=IIC_Write_Byte(Device_Addr);

            /*發(fā)送器件從地址*/ if(RetBit==0)

            return(0);

            RetBit=IIC_Write_Byte(Mem_Addr);

            /*發(fā)送器件子地址*/ if(RetBit==0)

            return(0);

            IIC_Stop(); /*結束總線*/ IIC_Start(); /*重新啟動總線*/

            RetBit=IIC_Write_Byte(Device_Addr+1);

            if(RetBit==0)

            return(0);

            for(i=0;iNum-1;i++)

            {

            *DataPointer=IIC_Read_Byte(); /*接收數(shù)據(jù)*/

            IIC_Ack(0); /*發(fā)送應答位*/

            DataPointer++;

            }

            *DataPointer=IIC_Read_Byte(); /*接收數(shù)據(jù)*/

            IIC_Ack(1);

            IIC_Stop(); /*結束總線*/

            return(1);



          評論


          相關推薦

          技術專區(qū)

          關閉