51單片機(jī)存儲(chǔ)器擴(kuò)展問(wèn)題
一.51的存儲(chǔ)器從功能上來(lái)說(shuō)可以分為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,至于到底能擴(kuò)展多少存儲(chǔ)空間,要看你擴(kuò)展的是哪一類(lèi)存儲(chǔ)器。
訪問(wèn)存儲(chǔ)空間時(shí),需要用到兩個(gè)指針變量,為DPTR和PC。其中pc為程序計(jì)數(shù)器,指向下一條需要執(zhí)行的指令的地址,DPTR為數(shù)據(jù)指針寄存器,這兩個(gè)變量的長(zhǎng)度都為16位,這是51單片機(jī)內(nèi)部結(jié)構(gòu)決定的,無(wú)法改變。所以這兩個(gè)指針的尋址能力都為64K。這樣看來(lái),兩類(lèi)存儲(chǔ)器的擴(kuò)展能力都為64K 。但是,如果你實(shí)際擴(kuò)展過(guò)存儲(chǔ)器,你就可以發(fā)現(xiàn)程序存儲(chǔ)器的擴(kuò)展能力并沒(méi)有64K!!!
這是為什么呢?
這得從51單片機(jī)的存儲(chǔ)空間的編址說(shuō)起。這里僅作簡(jiǎn)單說(shuō)明,具體可以看教科書(shū)。簡(jiǎn)單地說(shuō),內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器是一起編址的,它們分別占用64K地址的一部分,所以外部擴(kuò)展時(shí)要減去內(nèi)部的地址空間,當(dāng)然小于64K啦。而數(shù)據(jù)存儲(chǔ)器是內(nèi)外部分別編址,內(nèi)外部數(shù)據(jù)存儲(chǔ)器用不同的指令進(jìn)行訪問(wèn),所以不用擔(dān)心單片機(jī)會(huì)混淆內(nèi)外部數(shù)據(jù)存儲(chǔ)器,所以外部數(shù)據(jù)存儲(chǔ)器擴(kuò)展能力有64K
擴(kuò)展閱讀:?jiǎn)纹瑱C(jī)存儲(chǔ)器的配置
二.MCS-51單片機(jī)擴(kuò)展系統(tǒng)中,片外程序存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器共處同一個(gè)地址空間,為什么不會(huì)發(fā)生總線沖突?
硬件上,控制信號(hào)不一樣:片外程序存儲(chǔ)器工作,要PSEN信號(hào)有效;片外數(shù)據(jù)存儲(chǔ)器工作,要RD或WR信號(hào)有效;
軟件上,尋址不一樣,片外程序存儲(chǔ)器工作,要用MOVC,
片外數(shù)據(jù)存儲(chǔ)器工作,要用MOVX;
雖然說(shuō)他們的地址都是0000H~FFFFH,不會(huì)發(fā)生沖突的
因?yàn)榭刂菩盘?hào)線的不同:
外擴(kuò)的RAM芯片既能讀出又能寫(xiě)入,所以通常都有讀寫(xiě)控制引腳,記為OE和WE。外擴(kuò)RAM的讀、寫(xiě)控制引腳分別與MCS-51的RD和WR引腳相連。
外擴(kuò)的EPROM在正常使用中只能讀出,不能寫(xiě)入,故EPROM芯片沒(méi)有寫(xiě)入控制引腳,只有讀出引腳,記為OE,該引腳與MCS-51單片機(jī)的PSEN相連
三.單片機(jī)中外接程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器公用16位地址線和8根數(shù)據(jù)線為什么不會(huì)起沖突
建議你閱讀一下單片機(jī)關(guān)于選通地址、傳遞數(shù)據(jù)方面的敘述。
下面我簡(jiǎn)略的說(shuō)一下大概過(guò)程,希望對(duì)你有所幫助。
第一,單片機(jī)采用三總線結(jié)構(gòu)傳遞數(shù)據(jù)。地址總線、數(shù)據(jù)總線、控制總線。傳遞數(shù)據(jù)的過(guò)程是先尋址,再傳遞數(shù)據(jù)。即先送一個(gè)地址信息(由微處理器向總線寫(xiě)一個(gè)地址信息),由寄存器(也可能是程序存儲(chǔ)器,也可能是數(shù)據(jù)存儲(chǔ)器)根據(jù)這個(gè)地址,把微處理器要讀取的數(shù)據(jù)寫(xiě)到總線上,微處理器再讀取這個(gè)數(shù)據(jù)。整個(gè)過(guò)程由控制總線控制。所以每次讀的數(shù)據(jù)是針對(duì)那個(gè)地址對(duì)應(yīng)的寄存器操作的,不會(huì)發(fā)生混亂。寫(xiě)數(shù)據(jù)時(shí)一樣,先尋址,再寫(xiě)數(shù)據(jù),數(shù)據(jù)就寫(xiě)入剛才尋址時(shí)的地址對(duì)應(yīng)的那個(gè)寄存器里去了。
第二、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器有不同的選通信號(hào),在一個(gè)指令周期里,是不同的時(shí)間選通的,所以不會(huì)混亂。
第三。選通的引腳不同。拿片外數(shù)據(jù)存儲(chǔ)器來(lái)說(shuō),是P3的第6和第7引腳做選通信號(hào),程序存儲(chǔ)器是PSEN做選通信號(hào),他們接在各自器件的選通引腳上,所以不會(huì)混亂。
第四,指令不同。拿匯編指令來(lái)說(shuō)。MOV是程序存儲(chǔ)器傳遞數(shù)據(jù)用,MOVX是數(shù)據(jù)存儲(chǔ)器傳遞數(shù)據(jù)用(對(duì)片外而言)。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論