[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu).ppt_第1頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu).ppt_第2頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu).ppt_第3頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu).ppt_第4頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]第3章-80C51單片機(jī)的存儲(chǔ)器結(jié)構(gòu).ppt_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余51頁可下載查看

下載本文檔

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

文檔簡介

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

2、M 用戶不能將數(shù)據(jù)寫入,由廠家寫入數(shù)據(jù)。 由于上述特點(diǎn),所以在單片機(jī)中一般做為程序存儲(chǔ)器。,2. 隨機(jī)存取存儲(chǔ)器RAM 在加電期間,可以隨時(shí)向存儲(chǔ)器里寫入數(shù)據(jù)或從中讀出數(shù)據(jù),但掉電后,數(shù)據(jù)丟失。 SRAM:靜態(tài)存儲(chǔ)器,加電期間數(shù)據(jù)可以長久保存,掉電信息丟失。 DRAM:動(dòng)態(tài)存儲(chǔ)器,即使在加電期間數(shù)據(jù)也會(huì)丟失(數(shù)據(jù)要刷新)。 由于上述特點(diǎn),所以在單片機(jī)中一般作為數(shù)據(jù)儲(chǔ)存器。,3.2 計(jì)算機(jī)中儲(chǔ)存器的兩種結(jié)構(gòu) 在計(jì)算機(jī)中存儲(chǔ)器的用途是存放程序和數(shù)據(jù),它有兩種結(jié)構(gòu):馮諾伊曼結(jié)構(gòu)和哈佛結(jié)構(gòu)。 馮諾伊曼結(jié)構(gòu):程序和數(shù)據(jù)共用一個(gè)存儲(chǔ)器邏輯空間,統(tǒng)一編址。 哈佛結(jié)構(gòu):程序與數(shù)據(jù)分為兩個(gè)獨(dú)立存儲(chǔ)器邏輯空間,分

3、開編址。 注: 個(gè)人電腦(PC機(jī))采用的是馮諾伊曼結(jié) 構(gòu); 單片機(jī)一般采用哈佛結(jié)構(gòu)(8051); 8051(80C51)單片機(jī),數(shù)據(jù)存儲(chǔ)器用的是 SRAM程序存儲(chǔ)器用的是ROM。,3.3 80C51單片機(jī)的儲(chǔ)存器 3.3.1 8051(80C51)系列存儲(chǔ)器結(jié)構(gòu) 1. 物理空間有四個(gè)部分 (1)內(nèi)部數(shù)據(jù)存儲(chǔ)器(128B SRAM)。 (2)外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器(最大64K RAM)。 (3)內(nèi)部程序存儲(chǔ)器(4K FlashROM AT89S51)。 (4)外部擴(kuò)展程序存儲(chǔ)器(最大64K RAM)。,2. 邏輯空間有三個(gè)部分 (1)程序存儲(chǔ)器ROM:包括內(nèi)部和外部,共用一個(gè)64K的尋址空間。 (2

4、)內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM(128B),獨(dú)立的一個(gè)128B的尋址空間。 (3)外部數(shù)據(jù)存儲(chǔ)器RAM(64K),獨(dú)立的一個(gè)64K的尋址空間。,如圖3-2所示。 內(nèi)部數(shù)據(jù)存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器相互之間獨(dú)立編址, 內(nèi)部程序存儲(chǔ)器和外部程序存儲(chǔ)器統(tǒng)一編址,共用一個(gè)64K的尋址空間。,3.3.2 數(shù)據(jù)儲(chǔ)存器 數(shù)據(jù)存儲(chǔ)器是采用了靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的結(jié)構(gòu),掉電信息丟失,故用于暫存數(shù)據(jù)及運(yùn)算的中間結(jié)果。 1. 內(nèi)部數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu) 內(nèi)部數(shù)據(jù)儲(chǔ)存器它由工作寄存器區(qū)、位尋址區(qū)、用戶區(qū)三個(gè)部分組成,地址范圍00H7FH,共128個(gè)單元。用戶對(duì)這些單元的訪問,可以用“直接尋址”的方法,即在指令中用“direct”

