基于51單片機(jī)P0口的片外數(shù)據(jù)存儲(chǔ)器擴(kuò)展
3.2 數(shù)據(jù)存儲(chǔ)器擴(kuò)展的軟件實(shí)例分析
分析對(duì)數(shù)據(jù)存儲(chǔ)器擴(kuò)展軟件設(shè)計(jì)可知,單片機(jī)通過(guò)P1口讀、寫(xiě)片外數(shù)據(jù)存儲(chǔ)單元時(shí),軟件設(shè)計(jì)具有重要作用。下面通過(guò)一實(shí)例介紹單片機(jī)訪問(wèn)片外數(shù)據(jù)存儲(chǔ)單元的過(guò)程。
以下程序段首先是將片外存儲(chǔ)器000000H單元中的內(nèi)容讀到片內(nèi)存儲(chǔ)器30H單元中,然后再將片內(nèi)存儲(chǔ)器30H單元中的內(nèi)容寫(xiě)到片外存儲(chǔ)器077FFFH單元中。在程序中,首先將片內(nèi)存儲(chǔ)單元20H、21H和22H定義為地址信息存儲(chǔ)單元,20H是高8位地址信息存儲(chǔ)單元,僅低3位有效;21H是中8位地址信息存儲(chǔ)單元,低7位有效;22H是低8位地址信息存儲(chǔ)單元,8位全有效。所以,其尋址空間為000000H~007FFFH、010000H~017FFFH、020000H~027FFFH、030000H~037FFFH、040000H~047FFFH、050000H~057FFFH、060OOOH~067FFFH和070000H~077FFFH,共256 KB。MOVR和MOVW分別讀、寫(xiě)子程序。
從程序中分析可知,能夠僅用P0口及其他幾個(gè)很少的控制端口便可實(shí)現(xiàn)片外大容量數(shù)據(jù)存儲(chǔ)器的擴(kuò)展,主要是因?yàn)镻O口具備地址線、數(shù)據(jù)線及片選擇控制線的功能,而這一功能是通過(guò)軟件方式實(shí)現(xiàn)的,即分時(shí)傳送地址信息,數(shù)據(jù)信息和控制信息。從MOVR和MOVW 2個(gè)子程序可以看出數(shù)據(jù)的具體傳送過(guò)程。此外,在編程過(guò)程中,每次讀、寫(xiě)外部存儲(chǔ)器內(nèi)容時(shí),只要將地址信息寫(xiě)到DPHH、DPTRH和DPTRL3個(gè)單元中,然后調(diào)用子程序MOVR和MOVW便可實(shí)現(xiàn)對(duì)片外數(shù)據(jù)存儲(chǔ)器的讀、寫(xiě)操作。
4 結(jié)論
介紹MCS-8051單片機(jī)片外256 KB數(shù)據(jù)存儲(chǔ)器的擴(kuò)展方法,其特點(diǎn)主要是擴(kuò)展的存儲(chǔ)空間大,占用的端口少,數(shù)據(jù)傳送采用并行傳送方式。在外圍設(shè)備較多的情況下,有限的端口無(wú)法滿足要求,或是存儲(chǔ)空間難以滿足要求時(shí),完全可采用該擴(kuò)展方法。此外,如果將單片機(jī)與數(shù)據(jù)存儲(chǔ)器件的硬件連接部分稍作改動(dòng),便可直接訪問(wèn)片外256 KB,2種訪問(wèn)方式可完全獨(dú)立。如果256 KB的存儲(chǔ)空間還不能滿足實(shí)際需求,不妨將高位地址存儲(chǔ)單元的8位全部進(jìn)行譯碼??傻玫?56個(gè)片選擇控制端口,那么原來(lái)的8片數(shù)據(jù)存儲(chǔ)器便可增加到256片。這樣,片外存儲(chǔ)空間就可以達(dá)到8 MB。完全滿足需求。而且,按此原理,還可以將原來(lái)的3個(gè)地址存儲(chǔ)單元改為4個(gè)地址存儲(chǔ)單元或更多,以增加其存儲(chǔ)空間。但這樣其讀、寫(xiě)周期也將更長(zhǎng)。因此需根據(jù)實(shí)際情況,綜合考慮,最終使單片機(jī)的硬件與軟件達(dá)到最優(yōu)化。
評(píng)論