新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 串行E2PROMAT 24C512在單片機中應用

        串行E2PROMAT 24C512在單片機中應用

        作者: 時間:2012-03-21 來源:網絡 收藏


        MAIN: MOV SP #60H;設堆棧
        Write: MOV SlvAdr, #A0H;選擇1個器件地址
        MOV ByteCnt, #08H;設寫入數據長度為8字節
        MOV SubAdr1, #00H;設寫入單元首址為0020H
        MOV SubAdr2, #20H;
        LCALL WriteData ; 寫數據
        ……
        Read: MOV Slvadr, #A0H;選擇1個器件地址
        MOV Bytecnt, #08H;設讀出數據長度為8字節
        MOV SubAdr1, #00H;設讀出單元
        MOV SubAdr2, #20H;首址為0020H
        LCALL ReadData; 讀數據
        ……
        WriteData:LCALL Start; I2C總線起始條件
        MOV A,SlvAdr; 取器件地址
        LCALL writeByte; 發送器件地址
        MOV A,SubAdr1
        LCALL writeByte;發送高8位地址
        MOV A,SubAdr2
        LCALLwriteByte;發送低8位地址
        MOVR0,#WriteDat;取寫入數據的首地址
        Next:MOVA,@R0
        LCALLwriteByte;寫入1字節數據
        LNCR0;取下1個數據
        DJNZByteCnt,Next;重復操作直到寫完全部數據
        LCALLStop;發送I2C總線停止條件
        LCALLDL10ms;延時10ms等待E2PROM內部數據
        ;寫完
        RET
        ;讀數據子程序
        ReadData:LCALLStart
        MOVA,SlvAdr
        LCALLWriteByte
        MOVA,Subadr1
        LCALLWriteByte
        MOVA,Subadr2
        LCALLWriteByte
        LCALLStart;重復發送I2C總線起始條件
        MOVA,Slvadr
        SETBACC.0;R/W位置1
        LCALLWriteByte
        CLRACK;請讀非應答標志
        MOVR0,#RdadData;讀緩沖區首址
        DJNZByteCnt,Next1
        SJMPLast
        Next1:LCALLReadByte;接收1個字節數據
        MOV@R0,A;接收數據送緩沖區
        INCR0
        DJNZByteCnt,Next1;重復接收
        Last:SETBACK;接收最后1個字節數據
        ACALLReadByte
        MOV#R0,A
        LCALLStop
        RET

        上面給出讀寫操作主程序、頁面寫入子程序及其多字節讀子程序。受篇幅限制,部分子程序沒有給出,讀者可根據AT的操作時序自行編制或參閱相關文獻。

        5結束語

        由AT與AT89C2051等非總線構成的數據采集存儲系統具有體積小、成本低、可靠性高的特點,因而具有很高的價值。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 祁连县| 衡山县| 长春市| 宣恩县| 长武县| 延津县| 清镇市| 景宁| 临海市| 巴塘县| 定结县| 宜君县| 谢通门县| 保亭| 合作市| 德令哈市| 元氏县| 科技| 囊谦县| 曲松县| 西平县| 安福县| 陈巴尔虎旗| 禹城市| 基隆市| 英山县| 黑龙江省| 乳源| 崇义县| 华池县| 孝昌县| 宁强县| 宜城市| 平顺县| 永春县| 新丰县| 自贡市| 大邑县| 聂拉木县| 台湾省| 永吉县|