5、表示,指的就是00H7FH這128個(gè)地址單元,指令中直接給出操作數(shù)所在單元地址的這種尋址方式稱之為“直接尋址”。 何為尋址方式,即尋找操作數(shù)的方法。,圖3-3 內(nèi)部數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu),(1)工作寄存器區(qū)(00H1FH) 共32個(gè)單元,又分為4組,每組8個(gè)單元,都用R0R7表示,如圖3-4所示,,個(gè)寄存器對(duì)應(yīng)的地址見表3-1所示 在內(nèi)部工作寄存器中的地址是唯一,但寄存器名重名,一個(gè)寄存器名對(duì)應(yīng)有4個(gè)單元,為了解決重名問題,單片機(jī)用特殊功能寄存器PSW中的RS1、RS0來選擇,也就是說,單片機(jī)在工作時(shí)不會(huì)同時(shí)使用這4組寄存器,在某一時(shí)刻,只能選擇其中的一組。,在指令系統(tǒng)中對(duì)于這些空間的訪問有以下方法:

6、 直接使用地址,在指令系統(tǒng)中用“direct”表示,這種方式稱之為直接尋址。 如:指令 MOV A , direct ;指令中的“direct”就是指內(nèi)部數(shù)據(jù)存儲(chǔ)器中的地址(00H7FH) 該指令就是把direct這個(gè)單元中的操作數(shù)傳送到A中。操作數(shù)是指指令中參與操作的數(shù)據(jù)。 指令系統(tǒng)中出現(xiàn)的“direct”,在實(shí)際編程的過程中不能出現(xiàn),必須寫對(duì)應(yīng)的實(shí)際地址“00H7FH”,這一點(diǎn)非常重要。 如:MOV A , 30H ;就是將30H中的數(shù)送給A。,直接使用寄存器名R0R7,指令系統(tǒng)中用“Rn”表示這8個(gè)寄存器,這種方式的尋址稱之為“寄存器尋址”,就是操作數(shù)放在寄存器中。 如:指令 MOV A

7、 , Rn ;指令中的“Rn”就是指工作寄存器R0R7。該指令就是把Rn中的操作數(shù)傳送到A中。 指令系統(tǒng)中出現(xiàn)的“Rn”,在實(shí)際編程的過程中不能出現(xiàn),必須寫對(duì)應(yīng)的寄存器“R0R7”。 如:MOV A , R3 ;就是將工作寄存器R3中的數(shù)傳送到A中。,R0和R1這兩個(gè)寄存器還有一種用法,稱之為“寄存器間接尋址”,用“Ri”表示,i=0、1。R0和R1存放的是操作數(shù)所在單元的地址。 如:MOV A, Ri ; 指令中的“Ri”就是指工作寄存器R0和R1。該指令就是把Ri中的數(shù)取出作為所取數(shù)據(jù)的單元地址。指令系統(tǒng)中出現(xiàn)“Ri”,在實(shí)際編程的過程中不能出現(xiàn),必須寫 “R0或R1”。 如:MOV A

8、, R0 ;就是將R0中的數(shù)取出,作為所取數(shù)據(jù)的地址,將該地址單元的數(shù)取出送到A中。如圖3-5所示, R0所指的操作數(shù)就是10101010B(AAH)。,3-5所示, 指令MOV A , R0 操作示意。 可以用(R0)=(40H)=AAH表示。,注: 在寄存器尋址中(Rn),這4組寄存器,由用戶使用中通過PSW中的RS1和RS0的設(shè)定,來確定用戶使用的組。 這32個(gè)單元可以使用“直接尋址” 方式,也可使用“寄存器尋址”方式來進(jìn)行訪問。 4組中的R0和R1除了“直接尋址”和“寄存器尋址”外,還可采用“寄存器間接尋址”方式來訪問。,(2) 位尋址區(qū)(20H2FH) 這16個(gè)RAM 單元具有雙重功

