計算機(jī)硬件及網(wǎng)絡(luò)第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)_第1頁
計算機(jī)硬件及網(wǎng)絡(luò)第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)_第2頁
計算機(jī)硬件及網(wǎng)絡(luò)第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)_第3頁
計算機(jī)硬件及網(wǎng)絡(luò)第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)_第4頁
計算機(jī)硬件及網(wǎng)絡(luò)第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

[計算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲器結(jié)構(gòu)第一頁,共56頁。3.1存儲器的分類存儲器的的作用是用來存放程序和數(shù)據(jù),存儲器可分為磁存儲和半導(dǎo)體存儲器,半導(dǎo)體存儲器按功能又可分為只讀存儲器ROM和隨機(jī)存儲器RAM,如圖3-1所示。單片機(jī)存儲器結(jié)構(gòu)中都采用半導(dǎo)體存儲器。第二頁,共56頁。1.只讀存儲器ROM只讀存儲器在正常工作狀態(tài)下只能從中讀出數(shù)據(jù),用戶不能快速地隨時修改或者重新寫入數(shù)據(jù),數(shù)據(jù)可長時間的保存。(1)可編程ROM,可通過專用設(shè)備(編程器)將數(shù)據(jù)寫入ROM。PROM:用戶可一次編程;EPROM:紫外線擦除,電改寫(多次);EEPROM:電擦除,電改寫(多次);FLASHROM:閃存(多次)。(2)掩膜ROM用戶不能將數(shù)據(jù)寫入,由廠家寫入數(shù)據(jù)。

由于上述特點(diǎn),所以在單片機(jī)中一般做為程序存儲器。第三頁,共56頁。2.隨機(jī)存取存儲器RAM在加電期間,可以隨時向存儲器里寫入數(shù)據(jù)或從中讀出數(shù)據(jù),但掉電后,數(shù)據(jù)丟失。SRAM:靜態(tài)存儲器,加電期間數(shù)據(jù)可以長久保存,掉電信息丟失。DRAM:動態(tài)存儲器,即使在加電期間數(shù)據(jù)也會丟失(數(shù)據(jù)要刷新)。

由于上述特點(diǎn),所以在單片機(jī)中一般作為數(shù)據(jù)儲存器。第四頁,共56頁。3.2計算機(jī)中儲存器的兩種結(jié)構(gòu)在計算機(jī)中存儲器的用途是存放程序和數(shù)據(jù),它有兩種結(jié)構(gòu):馮?諾伊曼結(jié)構(gòu)和哈佛結(jié)構(gòu)。馮?諾伊曼結(jié)構(gòu):程序和數(shù)據(jù)共用一個存儲器邏輯空間,統(tǒng)一編址。哈佛結(jié)構(gòu):程序與數(shù)據(jù)分為兩個獨(dú)立存儲器邏輯空間,分開編址。注:★個人電腦(PC機(jī))采用的是馮?諾伊曼結(jié)構(gòu);★單片機(jī)一般采用哈佛結(jié)構(gòu)(8051);★8051(80C51)單片機(jī),數(shù)據(jù)存儲器用的是SRAM程序存儲器用的是ROM。第五頁,共56頁。3.380C51單片機(jī)的儲存器3.3.18051(80C51)系列存儲器結(jié)構(gòu)1.物理空間有四個部分(1)內(nèi)部數(shù)據(jù)存儲器(128BSRAM)。(2)外部擴(kuò)展數(shù)據(jù)存儲器(最大64KRAM)。(3)內(nèi)部程序存儲器(4KFlashROMAT89S51)。(4)外部擴(kuò)展程序存儲器(最大64KRAM)。第六頁,共56頁。2.邏輯空間有三個部分(1)程序存儲器ROM:包括內(nèi)部和外部,共用一個64K的尋址空間。(2)內(nèi)部數(shù)據(jù)存儲器RAM(128B),獨(dú)立的一個128B的尋址空間。(3)外部數(shù)據(jù)存儲器RAM(64K),獨(dú)立的一個64K的尋址空間。第七頁,共56頁。如圖3-2所示?!飪?nèi)部數(shù)據(jù)存儲器和外部數(shù)據(jù)存儲器相互之間獨(dú)立編址,★內(nèi)部程序存儲器和外部程序存儲器統(tǒng)一編址,共用一個64K的尋址空間。第八頁,共56頁。3.3.2數(shù)據(jù)儲存器數(shù)據(jù)存儲器是采用了靜態(tài)隨機(jī)存儲器(SRAM)的結(jié)構(gòu),掉電信息丟失,故用于暫存數(shù)據(jù)及運(yùn)算的中間結(jié)果。1.內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu)內(nèi)部數(shù)據(jù)儲存器它由工作寄存器區(qū)、位尋址區(qū)、用戶區(qū)三個部分組成,地址范圍00H~7FH,共128個單元。用戶對這些單元的訪問,可以用“直接尋址”的方法,即在指令中用“direct”表示,指的就是00H~7FH這128個地址單元,指令中直接給出操作數(shù)所在單元地址的這種尋址方式稱之為“直接尋址”。何為尋址方式,即尋找操作數(shù)的方法。第九頁,共56頁。圖3-3內(nèi)部數(shù)據(jù)存儲器結(jié)構(gòu)第十頁,共56頁。(1)工作寄存器區(qū)(00H~1FH)共32個單元,又分為4組,每組8個單元,都用R0~R7表示,如圖3-4所示,第十一頁,共56頁。個寄存器對應(yīng)的地址見表3-1所示在內(nèi)部工作寄存器中的地址是唯一,但寄存器名重名,一個寄存器名對應(yīng)有4個單元,為了解決重名問題,單片機(jī)用特殊功能寄存器PSW中的RS1、RS0來選擇,也就是說,單片機(jī)在工作時不會同時使用這4組寄存器,在某一時刻,只能選擇其中的一組。工作寄存器組地址寄存器名RS1RS00組00H~07HR0~R7001組08H~0FHR0~R7012組10H~17HR0~R7103組18H~1FHR0~R711第十二頁,共56頁。在指令系統(tǒng)中對于這些空間的訪問有以下方法:●直接使用地址,在指令系統(tǒng)中用“direct”表示,這種方式稱之為直接尋址。如:指令MOVA,direct;指令中的“direct”就是指內(nèi)部數(shù)據(jù)存儲器中的地址(00H~7FH)該指令就是把direct這個單元中的操作數(shù)傳送到A中。操作數(shù)是指指令中參與操作的數(shù)據(jù)。指令系統(tǒng)中出現(xiàn)的“direct”,在實(shí)際編程的過程中不能出現(xiàn),必須寫對應(yīng)的實(shí)際地址“00H~7FH”,這一點(diǎn)非常重要。如:MOVA,30H;就是將30H中的數(shù)送給A。第十三頁,共56頁。●直接使用寄存器名R0~R7,指令系統(tǒng)中用“Rn”表示這8個寄存器,這種方式的尋址稱之為“寄存器尋址”,就是操作數(shù)放在寄存器中。如:指令MOVA,Rn;指令中的“Rn”就是指工作寄存器R0~R7。該指令就是把Rn中的操作數(shù)傳送到A中。指令系統(tǒng)中出現(xiàn)的“Rn”,在實(shí)際編程的過程中不能出現(xiàn),必須寫對應(yīng)的寄存器“R0~R7”。如:MOVA,R3;就是將工作寄存器R3中的數(shù)傳送到A中。第十四頁,共56頁。●R0和R1這兩個寄存器還有一種用法,稱之為“寄存器間接尋址”,用“@Ri”表示,i=0、1。R0和R1存放的是操作數(shù)所在單元的地址。如:MOVA,@Ri;指令中的“@Ri”就是指工作寄存器R0和R1。該指令就是把Ri中的數(shù)取出作為所取數(shù)據(jù)的單元地址。指令系統(tǒng)中出現(xiàn)“@Ri”,在實(shí)際編程的過程中不能出現(xiàn),必須寫“@R0或@R1”。如:MOVA,@R0;就是將R0中的數(shù)取出,作為所取數(shù)據(jù)的地址,將該地址單元的數(shù)取出送到A中。如圖3-5所示,@R0所指的操作數(shù)就是10101010B(AAH)。第十五頁,共56頁。3-5所示,指令MOVA,@R0操作示意??梢杂茫ǎ≧0))=(40H)=AAH表示。第十六頁,共56頁。注:★在寄存器尋址中(Rn),這4組寄存器,由用戶使用中通過PSW中的RS1和RS0的設(shè)定,來確定用戶使用的組。★這32個單元可以使用“直接尋址”方式,也可使用“寄存器尋址”方式來進(jìn)行訪問?!?組中的R0和R1除了“直接尋址”和“寄存器尋址”外,還可采用“寄存器間接尋址”方式來訪問。第十七頁,共56頁。(2)位尋址區(qū)(20H~2FH)這16個RAM單元具有雙重功能。它們既可以像普通RAM單元一樣按字節(jié)存取,即“直接尋址(direct)”也可以對每個RAM單元中的任何一個二進(jìn)制位單獨(dú)存取,這就是位尋址(bit),80C51單片機(jī)為這些區(qū)域?qū)iT設(shè)置了位處理器(一個1位的CPU),用于這些空間的訪問,如圖3-6所示。第十八頁,共56頁。圖3-6,位地址表。第十九頁,共56頁。在指令系統(tǒng)中對于這些空間的訪問有以下方法:●可以采用“直接尋址”的方式去訪問這16個單元;如:MOVA,20H(MOVA,direct)●也可以采用“位尋址(bit)”的方式去訪問這128個二進(jìn)制位。如:MOVC,00H(MOVC,bit)該指令就是把00H中的一個二進(jìn)制數(shù)送到C中。指令中“bit”,指的就是位地址“00H~7FH”。注:★字節(jié)地址:20H~2FH,位地址:00H~7FH?!餅榱藚^(qū)分位地址“00H~7FH”和內(nèi)部數(shù)據(jù)存儲器的地址“00H~7FH”,提到位尋址區(qū)中的位地址時,必須注明位地址。單元地址,稱之為字節(jié)地址,也可簡稱地址。第二十頁,共56頁。(3)數(shù)據(jù)緩沖區(qū)(用戶區(qū))(30H~7FH)數(shù)據(jù)緩沖區(qū)共有80個RAM單元,用于存放用戶數(shù)據(jù)或作堆棧區(qū)使用,也稱用戶RAM區(qū)。80C51對用戶RAM區(qū)中每個RAM單元只能按字節(jié)存取的(不可位尋址)。在指令系統(tǒng)中對于這些空間的訪問只有一種方法,即直接尋址(direct)。如:MOVA,40H(MOVA,direct)第二十一頁,共56頁。內(nèi)部數(shù)據(jù)存儲器小結(jié):★內(nèi)部數(shù)據(jù)存儲器中所有的單元(128B)都可以用直接尋址的方法來進(jìn)行訪問(direct)?!锕ぷ骷拇嫫鲄^(qū)也可以用寄存器尋址(Rn)的方法來訪問,指令系統(tǒng)中一般都用寄存器尋址(Rn)的方法來訪問該空間。除了寄存器尋址的方式,R0和R1也可采用寄存器間接尋址@Ri的方式,在使用中R0和R1必須先滿足間接尋址方式,有多余的可用于寄存器尋址方式。★位尋址區(qū),對這16個單元可以使用直接尋址方式,這16個單元中的128個位(都有位地址),還可以用位尋址的方式來訪問?!镉脩魠^(qū)只能用直接尋址的方式來訪問?!镏噶钕到y(tǒng)中所有的數(shù)據(jù)處理、運(yùn)算都是在內(nèi)部數(shù)據(jù)存儲器中完成,所以指令系統(tǒng)也是非常豐富的(大部分指令都是針對該空間)。第二十二頁,共56頁。2.外部數(shù)據(jù)存儲器當(dāng)內(nèi)部數(shù)據(jù)存儲器不夠用時,在單片機(jī)的外總線上可以最大擴(kuò)展64K的RAM,可獨(dú)立尋址,有專用指令系統(tǒng)(MOVX傳送指令),不能用于數(shù)據(jù)的運(yùn)算及處理,所以僅有4條指令,兩條讀,兩條寫,用于一般數(shù)據(jù)的存放,地址為0000H-FFFFH。尋址方式采用寄存器間接尋址的方式,如MOVXA,@DPTR.,指令中DPTR,開辟在特殊功能寄存器(SFR)中,是一個16位的數(shù)據(jù)存儲器(數(shù)據(jù)指針),用于訪問外部數(shù)據(jù)存儲器和程序存儲器,一般用于存放的是外部數(shù)據(jù)存儲器和程序存儲器的地址(外部數(shù)據(jù)存儲器的地址也是16位)。存儲器結(jié)構(gòu)見圖3-7所示。第二十三頁,共56頁。圖3-7外部數(shù)據(jù)存儲器結(jié)構(gòu)第二十四頁,共56頁。3.3.3特殊功能寄存器(SFR)80C51系列單片機(jī)內(nèi)的鎖存器、定時器、串行口、數(shù)據(jù)緩沖器及各種控制寄存器、狀態(tài)寄存器都以特殊功能寄存器(SFR)的形式出現(xiàn),它們離散地分布在高128位片內(nèi)RAM80H~FFH中。51子系列共有18個特殊功能寄存器,占用21個單元,其余107個單元用戶不好使用(AT89C51)。第二十五頁,共56頁。表3-2SFR地址映像表第二十六頁,共56頁。第二十七頁,共56頁。這18個特殊功能寄存器,其中有15個特殊功能寄存器占用1個單元,另外3個特殊功能寄存器占用2個單元,這就是為什么18個特殊功能寄存器占用21個單元的原因。這18個特功能寄存器我們先學(xué)5個,其余的放在以后學(xué)習(xí)。第二十八頁,共56頁。

