第2章 存儲器的認(rèn)識_第1頁
第2章 存儲器的認(rèn)識_第2頁
第2章 存儲器的認(rèn)識_第3頁
第2章 存儲器的認(rèn)識_第4頁
第2章 存儲器的認(rèn)識_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第1節(jié) 存儲器的認(rèn)識n一、任務(wù)目標(biāo)n 學(xué)習(xí)51單片機的存儲器結(jié)構(gòu)。通過本任務(wù)的學(xué)習(xí),使讀者掌握51單片機存儲器的結(jié)構(gòu)及使用方法。n二、任務(wù)分析n 在單片機中,用戶設(shè)計好的程序及程序運行時的數(shù)據(jù)要放到一個載體里,這個載體就叫存儲器(集成電路)。2第1節(jié) 存儲器的認(rèn)識n 程序設(shè)計完成后寫到存儲器中,在單片機運行時程序只需從存儲器中讀取出來運行。用來存放程序的存儲器,我們稱之為程序存儲器(只讀存儲器),簡稱ROM。而在單片機運行時,數(shù)據(jù)將隨著程序的運行發(fā)生變化,我們將存放數(shù)據(jù)的存儲器稱為數(shù)據(jù)存儲器(隨機存儲器),簡稱RAM。3第1節(jié) 存儲器的認(rèn)識n 單片機的存儲器又可分為片內(nèi)和片外存儲器。片內(nèi)存儲

2、器是在單片機內(nèi)部的存儲器,通常容量有限。當(dāng)單片機程序很大,同時單片機運行時的數(shù)據(jù)較大,片內(nèi)存儲器容量不夠,就需要對單片機擴展外部存儲器,這就是片外存儲器。 n 綜上所述,51單片機有兩種存儲器:程序存儲器和數(shù)據(jù)存儲器。51單片機同時擁有4個存儲空間(物理結(jié)構(gòu)上):片內(nèi)ROM、片外ROM、片內(nèi)RAM和片外RAM。圖2-1所示為51單片機存儲器地址空間,其中使用最頻繁的是片內(nèi)數(shù)據(jù)存儲器,應(yīng)重點掌握。4第1節(jié) 存儲器的認(rèn)識n 圖2-1 51單片機存儲器地址空間5第1節(jié) 存儲器的認(rèn)識n三、相關(guān)知識n1程序存儲器n 程序存儲器用于存放用戶程序、數(shù)據(jù)和表格等信息,其存儲單元只能讀不能寫。51單片機程序存儲

3、器有16位地址,可尋址的范圍為64KB,因此片外程序存儲器最大容量為64KB,而片內(nèi)程序存儲器容量為4KB。程序存儲器在物理結(jié)構(gòu)上分為片內(nèi)程序存儲器和片外程序存儲器兩個部分,在邏輯結(jié)構(gòu)上(即用戶使用角度)為一個部分,采用同一指令(MOVC指令)進行數(shù)據(jù)讀取,用外部引腳進行區(qū)分低4KB空間使用的是片內(nèi)程序存儲器還是片外程序存儲器。6第1節(jié) 存儲器的認(rèn)識n 對于8031單片機來說,它的內(nèi)部沒有ROM,因此,在實際使用時,必須對它擴展外部程序存儲器,最大可擴展空間地址為64KB,此時8031單片機的端必須接地,強制CPU從外部程序存儲器讀取程序。對于內(nèi)部有ROM的8051,8751,89C51,89