9、能。它們既可以像普通RAM 單元一樣按字節(jié)存取,即“直接尋址(direct)”也可以對(duì)每個(gè)RAM 單元中的任何一個(gè)二進(jìn)制位單獨(dú)存取,這就是位尋址(bit),80C51單片機(jī)為這些區(qū)域?qū)iT設(shè)置了位處理器(一個(gè)1位的CPU),用于這些空間的訪問,如圖3-6所示。,圖3-6,位地址表。,在指令系統(tǒng)中對(duì)于這些空間的訪問有以下方法: 可以采用“直接尋址”的方式去訪問這16個(gè)單元; 如:MOV A , 20H (MOV A , direct) 也可以采用“位尋址(bit)”的方式去訪問這128個(gè)二進(jìn)制位。 如:MOV C , 00H (MOV C , bit) 該指令就是把00H中的一個(gè)二進(jìn)制數(shù)送到C中。

10、 指令中“bit”,指的就是位地址“00H7FH”。 注: 字節(jié)地址:20H2FH,位地址:00H7FH。 為了區(qū)分位地址“00H7FH”和內(nèi)部數(shù)據(jù)存儲(chǔ)器的地址“00H7FH”,提到位尋址區(qū)中的位地址時(shí),必須注明位地址。單元地址,稱之為字節(jié)地址,也可簡稱地址。,(3)數(shù)據(jù)緩沖區(qū)(用戶區(qū))(30H7FH) 數(shù)據(jù)緩沖區(qū)共有80個(gè)RAM 單元,用于存放用戶數(shù)據(jù)或作堆棧區(qū)使用,也稱用戶RAM區(qū)。80C51對(duì)用戶RAM區(qū)中每個(gè)RAM單元只能按字節(jié)存取的(不可位尋址)。 在指令系統(tǒng)中對(duì)于這些空間的訪問只有一種方法,即直接尋址(direct)。 如:MOV A , 40H (MOV A , direct),

11、內(nèi)部數(shù)據(jù)存儲(chǔ)器小結(jié): 內(nèi)部數(shù)據(jù)存儲(chǔ)器中所有的單元(128B)都可以用直接尋址的方法來進(jìn)行訪問(direct)。 工作寄存器區(qū)也可以用寄存器尋址(Rn)的方法來訪問,指令系統(tǒng)中一般都用寄存器尋址(Rn)的方法來訪問該空間。除了寄存器尋址的方式,R0和R1也可采用寄存器間接尋址Ri的方式,在使用中R0和R1必須先滿足間接尋址方式,有多余的可用于寄存器尋址方式。 位尋址區(qū),對(duì)這16個(gè)單元可以使用直接尋址方式,這16個(gè)單元中的128個(gè)位(都有位地址),還可以用位尋址的方式來訪問。 用戶區(qū)只能用直接尋址的方式來訪問。 指令系統(tǒng)中所有的數(shù)據(jù)處理、運(yùn)算都是在內(nèi)部數(shù)據(jù)存儲(chǔ)器中完成,所以指令系統(tǒng)也是非常豐富的(

12、大部分指令都是針對(duì)該空間)。,2. 外部數(shù)據(jù)存儲(chǔ)器 當(dāng)內(nèi)部數(shù)據(jù)存儲(chǔ)器不夠用時(shí),在單片機(jī)的外總線上可以最大擴(kuò)展64K的RAM,可獨(dú)立尋址,有專用指令系統(tǒng)(MOVX傳送指令),不能用于數(shù)據(jù)的運(yùn)算及處理,所以僅有4條指令,兩條讀,兩條寫,用于一般數(shù)據(jù)的存放,地址為0000HFFFFH。尋址方式采用寄存器間接尋址的方式,如MOVX A , DPTR.,指令中DPTR,開辟在特殊功能寄存器(SFR)中,是一個(gè)16位的數(shù)據(jù)存儲(chǔ)器(數(shù)據(jù)指針),用于訪問外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,一般用于存放的是外部數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器的地址(外部數(shù)據(jù)存儲(chǔ)器的地址也是16位)。存儲(chǔ)器結(jié)構(gòu)見圖3-7所示。,圖3-7 外部數(shù)據(jù)