1.累加器ACC(E0H)

累加器ACC是80C51型單片機(jī)中最常用的寄存器。許多指令的操作數(shù)取自ACC,許多運(yùn)算的結(jié)果存放在ACC中。乘除法指令必須通過ACC進(jìn)行。累加器ACC的指令助記符為A。簡單的講就是一個8位的存儲器,使用非常頻繁,很多指令中必須用到ACC。第二十九頁,共56頁。

在指令系統(tǒng)中,可直接使用寄存器名ACC(A)和字節(jié)地址E0H對這八個二進(jìn)制位進(jìn)行操作,前者稱之為寄存器尋址,后者稱之為直接尋址(direct),用戶一般使用寄存器尋址,即寄存器尋址,在特殊條件下才會使用直接尋址。累加器ACC也是一個可以對8個二進(jìn)制位進(jìn)行位尋址的寄存器,8個二進(jìn)制位都有唯一的位地址,指令中只能使用位地址(bit),也稱之為位尋址,若使用位編號,編譯軟件會將位編號轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件。

第三十頁,共56頁。2.寄存器B(F0H)80C51單片機(jī)乘除法指令中要用到寄存器B,用于存放操作數(shù)和操作結(jié)果。B也可作為通用存儲器器使用。在乘除指令中,直接使用寄存器名B,稱之為寄存器尋址。用作通用存儲器時只能使用地址F0H稱之為直接尋址,若用寄存器名B,編譯軟件會將其轉(zhuǎn)換成地址F0H來使用。寄存器B是可以進(jìn)行位尋址的單元,8個二進(jìn)制位都有唯一的位地址,在對二進(jìn)制位尋址時,指令中只能使用位地址(bit),稱之為位尋址,若使用位編號,編譯軟件會將位編號轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件,見圖3-9所示。第三十一頁,共56頁。3.程序狀態(tài)字寄存器PSW(D0H)程序狀態(tài)字寄存器PSW也稱為標(biāo)志寄存器,存放各有關(guān)標(biāo)志和對工作寄存器的選擇設(shè)置。其結(jié)構(gòu)和定義如圖3-10所示。在指令系統(tǒng)中該單元只能使用字節(jié)地址D0H來訪問,稱之為直接尋址(direct),若用寄存器名PSW,編譯軟件會將其轉(zhuǎn)換成地址D0H來使用。程序狀態(tài)字寄存器PSW是可以進(jìn)行位尋址的單元,8個二進(jìn)制位都有唯一的位地址,在對二進(jìn)制位尋址時,指令中只能使用位地址(bit),稱之為位尋址,若使用位定義或位編號,編譯軟件會將位定義和位編號轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件。第三十二頁,共56頁。該單元各位的定義如下:CY:進(jìn)(借)位標(biāo)志位,有進(jìn)(借)位(CY)=1,否則(CY)=0,主要用于加減運(yùn)算中。AC:輔助進(jìn)(借)位標(biāo)志位,低四位向高四位的進(jìn)(借)位,有進(jìn)(借)(AC)=1,否則(AC)=0,主要用于加減運(yùn)算中。RS1、RS0:工作寄存器組的選擇位,見表3-3所示。