4、S51等單片機,正常運行時,則需接高電平,使CPU先讀內(nèi)部程序存儲器中的程序,當(dāng)PC值超過內(nèi)部ROM的容量時,才會轉(zhuǎn)而讀外部程序存儲器中的程序。7第1節(jié) 存儲器的認(rèn)識n2數(shù)據(jù)存儲器n 數(shù)據(jù)存儲器也稱為隨機存取存儲器,用于存取程序運行時的中間結(jié)果、標(biāo)志位及控制功能數(shù)據(jù)等。51單片機的數(shù)據(jù)存儲器在物理上和邏輯上都分為兩個地址空間:片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。8第1節(jié) 存儲器的認(rèn)識n(1)片內(nèi)數(shù)據(jù)存儲器n 51單片機內(nèi)部數(shù)據(jù)存儲器地址為8位,可尋址的范圍為256B,但實際的片內(nèi)數(shù)據(jù)存儲器因單片機型號不同有所不同:其中8031,8051,8751,89C51,89S51等51子系列為256B,而8

5、032,8052,8752,89C52,89S52等52子系列為384B。實際提供給用戶使用的片內(nèi)數(shù)據(jù)存儲器容量對51子系列為128B,對52子系列為256B,它們是用于存放程序執(zhí)行的中間結(jié)果和過程數(shù)據(jù)的。9第1節(jié) 存儲器的認(rèn)識n 片內(nèi)256個字節(jié)數(shù)據(jù)存儲器分為兩部分:低128字節(jié)為用戶數(shù)據(jù)RAM單元,地址為00H7FH,該部分為用戶數(shù)據(jù)存取使用;高128字節(jié)為特殊功能寄存器(SFR)單元,地址為80HFFH,該部分為單片機功能控制用。n片內(nèi)數(shù)據(jù)存儲器低128B根據(jù)其用途的不同,又可分為3個區(qū):工作寄存器區(qū),地址為00H1FH,共32個字節(jié),該區(qū)為工作寄存器使用;位尋址區(qū),地址為20H2FH,

6、共16個字節(jié)128位,位地址為00H7FH,該區(qū)單元既可按字節(jié)操作,又可按位操作;用戶RAM區(qū),地址為30H7FH,共80個字節(jié),該區(qū)為用戶數(shù)據(jù)存取使用,只能按字節(jié)操作。 10第1節(jié) 存儲器的認(rèn)識n 工作寄存器區(qū)32個字節(jié)被均勻地分為4個組,每組有8個工作寄存器,均以R0R7來命名。第0組工作寄存器,地址為00H07H;第1組工作寄存器,地址為08H0FH;第2組工作寄存器,地址為10H17H;第3組工作寄存器,地址為18H1FHH。在程序運行時,究竟使用的是哪組工作寄存器,就要通過一個特殊功能寄存器程序狀態(tài)字寄存器(PSW)的第4和第3位(RS1和RS0)的值來區(qū)分它們。RS1和RS0為00

7、則用第0組工作寄存器;RS1和RS0為01則用第1組工作寄存器;RS1和RS0為10則用第2組工作寄存器;RS1和RS0為11則用第3組工作寄存器。若程序中并不需要4組,那么其余的可作為一般的數(shù)據(jù)存儲器。CPU復(fù)位后,選中第0組工作寄存器。11第1節(jié) 存儲器的認(rèn)識n 特殊功能寄存器區(qū)離散地分布了21個特殊功能寄存器(又稱為專用寄存器),這些寄存器反映了51單片機的運行狀態(tài),很多功能均是通過特殊功能寄存器來定義和控制執(zhí)行的,這些寄存的功能已做了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。例如累加器A、寄存器B、程序狀態(tài)字寄存器(PSW)、數(shù)據(jù)指針(DPTR)、I/O口寄存器P0P3等均為特殊功能寄存器。 1

8、2第1節(jié) 存儲器的認(rèn)識n 對52子系列的高128B(地址為80HFFH)對應(yīng)兩個物理空間,一個空間作為用戶RAM區(qū),為用戶使用;另一空間作為特殊功能寄存器區(qū),為單片機功能部件控制使用,兩部分地址重疊,但通過不同的尋址方式可將它們區(qū)分開:對80HFFH的用戶RAM區(qū)只能采用寄存器間接尋址方式訪問,而對SFR區(qū)只能采用直接尋址方式訪問。片內(nèi)數(shù)據(jù)存儲器是程序設(shè)計中使用頻率最高的存儲器部分,用戶的許多參數(shù)、變量及單片機功能控制寄存器均取自于該部分存儲器。13第1節(jié) 存儲器的認(rèn)識n(2)片外數(shù)據(jù)存儲器結(jié)構(gòu)n 51單片機片外數(shù)據(jù)存儲器為16位地址空間,因此最多可擴展64KB的片外RAM。由圖2-1可知,片

