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

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機訪問大容量存儲器的實現

    51單片機訪問大容量存儲器的實現

    作者: 時間:2012-10-12 來源:網絡 收藏

    1 引言
      MCS-51系列單片機有著優越的性價比,因此應用面寬,使用量也非常大;然而它只有16位地址線,最大能訪問的存儲空間為64K,且擴展接口與存儲器,擴展接口會占用大量的地址空間,致使該系列單片機在數據量大的數據采集系統中,存儲空間明顯不足。
      筆者最近在開發一數據采集系統時,經分析、探索,找到了解決的辦法。
    2 使用的原理
    2.1 使擴展接口不占用單片機的存儲地址空間
      由于MCS-的擴展接口與存儲器,采用常規的方法擴展接口時會占用大量的地址空間,而多數應用系統均會要求擴展接口(本例有七段LED的段輸出口、位輸出口、鍵盤口各一個),為此,使擴展接口不占用單片機的存儲地址空間對于要求大容量數據存儲器的系統是必要的。
      如圖1,用P1口的一位,只要確保寫數據到顯示的段口時,使用一空余(或專門預留)的地址(如0000H),即可使擴展接口不占用單片機的存儲地址空間且不會相互干擾、發生沖突,同時還可保證有足夠的響應速度。

    51單片機訪問大容量存儲器的實現
    51單片機訪問大容量存儲器的實現

    2.2 外部數據存儲采用大容量存貯芯片,分段使用

    如圖示,MCS-51的16位地址線作為存儲芯片的低位地址,可訪問64K的存儲空間(作為一段);再用P1口的D1、D0位作為存儲芯片的高位地址(段地址),則可把存儲器分為4段,最大訪問能力可達256K(見下表),若使用更多的位,則訪問能力可更大。編程時只要確保高位地址(A16~A19)在訪問存儲芯片的指令執行前確定,即可實現存儲芯片全部空間的訪問。

    51單片機訪問大容量存儲器的實現
    51單片機訪問大容量存儲器的實現

    3 編程實現
    3.1 訪問擴展接口   
    ...
    CLR P1.7
    MOV DPTR,#0000H  ;專門預留的一個地址MOV A, #DATA1
    MOVX   @DPTR,A  ;數據輸出到顯示的段口SETB   P1.7
    MOV A,#DATA2MOVX@DPTR,A  ;數據輸出到顯示的位口  
    ...

    SETB P1.7
    MOV DPTR,#0000H  ;專門預留的一個單  元地址
    MOVX A,@DPTR    ;讀鍵盤口數據到ACC  
    ...

    3.2 訪問存儲器
    程序中要訪問存儲器時,只需按如下順序編寫程序即可:設定片選(CLR P1.7);設定存儲器的段位置;用MOVX讀寫存儲器

    例:  
    ...
    CLR  P3.0  ;使存儲芯片的片選有效CLR P1.0
    CLR P1.1  ;選取0FFFFH~00000H存儲區間MO DPTR,#ADDR1
    MOV  A,#DATA1  ;數據寫到ADDR1單元MOVX@DPTR,AMOV DPTR,#ADDR2
     MOVX A,@DPTR  ;讀ADDR2單元的數據到A
    4 結束語
      使用本方法可輕易地為MCS-擴展大容量的數據存儲器,這對于數據量大的數據采集系統有著非常大的意義。




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 高碑店市| 宝鸡市| 达尔| 抚州市| 库伦旗| 阳东县| 惠安县| 麟游县| 漳州市| 屏南县| 淮阳县| 米脂县| 米易县| 五家渠市| 台湾省| 日照市| 浦江县| 莫力| 福鼎市| 仙居县| 屏山县| 永宁县| 怀远县| 鹤峰县| 大港区| 东乌珠穆沁旗| 慈溪市| 巢湖市| 富蕴县| 铜梁县| 锡林郭勒盟| 鄂托克旗| 广水市| 新巴尔虎左旗| 六枝特区| 白玉县| 顺平县| 昭觉县| 南皮县| 财经| 武隆县|