13、存儲(chǔ)器結(jié)構(gòu),3.3.3 特殊功能寄存器(SFR) 80C51系列單片機(jī)內(nèi)的鎖存器、定時(shí)器、串行口、數(shù)據(jù)緩沖器及各種控制寄存器、狀態(tài)寄存器都以特殊功能寄存器(SFR)的形式出現(xiàn),它們離散地分布在高128位片內(nèi)RAM 80HFFH中。51子系列共有18個(gè)特殊功能寄存器,占用21個(gè)單元,其余107個(gè)單元用戶不好使用(AT89C51)。,表3-2 SFR地址映像表,這18個(gè)特殊功能寄存器,其中有15個(gè)特殊功能寄存器占用1個(gè)單元,另外3個(gè)特殊功能寄存器占用2個(gè)單元,這就是為什么18個(gè)特殊功能寄存器占用21個(gè)單元的原因。這18個(gè)特功能寄存器我們先學(xué)5個(gè),其余的放在以后學(xué)習(xí)。,1累加器ACC(E0H) 累加

14、器ACC 是80C51型單片機(jī)中最常用的寄存器。許多指令的操作數(shù)取自ACC,許多運(yùn)算的結(jié)果存放在ACC 中。乘除法指令必須通過ACC 進(jìn)行。累加器ACC 的指令助記符為。 簡單的講就是一個(gè)8位的存儲(chǔ)器,使用非常頻繁,很多指令中必須用到ACC。,在指令系統(tǒng)中,可直接使用寄存器名ACC(A)和字節(jié)地址E0H對(duì)這八個(gè)二進(jìn)制位進(jìn)行操作,前者稱之為寄存器尋址,后者稱之為直接尋址(direct),用戶一般使用寄存器尋址,即寄存器尋址,在特殊條件下才會(huì)使用直接尋址。累加器ACC也是一個(gè)可以對(duì)8個(gè)二進(jìn)制位進(jìn)行位尋址的寄存器,8個(gè)二進(jìn)制位都有唯一的位地址,指令中只能使用位地址(bit),也稱之為位尋址,若使用位

15、編號(hào),編譯軟件會(huì)將位編號(hào)轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件。,2寄存器(F0H) 80C51單片機(jī)乘除法指令中要用到寄存器,用于存放操作數(shù)和操作結(jié)果。也可作為通用存儲(chǔ)器器使用。 在乘除指令中,直接使用寄存器名B,稱之為寄存器尋址。用作通用存儲(chǔ)器時(shí)只能使用地址F0H稱之為直接尋址,若用寄存器名B,編譯軟件會(huì)將其轉(zhuǎn)換成地址F0H來使用。寄存器B是可以進(jìn)行位尋址的單元,8個(gè)二進(jìn)制位都有唯一的位地址,在對(duì)二進(jìn)制位尋址時(shí),指令中只能使用位地址(bit),稱之為位尋址,若使用位編號(hào),編譯軟件會(huì)將位編號(hào)轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件,見圖3-9所示。,3程序狀態(tài)字寄存器PSW(D0H)

16、程序狀態(tài)字寄存器PSW也稱為標(biāo)志寄存器,存放各有關(guān)標(biāo)志和對(duì)工作寄存器的選擇設(shè)置。其結(jié)構(gòu)和定義如圖3-10所示。在指令系統(tǒng)中該單元只能使用字節(jié)地址D0H來訪問,稱之為直接尋址(direct),若用寄存器名PSW,編譯軟件會(huì)將其轉(zhuǎn)換成地址D0H來使用。程序狀態(tài)字寄存器PSW是可以進(jìn)行位尋址的單元,8個(gè)二進(jìn)制位都有唯一的位地址,在對(duì)二進(jìn)制位尋址時(shí),指令中只能使用位地址(bit),稱之為位尋址,若使用位定義或位編號(hào),編譯軟件會(huì)將位定義和位編號(hào)轉(zhuǎn)換成位地址,再進(jìn)行編譯,最后形成目標(biāo)文件。,該單元各位的定義如下: CY:進(jìn)(借)位標(biāo)志位,有進(jìn)(借)位(CY)1,否則 (CY)0,主要用于加減運(yùn)算中。 AC

