• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > MCS-51單片機與二線制串行E2PROM的接口方法

    MCS-51單片機與二線制串行E2PROM的接口方法

    作者: 時間:2012-02-07 來源:網絡 收藏

    是一種非易失存儲器,以其體積小、功耗低、操作靈活、性價比高、存儲數據可靠等諸多優點,是應用系統中非易失存儲器的理想選擇。但的操作采用I2C總線協議,而-51系列沒有I2C,我們在研制“GLM-500測濕儀”時,利用-51的兩條I/O線,通過軟件產生I2C總線所要求的操作時序,可方便地實現-51對的讀寫操作。

    本文引用地址:http://www.czjhyjcfj.com/article/172168.htm

    1 二線制串行E2PROM的引腳功能及基本操作時序

    圖1是二線制串行E2PROM 24C01/02/04/08/16的引腳排列圖。

    僅SCL和SDA端為基本的總線操作端;SCL是串行時鐘輸入端;SDA是串行數據輸入/輸出端;漏極開路輸出需接上拉電阻到VDD;WP是寫保護端,接高電平時,只能讀出,禁止寫入;A0、A1、A2是片選端,對于24C01/02/04/08/16,內部無連接,可接至VSS。

    21.jpg


    I2C總線協議運用主/從雙向通訊。發送數據到總線上的器件定義為發送器,接收數據的器件定義為接收器。主器件和從器件都可工作于接收器和發送器狀態,但總線必須由主器件(通常為微處理器)控制,主器件產生串行時鐘(SCL),控制總線上數據傳送的方向,并產生開始和停止信號。

    總線從主器件產生開始條件后到產生停止條件期間有效,微處理器對串行E2PROM的讀寫操作在開始位控制下開始,在停止位控制下結束。

    當SCL和SDA均為高電平時,定義為總線空閑狀態,數據的傳送必須在總線空閑時才能開始。當SCL為高電平時,SDA由高到低的變化為傳送數據的開始位;而當SCL為高電平時,SDA由低到高的變化為停止位。在開始條件以后,SDA上數據的改變必須在SCL為低電平期間進行,在SCL為高電平期間, SDA必須保持穩定。每傳送一位數據,主器件必須發出一個時鐘脈沖。開始與停止條件如圖2所示。

    22.jpg
    一次讀操作讀出的字節數由主器件決定,沒有限制,多到一次可以讀出整個存儲器的內容;而對于寫操作,一次最多可以寫入一個頁面的字節數,如果超過了節),則前面接收到的數據將被覆蓋。

    數據傳送過程中,每接收一個數據,接收器必須產生一個低電平的確認信號,主器件必須產生一個與此確認位相應的時鐘脈沖。

    開始位以后,主器件需送出8位的控制字節,其格式請參考有關的文獻。

    2 

    MCS-51系列單片機由于沒有I2C總線,可利用兩條I/O線P1.0和P1.1分別連至串行E2PROM的SCL和SDA端,通過軟件產生E2PROM所要求的讀寫時序,MCS-51系列單片機與24C04的硬件連接如圖3所示。

    3 讀寫程序

    MCS-51系列單片機對二線制串行E2PROM讀寫時,必須產生開始位,發送控制字節,控制數據傳送,產生停止位。按照圖3的連接,MCS-51系列單片機對24C04的讀寫程序如下:

    ①字節讀子程序

    入口條件:R0中存放塊內寫入單元的地址;R1中存放待寫入的數據;R2中存放控制字節。
    BYWR:SETBP1.0  ;產生開始位
    CLRP1.1
    CLRP1.0
    MOV A,R2  ;發送控制字節
    LCALLSBWR
    SETBP1.1
    SETBP1.0
    NOP
    JBP1.1,BYWR
     ;判有無確認信號,接收器沒確認重新開始
    CLRP1.0
    MOV A,R0  ;發送塊內寫入字節地址
    LCALLSBWR
    SETBP1.1
    SETBP1.0
    JBP1.1,$  ;判確認信號
    CLRP1.0
    MOV A,R1  ;發送寫入數據
    LCALLSBWR
    SETBP1.1
    SETBP1.0
    JBP1.1,$  ;判確認信號
    CLRP1.0
    CLRP1.1  ;產生停止位
    SETBP1.0
    SETBP1.1
    CLRP1.0
       RET

    ②字節寫子程序

    入口條件:R0中存放塊內讀出字節的地址;R2中存放控制字節,其最低位為0。

    返回結果:讀出的數據存于R1中。
    BYRD:SETBP1.0  ;產生開始位
    CLR P1.1
    CLR P1.0
    MOV A,R2  ;發送控制字節
    LCALLSBWR
    SETBP1.1
    SETBP1.0
    NOP
    JBP1.1,BYRD
      ;判確認信號,接收器未確認重新開始
    CLR P1.0
    MOV A,R0  ;發送塊內讀出字節地址
    LCALLSBWR
    SETBP1.1
    SETBP1.0
    nbs

    51單片機相關文章:51單片機教程




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 荔浦县| 辽中县| 普宁市| 唐山市| 永寿县| 新巴尔虎左旗| 婺源县| 邵武市| 旺苍县| 都安| 客服| 康马县| 珠海市| 安康市| 大理市| 九龙坡区| 遂川县| 富顺县| 望都县| 临安市| 沙坪坝区| 兴业县| 宁强县| 邢台县| 大同县| 明光市| 金溪县| 郴州市| 垦利县| 吉木萨尔县| 丹东市| 贡嘎县| 洪湖市| 西乌珠穆沁旗| 南宫市| 栖霞市| 江安县| 西峡县| 惠来县| 焦作市| 潍坊市|