9、內(nèi)RAM和片外RAM的低256B的地址相同,但它們卻是兩個不同的地址空間。區(qū)分這兩個地址空間的方法是采用不同的指令,訪問片內(nèi)RAM用MOV指令,訪問片外RAM用MOVX指令。14第1節(jié) 存儲器的認(rèn)識n四、任務(wù)實施n1單片機存儲器總體分配n 單片機存儲總體分配圖如圖2-2所示。n2單片機存儲器各部分的功能及使用注意n 單片機存儲器各部分的功能及使用注意如圖2-3所示。n3單片機片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)n 單片機片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)如圖2-4所示。15第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)一 存儲器的認(rèn)識n 圖2-2 單片機存儲器總體分配圖16n 圖2-3 單片機存儲器各部分的功能及使用注意17第1節(jié) 匯編

10、語言程序設(shè)計基礎(chǔ)任務(wù)一 存儲器的認(rèn)識n 圖2-4 單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)18第1節(jié) 存儲器的認(rèn)識n4軟件仿真時存儲器的觀察窗口n 在編寫好程序后,必須用偉?;騅eil軟件對編譯通過的程序進行調(diào)試,在調(diào)試過程中打開工作寄存器窗口、特殊功能寄存器窗口和內(nèi)部RAM窗口,進行程序運行時各輸入端口狀態(tài)的設(shè)置,觀察程序運行過程中各相關(guān)單元的值。在程序調(diào)試時,先用單步或跟蹤運行,在程序調(diào)試通過后再用全速運行,如圖2-5圖2-8所示。 19第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)一 存儲器的認(rèn)識n 圖2-5 偉福軟件特殊功能寄存器觀察窗口 圖2-6 偉福軟件存儲器觀察窗口 20第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)一 存

11、儲器的認(rèn)識n 圖2-7 Keil軟件CPU寄存器觀察窗口 圖2-8 Keil軟件存儲器觀察窗口 21n三、相關(guān)知識n1特殊功能寄存器n(1)累加器(ACC)n ACC是8位寄存器,它是一個最常用的特殊功能寄存器(專用寄存器),其在SFR中的地址為E0H,在指令中常將ACC簡寫為A。大部分單操作數(shù)指令的操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。加、減、乘、除法運算指令,運算結(jié)果都存放于A或寄存器B中。大部分的數(shù)據(jù)操作都會通過累加器A進行,在程序比較復(fù)雜的運算中,累加器成了制約軟件效率的“瓶頸”,它的功能較多,地位也十分重要。 22n(2)程序狀態(tài)字寄存器(PSW)n PSW是

12、一個8位寄存器,它也是一個特殊功能寄存器,其在SFR中的地址為D0H,用于存放程序運行中的各種狀態(tài)信息,這個寄存器的一些位可由軟件設(shè)置,有些位則由硬件自動設(shè)置。寄存器的各位定義及功能如表2-1所示。 23第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)二 尋址方式的認(rèn)識n 位 序位 標(biāo) 志位 名 稱功 能PSW.0P奇偶校驗位表明A內(nèi)容的奇偶性,凡是改變A中內(nèi)容的指令均影響奇偶校驗位,若A中值為1的位數(shù)為奇數(shù),則P置1,否則清0PSW.1F1用戶標(biāo)志位供用戶設(shè)置的標(biāo)志位,由用戶置1或清0PSW.2OV溢出標(biāo)志在有符號加減法運算中,如運算結(jié)果超出8位有符號數(shù)的有效范圍(128+127)時,即產(chǎn)生溢出,OV=1,