17、:輔助進(jìn)(借)位標(biāo)志位,低四位向高四位的進(jìn)(借) 位,有進(jìn)(借)(AC)=1,否則(AC)=0,主要用 于加減運(yùn)算中。 RS1、RS0:工作寄存器組的選擇位,見表3-3所示。,OV:溢出標(biāo)志位,80C51單片機(jī)CPU的位數(shù)是8位,則表示 帶符號(hào)數(shù)的位數(shù)只能是8位,最高位是符號(hào)位,數(shù)據(jù)位 只有7位,數(shù)的范圍在-128+127之間,若運(yùn)算的結(jié)果 超出這個(gè)范圍,溢出(結(jié)果出錯(cuò))。計(jì)算機(jī)中判斷結(jié) 果溢出的算法是 公式:OV =Cy6Cy7 ; 式中,Cy6表示D6位向D7位的進(jìn)位或借位, Cy7表示D6位向CY的進(jìn)位或借位。 F0:用戶位,用戶可以作為一般的一位二進(jìn)制數(shù)的存儲(chǔ)器使 用。 P:奇偶標(biāo)志位

18、,累加器A中1的個(gè)數(shù)為奇數(shù)時(shí)(P)=1,否 則(P)=0,只要A中的數(shù)值發(fā)生變化,就影響P(實(shí)時(shí) 反映累加器A中1的個(gè)數(shù)的奇偶性)。,注: CY、AC、OV、P這4個(gè)標(biāo)志位由指令運(yùn)行后,對(duì)其 產(chǎn)生影響(由硬件產(chǎn)生各標(biāo)志),主要用于算術(shù)運(yùn)算 類指令,除了CY一般這3位不會(huì)用于數(shù)據(jù)的存儲(chǔ), CY也是位處理器(1位的CPU)中的累加器,在位操 作中使用較為頻繁。 P 在任何一條指令中,只要有累加器A出現(xiàn)并且A中的 值發(fā)生變化,就會(huì)影響P。 RS1、RS0是工作寄存器組的選擇位,由用戶根據(jù)需 要通過指令來設(shè)定,去選擇寄存器組(軟件設(shè)定)。,例1:X=13,Y=6,求X+Y的補(bǔ)碼運(yùn)算。 解:X補(bǔ)碼=F3

19、H,Y補(bǔ)碼=FAH, X+Y補(bǔ)碼,則: X補(bǔ)碼 : 1 1 1 1 0 0 1 1 B Y補(bǔ)碼 : + 1 1 1 1 1 0 1 0 B X補(bǔ)碼+Y補(bǔ)碼 : 1 1 1 1 0 1 1 0 1 B 在單片機(jī)中,上述運(yùn)算后,(CY)=1,(AC)=0, (OV)= Cy6Cy7=11=0(結(jié)果正確),(P)=0。,4數(shù)據(jù)指針DPTR(83H、82H) 數(shù)據(jù)指針DPTR是一個(gè)16位的特殊功能寄存器,不可位尋址,由兩個(gè)位寄存器DPH(83H) 和DPL(82H) 組成,DPH 是DPTR的高位,DPL是DPTR的低位,DPTR既可合并作為一個(gè)16位寄存器,又可分開按位寄存器單獨(dú)操作,見圖3-11所

20、示。,在指令中一般都是以一個(gè)16位的寄存器DPTR使用,用于存放外部數(shù)據(jù)存儲(chǔ)器的地址和程序程序器的地址,訪問外部數(shù)據(jù)存儲(chǔ)器是用DPTR,稱之為寄存器間接尋址;訪問程序存儲(chǔ)器是用A+DPTR,稱之為變址尋址。作為兩個(gè)獨(dú)立的8位寄存器(DPH、DPL)使用時(shí),只能使用其地址,在指令系統(tǒng)中會(huì)詳解。,5堆棧指針SP(81H) 堆棧是CPU 用于暫時(shí)存放部分?jǐn)?shù)據(jù)的“倉庫”,它的作用是用來保護(hù)現(xiàn)場和保護(hù)斷點(diǎn)。在80C51中,由內(nèi)部數(shù)據(jù)存儲(chǔ)器中若干存儲(chǔ)單元組成,可由用戶自定義單元地址,一般開辟在內(nèi)部數(shù)據(jù)存儲(chǔ)器30H7FH這個(gè)空間。存儲(chǔ)單元的個(gè)數(shù)稱為堆棧的深度,可理解為倉庫容量。為了實(shí)現(xiàn)上述數(shù)據(jù)保護(hù)的需要,數(shù)