字節(jié)地址寄存器名RS1RS00組00H-07HR0-R7001組08H-0FHR0-R7012組10H-17HR0-R7103組18H-1FHR0-R711第三十三頁,共56頁。OV:溢出標(biāo)志位,80C51單片機(jī)CPU的位數(shù)是8位,則表示帶符號數(shù)的位數(shù)只能是8位,最高位是符號位,數(shù)據(jù)位只有7位,數(shù)的范圍在-128~+127之間,若運(yùn)算的結(jié)果超出這個范圍,溢出(結(jié)果出錯)。計算機(jī)中判斷結(jié)果溢出的算法是公式:OV=Cy6⊕Cy7;式中,Cy6表示D6位向D7位的進(jìn)位或借位,Cy7表示D6位向CY的進(jìn)位或借位。F0:用戶位,用戶可以作為一般的一位二進(jìn)制數(shù)的存儲器使用。P:奇偶標(biāo)志位,累加器A中1的個數(shù)為奇數(shù)時(P)=1,否則(P)=0,只要A中的數(shù)值發(fā)生變化,就影響P(實(shí)時反映累加器A中1的個數(shù)的奇偶性)。第三十四頁,共56頁。注:★CY、AC、OV、P這4個標(biāo)志位由指令運(yùn)行后,對其產(chǎn)生影響(由硬件產(chǎn)生各標(biāo)志),主要用于算術(shù)運(yùn)算類指令,除了CY一般這3位不會用于數(shù)據(jù)的存儲,CY也是位處理器(1位的CPU)中的累加器,在位操作中使用較為頻繁?!颬在任何一條指令中,只要有累加器A出現(xiàn)并且A中的值發(fā)生變化,就會影響P。★RS1、RS0是工作寄存器組的選擇位,由用戶根據(jù)需要通過指令來設(shè)定,去選擇寄存器組(軟件設(shè)定)。第三十五頁,共56頁。例1:X=-13,Y=-6,求X+Y的補(bǔ)碼運(yùn)算。解:[X]補(bǔ)碼=F3H,[Y]補(bǔ)碼=FAH,[X+Y]補(bǔ)碼,則:[X]補(bǔ)碼:11110011B

