新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機中程序存儲器與數(shù)據(jù)存儲器

單片機中程序存儲器與數(shù)據(jù)存儲器

作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
1. 程序存儲器是用于存放是系統(tǒng)工作的應(yīng)用程序及一些不需改變的數(shù)據(jù)常數(shù)的,程序?qū)懭氤绦虼鎯ζ骱螅?strong>單片機系統(tǒng)只能讀取程序指令使系統(tǒng)運行,而不能再進行改寫,且系統(tǒng)掉電后,程序不會丟失。因此,程序存儲器是ROM(Read Only Memory),即只讀存儲器。 數(shù)據(jù)存儲器是用于存放程序運行的中間處理數(shù)據(jù)的,可隨程序運行而隨時寫入或讀出數(shù)據(jù)存儲器的內(nèi)容,當系統(tǒng)掉電時,數(shù)據(jù)全部會丟失。因此,數(shù)據(jù)存儲器是RAM(Random Accese Memory),即可隨機讀寫的存儲器。
EEPROM和FLASH基本都是非易失性存儲器。EEPROM應(yīng)屬于數(shù)據(jù)存儲器,但是它制造工藝和FLASH更近似。FLASH是用于存儲程序代碼的,有些場合也可能用它來保存數(shù)據(jù),當然前提是該單片機的FLASH工藝是可以自寫的(運行中可擦寫),但要注意FLASH的擦寫次數(shù)通常小于一萬次,而且通常FLASH只能按塊擦除。EEPROM不能用來存程序,通常單片機的指令尋址不能到這個區(qū)域。EEPROM的擦寫次數(shù)應(yīng)有百萬次,而且可以按字節(jié)擦寫。
2.因為程序存儲器和數(shù)據(jù)存儲器是獨立編址的,訪問的時候可以采用不同的指令和不同的選通信號來區(qū)分。

第一,單片機采用三總線結(jié)構(gòu)傳遞數(shù)據(jù)。地址總線、數(shù)據(jù)總線、控制總線。傳遞數(shù)據(jù)的過程是先尋址,再傳遞數(shù)據(jù)。即先送一個地址信息(由微處理器向總線寫一個地址信息),由寄存器(也可能是程序存儲器,也可能是數(shù)據(jù)存儲器)根據(jù)這個地址,把微處理器要讀取的數(shù)據(jù)寫到總線上,微處理器再讀取這個數(shù)據(jù)。整個過程由控制總線控制。所以每次讀的數(shù)據(jù)是針對那個地址對應(yīng)的寄存器操作的,不會發(fā)生混亂。寫數(shù)據(jù)時一樣,先尋址,再寫數(shù)據(jù),數(shù)據(jù)就寫入剛才尋址時的地址對應(yīng)的那個寄存器里去了。 第二、程序存儲器、數(shù)據(jù)存儲器有不同的選通信號,在一個指令周期里,是不同的時間選通的,所以不會混亂。 第三。選通的引腳不同。拿片外數(shù)據(jù)存儲器來說,是P3的第6和第7引腳做選通信號,程序存儲器是PSEN做選通信號,他們接在各自器件的選通引腳上,所以不會混亂。 第四,指令不同。拿匯編指令來說。MOV是程序存儲器傳遞數(shù)據(jù)用,MOVX是數(shù)據(jù)存儲器傳遞數(shù)據(jù)用(對片外而言)。 總之,記住三總線傳遞的方式,先尋址,再傳數(shù),由控制總線控制,這個模式,你就容易理解這個了。 單片機的p2和p0分別傳遞地址的高八位和低八位。同時p0還傳遞數(shù)據(jù)。在時序信號的ALE高電平期間,鎖定地址信息。/PSEN是選通程序存儲器的。在/PSEN低電平期間是向程序存儲器傳遞程序代碼,/WR和/RD是選通數(shù)據(jù)存儲器的,即在/WR和/RD(p3的六腳和七腳)低電平期間把數(shù)據(jù)傳遞給數(shù)據(jù)寄存器。而/PSEN和/WR及/RD是在不同時間變?yōu)榈碗娖降?,沒有重疊的部分。也就是說,當/WR及/RD變成低電平時,/PSEN已經(jīng)恢復高電平了,由P0口傳出的數(shù)據(jù)信息當然只會傳到數(shù)據(jù)存儲器里,因為程序存儲器已經(jīng)不再處于選通狀態(tài)了??!從表面看,都是從p0口傳出的,但因為選通器件的時間不同而不會發(fā)生混亂。當然我說的是片外程序存儲器和數(shù)據(jù)存儲器的的情況,其實對片內(nèi)也一樣,還是三總線的這種控制方式,使它們在不同的時間被選通,而不至于發(fā)生沖突。 看看單片機的一個電路圖。你會發(fā)現(xiàn)p0既跟74LS373連,又跟8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等等連。而8155或8255或鍵盤或數(shù)模轉(zhuǎn)換器等等對單片機而言是當做數(shù)據(jù)存儲器處理的。74LS373連的多半是程序存儲器。那么p0送出的信號不是兩者都接受了嗎?注意看ALE接74LS373的G接口,鎖存地址用,PSEN有時用有時不用。WR和RD接數(shù)據(jù)存儲器的選通接口。因為WR和RD跟ALE的信號在時間上沒有重疊部分,所以p0的信號不會被程序存儲器和數(shù)據(jù)存儲器同時收到。

本文引用地址:http://butianyuan.cn/article/201611/315859.htm


評論


技術(shù)專區(qū)

關(guān)閉