21、據(jù)的存取,要遵循先進(jìn)后出,后進(jìn)先出的原則。80C51單片機(jī)中用堆棧指針SP(81H)來實(shí)現(xiàn)數(shù)據(jù)的先進(jìn)后出,后進(jìn)先出,即不可位尋址。它開辟在特殊功能寄存器81H中,沒有位地址,即不可位尋址,如圖3-12所示,堆棧指針SP是用來存放堆棧數(shù)據(jù)區(qū)的地址,如圖3-13所示。一般為了書寫方便,堆棧的示意圖,如圖3-14所示。,堆棧數(shù)據(jù)的存取又稱之為進(jìn)棧和出棧。進(jìn)棧時(shí),首先堆棧指針加1,即(SP) (SP)+1,然后數(shù)據(jù)進(jìn)棧;出棧時(shí),先取堆棧的數(shù)據(jù),然后堆棧指針減1,即(SP) (SP)-1。 數(shù)據(jù)的進(jìn)棧和出棧,又有兩種操作形式,一是硬件操作,計(jì)算機(jī)執(zhí)行某個(gè)操作時(shí),硬件自動(dòng)進(jìn)棧(中斷、調(diào)用)和出棧(返回指令

22、),用于保護(hù)斷點(diǎn)。二是軟件操作,由指令PUSH direct(進(jìn)棧)和指令POP direct(出棧)來實(shí)現(xiàn)。不管是硬件操作還是軟件操作,進(jìn)棧時(shí),首先堆棧指針加1,然后數(shù)據(jù)進(jìn)棧;出棧時(shí),先取堆棧的數(shù)據(jù),然后堆棧指針減1。下面以軟件操作加以說明。,例2:已知(SP)=2FH,(40H)=22H,(41H)=33H執(zhí)行下列程序。 PUSH 40H PUSH 41H POP 40H POP 41H 解:根據(jù)初始條件,得示意圖,存儲(chǔ)器中沒有提到單元的數(shù)據(jù)為任意值。,執(zhí)行第一條指令 PUSH 40H,首先(SP) (SP)+1 =2FH+1=30H,然后將40H中的數(shù)據(jù)22H,送入堆棧指針SP指向的單元

23、30H中,如圖3-16(a)所示。第一個(gè)進(jìn)棧的數(shù)據(jù)不是堆棧指針指向的初始單元,在計(jì)算機(jī)中數(shù)據(jù)的傳送,不是完全給予的意思,而是復(fù)制,40H單元數(shù)據(jù)進(jìn)棧后,影響了堆棧指針指向的單元,但不影響40H這個(gè)單元的原始數(shù)據(jù),所以40H的數(shù)據(jù)仍為22H。,執(zhí)行第二條指令 PUSH 41H,進(jìn)棧過程同第一條指令。進(jìn)棧后,示意圖如圖3-16(b)所示。,執(zhí)行第三條指令 POP 40H,首先是取堆棧指針指向單元的數(shù)據(jù)給40H,則40H的數(shù)據(jù)為33H,然后將(SP) (SP)-1=31H-1=30H,執(zhí)行完后,示意圖如圖3-16(c)所示。,執(zhí)行第四條指令 POP 41H,出棧過程同第四條指令,示意圖如圖3-16(

24、d)所示。當(dāng)數(shù)據(jù)取出后,堆棧指針又回到初始狀態(tài),如圖3-15所示。但原來進(jìn)棧的數(shù)還存于堆棧中,直到下次進(jìn)棧的數(shù)據(jù)將其覆蓋。,該程序,是將40H和41H的數(shù)據(jù)交換,進(jìn)棧兩次,出棧兩次,所以堆棧指針SP的值,仍為初始值2FH,堆棧指針的初始值指向的單元,是不能用于存放堆棧數(shù)據(jù)的,第一個(gè)入棧的數(shù)據(jù),是該單元的地址加1單元。,系統(tǒng)復(fù)位時(shí)堆棧指示器的值為07H,即指向的是工作寄存器區(qū)0組的R7單元,如圖3-17所示,第一個(gè)入棧的數(shù)放于08H單元,但堆棧一般開辟在用戶區(qū)(30H7FH)中。堆棧的深度是由數(shù)據(jù)連續(xù)進(jìn)棧的次數(shù)來決定的。若根據(jù)某個(gè)程序設(shè)計(jì)的需要,需要16個(gè)單元堆棧來存儲(chǔ)數(shù)據(jù),堆棧開辟在40H到4