13、表明運算結(jié)果錯誤;如運算結(jié)果沒有超出有效范圍,則OV=0,表明運算結(jié)果正確。執(zhí)行加法指令時,當(dāng)位6向位7有進位,而位7向CY沒有進位時,OV=1。或者位6向位7沒有進位,而位7向CY有進位時,同樣OV=1。所以O(shè)V為位6進位與位7進位的異或,即OV=CY6 CY7。執(zhí)行乘法指令時,乘積超過255時,OV=1,乘積在AB寄存器中;若OV=0,則說明乘積沒有超過255,乘積只在累加器A中。執(zhí)行除法指令時,OV=1,表示除數(shù)為0,運算不被執(zhí)行;否則OV=0。表2-1程序狀態(tài)字寄存器位定義及位功能表24第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)二 尋址方式的認(rèn)識n 位 序位 標(biāo) 志位 名 稱功 能PSW.4PS

14、W.3RS1RS0工作寄存器組選擇位RS1RS0工作寄存器組00第0組(00H07H)01第1組(08H0FH)00第2組(10H17H)11第3組(18H1FH)PSW.5F0用戶標(biāo)志位供用戶設(shè)置的標(biāo)志位,由用戶置1或清0PSW.6AC輔助進位標(biāo)志位當(dāng)進行加、減運算時當(dāng)?shù)?位向高4位有進位或借位時,AC置1,否則清0。AC輔助進位位常用于十進制調(diào)整PSW.7CY進位標(biāo)志位此位有兩個功能:一是執(zhí)行加法或減法運算時,存放運算結(jié)果的進位或借位標(biāo)志,當(dāng)運算結(jié)果的最高位有進位或借位時置1,否則清0;二是在位操作中作為累加位使用,在指令中常簡寫為C表2-1程序狀態(tài)字寄存器位定義及位功能表25n(3)數(shù)據(jù)

15、指針(DPTR)n DPTR為16位寄存器,其在SFR中的地址為83H和82H。它通常在訪問外部數(shù)據(jù)存儲器時作為地址指針使用。編程時既可以按16位寄存器來使用,也可以按兩個8位寄存器來使用,即高字節(jié)寄存器(DPH,地址為83H)和低字節(jié)寄存器(DPL,地址為82H)。當(dāng)訪問程序存儲器時,DPTR可用來作為基址寄存器,采用基址+變址尋址方式訪問程序存儲器。 26n2程序計數(shù)器(PC)n PC在物理上是獨立的,它不屬于特殊功能寄存器區(qū)的一個寄存器。PC是一個16位的計數(shù)器,它的作用是控制程序的執(zhí)行順序,用于存放一條將要執(zhí)行的指令地址,尋址范圍為64KB。PC有自動加1功能,即完成了一條指令的執(zhí)行后

16、,其內(nèi)容自動加1。PC本身并沒有地址,因而不可尋址,用戶無法對它進行讀寫,但是可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按用戶要求去執(zhí)行。 27n3片內(nèi)RAM位尋址區(qū)位地址n 內(nèi)部RAM中的位尋址區(qū)20H2FH單元,共有16個字節(jié),128個位,位地址為00H7FH,位地址分配如表2-2所示。CPU能直接尋址這些位,執(zhí)行例如置1、清0、取反、位傳送和位邏輯運算等操作。我們常稱51單片機具有布爾處理功能,布爾處理的存儲空間指的就是這個位尋址區(qū)。 28第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)二 尋址方式的認(rèn)識單 元 地 址 MSB 位地址 LSB2FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H表2-2片內(nèi)RAM位尋址區(qū)位地址表29第1節(jié) 匯編語言程序設(shè)計基礎(chǔ)任務(wù)二 尋址方式的認(rèn)識n 單 元 地 址 MSB 位地址 LSB29H4FH4EH4DH4CH4BH4AH49

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論