單片機(jī):第8章擴(kuò)展存儲器
《單片機(jī):第8章擴(kuò)展存儲器》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī):第8章擴(kuò)展存儲器(113頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、第第8 8章章 AT89S51AT89S51單片機(jī)單片機(jī) 外部存儲器的擴(kuò)展外部存儲器的擴(kuò)展12 第第8章章 目錄目錄8.1 系統(tǒng)擴(kuò)展結(jié)構(gòu)系統(tǒng)擴(kuò)展結(jié)構(gòu)8.2 地址空間分配和外部地址鎖存器地址空間分配和外部地址鎖存器 8.2.1 存儲器地址空間分配 8.2.2 外部地址鎖存器8.3 程序存儲器程序存儲器EPROM的擴(kuò)展的擴(kuò)展 8.3.1 常用的EPROM芯片 8.3.2 程序存儲器的操作時(shí)序 8.3.3 AT89S51單片機(jī)與EPROM的接口電路設(shè)計(jì)8.4 靜態(tài)數(shù)據(jù)存儲器靜態(tài)數(shù)據(jù)存儲器RAM的擴(kuò)展的擴(kuò)展 8.4.1 常用的靜態(tài)RAM(SRAM)芯片 8.4.2 外擴(kuò)數(shù)據(jù)存儲器的讀寫操作時(shí)序3 8.
2、4.3 AT89S51單片機(jī)與RAM的接口電路設(shè)計(jì)8.5 EPROM和和RAM的綜合擴(kuò)展的綜合擴(kuò)展 8.5.1 綜合擴(kuò)展的硬件接口電路 8.5.2 外擴(kuò)存儲器電路的工作原理及軟件設(shè)計(jì)8.6 E2PROM的擴(kuò)展的擴(kuò)展 8.6.1 并行E2PROM芯片簡介 8.6.2 E2PROM的工作方式 8.6.3 AT89S51單片機(jī)擴(kuò)展E2PROM AT2864的設(shè)計(jì)8.7 片內(nèi)片內(nèi)Flash存儲器的編程存儲器的編程 8.7.1 通用編程器編程 8.7.2 ISP編程4內(nèi)容概要內(nèi)容概要許多情況,片內(nèi)的存儲器資源還不能滿足需要存儲器資源還不能滿足需要,為此需AT89S51單片機(jī)進(jìn)行外部程序存儲器和外部數(shù)據(jù)存
3、儲器的擴(kuò)展。由于有時(shí)需要擴(kuò)展多片芯片,首先介紹AT89S51單片機(jī)的兩個(gè)外部存儲器空間的地址分配的兩個(gè)外部存儲器空間的地址分配的兩種方法兩種方法,即線選法線選法和譯碼法譯碼法。最后介紹擴(kuò)展外部程序存儲器和外部數(shù)據(jù)存儲器的具體設(shè)計(jì)。8.1 系統(tǒng)擴(kuò)展結(jié)構(gòu)系統(tǒng)擴(kuò)展結(jié)構(gòu)AT89S51單片機(jī)采用總線結(jié)構(gòu),使擴(kuò)展易于實(shí)現(xiàn),AT89S51單片機(jī)系統(tǒng)擴(kuò)展結(jié)構(gòu)如圖圖8-1所示。 圖圖8-1 AT89S51單片機(jī)的系統(tǒng)擴(kuò)展結(jié)構(gòu)單片機(jī)的系統(tǒng)擴(kuò)展結(jié)構(gòu)5由圖8-1可以看出,系統(tǒng)擴(kuò)展系統(tǒng)擴(kuò)展主要包括存儲器擴(kuò)展存儲器擴(kuò)展和I/O接口部件擴(kuò)展接口部件擴(kuò)展。AT89S51單片機(jī)的存儲器擴(kuò)展即包括程序存儲器擴(kuò)展程序存儲器擴(kuò)展又包
4、括數(shù)據(jù)存儲器擴(kuò)展數(shù)據(jù)存儲器擴(kuò)展。AT89S51單片機(jī)采用程序存儲器空間和數(shù)據(jù)存儲器空間截然分開的哈佛結(jié)構(gòu)。擴(kuò)展后,系統(tǒng)形成了兩個(gè)并行的外部存儲器空間兩個(gè)并行的外部存儲器空間。系統(tǒng)擴(kuò)展是以AT89S51為核心,通過總線把單片機(jī)與各擴(kuò)展部件連接起來。因此,要進(jìn)行系統(tǒng)擴(kuò)展首先要構(gòu)造首先要構(gòu)造系統(tǒng)總線系統(tǒng)總線。系統(tǒng)總線按功能通常分為3組,如圖8-1所示。67(1)地址總線)地址總線(Address Bus,AB):用于傳送單片機(jī)發(fā)發(fā)出的地址信號出的地址信號,以便進(jìn)行存儲單元和I/O接口芯片中的寄存器單元的選擇。(2)數(shù)據(jù)總線)數(shù)據(jù)總線(Data Bus,DB):用于單片機(jī)與外部存儲器之間或與I/O接口
5、之間傳送數(shù)據(jù),數(shù)據(jù)總線是雙向的雙向的。(3)控制總線)控制總線(Control Bus,CB):控制總線是單片機(jī)發(fā)出的各種控制信號線。如何來構(gòu)造系統(tǒng)的三總線。1P0口作為低口作為低8位地址位地址/數(shù)據(jù)總線數(shù)據(jù)總線AT89S51受引腳數(shù)目限制,P0口口既用作低8位地址總線,又用作數(shù)據(jù)總線(分時(shí)復(fù)用),因此需增加一個(gè)增加一個(gè)8位地址鎖存位地址鎖存器器。AT89S51訪問外部擴(kuò)展的存儲器單元或I/O接口寄存器時(shí),先發(fā)出低先發(fā)出低8位地址位地址送地址鎖存器鎖存,鎖存器輸出作為系統(tǒng)的低8位地址(A7 A0)。隨后,P0口又作為數(shù)據(jù)總線口又作為數(shù)據(jù)總線口(D7 D0),如圖圖8-2所示所示。 2P2口的口
6、線作為高位地址線口的口線作為高位地址線P2口用作系統(tǒng)的高高8位地址線位地址線,再加上地址鎖存器提供的低8位地址,便形成了系統(tǒng)完整的16位地址總線。8使單片機(jī)系統(tǒng)的尋址范圍達(dá)到64KB。9 圖圖8-2 AT89C51單片機(jī)擴(kuò)展的片外三總線單片機(jī)擴(kuò)展的片外三總線3控制信號線控制信號線除地址線和數(shù)據(jù)線外,還要有系統(tǒng)的控制總線。這些信號有的就是單片機(jī)引腳的第一功能信號,有的則是P3口第二功能信號。包括:(1) 作為外擴(kuò)程序存儲器外擴(kuò)程序存儲器的讀選通讀選通控制信號。(2) 和和 為外擴(kuò)數(shù)據(jù)存儲器外擴(kuò)數(shù)據(jù)存儲器和I/O的讀、寫選通控制信號。(3)ALE作為P0口發(fā)出的低8位地址鎖存控制信號。(4) 為片
7、內(nèi)、片外程序存儲器的選擇控制信號。可見,AT89S51的4個(gè)并行I/O口,由于系統(tǒng)擴(kuò)展的需要,真正作為數(shù)字真正作為數(shù)字I/O用,就剩下用,就剩下P1和和P3的部分口線的部分口線了。10PSENRDWREA8.2 地址空間分配和外部地址鎖存器地址空間分配和外部地址鎖存器本節(jié)討論如何進(jìn)行存儲器空間的如何進(jìn)行存儲器空間的地址分配地址分配,并介紹用于輸出低8位地址的常用的地址鎖存器地址鎖存器。8.2.1 存儲器地址空間分配存儲器地址空間分配實(shí)際系統(tǒng)設(shè)計(jì)中,既需要擴(kuò)展程序存儲器,又需要擴(kuò)展數(shù)據(jù)存儲器,如何把片外的兩個(gè)如何把片外的兩個(gè)64KB地址空間分配給地址空間分配給各個(gè)程序存儲器、數(shù)據(jù)存儲器芯片,各個(gè)
8、程序存儲器、數(shù)據(jù)存儲器芯片,使一個(gè)存儲單元只對一個(gè)存儲單元只對應(yīng)一個(gè)地址應(yīng)一個(gè)地址,避免單片機(jī)發(fā)出一個(gè)地址時(shí),同時(shí)訪問兩個(gè)單元,發(fā)生數(shù)據(jù)沖突。這就是存儲器地址空間分配問題地址空間分配問題。11AT89S51單片機(jī)發(fā)出的單片機(jī)發(fā)出的地址碼地址碼用于選擇某個(gè)存儲器單用于選擇某個(gè)存儲器單元,外擴(kuò)多片存儲器芯片中,單片機(jī)必須進(jìn)行元,外擴(kuò)多片存儲器芯片中,單片機(jī)必須進(jìn)行兩種選擇兩種選擇:一是一是選中該存儲器芯片,這稱為選中該存儲器芯片,這稱為“片選片選”,未被選中的芯未被選中的芯片不能被訪問。片不能被訪問。二是二是在在“片選片選”的基礎(chǔ)上再根據(jù)單片機(jī)發(fā)的基礎(chǔ)上再根據(jù)單片機(jī)發(fā)出的地址碼來對出的地址碼來對“
9、選中選中” 芯片的某一單元進(jìn)行訪問,即芯片的某一單元進(jìn)行訪問,即“單元選擇單元選擇”。為實(shí)現(xiàn)片選,存儲器芯片都有為實(shí)現(xiàn)片選,存儲器芯片都有片選引腳片選引腳。同時(shí)也都有多。同時(shí)也都有多條條地址線引腳地址線引腳,以便進(jìn)行單元選擇。,以便進(jìn)行單元選擇。注意,注意,“片選片選”和和“單元選擇單元選擇”都是單片機(jī)通過地址線一次發(fā)出的地址信號都是單片機(jī)通過地址線一次發(fā)出的地址信號來完成選擇來完成選擇。通常把單片機(jī)系統(tǒng)的地址線籠統(tǒng)地分為通常把單片機(jī)系統(tǒng)的地址線籠統(tǒng)地分為低位地址線低位地址線和和高高1213位地址線位地址線,“片選片選”都是使用都是使用高位地址線高位地址線。實(shí)際上,。實(shí)際上,16條地條地址線中
10、的高、低位地址線的數(shù)目并不是固定的,只是習(xí)慣址線中的高、低位地址線的數(shù)目并不是固定的,只是習(xí)慣上把用于上把用于 “單元選擇單元選擇”的地址線,都稱為低位地址線,的地址線,都稱為低位地址線,其余的為高位地址線。其余的為高位地址線。常用的存儲器地址空間常用的存儲器地址空間分配方法有分配方法有兩種兩種:線性選擇法線性選擇法(簡稱(簡稱線選法)和線選法)和地址譯碼法地址譯碼法(簡稱譯碼法),下面介紹。(簡稱譯碼法),下面介紹。1線選法線選法是直接利用系統(tǒng)的是直接利用系統(tǒng)的某一高位地址線某一高位地址線作為存儲器芯片(或作為存儲器芯片(或I/O接口芯片)的接口芯片)的“片選片選”控制信號。為此,只需要把用
11、到的控制信號。為此,只需要把用到的高位地址線與存儲器芯片的高位地址線與存儲器芯片的“片選片選”端直接連接端直接連接即可。即可。線選法優(yōu)點(diǎn)線選法優(yōu)點(diǎn)是電路簡單,不需要另外增加地址譯碼器硬是電路簡單,不需要另外增加地址譯碼器硬件電路,體積小,成本低。件電路,體積小,成本低。缺點(diǎn)缺點(diǎn)是可尋址的是可尋址的芯片數(shù)目受到芯片數(shù)目受到限制限制。另外,。另外,地址空間不連續(xù)地址空間不連續(xù),每個(gè)存儲單元的地址不唯,每個(gè)存儲單元的地址不唯一,這會給程序設(shè)計(jì)帶來不便,只一,這會給程序設(shè)計(jì)帶來不便,只適用于外擴(kuò)芯片數(shù)目不適用于外擴(kuò)芯片數(shù)目不多的單片機(jī)系統(tǒng)的存儲器擴(kuò)展多的單片機(jī)系統(tǒng)的存儲器擴(kuò)展。2譯碼法譯碼法使用譯碼器
12、對使用譯碼器對AT89S51單片機(jī)的單片機(jī)的高位地址進(jìn)行譯碼高位地址進(jìn)行譯碼,譯碼輸出譯碼輸出作為存儲器芯片的作為存儲器芯片的片選信號片選信號。這種方法能夠。這種方法能夠有效有效地利用存儲器空間,地利用存儲器空間,適用于適用于多芯片的存儲器擴(kuò)展多芯片的存儲器擴(kuò)展。常用的常用的譯碼器芯片譯碼器芯片有有74LS138(3線線-8線線譯碼器)、譯碼器)、74LS139(雙(雙2線線-4線線譯碼器)和譯碼器)和74LS154(4線線-16線線譯碼器)。譯碼器)。14若全部高位地址線都參加譯碼,稱為若全部高位地址線都參加譯碼,稱為全譯碼全譯碼;若僅部分;若僅部分高位地址線參加譯碼,稱為高位地址線參加譯碼
13、,稱為部分譯碼部分譯碼。部分譯碼存在著部。部分譯碼存在著部分存儲器地址空間相重疊的情況。分存儲器地址空間相重疊的情況。下面介紹下面介紹常用的譯碼器芯片常用的譯碼器芯片。(1)74LS1383線線-8線線譯碼器,有譯碼器,有3個(gè)數(shù)據(jù)輸入端個(gè)數(shù)據(jù)輸入端,經(jīng),經(jīng)譯碼產(chǎn)生譯碼產(chǎn)生8種狀種狀態(tài)態(tài)。引腳如。引腳如圖圖8-3所示所示,真值表見,真值表見表表8-1。由。由表表8-1可可見,見,當(dāng)譯碼器的輸入為某一固定編碼時(shí),其當(dāng)譯碼器的輸入為某一固定編碼時(shí),其輸出僅有一個(gè)固定輸出僅有一個(gè)固定的引腳輸出為低電平的引腳輸出為低電平,其余的為高電平其余的為高電平。輸出為低電平的。輸出為低電平的引腳就作為某一存儲器芯
14、片的片選信號。引腳就作為某一存儲器芯片的片選信號。1516G2AG2BY7Y6Y5Y4Y3Y2Y1Y0(2)74LS139雙雙2線線-4線線譯碼器譯碼器。這兩個(gè)譯碼器完全獨(dú)立,分別有各自的數(shù)據(jù)輸入端、譯碼狀態(tài)輸出端以及數(shù)據(jù)輸入允許端,其引腳如圖8-4所示所示,真值表見表8-2(只給出其中一組)。圖圖8-3 74LS138引腳圖引腳圖 圖圖8-4 74LS139引腳圖引腳圖1718 以74LS138為例,如何進(jìn)行地址分配。 例如,例如,要擴(kuò)擴(kuò)8片片8KB的RAM 6264,如何通過74LS138把64KB空間分配給各個(gè)芯片? 由74LS138真值表可知,把G1接到+5V, 、 接地,P2.7、P
15、2.6、P2.5(高3位地址線)分別接74LS138的C、B、A端,由于對高3位地址譯碼,這樣譯碼器有8個(gè)輸出 ,分別接到8片6264的各各 “片片選選”端端,實(shí)現(xiàn)8選1的片選。低低13位地址位地址(P2.4P2.0,P0.7P0.0)完成對選中的6264芯片中的各個(gè)存儲單元的“單元選擇”。這樣就把64KB存儲器空間分成8個(gè)8KB空間了。19G2AG2BY7Y064KB地址空間分配地址空間分配如圖圖8-5所示所示。 圖圖8-5 64KB地址空間劃分成地址空間劃分成8個(gè)個(gè)8KB空間空間這里采用全地址譯碼全地址譯碼方式。因此,AT89S51發(fā)出16位地址時(shí),每次只能選中某一芯片及該芯片的一個(gè)存儲單
16、元20如何用如何用74LS138把把64KB空間全部劃分為空間全部劃分為4KB的塊呢?4KB空間需12條地址線,而譯碼器輸入只有3條地址線(P2.6P2.4),P2.7沒有參加譯碼,沒有參加譯碼,P2.7發(fā)出的0或1決定選擇64KB存儲器空間的前前32KB還是后后32KB,由于P2.7沒有參加譯碼沒有參加譯碼,就不是全譯碼方式不是全譯碼方式,前后兩個(gè)32KB空間就重疊了。那么,這這32KB空間利用空間利用74LS138譯碼器譯碼器可劃分為可劃分為8個(gè)個(gè)4KB空間空間。如果把P2.7通過一個(gè)非門與74LS138譯碼器G1端連接起來,如圖8-6所示所示,就不會發(fā)生兩個(gè)32KB空間重疊的問題了。這時(shí)
17、,選中的是選中的是64KB空間的前空間的前32KB空間空間,地址范2122圍為0000H7FFFH。如果去掉圖8-6中的非門,地址范圍為8000HFFFFH。把譯碼器的輸出連到各個(gè)4KB存儲器的片選端,這樣就把32KB空間劃分為8個(gè)4KB空間。P2.3P2.0,P0.7P0.0實(shí)現(xiàn)“單元選擇”,P2.6P2.4通過74LS138譯碼實(shí)現(xiàn)對各存儲器芯片的片選。采用譯碼器劃分的地址空間塊都是地址空間塊都是相等相等的,如果將地址空間塊劃分為不等的塊,可采用可編程邏輯器件可編程邏輯器件FPGA對其編程來代替譯碼器進(jìn)行非線性譯碼。 圖圖8-6 存儲器空間被劃分成每塊存儲器空間被劃分成每塊4KB238.2
18、.2 外部地址鎖存器外部地址鎖存器受引腳數(shù)的限制,P0口兼用數(shù)據(jù)線和低8位地址線,為了將它們分離出來,需在單片機(jī)外部增加地址鎖存器。目前,常用的地址鎖存器芯片有74LS373、74LS573等。1鎖存器鎖存器74LS373是一種帶三態(tài)門的8D鎖存器,其引腳如圖8-7所示所示,內(nèi)部結(jié)構(gòu)如圖8-8所示所示。AT89S51與74LS373鎖存器的連接如圖8-9所示。2425圖圖8-7 鎖存器鎖存器74LS373的引腳的引腳 圖圖8-8 74LS373的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu) 2627圖圖8-9 AT89S51單片機(jī)單片機(jī)P0口與口與74LS373的連接的連接引腳說明:nD7D0:8位數(shù)據(jù)輸入線,nQ7Q
19、0:8位數(shù)據(jù)輸出線。nG:數(shù)據(jù)輸入鎖存選通信號。當(dāng)加到該引腳的信號為高電平時(shí),外部數(shù)據(jù)選通到內(nèi)部鎖存器,負(fù)跳變時(shí),數(shù)據(jù)鎖存到鎖存器中。n :數(shù)據(jù)輸出允許信號,低電平有效。當(dāng)該信號為低電平時(shí),三態(tài)門打開,鎖存器中數(shù)據(jù)輸出到數(shù)據(jù)輸出線。當(dāng)該信號為高電平時(shí),輸出線為高阻態(tài)。74LS373鎖存器功能如表表8-3。28OE29OE圖圖8-10 鎖存器鎖存器74LS573的引腳的引腳2鎖存器鎖存器74LS573也是一種帶有三態(tài)門的8D鎖存器,功能及內(nèi)部結(jié)構(gòu)與與74LS373完全一樣完全一樣,只是其引腳排列與74LS373不同,圖8-10為74LS573引腳圖。 由圖8-10,與74LS373相比,74LS
20、573的的輸入輸入D端端和和輸輸出出Q端端依次排列在芯片兩側(cè)依次排列在芯片兩側(cè),為繪制印制電路板提供方便引腳說明:nD7D0:8位數(shù)據(jù)輸入線。nQ7Q0:8位數(shù)據(jù)輸出線。nG :數(shù)據(jù)輸入鎖存選通信號,該引腳與74LS373的G端功能相同。3031n :數(shù)據(jù)輸出允許信號,低電平有效。當(dāng)該信號為低電平時(shí),三態(tài)門打開,鎖存器中數(shù)據(jù)輸出到數(shù)據(jù)輸出線。當(dāng)該信號為高電平時(shí),輸出線為高阻態(tài)。8.3 程序存儲器程序存儲器EPROM的擴(kuò)展的擴(kuò)展程序存儲器采用只讀存儲器,因?yàn)檫@種存儲器在電源關(guān)斷后,仍能保存程序(我們稱此特性為非易失性非易失性的),在系統(tǒng)上電后,CPU可取出這些指令重新執(zhí)行。OE只讀存儲器簡稱RO
21、M(Read Only Memory)。ROM中的信息一旦寫入,就不能隨意更改,特別是不能在程序運(yùn)行過程中寫入新的內(nèi)容,故稱為只讀存儲器。向ROM中寫入信息寫入信息稱為ROM編程編程。根據(jù)編程方式不同,分為以下幾種分為以下幾種。(1)掩模)掩模ROM。在制造過程中編程,是以掩模工藝實(shí)現(xiàn)的,因此稱為掩模ROM。這種芯片存儲結(jié)構(gòu)簡單,集成度高,但由于掩模工藝成本較高掩模工藝成本較高,因此只適合于大批量只適合于大批量生產(chǎn)生產(chǎn)。32(2)可編程)可編程ROM(PROM)。芯片出廠時(shí)沒有任何程序信息,用獨(dú)立的編程器寫入。但PROM只能寫一次,只能寫一次,寫入內(nèi)容后,就不能再修改。(3)EPROM。用紫外
22、線擦除紫外線擦除,用電信號編程電信號編程。在芯片外殼的中間位置有一個(gè)圓形窗口,對該窗口照射紫外線照射紫外線就可擦除原有的信息可擦除原有的信息。使用編程器編程器可將調(diào)試完畢的程序?qū)懭?。?)E2PROM(EEPROM)。一種用電信號編程電信號編程,也用電信號擦除電信號擦除的ROM芯片。對E2PROM的讀寫操作與RAM存儲器幾乎沒有什么差別,只是寫入的速度慢一些寫入的速度慢一些,但斷電后仍能保存信息。33(5)Flash ROM。 又稱閃速存儲器(簡稱閃存),是在EPROM、E2PROM的基礎(chǔ)上發(fā)展起來的一種電擦除型只讀存儲器。特點(diǎn)是可快速在線修改其存儲單元中的數(shù)據(jù),改寫次數(shù)可達(dá)1萬次,其讀寫速度
23、很快讀寫速度很快,存取時(shí)間存取時(shí)間可達(dá)70ns,而成本成本比比E2PROM低得多低得多,大有取代E2PROM的趨勢。目前許多公司生產(chǎn)的8051內(nèi)核的單片機(jī),在芯片內(nèi)部大多集成了數(shù)量不等的Flash ROM。例如,美國ATMEL公司產(chǎn)品AT89C5x/AT89S5x,片內(nèi)有不同容量的Flash ROM。在片內(nèi)的Flash ROM滿足要求下,擴(kuò)展外部程序存儲器可省去。348.3.1 常用的常用的EPROM芯片芯片使用較多的是并行EPROM,首先介紹常用EPROM芯片。EPROM的典型芯片是典型芯片是27系列產(chǎn)品系列產(chǎn)品,例如,2764(8KB)、27128(16KB)、27256(32KB)、27
24、512(64KB)。型號 “27”后面的數(shù)字表示其位存儲容量。如果換算成字節(jié)容量,只需將該數(shù)字除以8即可。例如,例如,“27128”中的“27”后的數(shù)字 “128”,128/8 =16KB隨著大規(guī)模集成電路技術(shù)的發(fā)展,大容量存儲器芯片產(chǎn)量劇增,售價(jià)不斷下降,性價(jià)比明顯增高,且由于小容量小容量芯片停止生產(chǎn)芯片停止生產(chǎn),使市場某些小容量芯片價(jià)格反而比大容量某些小容量芯片價(jià)格反而比大容量芯片還貴芯片還貴。所以,應(yīng)盡量采用大容量芯片。351常用常用EPROM芯片引腳芯片引腳27系列EPROM芯片的引腳如圖8-11。芯片引腳功能:nA0A15:地址線引腳。它的數(shù)目由芯片的存儲容量決定,用于進(jìn)行單元選擇。
25、nD7D0:數(shù)據(jù)線引腳。n :片選控制端。n :輸出允許控制端。n :編程時(shí),編程脈沖的輸入端。36CEOEPCM37圖圖8-11 常用常用EPROM芯片引腳芯片引腳nVPP:編程時(shí),編程電壓(+12V或+25V)輸入端。nVCC:+5V,芯片的工作電壓。nGND :數(shù)字地。nNC:無用端。表8-4為27系列EPROM芯片的技術(shù)參數(shù),其中VCC是芯片供電電壓,VPP是編程電壓,Im為最大靜態(tài)電流,Is為維持電流,TRM為最大讀出時(shí)間。38392EPROM芯片的工作方式芯片的工作方式5種工作方式,由 、 、 信號的組合確定。5種工作方式如表表8-5。40CE/PGMOECE OEPCM(1)讀出
26、方式。)讀出方式。工作在該方式的條件是使片選控制線 為低電平,同時(shí)讓輸出允許控制線 為低電平,VPP為+5V,就可把指定地址單元的內(nèi)容從D7D0上讀出。(2)未選中方式)未選中方式。當(dāng)片選控制線 為高電平時(shí),芯片未選中方式,數(shù)據(jù)輸出為高阻抗懸浮狀態(tài)高阻抗懸浮狀態(tài),不占用數(shù)據(jù)總線。EPROM處于低功耗的維持狀態(tài)。(3)編程方式。)編程方式。在VPP端加上規(guī)定好的高壓高壓, 和 端加上合適的電平(不同芯片要求不同),能將數(shù)據(jù)寫入到指定地址單元。編程地址編程地址和編程數(shù)據(jù)編程數(shù)據(jù)分別由系統(tǒng)的A15A0和D7D0提供。41OECECECEOE42(4)編程校驗(yàn)方式。)編程校驗(yàn)方式。VPP端保持相應(yīng)的編
27、程電壓(高壓),再按讀出方式操作,讀出固化好的內(nèi)容,校驗(yàn)寫入內(nèi)容是否正確。(5)編程禁止方式。)編程禁止方式。8.3.2 程序存儲器的操作時(shí)序程序存儲器的操作時(shí)序1訪問程序存儲器的控制信號訪問程序存儲器的控制信號AT89S51單片機(jī)訪問片外擴(kuò)展的程序存儲器時(shí),所用的控制信號有以下3種種。(1)ALE:用于低8位地址鎖存控制。(2) :片外程序存儲器“讀選通”控制信號。它接外擴(kuò)EPROM的 引腳。OEPSEN(3) :片內(nèi)、片外程序存儲器訪問的控制信號。當(dāng) =1時(shí),在單片機(jī)發(fā)出的地址小于片內(nèi)程序存儲器最大地址時(shí),訪問片內(nèi)片內(nèi)程序存儲器;當(dāng) =0時(shí),只訪問片外片外程序存儲器。如果指令是從片外EPR
28、OM中讀取的,除了ALE用于低8位地址鎖存信號之外,控制信號還有 , 接外擴(kuò)EPROM的 腳。此外,P0口分時(shí)用作低8位地址總線和數(shù)據(jù)總線,P2口用作高8位地址線。2操作時(shí)序操作時(shí)序AT89S51對片外ROM的操作時(shí)序分兩種,即執(zhí)行非執(zhí)行非MOVX指令指令的時(shí)序和執(zhí)行執(zhí)行MOVX指令指令的時(shí)序,如圖圖8-12所所示示。43EAOEPSENEAEA(1)應(yīng)用系統(tǒng)中無片外)應(yīng)用系統(tǒng)中無片外RAM系統(tǒng)無片外無片外RAM(或(或I/O)時(shí),不用執(zhí)行不用執(zhí)行MOVX指令指令。在執(zhí)行非執(zhí)行非MOVX指令指令時(shí),時(shí)序如圖圖8-12(a)所示。所示。P0口口作為地址/數(shù)據(jù)復(fù)用的雙向總線,用于輸入指令或輸出程序
29、存儲器的低8位地址PCL。P2口口專門用于輸出程序存儲器的高8位地址PCH。P0口分時(shí)復(fù)用,故首先要將P0口輸出的低8位地址PCL鎖存在鎖存器中,然后P0口再作為數(shù)據(jù)口。在每個(gè)機(jī)器周期中,每個(gè)機(jī)器周期中,允許地址鎖存兩次有效允許地址鎖存兩次有效,ALE在下降沿時(shí),將P0口的低8位地址PCL鎖存在鎖存器中。4445圖圖8-12 執(zhí)行非執(zhí)行非MOVX指令的時(shí)序指令的時(shí)序同時(shí), 也是每個(gè)機(jī)器周期中每個(gè)機(jī)器周期中兩次兩次有效有效,用于選通片外程序存儲器,將指令讀入片內(nèi)。系統(tǒng)無片外無片外RAM(或(或I/O)時(shí))時(shí),此ALE信號信號以振蕩器頻率的1/6出現(xiàn)在引腳上,它可用作外部時(shí)鐘或定時(shí)脈沖信號。(2)
30、應(yīng)用系統(tǒng)中接有片外)應(yīng)用系統(tǒng)中接有片外RAM在執(zhí)行訪問片外執(zhí)行訪問片外RAM(或(或I/O)的)的MOVX指令指令時(shí),16位位地址應(yīng)轉(zhuǎn)而指向地址應(yīng)轉(zhuǎn)而指向數(shù)據(jù)存儲器數(shù)據(jù)存儲器,時(shí)序如圖圖8-12(b)。在指令輸入以前,P2口輸出的地址PCH、PCL指向程序存儲器;在指令輸入并判定是指令輸入并判定是MOVX指令指令后, ALE在該46PSEN47圖圖8-12 執(zhí)行執(zhí)行MOVX指令的時(shí)序指令的時(shí)序機(jī)器周期S5狀態(tài)鎖存的是P0口發(fā)出的片外RAM(或I/O)低8位地址。若執(zhí)行的是“MOVXA,DPTR”或 “MOVXDPTR,A”指令,則此地址就是DPL(數(shù)據(jù)指針低8位);同時(shí),在P2口上出現(xiàn)的是DP
31、H(數(shù)據(jù)指針的高8位)。若執(zhí)行的是“MOVX A,Ri”或“MOVX Ri,A”指令,則Ri的內(nèi)容為低8位地址,而P2口線上將是P2口鎖存器的內(nèi)容。在同一機(jī)器周期中將不再出現(xiàn) 有效取指信號,下一個(gè)機(jī)器周期中下一個(gè)機(jī)器周期中ALE的有效鎖存信號的有效鎖存信號也不再出現(xiàn)也不再出現(xiàn);當(dāng) / 有效有效時(shí),P0口將讀/寫數(shù)據(jù)存儲器中的數(shù)據(jù)。48RDWR判定是判定是MOVX指令后指令后,ALE在該機(jī)器周期S5狀態(tài)鎖存的是P0口發(fā)出的片外RAM(或I/O)低8位地址。若執(zhí)行的是“MOVXA,DPTR”或是“MOVXDPTR,A”指令,則此地址就是DPL(數(shù)據(jù)指針低8位);同時(shí),在P2口上出現(xiàn)的是DPH(數(shù)據(jù)
32、指針的高8位)。若執(zhí)行的是“MOVX A,Ri”或“MOVX Ri,A”指令,則Ri內(nèi)容為低8位地址,而P2口線將是P2口鎖存器內(nèi)容。在同一機(jī)器周期中將不再出現(xiàn) 有效取指信號,下一個(gè)機(jī)器周期中ALE的有效鎖存信號也不再出現(xiàn);而當(dāng) / 有效時(shí),P0口將讀/寫數(shù)據(jù)存儲器中的數(shù)據(jù)。49RDWR50由圖8-12(b)可以看出:(1)將ALE用作定時(shí)脈沖輸出時(shí),執(zhí)行一次執(zhí)行一次MOVX指令指令就會丟失一個(gè)丟失一個(gè)ALE脈沖;(2)只有在執(zhí)行在執(zhí)行MOVX指令指令時(shí)的第二個(gè)機(jī)器周期第二個(gè)機(jī)器周期中,才對數(shù)據(jù)存儲器(或I/O)讀/寫,地址總線才由數(shù)據(jù)存儲器使用。8.3.3 AT89S51單片機(jī)與單片機(jī)與EP
33、ROM的接口電路設(shè)計(jì)的接口電路設(shè)計(jì)由于AT89S5x單片機(jī)片內(nèi)集成不同容量的Flash ROM,可根根據(jù)實(shí)際需要來決定是否外部擴(kuò)展據(jù)實(shí)際需要來決定是否外部擴(kuò)展EPROM。當(dāng)應(yīng)用程序不大于單片機(jī)片內(nèi)的Flash ROM容量時(shí),擴(kuò)展外部程序存儲器的工作可省略。但作為擴(kuò)展外部程序存儲器的基本方法基本方法,還是應(yīng)掌握。1AT89S51與單片與單片EPROM的硬件接口電路的硬件接口電路在設(shè)計(jì)接口電路時(shí),由于外擴(kuò)的EPROM在正常使用中只讀不寫,故EPROM芯片只有讀出控制引腳,記為 ,該引腳與AT89S51單片機(jī)的 相連,地址線、數(shù)據(jù)線分別與AT89S51單片機(jī)的地址線、數(shù)據(jù)線相連,片選端控制片選端控制
34、可采用線選法或譯碼法。介紹介紹2764、27128芯片與AT89S51的接口。更大容量更大容量的27256、27512與AT89S51的連接,差別差別只是連接的地址線數(shù)目不同。51OE由于2764與27128引腳的差別僅在差別僅在26腳腳,2764的26腳是空腳,27128的26腳是地址線A13,因此在設(shè)計(jì)外擴(kuò)存儲器電路時(shí),應(yīng)選用應(yīng)選用27128芯片設(shè)計(jì)電路芯片設(shè)計(jì)電路。在實(shí)際應(yīng)用時(shí),可將可將27128換成換成2764,系統(tǒng)仍能正常運(yùn)行。圖圖8-13所示為AT89S51外擴(kuò)外擴(kuò)16KB的的EPROM 27128的電路。由于只擴(kuò)展一片EPROM,所以片選端片選端 直接接地直接接地,也可也可接到某
35、一高位地址線上接到某一高位地址線上(A15或A14)進(jìn)行線選線選,也可接某一地址譯碼器的輸出端。5253圖圖8-13 AT89S51單片機(jī)與單片機(jī)與27128的接口電路的接口電路2使用多片使用多片EPROM的擴(kuò)展電路的擴(kuò)展電路圖圖8-14所示為利用4片片27128 EPROM擴(kuò)展成64KB程序程序存儲器存儲器的方法。片選信號由譯碼器譯碼器產(chǎn)生產(chǎn)生。4片27128各自所占的地址空間,讀者自己分析。8.4 靜態(tài)數(shù)據(jù)存儲器靜態(tài)數(shù)據(jù)存儲器RAM的擴(kuò)展的擴(kuò)展在單片機(jī)應(yīng)用系統(tǒng)中,外部擴(kuò)展的數(shù)據(jù)存儲器都采用靜態(tài)數(shù)據(jù)存儲器(SRAM)。對外部擴(kuò)展的數(shù)據(jù)存儲器空間訪問,P2口口提供高8位地址,P0口口分時(shí)提供低
36、8位地址和8位雙向數(shù)據(jù)總線。片外片外數(shù)據(jù)存儲器數(shù)據(jù)存儲器RAM的讀和寫的讀和寫由AT89S51的 (P3.7)和 (P3.6)信號控制。54RDWR55圖圖8-14 AT89S51與與4片片27128 EPROM的接口電路的接口電路而片外程序存儲器EPROM的輸出端允許( )由單片機(jī)的讀選通 信號控制。盡管與EPROM的地址空間范圍相同地址空間范圍相同,但由于控制信號不同,不會發(fā)生總線沖突不會發(fā)生總線沖突。 8.4.1 常用的靜態(tài)常用的靜態(tài)RAM(SRAM)芯片)芯片單片機(jī)系統(tǒng)中常用的RAM芯片的典型型號有6116(2KB ),),6264(8KB),),62128(16KB),),62256
37、(32KB)。6116為24腳腳封裝,6264、62128、62256為28腳腳封裝。這些RAM芯片的引腳如圖圖8-15所示所示。56PSENOE57圖圖8-15 常用的常用的RAM引腳圖引腳圖各引腳功能:各引腳功能:A0A14:地址輸入線。D0D7:雙向三態(tài)數(shù)據(jù)線。 :片選信號輸入線。對6264芯片,當(dāng)24腳(CS)為高電平且 為低電平時(shí)才選中該片。 :讀選通信號輸入線,低電平有效。 :寫允許信號輸入線,低電平有效。VCC 工作電源+5V。GND 地。RAM存儲器有讀出、寫入、維持讀出、寫入、維持3種種工作方式,工作方式的控制見表表8-6。58OECECEWE598.4.2 外擴(kuò)數(shù)據(jù)存儲器的
38、讀寫操作時(shí)序外擴(kuò)數(shù)據(jù)存儲器的讀寫操作時(shí)序?qū)ζ釸AM讀和寫讀和寫兩種操作時(shí)序的基本過程相同。1讀片外讀片外RAM操作時(shí)序操作時(shí)序若外擴(kuò)一片若外擴(kuò)一片RAM,應(yīng)將 腳與RAM的 腳連接, 腳與芯片 腳連接。WERDWROE單片機(jī)讀片外RAM操作時(shí)序如圖圖8-16所示所示。在第一個(gè)機(jī)器周期的第一個(gè)機(jī)器周期的S1狀態(tài)狀態(tài),ALE信號由低變高(處),讀RAM周期開始。在S2狀態(tài)狀態(tài),CPU把低8位地址送到P0口總線上,把高8位地址送上P2口(在執(zhí)行“MOVX A,DPTR”指令階段才送高8位;若執(zhí)行“MOVX A,Ri”則不送高8位)。ALE下降沿下降沿(處)用來把低8位地址信息鎖存到外部鎖存器74L
39、S373內(nèi)。而高8位地址信息一直鎖存在P2口鎖存器中(處)。在在S3狀態(tài)狀態(tài),P0口總線變成高阻懸浮狀態(tài)。在S4狀態(tài),執(zhí)行指令“MOVX A,DPTR”后使 信號信號變有效60RD61圖圖8-16 AT89S51單片機(jī)讀片外單片機(jī)讀片外RAM操作時(shí)序圖操作時(shí)序圖62(處), 信號使被尋址的片外RAM過片刻后把數(shù)據(jù)送上P0口總線(處),當(dāng) 回到高電平后(處),P0總線變懸浮狀態(tài)(處)。2寫片外寫片外RAM操作時(shí)序操作時(shí)序向片外RAM寫數(shù)據(jù),單片機(jī)執(zhí)行“MOVX DPTR,A”指令。 指令執(zhí)行后,AT89S51的 信號為低有效,此信號使RAM的 端被選通。寫片外RAM的時(shí)序如圖圖8-17所示所示。
40、開始的過程與讀過程類似,但寫的過程是CPU主動把數(shù)據(jù)送上主動把數(shù)據(jù)送上P0口總線口總線,故在時(shí)序上,CPU先向P0口總線上送完8位地址后,在S3狀態(tài)就將數(shù)據(jù)送到P0口總線(處)。此間,P0總線上不會出現(xiàn)高阻懸浮現(xiàn)象。RDRDWRWE63圖圖8-17 AT89S51單片機(jī)寫片外單片機(jī)寫片外RAM操作時(shí)序圖操作時(shí)序圖在在S4狀態(tài)狀態(tài),寫信號 有效(處),選通片外RAM,稍過片刻,P0口上的數(shù)據(jù)就寫到RAM內(nèi)了,然后寫信號 變?yōu)闊o效(處)。8.4.3 AT89S51單片機(jī)與單片機(jī)與RAM的接口電路設(shè)計(jì)的接口電路設(shè)計(jì)AT89S51對片外RAM的讀和寫由AT89S51單片機(jī)的 (P3.7)和 (P3.6
41、)控制,片選端由譯碼器譯碼輸出控制。因此設(shè)計(jì)時(shí),主要解決地址分配、數(shù)據(jù)線和控制信號線的連接問題。在與高速單片機(jī)連接時(shí),還要根據(jù)時(shí)序解決讀/寫速度匹配問題。圖圖8-18為用線選法擴(kuò)展AT89S51外部數(shù)據(jù)存儲器電路。圖中數(shù)據(jù)存儲器選用6264,該芯片地址線為A0A12,故AT89S51剩余地址線為3條。64WRWRWRRD65圖圖8-18 線選法擴(kuò)展外部數(shù)據(jù)存儲器電路圖線選法擴(kuò)展外部數(shù)據(jù)存儲器電路圖用線選線選可擴(kuò)展3片6264,對應(yīng)的存儲器空間見表表8-7。用譯碼法譯碼法擴(kuò)展外部數(shù)據(jù)存儲器的接口電路如圖圖8-19所示。數(shù)據(jù)存儲器62128,芯片地址線為A0A13,剩余地址線為兩條,若采用2線-4
42、線譯碼器可擴(kuò)展4片62128。各片62128芯片地址分配地址分配如表表8-8所示。6667圖圖8-19 譯碼法擴(kuò)展外部數(shù)據(jù)存儲器電路圖譯碼法擴(kuò)展外部數(shù)據(jù)存儲器電路圖68Y0Y1Y2Y3【例例8-1】編寫程序?qū)⑵鈹?shù)據(jù)存儲器中5000H50FFH單 元全部清“0”。方法方法1 用DPTR作為數(shù)據(jù)區(qū)地址指針,同時(shí)使用字節(jié)計(jì)數(shù) 器。參考程序如下: MOVDPTR,#5000H ;設(shè)置數(shù)據(jù)塊指針的初值;設(shè)置數(shù)據(jù)塊指針的初值 MOVR7,#00H;設(shè)置塊長度計(jì)數(shù)器初值(;設(shè)置塊長度計(jì)數(shù)器初值(00H是是;循環(huán);循環(huán)256次)次) CLR ALOOP: MOVX DPTR,A;給一單元送;給一單元送“00
43、H” INC DPTR;地址指針加;地址指針加1 DJNZ R7,LOOP;數(shù)據(jù)塊長度減;數(shù)據(jù)塊長度減1, 若不為若不為0則跳則跳;LOOP繼續(xù)清繼續(xù)清“0”HERE: SJMP HERE ;執(zhí)行完畢,;執(zhí)行完畢, 原地踏步原地踏步69方法方法2 用用DPTR作為數(shù)據(jù)區(qū)地址指針,但不使用字節(jié)作為數(shù)據(jù)區(qū)地址指針,但不使用字節(jié)計(jì)數(shù)器,而是比較特征地址。參考程序如下:計(jì)數(shù)器,而是比較特征地址。參考程序如下: MOVDPTR,#5000H;設(shè)置數(shù)據(jù)塊指針的初值;設(shè)置數(shù)據(jù)塊指針的初值 CLRA;A清清0LOOP: MOVX DPTR,A;給一單元送;給一單元送“00H” INC DPTR;數(shù)據(jù)塊地址指針
44、加;數(shù)據(jù)塊地址指針加1 MOV R7,DPL;數(shù)據(jù)塊末地址加;數(shù)據(jù)塊末地址加1送送R7 CJNE R7,#0,LOOP;與末地址;與末地址+1比較比較HERE: SJMP HERE708.5 EPROM和和RAM的綜合擴(kuò)展的綜合擴(kuò)展在系統(tǒng)設(shè)計(jì)中,經(jīng)常是既要擴(kuò)展程序存儲器,也要擴(kuò)展數(shù)據(jù)存儲器(RAM)或I/O,即進(jìn)行存儲器的綜合擴(kuò)展綜合擴(kuò)展。下面介紹如何進(jìn)行綜合擴(kuò)展。8.5.1 綜合擴(kuò)展的硬件接口電路綜合擴(kuò)展的硬件接口電路【例例8-2】采用線選法線選法擴(kuò)展2片片8KB的的RAM和2片片8KB的的EPROM。RAM芯片選用2片6264。擴(kuò)展2片EPROM芯片,選用2764。硬件接口電路如圖圖8-2
45、0所示所示。7172圖圖8-20 采用線選法的綜合擴(kuò)展電路圖示例采用線選法的綜合擴(kuò)展電路圖示例(1)控制信號及片選信號)控制信號及片選信號地址線P2.5直接接到IC1(2764)和IC3(6264)的片選 端,P2.6直接接到IC2(2764)和IC4(6264)的片選 端。當(dāng)P2.6=0,P2.5=1時(shí),IC2和IC4的片選端為低電平,IC1和IC3的 端全為高電平。當(dāng)P2.6=1,P2.5=0時(shí),IC1和IC3的 端都是低電平,每次同時(shí)選中兩個(gè)芯片,具體對哪個(gè)芯片進(jìn)行讀/寫操作還要通過 、 、 控制線來控制。當(dāng) 為低電平時(shí),到片外程序存儲區(qū)EPROM中讀程序;當(dāng)讀/寫信號 或 為低電平時(shí),
46、則對片外73WRRDRDWRPSENPSEN74RAM讀數(shù)據(jù)或?qū)憯?shù)據(jù) 、 、 3個(gè)信號是在執(zhí)行指令時(shí)產(chǎn)生的,任意時(shí)刻只能執(zhí)行一條指令任意時(shí)刻只能執(zhí)行一條指令,所以只能有一個(gè)信只能有一個(gè)信號有效號有效,不可能同時(shí)有效,所以不會發(fā)生不會發(fā)生數(shù)據(jù)沖突數(shù)據(jù)沖突。(2 2)各芯片地址空間分配)各芯片地址空間分配硬件電路一旦確定,各芯片的地址范圍實(shí)際上就已經(jīng)確定,編程時(shí)只要給出所選擇芯片的地址,就能對該芯片進(jìn)行訪問。結(jié)合圖8-20,介紹IC1、IC2、IC3、IC4芯片地址范圍芯片地址范圍的確定方法。存儲器地址均用16位,P0口確定低8位,P2口確定高8位。如果P2.6=0、P2.5=1,選中,選中IC2
47、、IC4。地址線A15A0與與P2、P0對應(yīng)關(guān)系對應(yīng)關(guān)系如下:PSENRDWR75除P2.6、P2.5固定外,其他“”位均可變。設(shè)無用位P2.7 = 1,當(dāng)“”各位全為各位全為“0”時(shí),則為最小地址最小地址A000H;當(dāng)“”均為均為“1”時(shí),則為最大地址最大地址BFFFH。IC2、IC4的地址空間為A000HBFFFH共共8KB。同理IC1、IC3的地址范圍為為C000HDFFFH。4片存儲器各自所占的地址空間如表表8-9所示。 即使地址空間重疊,也不會發(fā)生數(shù)據(jù)沖突。IC1與IC3也同樣如此。76下面介紹采用譯碼器法譯碼器法進(jìn)行地址空間分配的例子?!纠?-3】采用譯碼法譯碼法擴(kuò)展2片片8KB
48、 EPROM和2片片8KB RAM。EPROM選用2764,RAM選用6264。擴(kuò)展接口電路如圖圖8-21所示所示。圖中,74LS139的4個(gè)輸出端, 分別連接4個(gè)芯片IC1、IC2、IC3、IC4的片選端。74LS139在對輸入端譯碼時(shí), 每次只能有一每次只能有一位輸出為位輸出為“0”,其他三位全為其他三位全為“1”,輸出為“0”的一端所連接的芯片被選中。譯碼法地址分配,首先要根據(jù)譯碼芯片真值表確定譯碼芯片的輸入狀態(tài),由此再判斷其輸出端選中芯片的地址。77Y0Y3Y0Y378圖圖8-21 采用譯碼法的綜合擴(kuò)展電路圖示例采用譯碼法的綜合擴(kuò)展電路圖示例如圖8-21,74LS139的輸入端A、B、
49、 分別接P2口的P2.5、P2.6、P2.7三端, 為使能端,低電平有效。由表表8-2 74LS139的真值表可見,當(dāng) =0、A=0、B=0時(shí),輸出端只有 為“0”, 全為“1”,選中IC1。這樣,P2.7、P2.6、P2.5全為0,P2.4P2.0與P0.7P0.0這13條地址線的任意狀態(tài)都能選中IC1的某一單元。當(dāng)13條地址線全為條地址線全為“0”時(shí),為最小地址最小地址0000H;當(dāng)13條地址線全為條地址線全為“1”時(shí),為最大地址最大地址1FFFH。所以IC1的地址范圍為地址范圍為0000H1FFFH。同理可確定電路中各個(gè)存儲器地址范圍見表表8-10。79Y01Y3YG808.5.2 外擴(kuò)
50、存儲器電路的工作原理及軟件設(shè)計(jì)外擴(kuò)存儲器電路的工作原理及軟件設(shè)計(jì) 為使讀者弄清楚單片機(jī)與擴(kuò)展的存儲器軟、硬件之間的關(guān)系,結(jié)合圖8-21所示的譯碼電路,說明片外讀指令和從片外說明片外讀指令和從片外讀讀/寫數(shù)據(jù)的過程。寫數(shù)據(jù)的過程。1單片機(jī)片外程序區(qū)讀指令過程單片機(jī)片外程序區(qū)讀指令過程單片機(jī)復(fù)位后,CPU就從0000H地址開始取指令,執(zhí)行程序。取指令期間取指令期間,低8位地址送P0口,經(jīng)鎖存器A0A7輸出。高8位地址送往P2口,直接由P2.0P2.4鎖存到A8A12地址線上,P2.5P2.7輸入給74LS139進(jìn)行譯碼輸出片選。這樣,根據(jù)P2口、P0口狀態(tài)則選中第一個(gè)程序存儲器芯片IC1(2764
51、)的第一個(gè)單元地址0000H。然后當(dāng)PSEN*變?yōu)榈蜁r(shí),把0000H中指令代碼經(jīng)P0口讀入內(nèi)部RAM中進(jìn)行譯碼,從而決定進(jìn)行何種操作。81取出一個(gè)指令字節(jié)后取出一個(gè)指令字節(jié)后PC自動加1,然后取第二個(gè)字節(jié),依次類推。當(dāng)PC=1FFFH時(shí),從IC1最后一個(gè)單元取指令,然后PC = 2000H,CPU向P2口、P0口送出2000H地址時(shí),則選中第二個(gè)程序存儲器IC2,IC2的地址范圍為2000H3FFFH,讀指令過程同IC1,不再贅述。2單片機(jī)片外數(shù)據(jù)區(qū)讀單片機(jī)片外數(shù)據(jù)區(qū)讀/寫數(shù)據(jù)過程寫數(shù)據(jù)過程當(dāng)程序運(yùn)行中,執(zhí)行“MOV”類指令時(shí),表示與片內(nèi)RAM交換數(shù)據(jù);當(dāng)遇到“MOVX”類指令時(shí),表示對片外數(shù)
52、據(jù)存儲器區(qū)尋址。片外數(shù)據(jù)存儲器區(qū)只能間接尋址。例如,例如,把片外片外6000H單元單元的數(shù)據(jù)送到片內(nèi)片內(nèi)RAM 50H單元中,程序如下:8283MOV DPTR,#6000HMOVX A,DPTRMOV 50H,A向片外數(shù)據(jù)區(qū)寫數(shù)據(jù)的過程與讀數(shù)據(jù)的過程類似。例如,例如,把片內(nèi)片內(nèi)50H單元的數(shù)據(jù)送到片外單元的數(shù)據(jù)送到片外4000H單元單元中,程序如下:MOV A,50HMOV DPTR,#4000HMOVX DPTR,A執(zhí)行第執(zhí)行第1條指令條指令,先把片內(nèi)RAM 50H單元的數(shù)據(jù)送到A中,第第2條指令條指令把尋址地址4000H送到數(shù)據(jù)指針寄存器DPTR中,當(dāng)執(zhí)行“MOVX DPTR,A”時(shí),D
53、PTR的低8位(00H)由P0口輸出并鎖存,高8位(40H)由P2口直接輸出,根據(jù)P0口、P2口狀態(tài)選中IC3(6264)的4000H單元。當(dāng)當(dāng)寫選通信號寫選通信號 有效有效時(shí),A中的內(nèi)容送往片外4000H單元。單片機(jī)讀寫片外數(shù)據(jù)存儲器中內(nèi)容,除了用“MOVX A,DPTR”和“MOVX DPTR,A”外,還可用指令“MOVX A,Ri”和“MOVX Ri,A”。這時(shí)P0口裝入Ri中內(nèi)容(低8位地址),而把P2口原有的內(nèi)容作為高8位地址輸出。例例8-4是采用“MOVX Ri,A”指令的例子。84【例例8-4】編程,將程序存儲器中以程序存儲器中以TAB為首址的32個(gè)個(gè)單元內(nèi)容依次傳送到外部外部R
54、AM以以4000H為首址的區(qū)域。DPTR指向標(biāo)號TAB首地址。R0既指示外部RAM的地址,又表示數(shù)據(jù)標(biāo)號TAB的位移量。程序?yàn)橐谎h(huán)程序,循環(huán)次數(shù)為循環(huán)次數(shù)為32,R0的值達(dá)到32就結(jié)束循環(huán)。參考程序參考程序: MOVP2,#40H; MOVDPTR,#TAB;要傳送數(shù)據(jù)的首地址#TAB送;入數(shù)據(jù)指針DPTR MOVR0,#0;R0的初始值為0AGIN:MOVA,R0 85MOVC A,A+DPTR ;把以TAB為首址32個(gè)單元內(nèi);容送入AMOVX R0,A;程序存儲器中表的內(nèi)容送入;外部RAM單元 INCR0;循環(huán)次數(shù)加1,也即外部;RAM單元的地址指針加1 CJNER0,#32,AGIN;
55、判32個(gè)單元的數(shù)據(jù)是否已經(jīng);傳送完畢,未完則繼續(xù)HERE: SJMPHERE;原地跳轉(zhuǎn),模擬一段實(shí)際要;執(zhí)行的其他程序段TAB:DB ,;外部程序存儲器中要傳送的;32個(gè)單元的內(nèi)容868.6 E2PROM的擴(kuò)展的擴(kuò)展在應(yīng)用中,某些狀態(tài)參數(shù),不僅要求能夠某些狀態(tài)參數(shù),不僅要求能夠在線修改在線修改,而,而且且斷電后能保持?jǐn)嚯姾竽鼙3郑詡渖想姾蠡謴?fù)系統(tǒng)的狀態(tài),以備上電后恢復(fù)系統(tǒng)的狀態(tài)??蛇x用具有斷電保護(hù)功能的斷電保護(hù)功能的RAM和E2PROM。斷電保護(hù)功能的斷電保護(hù)功能的RAM容量大、速度快,但占用口線多,占用口線多,成本高成本高。 E2PROM突出優(yōu)點(diǎn)突出優(yōu)點(diǎn)是能夠在線擦除和改寫在線擦除和改寫,
56、無須像用紫外線照射才能擦除,不存在在日光下信息緩慢丟失的問題。 E2PROM在寫入時(shí)能自動完成擦除,且不再需要專用的編程電源,可直接使用單片機(jī)系統(tǒng)的+5V電源。8788此外, E2PROM使單片機(jī)系統(tǒng)的設(shè)計(jì),特別是調(diào)試實(shí)驗(yàn)調(diào)試實(shí)驗(yàn)更為方便、靈活。更為方便、靈活。在調(diào)試程序時(shí),用E2PROM代替仿真EPROM,既可方便地修改程序,又能保存調(diào)試好的程序。當(dāng)然,與RAM芯片相比, E2PROM的寫入速度是比較慢寫入速度是比較慢,寫入一個(gè)字節(jié)需要需要ms量級量級的時(shí)間。因此, E2PROM適合于數(shù)據(jù)交換量較少,對傳送速度要求不高的場合。另外,它的擦除/寫入是有壽命限制的,雖有1萬次之多,但也不宜用在數(shù)
57、據(jù)頻繁更新數(shù)據(jù)頻繁更新的場合。因此,應(yīng)注意平均的使用各單元,不然有些單元可能會提前結(jié)束壽命。與單片機(jī)的連接,有并行并行和和串行串行之分。并行的速度比串行快并行的速度比串行快,容量大容量大。并行的E2PROM 2864的容量為8k8位,有時(shí)需要與單片機(jī)的接口連線少,接口連線少,這時(shí)可選用串行可選用串行I2C接口的E2PROM 。目前比較流行的是24系列的E2PROM ,主要由ATMEL、MICROCHIP等幾家公司提供。典型芯片有典型芯片有AT24C02,AT24C08,AT24C16。串行I2C接口擴(kuò)展將在第12章中介紹。本節(jié)只介紹單片機(jī)與并行并行E2PROM芯片的接口設(shè)計(jì)與編程。898.6.
58、1 并行并行E2PROM芯片簡介芯片簡介常見的并行芯片有2816/2816A,2817/2817A,2864A等。引腳如圖8-22所示所示,其主要性能見表表8-11 (表中芯片均為Intel公司產(chǎn)品)。在引腳設(shè)計(jì)上,2KB的E2PROM 2816與相同容量的EPROM 2716和靜態(tài)RAM 6116是兼容的,8KB的E2PROM 2864A與同容量的EPROM 2764和靜態(tài)RAM 6264也是兼容的。2816、2817和2864A的讀出數(shù)據(jù)時(shí)間均為讀出數(shù)據(jù)時(shí)間均為250ns,寫寫入時(shí)間入時(shí)間10ms。9091圖圖8-22 常見的并行常見的并行E2PROM引腳圖引腳圖928.6.2 E2PRO
59、M的工作方式的工作方式下面對E2PROM 2864A的4種工作方式種工作方式作以說明。 1維持方式維持方式當(dāng) 為高電平時(shí),2864A進(jìn)入低耗維持方式。此時(shí),輸出線呈高阻態(tài),芯片的電流從140mA降至維持電流60mA。2讀方式讀方式當(dāng) 和 均為低而 為高時(shí),內(nèi)部的數(shù)據(jù)緩沖器被打開,數(shù)據(jù)送上總線,此時(shí)可進(jìn)行讀操作。3寫方式寫方式 2864A提供兩種兩種數(shù)據(jù)寫入方式寫入方式:頁寫入頁寫入和字節(jié)寫入字節(jié)寫入。93CECEOEWE(1)頁寫入)頁寫入為提高寫速度提高寫速度,2864A片內(nèi)設(shè)置16字節(jié)字節(jié)的“頁緩沖器頁緩沖器”,將整個(gè)存儲器陣列劃分成劃分成512頁頁,每頁16字節(jié)字節(jié)。高高9位位(A12A
60、4) 確定頁,低4位(A3A0) 選擇頁緩沖器中的16個(gè)地址單元之一。寫操作分兩步兩步來實(shí)現(xiàn):第一步,第一步,在軟件控制下把數(shù)據(jù)寫入寫入頁緩沖器頁緩沖器,這步稱為頁裝載頁裝載,與一般的靜態(tài)RAM寫操作是一樣的。第二步第二步,在最后一個(gè)字節(jié)最后一個(gè)字節(jié)(即第即第16個(gè)字節(jié)個(gè)字節(jié))寫入到頁緩沖寫入到頁緩沖器后器后20ns自動開始自動開始,把頁緩沖器的內(nèi)容寫到E2PROM陣列中對應(yīng)地址的單元中,這一步稱為頁存儲頁存儲。94寫方式時(shí), 為低,在 下降沿,地址碼A12A0被片內(nèi)鎖存器鎖存,在 上升沿?cái)?shù)據(jù)被鎖存。片內(nèi)有一個(gè)字節(jié)裝載字節(jié)裝載限時(shí)定時(shí)器限時(shí)定時(shí)器,只要時(shí)間未到,數(shù)據(jù)可隨機(jī)地寫入頁緩沖器。在連續(xù)
61、向頁緩沖器寫數(shù)據(jù)過程中,不用擔(dān)心限時(shí)定時(shí)器會溢出,因?yàn)槊慨?dāng) 下降沿時(shí),限時(shí)定時(shí)器自動被復(fù)位并重新啟動計(jì)時(shí)。限時(shí)定時(shí)器要求寫一個(gè)字節(jié)數(shù)據(jù)時(shí)間寫一個(gè)字節(jié)數(shù)據(jù)時(shí)間TBLW須滿足須滿足:3 sTBLW20 s,這是正確對2864A頁面寫操作的關(guān)鍵。當(dāng)一頁裝載完畢,不再有 信號時(shí),限時(shí)定時(shí)器將溢出,頁存儲操作隨即自動開始。首先把選中頁的內(nèi)容擦除,然后寫入的數(shù)據(jù)由頁緩沖器傳遞到E2PROM陣列中。95CEWEWECE(2)字節(jié)寫入字節(jié)寫入與頁寫入類似,寫入一個(gè)字節(jié),限時(shí)定時(shí)器就溢出。 4. 數(shù)據(jù)查詢方式數(shù)據(jù)查詢方式 用軟件來檢測用軟件來檢測寫操作中頁存儲周期是否完成頁存儲周期是否完成。在頁存儲期間,如對2
62、864A執(zhí)行讀操作,那么讀出的是最后寫入的字節(jié),若芯片的轉(zhuǎn)儲工作未完成,則讀出數(shù)據(jù)的最高位是原來寫入字節(jié)最高位的反碼。據(jù)此,單片機(jī)可判斷芯片單片機(jī)可判斷芯片的編程是否結(jié)束的編程是否結(jié)束。如果讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同,表示芯片已完成編程已完成編程,可繼續(xù)向2864A裝載下一頁數(shù)據(jù)裝載下一頁數(shù)據(jù)。上面介紹的E2PROM都是針對Intel公司的產(chǎn)品,其它公司的產(chǎn)品不一定相同。968.6.3 AT89S51擴(kuò)展擴(kuò)展E2PROM AT2864設(shè)計(jì)設(shè)計(jì)接口電路如圖圖8-23所示所示。2864A的片選端 與P2.7連接,8K字節(jié)存儲器可作為數(shù)據(jù)存儲器用,但掉電后數(shù)據(jù)不丟失。AT89S51對2864A進(jìn)行寫
63、操作寫操作時(shí)所用指令包括:MOVX DPTR,AMOVX Ri,AAT89S51對2864A進(jìn)行讀操作讀操作時(shí)所用指令包括:MOVX A,DPTRMOVX A,Ri97CE98圖圖8-23 2864A與與AT89S51單片機(jī)的接口電路單片機(jī)的接口電路下面介紹對2864A裝載一個(gè)頁面數(shù)據(jù)(16個(gè)字節(jié))的子程序WR2的編寫。被寫入的數(shù)據(jù)取自源數(shù)據(jù)區(qū),子程序子程序入口參數(shù)入口參數(shù)為:R1=寫入寫入2864A的字節(jié)數(shù)的字節(jié)數(shù)(16B)R2=2864A的低位地址的低位地址P2=2864A的高位地址的高位地址DPTR=源數(shù)據(jù)區(qū)首地址源數(shù)據(jù)區(qū)首地址99WR2:MOVX A,DPTR;取寫入的數(shù)據(jù)MOVR2,
64、A;數(shù)據(jù)暫存R2,備查詢MOVX R0,A ;寫入2864AINC DPTR;源地址指針加1INC R0;目的地址指針加1CJNE R0,#00H,NEXT;低位地址指針未滿跳NEXT處INC R2;否則高位指針加1NEXT: DJNZ R1,WR2;頁面未裝載完轉(zhuǎn)移DEC R0;頁裝載完,恢復(fù)最后寫入數(shù)據(jù)的地址LOOP: MOVX A,R0;讀2864AXRLA, R2;與寫入的最后一個(gè)數(shù)據(jù)相異或JBACC.7,LOOP ;最高位不等,再查;最高位不等,再查RET;最高位相同,一頁寫完;最高位相同,一頁寫完100上述寫入程序中,完成頁面裝載的循環(huán)部分頁面裝載的循環(huán)部分共8條指令,當(dāng)采用12M
65、Hz晶振時(shí),進(jìn)行時(shí)間約為13 s,完全符合2864A的TBLW的寬度要求。8.7 片內(nèi)片內(nèi)Flash存儲器的編程存儲器的編程討論如何把調(diào)試完畢的程序?qū)懭階T89S51的片內(nèi)Flash存儲器,即Flash存儲器編程問題。AT89S51片內(nèi)4K字節(jié)Flash存儲器的基本性能基本性能如下:(1)可循環(huán)寫入)可循環(huán)寫入/擦除擦除1 000次。次。(2)存儲器數(shù)據(jù)保存時(shí)間為)存儲器數(shù)據(jù)保存時(shí)間為10年。年。(3)程序存儲器具有)程序存儲器具有3級加密保護(hù)。級加密保護(hù)。101AT89S51出廠時(shí),F(xiàn)lash存儲器處于全部空白狀態(tài)(各單元均為均為FFH),可直接進(jìn)行編程。若不全為空白狀態(tài)(即單元中有不是有不
66、是FFH的),應(yīng)首先將芯片擦除擦除后,方可寫入程序。AT89S51片內(nèi)的Flash存儲器有3個(gè)個(gè)可編程的加密位可編程的加密位,定義了3個(gè)加密級別加密級別,只要對3個(gè)加密位:LB1、LB2、LB3進(jìn)行編程即可實(shí)現(xiàn)3個(gè)不同級別不同級別的加密。3個(gè)加密位的狀態(tài)可以是編程(P)或不編程(U),3個(gè)加密位的狀態(tài)所提供的提供的3個(gè)級別的加密功能見個(gè)級別的加密功能見表表8-12。對3個(gè)個(gè)加密位的編程加密位的編程可參照表表8-13所列控制信號來進(jìn)行,也可按照所購買的按照所購買的編程器編程器的菜單,選擇加密功能102103選項(xiàng)(如果有的話)即可。經(jīng)過上述加密處理,使解密難度加大,但還可解密?,F(xiàn)在有一種非恢復(fù)性加密(非恢復(fù)性加密(OTP加密)加密)方法,就是將AT89S51的第31腳腳( 腳)燒斷或某些數(shù)據(jù)線燒斷某些數(shù)據(jù)線燒斷,經(jīng)過上述處理的芯片仍正常工作,但不再具有但不再具有讀取、擦除、讀取、擦除、重復(fù)燒寫重復(fù)燒寫等功能。是一種較強(qiáng)的加密手段。國內(nèi)某些廠家編程器直接具有此功能(例如RF-1800編程器)。如何將如何將調(diào)試好的程序調(diào)試好的程序?qū)懭氲狡瑑?nèi)的寫入到片內(nèi)的Flash存儲器中?存儲器中?片內(nèi)Fla
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