新聞中心

        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-擴展大容量的數據存儲器,這對于數據量大的數據采集系統有著非常大的意義。




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南宫市| 仁寿县| 霸州市| 上栗县| 海丰县| 沅江市| 海门市| 延庆县| 仙居县| 五指山市| 玉门市| 长岛县| 济宁市| 雷州市| 奉节县| 上思县| 渭南市| 车致| 无极县| 城市| 亚东县| 陵水| 武鸣县| 大田县| 五台县| 互助| 武定县| 安丘市| 星座| 灵川县| 休宁县| 吉木萨尔县| 南城县| 陇南市| 金山区| 永州市| 长武县| 广宗县| 阜阳市| 冷水江市| 浪卡子县|