新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機存儲器擴展問題

        51單片機存儲器擴展問題

        作者: 時間:2013-01-30 來源:網絡 收藏

        一.51的從功能上來說可以分為程序和數據,至于到底能擴展多少存儲空間,要看你擴展的是哪一類存儲器。

        訪問存儲空間時,需要用到兩個指針變量,為DPTR和PC。其中pc為程序計數器,指向下一條需要執行的指令的地址,DPTR為數據指針寄存器,這兩個變量的長度都為16位,這是內部結構決定的,無法改變。所以這兩個指針的尋址能力都為64K。這樣看來,兩類存儲器的擴展能力都為64K 。但是,如果你實際擴展過存儲器,你就可以發現程序存儲器的擴展能力并沒有64K!!!

        這是為什么呢?

        這得從的存儲空間的編址說起。這里僅作簡單說明,具體可以看教科書。簡單地說,內部程序存儲器和外部程序存儲器是一起編址的,它們分別占用64K地址的一部分,所以外部擴展時要減去內部的地址空間,當然小于64K啦。而數據存儲器是內外部分別編址,內外部數據存儲器用不同的指令進行訪問,所以不用擔心單片機會混淆內外部數據存儲器,所以外部數據存儲器擴展能力有64K

        擴展閱讀:單片機存儲器的配置

        二.MCS-擴展系統中,片外程序存儲器和片外數據存儲器共處同一個地址空間,為什么不會發生總線沖突?

        硬件上,控制信號不一樣:片外程序存儲器工作,要PSEN信號有效;片外數據存儲器工作,要RD或WR信號有效;

        軟件上,尋址不一樣,片外程序存儲器工作,要用MOVC,

        片外數據存儲器工作,要用MOVX;

        雖然說他們的地址都是0000H~FFFFH,不會發生沖突的

        因為控制信號線的不同:

        外擴的RAM芯片既能讀出又能寫入,所以通常都有讀寫控制引腳,記為OE和WE。外擴RAM的讀、寫控制引腳分別與MCS-51的RD和WR引腳相連。

        外擴的EPROM在正常使用中只能讀出,不能寫入,故EPROM芯片沒有寫入控制引腳,只有讀出引腳,記為OE,該引腳與MCS-51單片機的PSEN相連

        三.單片機中外接程序存儲器和數據存儲器公用16位地址線和8根數據線為什么不會起沖突

        建議你閱讀一下單片機關于選通地址、傳遞數據方面的敘述。

        下面我簡略的說一下大概過程,希望對你有所幫助。

        第一,單片機采用三總線結構傳遞數據。地址總線、數據總線、控制總線。傳遞數據的過程是先尋址,再傳遞數據。即先送一個地址信息(由微處理器向總線寫一個地址信息),由寄存器(也可能是程序存儲器,也可能是數據存儲器)根據這個地址,把微處理器要讀取的數據寫到總線上,微處理器再讀取這個數據。整個過程由控制總線控制。所以每次讀的數據是針對那個地址對應的寄存器操作的,不會發生混亂。寫數據時一樣,先尋址,再寫數據,數據就寫入剛才尋址時的地址對應的那個寄存器里去了。

        第二、程序存儲器、數據存儲器有不同的選通信號,在一個指令周期里,是不同的時間選通的,所以不會混亂。

        第三。選通的引腳不同。拿片外數據存儲器來說,是P3的第6和第7引腳做選通信號,程序存儲器是PSEN做選通信號,他們接在各自器件的選通引腳上,所以不會混亂。

        第四,指令不同。拿匯編指令來說。MOV是程序存儲器傳遞數據用,MOVX是數據存儲器傳遞數據用(對片外而言)。

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


        存儲器相關文章:存儲器原理



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 青岛市| 米脂县| 东城区| 黄浦区| 纳雍县| 浦城县| 瓮安县| 伊金霍洛旗| 玉树县| 河东区| 房山区| 修文县| 乐山市| 龙口市| 冀州市| 赤水市| 政和县| 深泽县| 乐山市| 宁都县| 沙河市| 江油市| 盱眙县| 石嘴山市| 资源县| 滦南县| 辰溪县| 远安县| 乌海市| 高唐县| 乡宁县| 赣榆县| 禹州市| 图木舒克市| 金溪县| 小金县| 胶州市| 江门市| 浦城县| 吉林市| 清水县|