新聞中心

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

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

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

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

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

          排隊系統(tǒng)原理圖如圖4所示,由P3.4、P3.3模擬串行總線的SDA端及SCL輸出端,構(gòu)成模擬的IIC串行總線系統(tǒng)。總線功能的實(shí)現(xiàn)除了簡單硬件連接,大部分功能通過軟件模擬來實(shí)現(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(); /*結(jié)束總線*/ 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ā)送應(yīng)答位*/

          DataPointer++;

          }

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

          IIC_Ack(1);

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

          return(1);



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 泗洪县| 石景山区| 东乌珠穆沁旗| 河源市| 泸水县| 普定县| 湘阴县| 深泽县| 岳阳市| 怀柔区| 郎溪县| 酒泉市| 海阳市| 织金县| 亚东县| 江津市| 满洲里市| 舒城县| 海门市| 明水县| 奈曼旗| 饶阳县| 乌鲁木齐市| 桐柏县| 通化县| 伽师县| 临湘市| 扎兰屯市| 兴文县| 如东县| 沐川县| 金湖县| 开阳县| 成安县| 仙桃市| 屏东市| 金坛市| 临泉县| 双柏县| 庆城县| 饶阳县|