25、FH單元,則堆棧指示器SP的初始值應(yīng)付3FH,第一個(gè)入棧的數(shù)放入40H中,在程序的設(shè)計(jì)中,40H41H中不能用于其它的數(shù)據(jù)的存放,否則數(shù)據(jù)被覆蓋。若實(shí)際進(jìn)棧的數(shù)據(jù)超出了16個(gè)單元,則堆棧溢出,溢出的單元在50H以上,這些單元沒有數(shù)據(jù),則沒有影響,否則影響原有數(shù)據(jù)。堆棧指針始終指向的是堆棧的棧頂位置。,注: 51子系列中,共有18個(gè)SFR(特殊功能寄存器), 占用21個(gè)單元,我們先學(xué)5個(gè)SFR(共6個(gè)單元), 其余SFR在后面的學(xué)習(xí)中,會(huì)逐步的給大家介紹。 這18個(gè)SFR,21個(gè)單元中,字節(jié)地址能被8整除的單 元是可以進(jìn)行位尋址的,也就是說字節(jié)地址的后面 一位是0或者8,都是可以進(jìn)行位尋址的(b

26、it)。 可位尋址的單元,可以用位地址、位編號(hào)或位定 義,在尋址中都稱之為位尋址(bit)。 系統(tǒng)復(fù)位后,各寄存器的值如表3-4所示。,3.3.4 程序存儲(chǔ)器 程序存儲(chǔ)器的作用是用來存放程序和數(shù)表(固定不變的常數(shù))。AT89S51單片機(jī)內(nèi)部有4K的程序存儲(chǔ)器FlashROM,外部最多可擴(kuò)展64K的程序存儲(chǔ)器,內(nèi)外程序存儲(chǔ)器采用統(tǒng)一編址的方法,即共用64K的地址,地址范圍0000HFFFFH,不管是內(nèi)部還是外部都是用指令MOVC來訪問。如圖3-18所示。,1.程序存儲(chǔ)器的結(jié)構(gòu) 8051(80C51)系列有64K ROM 的尋址區(qū),地址范圍0000HFFFFH,用于存放程序。 其中低4K(0000H0FFFH) 的地址區(qū)可以為片內(nèi)ROM 和片外ROM共用,但不能同時(shí)使用(由外引腳 決定)。 高60K(1000HFFFFH) 的地址區(qū)為片外ROM所專用。,注: 低4K共用地址,這樣出現(xiàn)一個(gè)地址兩個(gè)單元,地址不能 唯一,這在計(jì)算機(jī)中是不允許的; 解決方法,通過單片機(jī)的外引腳 來實(shí)現(xiàn): a、當(dāng) EA=0時(shí),CPU直接訪問ROM(0000HFFFFH), 內(nèi)部不用; b、 當(dāng) EA=1時(shí),CPU先訪問內(nèi)部ROM(0000H0FFFH) 結(jié)束后,再去訪問外部ROM (1000HFFFFH),外部低4K不用,也 就是說外部低4K無需擴(kuò)展,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論