新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 寫一個字節到24c02中(源程序)

        寫一個字節到24c02中(源程序)

        作者: 時間:2016-10-15 來源:網絡 收藏

        是一個非揮發eeprom存儲器器件,采用的IIC總線技術。在許多試驗中都有出現。的應用,主要在存儲一些掉電后還要保存數據的場合,在上次運行時,保存的數據,在下一次運行時還能夠調出。

        本文引用地址:http://www.104case.com/article/201610/307632.htm

        24c02采用的IIC總線,是一種2線總線,我們在試驗中用IO來模擬這種總線,至于總線的時序和原理,請參考相關資料。如果您不想研究,也沒有關系,我們在程序中已經為你寫好了,現在和今后您都可以只調用就是,不必花時間和精力去研究。

        一塊24c02中有256個字節的存儲空間。

        我們將24c02的兩條總線接在了P26和P27上,因此,必須先定義:

        sbit SCL=P2^7;

        sbit SDA=P2^6;

        在這個試驗中,我們寫入了一個字節數值0x88到24c02的0x02的位置。

        寫入完成后,P10燈會亮起,我們再在下一顆來讀出這個字節來驗證結果。

        DDDDDDDDDDDDD

        #define uchar unsigned char //定義一下方便使用

        #define uint unsigned int

        #define ulong unsigned long

        #include //包括一個52標準內核的頭文件

        //本課試驗寫入一個字節到24c02中

        char code dx516[3] _at_ 0x003b;//這是為了仿真設置的

        #define WriteDeviceAddress 0xa0 //定義器件在IIC總線中的地址

        #define ReadDviceAddress 0xa1

        sbit SCL=P2^7;

        sbit SDA=P2^6;

        sbit P10=P1^0;

        //定時函數

        void DelayMs(uint number)

        {

        uchar temp;

        for(;number!=0;number--)

        {

        for(temp=112;temp!=0;temp--) ;

        }

        }

        //開始總線

        void Start()

        {

        SDA=1;

        SCL=1;

        SDA=0;

        SCL=0;

        }

        //結束總線

        void Stop()

        {

        SCL=0;

        SDA=0;

        SCL=1;

        SDA=1;

        }

        //測試ACK

        bit TestAck()

        {

        bit ErrorBit;

        SDA=1;

        SCL=1;

        ErrorBit=SDA;

        SCL=0;

        return(ErrorBit);

        }

        //寫入8個bit到24c02

        Write8Bit(uchar input)

        {

        uchar temp;

        for(temp=8;temp!=0;temp--)

        {

        SDA=(bit)(input0x80);

        SCL=1;

        SCL=0;

        input=input1;

        }

        }

        //寫入一個字節到24c02中

        void Write24c02(uchar ch,uchar address)

        {

        Start();

        Write8Bit(WriteDeviceAddress);

        TestAck();

        Write8Bit(address);

        TestAck();

        Write8Bit(ch);

        TestAck();

        Stop();

        DelayMs(10);

        }

        //本課試驗寫入一個字節到24c02中

        void main(void) // 主程序

        {

        Write24c02(0x88,0x02);// 將0x88寫入到24c02的第2個地址空間

        P10=0; //指示運行完畢

        while(1); //程序掛起

        }

        DDDDDDDDDDDDDDDDD

        編譯,聯機進入仿真,等待LED亮起。本課結束。我們在下一課看結果。



        關鍵詞: 24c02 單片機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 富川| 静宁县| 伊春市| 敦煌市| 灵川县| 石屏县| 洪泽县| 门源| 邳州市| 阿坝县| 普定县| 定结县| 天峻县| 黔西县| 淮阳县| 南平市| 文安县| 潞城市| 宜川县| 什邡市| 泰州市| 临洮县| 泸定县| 仪征市| 手游| 石门县| 琼中| 洛阳市| 和田市| 嫩江县| 施秉县| 多伦县| 大悟县| 同德县| 乌拉特中旗| 六盘水市| 耿马| 临安市| 南通市| 江西省| 全椒县|