[Y]補(bǔ)碼:+11111010B[X]補(bǔ)碼+[Y]補(bǔ)碼:111101101B

在單片機(jī)中,上述運(yùn)算后,(CY)=1,(AC)=0,(OV)=Cy6⊕Cy7=1⊕1=0(結(jié)果正確),(P)=0。

第三十六頁,共56頁。4.?dāng)?shù)據(jù)指針DPTR(83H、82H)數(shù)據(jù)指針DPTR是一個16位的特殊功能寄存器,不可位尋址,由兩個8位寄存器DPH(83H)和DPL(82H)組成,DPH是DPTR的高8位,DPL是DPTR的低8位,DPTR既可合并作為一個16位寄存器,又可分開按8位寄存器單獨(dú)操作,見圖3-11所示。第三十七頁,共56頁。在指令中一般都是以一個16位的寄存器DPTR使用,用于存放外部數(shù)據(jù)存儲器的地址和程序程序器的地址,訪問外部數(shù)據(jù)存儲器是用@DPTR,稱之為寄存器間接尋址;訪問程序存儲器是用@A+DPTR,稱之為變址尋址。作為兩個獨(dú)立的8位寄存器(DPH、DPL)使用時,只能使用其地址,在指令系統(tǒng)中會詳解。第三十八頁,共56頁。5.堆棧指針SP(81H)堆棧是CPU用于暫時存放部分?jǐn)?shù)據(jù)的“倉庫”,它的作用是用來保護(hù)現(xiàn)場和保護(hù)斷點(diǎn)。在80C51中,由內(nèi)部數(shù)據(jù)存儲器中若干存儲單元組成,可由用戶自定義單元地址,一般開辟在內(nèi)部數(shù)據(jù)存儲器30H~7FH這個空間。存儲單元的個數(shù)稱為堆棧的深度,可理解為倉庫容量。為了實(shí)現(xiàn)上述數(shù)據(jù)保護(hù)的需要,數(shù)據(jù)的存取,要遵循先進(jìn)后出,后進(jìn)先出的原則。80C51單片機(jī)中用堆棧指針SP(81H)來實(shí)現(xiàn)數(shù)據(jù)的先進(jìn)后出,后進(jìn)先出,即不可位尋址。它開辟在特殊功能寄存器81H中,沒有位地址,即不可位尋址,如圖3-12所示第三十九頁,共56頁。堆棧指針SP是用來存放堆棧數(shù)據(jù)區(qū)的地址,如圖3-13所示。一般為了書寫方便,堆棧的示意圖,如圖3-14所示。第四十頁,共56頁。堆棧數(shù)據(jù)的存取又稱之為進(jìn)棧和出棧。進(jìn)棧時,首先堆棧指針加1,即(SP)←(SP)+1,然后數(shù)據(jù)進(jìn)棧;出棧時,先取堆棧的數(shù)據(jù),然后堆棧指針減1,即(SP)←(SP)-1。數(shù)據(jù)的進(jìn)棧和出棧,又有兩種操作形式,一是硬件操作,計算機(jī)執(zhí)行某個操作時,硬件自動進(jìn)棧(中斷、調(diào)用)和出棧(返回指令),用于保護(hù)斷點(diǎn)。二是軟件操作,由指令PUSHdirect(進(jìn)棧)和指令POPdirect(出棧)來實(shí)現(xiàn)。不管是硬件操作還是軟件操作,進(jìn)棧時,首先堆棧指針加1,然后數(shù)據(jù)進(jìn)棧;出棧時,先取堆棧的數(shù)據(jù),然后堆棧指針減1。下面以軟件操作加以說明。第四十一頁,共56頁。例2:已知(SP)=2FH,(40H)=22H,(41H)=33H執(zhí)行下列程序。PUSH40HPUSH41HPOP40HPOP41H解:根據(jù)初始條件,得示意圖,存儲器中沒有提到單元的數(shù)據(jù)為任意值。第四十二頁,共56頁。執(zhí)行第一條指令PUSH40H,首先(SP)←(SP)+1=2FH+1=30H,然后將40H中的數(shù)據(jù)22H,送入堆棧指針SP指向的單元30H中,如圖3-16(a)所示。第一個進(jìn)棧的數(shù)據(jù)不是堆棧指針指向的初始單元,在計算機(jī)中數(shù)據(jù)的傳送,不是完全給予的意思,而是復(fù)制,40H單元數(shù)據(jù)進(jìn)棧后,影響了堆棧指針指向的單元,但不影響40H這個單元的原始數(shù)據(jù),所以40H的數(shù)據(jù)仍為22H。第四十三頁,共56頁。執(zhí)行第二條指令PUSH41H,進(jìn)棧過程同第一條指令。進(jìn)棧后,示意圖如圖3-16(b)所示。第四十四頁,共56頁。執(zhí)行第三條指令POP40H,首先是取堆棧指針指向單元的數(shù)據(jù)給40H,則40H的數(shù)據(jù)為33H,然后將(SP)←(SP)-1=31H-1=30H,執(zhí)行完后,示意圖如圖3-16(c)所示。第四十五頁,共56頁。執(zhí)行第四條指令POP41H,出棧過程同第四條指令,示意圖如圖3-16(d)所示。當(dāng)數(shù)據(jù)取出后,堆棧指針又回到初始狀態(tài),如圖3-15所示。但原來進(jìn)棧的數(shù)還存于堆棧中,直到下次進(jìn)棧的數(shù)據(jù)將其覆蓋。第四十六頁,共56頁。該程序,是將40H和41H的數(shù)據(jù)交換,進(jìn)棧兩次,出棧兩次,所以堆棧指針SP的值,仍為初始值2FH,堆棧指針的初始值指向的單元,是不能用于存放堆棧數(shù)據(jù)的,第一個入棧的數(shù)據(jù),是該單元的地址加1單元。第四十七頁,共56頁。系統(tǒng)復(fù)位時堆棧指示器的值為07H,即指向的是工作寄存器區(qū)0組的R7單元,如圖3-17所示,第一個入棧的數(shù)放于08H單元,但堆棧一般開辟在用戶區(qū)(30H~7FH)中。堆棧的深度是由數(shù)據(jù)連續(xù)進(jìn)棧的次數(shù)來決定的。若根據(jù)某個程序設(shè)計的需要,需要16個單元堆棧來存儲數(shù)據(jù),堆棧開辟在40H到4FH單元,則堆棧指示器SP的初始值應(yīng)付3FH,第一個入棧的數(shù)放入40H中,在程序的設(shè)計中,40H~41H中不能用于其它的數(shù)據(jù)的存放,否則數(shù)據(jù)被覆蓋。若實(shí)際進(jìn)棧的數(shù)據(jù)超出了16個單元,則堆棧溢出,溢出的單元在50H以上,這些單元沒有數(shù)據(jù),則沒有影響,否則影響原有數(shù)據(jù)。堆棧指針始終指向的是堆棧的棧頂位置。第四十八頁,共56頁。注:★51子系列中,共有18個SFR(特殊功能寄存器),占用21個單元,我們先學(xué)5個SFR(共6個單元),其余SFR在后面的學(xué)習(xí)中,會逐步的給大家介紹?!镞@18個SFR,21個單元中,字節(jié)地址能被8整除的單元是可以進(jìn)行位尋址的,也就是說字節(jié)地址的后面一位是0或者8,都是可以進(jìn)行位尋址的(bit)。★可位尋址的單元,可以用位地址、位編號或位定義,在尋址中都稱之為位尋址(bit)?!锵到y(tǒng)復(fù)位后,各寄存器的值如表3-4所示。第四十九頁,共56頁。第五十頁,共56頁。3.3.4程序存儲器程序存儲器的作用是用來存放程序和數(shù)表(固定不變的常數(shù))。AT89S51單片機(jī)內(nèi)部有4K的程序存儲器FlashROM,外部最多可擴(kuò)展64K的程序存儲器,內(nèi)外程序存儲器采用統(tǒng)一編址的方法,即共用64K的地址,地址范圍0000H~FFFFH,不管是內(nèi)部還是外部都是用指令MOVC來訪問。如圖3-18所示。第五十一頁,共56頁。1.程序存儲器的結(jié)構(gòu)●8051(80C51)系列有64KROM的尋址區(qū),地址范圍0000H~FFFFH,用于存放程序?!衿渲械?K(0000H~0FFFH)的地址區(qū)可以為片內(nèi)ROM和片外ROM共用,但不能同時使用(由外引腳決定)。

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論