




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、程序存儲器 內部程序存儲器、外部程序存儲器,容量為64KB,地址編碼范圍為0000HFFFFH)片內數據存儲器 包括00HFFH共256字節的內部RAM存儲器及特殊功能寄存器外部數據存儲器 地址編碼范圍為0000HFFFFH,容量為64KB存儲器結構哈佛體系結構與普林斯頓體系結構哈佛體系結構的程序存儲器與數據存儲器都擁有自己獨立的總線和尋址空間(典型的如DSP,TI的C5000系列)普林斯頓體系結構的程序存儲器與數據存儲器統一編址,公用一組總線;(x86,PC機)MCS-51:準哈佛體系結構,因為總線分時復用2.2.1內部數據存儲器1. 片內RAM及其尋址方式8XC51、8XC31內部RAM的
2、容量為128字節(00H7FH);8XC52/54/58片內RAM容量為256 字節(00H0FFH)。根據用途可將內部RAM劃分為工作寄存器區、位尋址區和用戶數據存儲器區(可作用戶RAM或堆棧區) 1. 片內RAM及其尋址方式對于低128字節(00H7FH)內部RAM,可使用直接尋址方式或寄存器間接尋址方式讀寫,如:MOV 30H,40H ;將內部RAM 40H單元內容寫入內部RAM 30H單元MOV 30H,#35H ;將立即數35H寫入內部RAM 30H單元MOV R0,#35H ;通過寄存器間接尋址方式將立即數35H寫入由R0指定的內部RAM單元中由于高128字節(80HFFH)RAM
3、地址編碼與特殊功能寄存器地址重疊,因此,只能用寄存器間接尋址方式訪問高128字節內部RAM,如:MOV R0,#80H;內部RAM地址送間接尋址寄存器R0MOV A,R0;通過間接尋址方式,將80H單元內容送累加器A(讀)MOV R0, A;通過間接尋址方式,將累加器A內容送80H單元(寫)(1) 工作寄存器區。該區域容量為32個字節,分為四個區,每區8個字節,對應R0R7寄存器名。因此,R0的物理地址可能是00H,也可能是08H、10H 或18H;同理,R1的物理地址可能是01H,也可能是09H、11H或19H。 任何時候都只能選擇四個工作寄存器區中的一個區作為當前工作寄存器區,當前工作寄存
4、器區由程序狀態字寄存器PSW的b4(RS1)、b3(RS0)位確定,具體情況如下:PSW寄存器b4、b3位 當前區 寄存器R7R0地址 00 0區 07H00H 01 1區 0FH08H 10 2區 17H10H 11 3區 1FH18H由于復位后PSW的b4、b3位為00,因此復位后將選擇0區作為當前工作寄存器區。修改PSW的b4、b3位即可選擇不同的工作寄存器區,這有利于快速保護現場,提高程序執行效率和中斷的響應速度。(2) 位尋址區。20H2FH單元屬位尋址區,共16字節。該區域可按字節讀/寫,也可按位讀/寫。位地址從20H單元開始,20H單元b0位的位地址為00H,20H單元b1位的位
5、地址為01H,20H單元b2位的位地址為02H。依此類推,21H單元b0位的位地址為08H,2FH單元b7位的位地址為7FH如果系統中需要位操作,則最好保留20H2FH單元的部分或全部作位存儲區,以方便位尋址操作。位尋址區MCS-51系列單片機既是8位機,同時也是一片功能完善的一位機。作一位機使用時,它有自己的CPU、位存儲區、位寄存器、位累加器(進位標志Cy)以及完整的位操作指令,包括置1、清零、非(取反)、與、或、傳送、測試轉移等。對于位存儲器(即20H2FH單元中的128個位),只能使用直接尋址方式確定操作數所在的存儲單元如:MOV C,23H ;位傳送指令,即將位地址23H單元(對應2
6、4H字節單元的b3位)內容傳送到位累加器C中(3) 用戶數據存儲器區。30H單元以后均可作為內部用戶RAM或堆棧區。由于復位后,堆棧指針SP指向07H單元,因此一般需要將SP設在2FH之上。2. 2. 特殊功能寄存器特殊功能寄存器由于單片機芯片內集成了一些常用的外圍接口電路,如并行I/O端口、串行口、定時/計數器、中斷控制器等,因此這些外圍接口電路的控制寄存器、狀態寄存器以及數據寄存器也就位于芯片內,統稱為特殊功能寄存器(Special Function Registers,SFR)。MCS-51 CPU與通用微處理不同,除了給外設接口電路相關寄存器,如定時/計數器控制寄存器TCON分配字節地
7、址外,CPU內的寄存器也分配有字節地址,如累加器Acc的字節為0E0H。增強型MCS-51系列單片機內共有32個特殊功能寄存器(在標準MCS-52單片機基礎上增加了6個新的特殊功能寄存器),地址分散在80HFFH之間。 特殊功能寄存器地址映像特殊功能寄存器地址映像對于具有位地址的特殊功能寄存器中的位,在指令中除了用“位地址”外,還可以用“位定義名”或“寄存器名.位”形式表示。例如,將程序狀態字寄存器PSW中的b3 位清零,可以用:CLR D3H ;位地址形式CLR RS0 ;位定義名形式。作為一個良好的編程習慣,建議使用“位定義名”形式CLR PSW.3;“寄存器名.位”形式盡管書寫形式不同,
8、但匯編時匯編程序均自動轉換為“位地址”形式,因此這三條指令完全等效,不過使用“位定義名”和“寄存器名.位”形式更直觀。“寄存器名.位”表示形式不僅適用于具有位尋址的特殊功能寄存器,也適用于具有位尋址的內部RAM單元。例如,使用“BYTEBIT DATA 20H”偽指令定義BYTEBIT變量后,如下三條指令完全等效。 MOV C,BYTEBIT.1MOV C,20H.1MOV C,01H1) 累加器累加器Acc是CPU內的通用寄存器,常用于存放參加算術或邏輯運算的兩個操作數中的一個及運算結果,例如:ADD A,30H ;在指令中,累加器Acc常簡寫為“A”該指令的含義是:以累加器Acc中的內容作
9、為被加數,加數存放在內部RAM的30H單元中,相加后的結果(即和)再存放到累加器Acc中2) B寄存器B寄存器也是CPU內的通用寄存器,主要用于乘法和除法運算。在乘法運算中,被乘數放在累加器Acc中,乘數放在B寄存器中。運算后,積的高8位存放B寄存器中,低8位存放在累加器Acc中,如: MUL AB ;BAAB在除法運算中,被除數放在累加器Acc中,除數放在B寄存器中。運算后,商放在累加器Acc中,余數放在B寄存器中。3) 程序狀態字寄存器程序狀態字寄存器PSW由標志位組成,用于存放指令運行的狀態。在MCS-51系列單片機中PSW寄存器各位含義如下:Cy進位標志。當進行加法運算,最高位(即b7
10、位)有進位時,或當執行減法運算,最高位有借位時,Cy為1;反之為0。AC輔助進位標志。當進行加法運算,b3位有進位時,或當執行減法運算,b3位有借位時,AC為1;反之為0。OV 溢出標志。在計算機內,帶符號數一律用補碼表示。在8位二進制中,補碼所能表示的范圍是128127,運算結果超出這一范圍時,OV 標志為1,即溢出;反之為0。P奇偶標志。體現累加器Acc中“1”的個數的奇偶性。如果累加器Acc中“1”的個數為奇數,則P位為1;為偶數(包括0個)時,P位為0。RS1、RS0工作寄存器組選擇位F0用戶標志位PSW.1保留位。注:在MCS-51系列單片機中,Z(零)標志對程序員不透明,只要累加器
11、Acc為0,Z標志就為1。例2.1 分析如下指令執行后,PSW寄存器各標志位的狀態。MOV A,#10101101B ;把立即數ADH送累加器A,5個“1”,奇偶標志位P為1ADD A,#01111101B ;ADH與7DH相加,結果存放在A中 1 0 1 0 1 1 0 1;173(無符號數),83(帶符號數) 0 1 1 1 1 1 0 1;125(無符號數),125(帶符號數) 1 0 0 1 0 1 0 1 0 ;作為無符號數時,和為12AH(由于結果超出FFH,前面的“1”自動丟失,寄存器A的內容為2AH),即298;作為有符號數時,和為2AH,即42由于b7位向前進位,因此Cy位為
12、1;b3位也有進位,AC位也為1;而作為帶符號數時,結果為42,沒有超出128127,OV標志位為0。事實上,兩個異號數相加,結果不會溢出,OV標志位總為0。而A中含有3個“1”,因此P標志位為1。 1 0 1 0 1 1 0 1;173(無符號數),83(帶符號數) 0 1 1 1 1 1 0 1;125(無符號數),125(帶符號數) 1 0 0 1 0 1 0 1 0 ;作為無符號數時,和為12AH(由于結果超出FFH,前面的“1”自動丟失,寄存器A的內容為2AH),即298;作為有符號數時,和為2AH,即42由于b7位向前進位,因此Cy位為1;b3位也有進位,AC位也為1;而作為帶符號
13、數時,結果為42,沒有超出128127,OV標志位為0。事實上,兩個異號數相加,結果不會溢出,OV標志位總為0。而A中含有3個“1”,因此P標志位為1。例2.2 分析如下指令執行后,PSW寄存器各標志位的狀態。MOV A,#10101101B ;把立即數0ADH送累加器A,由于立即數0ADH 中共有5個“1”,因此該指令執行后,奇偶標志位P為1ADD A,#10011101B;0ADH與9DH相加,結果存放在A中PWS分析 1 0 1 0 1 1 0 1 ;173(無符號數);83(帶符號數 1 0 0 1 1 1 0 1 ;157(無符號數);99(帶符號數) 1 0 1 0 0 1 0 1
14、 0 ;作為無符號數時,和為14AH,330作為有符號數時,和為182由于b7位向前進位,因此Cy位為1;b3位也有進位,AC位也為1;作為帶符號數時,結果為4AH,即74,之所以出錯,是因為83加99的結果為182,超出128127,OV標志位為1。溢出條件總結:兩個同號數相加,結果可能溢出兩個異號數相加,結果肯定不會溢出兩個同號數相減,結果肯定不會溢出而兩個異號數相減,結果可能溢出當溢出標志OV為1時,表示結果不正確。4) 堆棧指針在計算機內,需要一塊具有“先進后出”(First In Last Out,FILO)特性的存儲區,用于存放子程序調用(包括中斷響應)時程序計數器PC的當前值,以
15、及需要保存的CPU內各寄存器的值(即現場),以便子程序或中斷服務程序執行結束后能正確返回主程序。這一存儲區稱為堆棧區。堆棧指針SP寄存器:指示最后進入堆棧的數據所在存儲單元的地址MCS-51系列單片機中,SP可以指向內部RAM中任一單元,且堆棧向上生長,即將數據壓入堆棧后,SP寄存器內容增大。假設SP當前值為2FH,則入堆指令“PUSH B”(將寄存器B內容壓入堆棧)的執行過程如圖2-10所示。假設SP當前值為2FH,則入堆指令“PUSH B”(將寄存器B內容壓入堆棧)的執行過程:(a) PUSH B指令執行前;(b) SP加1;(c) 寄存器B內容存入SP指定的單元中將數據從堆棧中彈出時,S
16、P減小。例如,將保存在堆棧中的信息彈到寄存器B的操作過程:(a) POP B指令執行前;(b) 將SP指定單元內容傳送到寄存器B中;(c) SP減1堆棧的底部是固定的,而堆棧的頂部則隨著數據的入棧和出棧上下浮動。系統復位后,PSW的b4、b3位為00,即選擇了工作寄存器區中的0區作為當前工作寄存器區。SP寄存器的初值為07H,當有數據進入堆棧時,將從08H單元開始存放,但這一般是不允許的。因為08H1FH屬于工作寄存器區,不宜占用;20H2FH是位地址區,也需要部分或全部保留。因此,必須通過數據傳送指令重新設置SP的初值,將堆棧底部設在30H7FH對于只有128字節內部RAM的8XC31、8X
17、C51)或80HFFH(對于具有256字節內部RAM的32、52/54/58)之間例如: MOV SP,#5FH ;將堆棧設在60H單元之后CPU內30HFFH單元既可以作為堆棧區,同時也是用戶數據存儲區,區域劃分原則:在設置SP初值時,必須考慮堆棧最大深度:對于僅有低128字節內部RAM的80C31、80C51來說,當SP超出7FH時會發生上溢,這將出現不可預料的后果。子程序或中斷嵌套層數越多,所需的堆棧深度就越大。為了避免堆棧頂部進入用戶數據存儲區而造成混亂,一般可將堆棧設在用戶數據區之上。如在某一應用系統中,需要32個字節作為用戶數據存儲區(如30H4FH),則初始化時應將堆棧底部設在5
18、0H,即堆棧深度為48個字節(50H7FH)。MOV SP, #4FH;SP初值為4FH對于具有高128字節內部RAM的8XC32、8XC52/54/58等CPU來說,將堆棧區設在80H-0FFH之間的高128字節內部RAM中,而將具有直接尋址功能的低128字節內部RAM作為用戶數據區,以便使用直接尋址方式存取用戶數據。SP不允許超出0FFH,否則同樣會發生上溢。例如,預計某系統所需最大堆棧深度為32字節,可通過如下指令將棧底設在E0H處。 MOV SP, #DFH;SP初值為0DFH涉及入棧出棧操作的指令有:PUSH direct ;將內部RAM單元壓入堆棧中POP direct ;從堆棧中
19、將數據彈入內部RAM5) I/O端口寄存器P0、P1、P2、P3口寄存器實際上就是P0P3口對應的I/O端口鎖存器,用于鎖存通過I/O口輸出的數據。特殊功能寄存器屬于不同的單元電路的相似情況:在增強型MCS-51中,具體如下:CPU單元包含的寄存器:Acc、B、SP、PSW、DPTR、AUXR、AUXR1和程序計數器PC PC是一個16位的地址寄存器,用于存放當前指令碼在程序存儲器中的地址,但PC不屬于特殊功能寄存器,它也沒有物理地址。定時/計數器單元包含的寄存器: TMOD、TCON、T2CON、T2MOD、TH0與TL0(分別是定時器T0的高8位和低8位)、TH1與TL1(分別是定時器T1
20、的高8位和低8位)、TH2與TL2(分別是定時器T2的高8位和低8位)以及RCAP2L與RCAP2H(定時器T2的重裝/捕捉寄存器)。中斷單元電路內的寄存器:IE、IP和IPH。串行通信單元電路內的寄存器:SCON、SBUF、PCON、SADDR和SADEN。2.2.2 2.2.2 程序存儲器程序存儲器1. 1. 程序存儲器結構程序存儲器結構對于帶有片內ROM的MCS-51系列單片機來說,片內程序存儲器和外部程序存儲器地址空間重疊。如果EA引腳為高電平,先從片內程序存儲器取指令(在這種情況下,PSEN信號無效);當PC超出片內ROM地址空間時,自動到外部程序存儲器取指令,并通過P0口輸出低8位
21、地址(A0A7),P2口輸出高8位地址(A15A8)。如果EA引腳為低電平,則一律從外部程序存儲器取指令。程序存儲器結構對于不帶ROM或EPROM的80C31、80C32 CPU來說,EA引腳一律接地。在增強型MCS-51系列單片機中,大部分芯片均內置了不同容量的OTP EPROM (一次性編程的只讀存儲器,即沒有擦除窗口的EPROM)和Flash ROM,一般無需使用外部程序存儲器芯片,EA引腳 一律通過2.04.7 k電阻與電源VCC相連。程序存儲器地址空間分布:操 作入 口 地 址復位0000H外部中斷00003H定時器/計數器0000BH外部中斷10013H定時器/計數器1001BH串
22、行口中斷0023H定時器/計數器2002BH復位后,程序計數器PC為0000H,從程序存儲器的0000H單元讀出第一條指令,在0000H單元內放置一條跳轉指令,LJMP xxxx(xxxx為主程序入口地址標號)。由于系統給每個中斷服務程序預留了8個字節,用戶主程序一般存放在0033H單元以后ORG 0000H;用偽指令ORG指示隨后的指令碼0000HLJMP Main;在0000H單元放長跳轉指令,共3個字節ORG 0003HLJMP INT0;跳到外中斷服務程序的入口處;初始化其他中斷入口地址ORG 50H ;主程序代碼從50H單元開始存放Main:;Main是主程序入口地址標號程序存儲器地
23、址空間劃分程序2. 2. 程序存儲器讀操作程序存儲器讀操作可以用數據指針DPTR作變址寄存器,累加器Acc作基址寄存器,通過變址尋址方式讀出存放在程序存儲器中的常數,如:MOVC A, A+DPTR;將DPTRA指定的程序存儲器單元信息送累加器Acc2.2.3 2.2.3 外部數據存儲器外部數據存儲器通過P0口、P2口最多可以連接64KB的外部數據存儲器,有關外部數據存儲器的連接及讀寫方式參閱2.5節。這里先介紹與外部數據存儲器訪問方式有關的寄存器。在增強型MCS-51芯片中,與外部數據存儲器讀寫有關的寄存器包括數據指針DPTR、輔助功能寄存器(AUXR)及輔助功能寄存器1(AUXR1),與外部數據存儲器讀/寫有關的MOVX指令包括:MOVX A,Ri ;將Ri寄存器指定的外部RAM單元(低8位外部數據存儲器地址存放在Ri寄存器中,尋址范圍為00HFFH)內容傳送到累加器A(讀操作)外部數據存儲器擴展圖MOVX Ri,A;將累加器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融機構財務擔保合同會計管理細則
- 跨區域車輛損壞賠償合同
- 餐飲業員工勞動合同解除與競業限制協議
- 燃燒室聲學分析-洞察及研究
- 城市化進程中的孤獨感研究-洞察闡釋
- 混動汽車綠色環保優勢-洞察闡釋
- 電商平臺競爭力分析-洞察闡釋
- 藥店員工培訓滿意度調查-洞察闡釋
- 中樞神經系統疾病精準診療新策略-洞察闡釋
- 新教材新課標人教音樂一年級上冊《多樣的課堂打擊樂》課件
- 敘事護理學智慧樹知到答案2024年中國人民解放軍海軍軍醫大學
- DB65-T 4747-2024 地表水自壓滴灌工程設計規范
- 2024小學語文教學及說課課件:六年級上冊《只有一個地球》
- 2023年甘肅蘭州中考滿分作文《喚起心中的勇敢》
- 國企文秘筆試題
- HG∕T 4380-2012 液-固微旋流分離器技術條件
- 《經濟法基礎》全套教學課件
- 人教版高中數學知識點(全冊版)
- 成都市高新區五年級語文調考真題試卷
- 人教版一年級下冊 第六單元 小白船 教案+教學設計+素材
- 山東省棗莊市薛城區2023-2024學年八年級下學期7月期末歷史試題(無答案)
評論
0/150
提交評論