單片機原理及應用教案-第2章_第1頁
單片機原理及應用教案-第2章_第2頁
單片機原理及應用教案-第2章_第3頁
單片機原理及應用教案-第2章_第4頁
單片機原理及應用教案-第2章_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2課 教學內容:1.6 單片機的數(shù)制、 碼制與編碼第2章 MCS-51 單片機基本知識2.1 MCS-51單片機內部資源中央處理單元CPU教學目標: 了解:單片機基本資源情況。掌握:CPU的組成、功能牢固掌握:特殊功能寄存器的結構、功能和各位的設置;二進制碼制、補碼及編碼。課時安排:     3 課時 教學重點:     CPU的組成、功能;特殊功能寄存器的結構、功能和各位的設置;二進制碼制、補碼及編碼。教學提示: 一、重點內容與要點分析 (一)單片機的數(shù)制、碼制與編碼1數(shù)制(1)二進制(Binary)·

2、;二進制的特點:數(shù)碼為0、1;逢2進1,借1頂2。·二進制數(shù)以冪級數(shù)形式表示時,2為基數(shù),其i位的權是2i。如:101101.11B=1×25+0×24+1×23+1×22+0×21+1×20+1×21+1×22 =32+0+8+4+0+1+0.5+0.25 =45.7,其中最高位的權是25,次高位的權是24,等等。二進制數(shù)N的通式是各位的數(shù)碼a與其所在位的權2i乘積之和。即N=式中 n整數(shù)部分位數(shù); m小數(shù)部分位數(shù); a第i位數(shù)碼; 2i第i位數(shù)的權;(2)十六進制(Hexadecimal)十六進制的特

3、點是:·16個數(shù)碼:0、1、2、3、4、5、6、7、8、9、A、B、D、D、E、F,其中A、B、C、D、E、F相當于10、11、12、13、14、15 。·逢十六進一,借一頂十六。十六進制數(shù)以冪級數(shù)形式表達時,16為基數(shù),其i位的權是16i。十六進制數(shù)的最后均標有字母H。如:FAH=F×16+A×16=15×16+10×1=250。十六進制數(shù)N的通式也是各位的數(shù)碼ai與其所在位的權16i乘積之和。即N=±式中 n整數(shù)部分位數(shù);m小數(shù)部分位數(shù);ai第i位數(shù)碼;16i第i位數(shù)的權;(3)二進制數(shù)與十六進制數(shù)轉換1)二進制數(shù)轉換成

4、十六進制數(shù)二進制數(shù)變十六進制數(shù)是最好轉換的。一般的辦法是,四位合一位法。即,以小數(shù)點為界,向前、后每四位二進制數(shù)合一位十六進制數(shù),不夠四位補“0”,如: 1110 0011 . 1001 0100 B = 0E3.94H E 3 . 9 4 H 2)十六進制數(shù)轉換為二進制數(shù)轉換法轉換方法是每位成四位法,也以小數(shù)點為界每位十六進制數(shù)轉換為4位二進制數(shù),如將上例逆轉一下,就有0E3.94H=1110 0011.1001 0100B(4)二進制數(shù)、十六進制數(shù)與十進制數(shù)轉換1)二進制數(shù)、十六進制數(shù)轉換成十進制數(shù)轉換方法是按權展開,然后按照十進制運算法則求和。例:1011.1010B=1×23

5、+1×21+1×20+1×2-1+1×2-3=11.625DFC.8H =13×162+15×161+12×160+8×16-1 = 3580.52)十進制數(shù)轉換成二進制數(shù)、十六進制數(shù)整數(shù)轉換法十進制數(shù)轉換成二進制數(shù):53÷2=26 余 126÷2=13 余 013÷2=6 余 16÷2=3 余 0 3÷2=1 余 11÷2=0 余 1由此得到:53=110101B“除基數(shù)取余法”:十進制整數(shù)不斷除以轉換進制基數(shù),直至商為0。每除一次取一個余數(shù),從低位排向

6、高位。例:十進制數(shù)轉換成十六進制數(shù):208÷16=13 余 0 13÷16 =0 余 13 = DH 由此得到:208 = D0H 小數(shù)轉換法十進制數(shù)轉換成二進制數(shù):0.375×2=0.75 取整數(shù)部分 00.75×2=1.5 取整數(shù)部分 10.5×2=1 取整數(shù)部分 1 由此得到:十進制數(shù)0.375=0.011B“乘基數(shù)取整法”:用轉換進制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達到轉換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。例:十進制數(shù)轉換成十六進制數(shù):0.625 × 16 = 10.0由此得到:0.625 = 0.AH

7、2 碼制微機中所處理數(shù)的基本形式是二進制數(shù)碼,為運算方便起見,單片機采用的碼制有原碼、反碼和補碼三種形式,見表1-3。(1)原碼原碼是微機中所處理數(shù)的原形,也就是用戶按二進制數(shù)表示法輸入計算機的數(shù)。原碼可以是無符號數(shù),也可以是有符號數(shù)。以單片機常用的八位二進制數(shù)為例:原碼為無符號數(shù)時,8位二進制數(shù)00000000B到11111111B就和0到255的自然數(shù)一一對應。原碼為有符號數(shù)時,8位二進制數(shù)00000000B到11111111B就要按最高位的值分為正數(shù)與負數(shù)二種,即最高位為符號位,其余為數(shù)值位。如: 符號位為0時,數(shù)為正 + 1010B的原碼為 00001010 B 。符號位為1時,數(shù)為負

8、 - 1010B的原碼為 10001010 B 。表1-3 二進制數(shù)用作不同碼制數(shù)時的實際值對照表不同碼制下的實際值二進制整數(shù)形式用作無符號數(shù)時對應的十進制數(shù)值用作帶符號數(shù)時的不同碼制對應的十進制數(shù)用作原碼時用作反碼時用作補碼時000000000+0+0+0000000011+1+1+1000000102+2+2+201111110126+126+126+12601111111127+127+127+12710000000128012712810000001129112612710000010130212512611111101253125231111111025412612111111112

9、5512701 (2)反碼運算過程中使用正數(shù)的反碼 = 原碼, 負數(shù)的反碼符號位 = 原碼的符號位 數(shù)值位 = 原碼數(shù)值位按位取反 如上例1010 B的八位反碼為: 11110101 B (3)補碼 補碼是為了計算方便,不是為了人計算方便,而是為了計算機簡化減法運算,用加法完成減法的一種碼制。1)補碼的定義 正數(shù)的補碼表達形式就是正數(shù)本身,有X=(X),負數(shù)的補碼表達形式(X)就是模減原碼的絕對值,有(X)= 模 -X。這里,模與機器數(shù)的位數(shù)有關,如8位2進制數(shù)的模為2=100H,當8位二進制數(shù)X=0FFH時,對X再加1,就會超出8位二進制數(shù)的表達范圍,產生溢出或進位,即X+1=0FFH+01

10、H=100H=進位+00H,這意味著當機器數(shù)從0開始增加到模的數(shù)值就會重新從0開始循環(huán)計數(shù)的值,模的具體值是超過機器數(shù)規(guī)定范圍1的值,對8位二進制數(shù),模就是2=100H。2)補碼的作用 補碼是用來將計算機中的減法變?yōu)榧臃ā2捎醚a碼,實際上玩了一個算術的游戲:你要減一個數(shù),比如X-Y,這個Y,可以看作-Y,就變成 X+(-Y),X和Y本身是原碼,減很困難,看作-Y 后,把-Y變成補碼表達形式,就可以做加法。3)補碼的簡便求法上述按定義求模碼的過程非常繁瑣,在計算機實際操作時是采用反碼+1的簡便方法來求補碼的。即: 補碼 =(原碼)+ 1如:-01H的反碼表達形式為11111110B或0FEH,-

11、01H的補碼表達形式就是 (-01)=(01)反+1=0FEH +1=0FFH這一求法的原理是:補碼表達形式=模-原碼=100 - 原碼=(0FFH-原碼)+1而前述負數(shù)的反碼表達形式為原碼的絕對值按位取反,即0FFH-原碼。所以,補碼表達形式=(原碼)+1 。3二進制編碼在計算機中,由于機器只能識別二進制,因此鍵盤上所有數(shù)字、字母和符號也必須事先為它們進行二進制編碼,以便機器對它們加以識別、存儲、處理和傳送。和日常生活中的編碼問題一樣,所需編碼的數(shù)字、字母和符號越多,二進制數(shù)字的位數(shù)也越長。下面介紹幾種微型機中常用的編碼。(1)BCD碼BCD碼是十進制數(shù)的二進制碼(Binary Coded

12、Decimal),BCD碼的種類較多,常用的有8421碼,2421碼,、余3碼和格雷碼等。下面介紹一下8421碼。8421碼也是BCD碼中的一種,因組成它的4位二進制數(shù)碼的權為8、4、2、1而得名。8421碼是一種采用4位二進制數(shù)來代表十進制數(shù)碼的代碼系統(tǒng)。在這個代碼系統(tǒng)中,十組4位二進制數(shù)分別代表了09中的十個數(shù)字符號,如表1-4所列。其中,0000B1001B為8421的基本代碼系統(tǒng)代表0 9 。 1010B1111B為非法碼,逢10需再進一個4位二進制數(shù)。大家知道,4位二進制數(shù)共有16種組合,其中0000B1001B為8421的基本代碼系統(tǒng),1010B1111B未被使用,成為非法碼或冗余

13、碼。10以上的所有十進制數(shù)至少需要二位8421碼字(即8位二進制數(shù)字)來表示,而且不應出現(xiàn)非法碼;否則就不是真正的BCD數(shù)。因此,BCD數(shù)是由BCD碼構成的,是以二進制數(shù)形式出現(xiàn)的,是逢十進位的,但它并不是一個真正的二進制數(shù),因為二進制數(shù)時逢二進位的。例如:十進制數(shù)45的BCD碼形式為01000101B(即45H)而它的等值二進制數(shù)為00101101B(即2DH)。表1-4 8421BCD編碼表十進制數(shù)8421碼十進制數(shù)8421碼012345670000B0001B0010B0011B0100B0101B0110B0111B891011121314151000B1001B00010000B00

14、010001B00010010B00010011B00010100B00010101B(2)ASCII碼(American Standard Coded for Information Interchange)由于計算機內部只能識別和處理二進制代碼,所以字符必須按照一定的規(guī)則用一組二進制編碼來表示。常見的ASCII碼用七位二進制表示一個字符,它包括10個十進制數(shù)字(09)、52個英文大寫和小寫字母(AZ,az)、34個專用符號和32個控制符號,共計128個字符。這種ASCII碼在計算機中,通常一個字節(jié)存放一個字符,一個字節(jié)右邊的七位表示不同的字符代碼,而最左邊一位可以作奇偶校驗位,用來檢查錯誤

15、;也可以用于西文字元和漢字的區(qū)分標識。 ASCII字符編碼表見附錄。由表中可見,數(shù)字和英文字母都是按順序排列的,只要知道其中一個的二進制代碼,不要查表就可以推導出其它數(shù)字或字母的二進制代碼。另外,如果將ASCII碼中09十個數(shù)字的二進制代碼去掉最高三位"011",正好與它們的二進制值相同,這不但使十進制數(shù)字進入計算機后易于壓縮成4位代碼,而且也便于進一步的信息處理。(二) MCS-51 單片機基本知識 本部分對MCS-51單片機的硬件資源和指令系統(tǒng)進行了全面的分析介紹。在本章中應掌握以下內容:Ø 8051由CPU、內部程序存貯器ROM、內部寄存器RAM、I/O接口

16、控制單元、定時器計數(shù)器、串行通信接口、內部總線等部分構成。Ø SFR中有CPU專用寄存器和功能單元專用寄存器兩類:CPU專用寄存器有:ACC、B、PSW、SP、DPTR等。應掌握PSW中各位的含義。D7 D0CYACF0RS1RS0OV-P堆棧區(qū)使用通用RAM單元,復位時堆棧指針SP=07H。在指令系統(tǒng)中通過數(shù)據(jù)指針DPTR來間接尋址訪問外部數(shù)據(jù)存貯器。功能單元專用寄存器有:并行接口緩沖器:P0、P1、P2、P3 D7 D0/RD/WRT1T0/INT1/INT0TXDRXD P3口的復用功能中斷系統(tǒng):IP、IE定時器計數(shù)器:TMOD、TCON、TH0、TL0、TH1、TL1串行接口

17、:SBUF、SCON電源控制:PCON1MCS-51系列單片機的主要性能特點(1)內部程序存儲器(ROM)的容量-51子系列可達4K Bytes (但需注意8031無內部ROM), -52子系列可達8K Bytes(本課程的重點是-51子系列, 必要時討論-52子系列)(2)內部數(shù)據(jù)存儲器(RAM)的容量除專用寄存器外,-51子系列為128 Bytes ,-52子系列可達256 Bytes (3)輸入/輸出口線MCS-51系列單片機可達32根。兩種功能:1)一般功能作為普通的I/O口線使用; 2)特殊功能完成特定的功能,例如作為數(shù)據(jù)/地址總線、讀寫使能、串行通信等(4)外部數(shù)據(jù)存儲器尋址空間:

18、 直接尋址64K bytes,間接可達64Kx64K bytes(5)外部程序存儲器尋址空間: 64K bytes (6)定時器/計數(shù)器-51子系列有2個16位定時器/計數(shù)器,-52子系列有3個16位定時器/計數(shù)器(7)串行口用兩根IO口線實現(xiàn)全雙工、半雙工、單工串行通信,有4種工作方式,可通過編程設定。(8)通用(或工作)寄存器(R0R7):有32個通用工作寄存器,分成4個區(qū),每區(qū)有8個通用寄存器。(9)中斷系統(tǒng)-51子系列有5個中斷源,-52子系列有6個中斷源;二者均有2種優(yōu)先級。(10)堆棧由內部數(shù)據(jù)存儲器構成堆棧,堆棧深度可達128字節(jié)。(11)布爾處理機51單片機內部具有布爾處理機,

19、可按位處理信息,特別適用于控制目的和解決邏輯問題。(12)指令系統(tǒng)豐富的指令,強大的功能;執(zhí)行指令的時間在類似的單片機中較快(例如與8048、6502 等比較),當振蕩器頻率為12Mhz時,大部分指令的執(zhí)行時間為1us ,少部分為2us ,乘除指令為4us 。綜上所訴,MCS-51系列單片機性能較好,在國內、國外的應用非常普及,已成為工業(yè)標準產品,尤其適合于自動控制、人工智能等領域。2. 8051的內部總體結構(1)下圖,MCS-51單片機方框圖,包括各個組成部分:1個8位中央處理單元(CPU);4 K bytes 的程序存儲器;128 Bytes的數(shù)據(jù)存儲器;專用寄存器(框圖中未畫出,見圖1

20、-2);32根IO(輸入/輸出)口線;2個定時器/計數(shù)器;1套中斷系統(tǒng)(5源、2優(yōu)先級)1個全雙工的串行接口;1個片內振蕩器和時鐘電路;1套64KB 總線擴展控制器。電源部分;工作過程:1)取指:CPU使64KB總線擴展控制器工作,從內部或外部程序存儲器中取出指令,并進行譯碼; 2)操作:指令譯碼后的結果在CPU控制下,對、SFR、RAM、T0/T1、中斷系統(tǒng)、串行口、I/O口等執(zhí)行相應的操作。(2)總體結構圖CPU:ACC、ALU、暫存器1、暫存器2、以及涉及到的內部總線等;4 K bytes 的程序存儲器:EPROM/ROM128 Bytes的數(shù)據(jù)存儲器:RAM地址寄存器、RAM、總線等;

21、專用寄存器:B、SP、PSW、PC、DPTR等32根IO(輸入/輸出)口線:P0.0、P0.1P3.7、P0P3鎖存器、驅動器2個定時器/計數(shù)器:1套中斷系統(tǒng)(5源、2優(yōu)先級):中斷、串行口及定時器、P3口中的專用功能部分1個全雙工的串行接口: 1套64KB 總線擴展控制器:P0口、P2口及其內部的總線擴展部分;1個片內振蕩器和時鐘電路:振蕩器、定時及控制;電源部分:VCC、VSS3中央處理單元CPUMCS-51單片機CPU的主要特點是:·8位微處理器按8位二進制數(shù)為1字節(jié)進行數(shù)據(jù)處理。·由算術邏輯單元ALU(Arithmetic and Logical Unit)、定時控

22、制器與專用寄存器組SFR(Special Function Register)三部分電路組成。在圖2-1中以ALU為核心標出了CPU的這三個主要組成電路。(1)算術邏輯運算單元ALU(Arithmetic and Logical Unit)單片機的核心是CPU,而算術邏輯運算單元ALU是CPU的核心。(2)定時控制器定時控制器由定時控制邏輯、指令寄存器IR、振蕩器OSC等電路組成。(3)專用寄存器組SFR(Special Function Register) CPU內還包括了一個很重要的部分:一個專用的寄存器組SFR。這是為CPU提供重要信息的專用8位內存單元,有定時器的地址,有控制接口的狀態(tài)

23、字,也就是對接口的控制字等。接口是個電路。電路什么時候工作,怎么工作由計算機來管理。但計算機根據(jù)什么來管理呢?就是根據(jù)放在這些特殊寄存器SFR里的信息來管理的。由于SFR在CPU內,使用起來就非常方便。舉個例子來說,就象我們身上穿的衣服都有口袋是為了使隨身物品存取方便,快捷。SFR共有21個寄存器,如表2-1所示,下面先介紹幾個最常用的專用寄存器。1) 程序計數(shù)器PC(Program Counter) 程序計數(shù)器PC是一個二進制16位的程序地址寄存器,主要功能是:存放下一條要執(zhí)行的指令在程序存儲器中的16位地址。自動加1功能。CPU執(zhí)行指令時,它根據(jù)程序計數(shù)器中地址從存儲器中取出當前需要執(zhí)行的

24、指令碼,并把它送給控制器分析執(zhí)行,隨后程序計數(shù)器中地址碼自動加1,以便為CPU取下條需要執(zhí)行的指令碼作準備。在執(zhí)行連續(xù)程序時,CPU每從程序存儲器中取出一條指令,PC的值就自動加1,使CPU能在程序存儲器中連續(xù)取出指令。所以,需要執(zhí)行程序的機器碼必須在程序執(zhí)行前預先一條條地按順序放到程序存儲器中,并將程序計數(shù)器設置為程序第一條指令的內存地址。PC單元本身沒有地址,是不可尋址的,因此,用戶無法對其進行讀寫,但在執(zhí)行轉移、調用、返回等指令時能自動改變其內容,以改變程序的執(zhí)行順序。CPU復位時PC=0000H,通常在ROM的0000H-0002H單元存放一三字節(jié)的長轉移指令 LJMP ADDR16,

25、其中ADDR16為主程序始址,使PC指向主程序的始址,保證程序從頭開始。實際上程序計數(shù)器PC就是CPU執(zhí)行程序的指針,CPU要執(zhí)行哪條指令是由PC值決定的,即PC 給出了CPU下一條指令在程序存儲器中的地址。說白了,PC寄存器相當于微機的指揮棒,其作用是非常重要的??梢钥鋸堃稽c地說,今后我們如果弄懂了PC寄存器的行為,那么微機的原理也就能懂一半了。所以,我們在學習單片機的軟、硬件時要特別注意PC的行為,也就是PC的工作情況與動向。2)累加器A(Accumulator) 又記作ACC,是專門用來存放操作數(shù)據(jù)與運算結果的二進制8位寄存器。累加器是最忙的一個寄存器。它必定放一個操作數(shù),并要存放操作后

26、的結果。也就是說,CPU的ALU在進行運算時用的兩個操作數(shù),其中一個數(shù)要放在累加器里,而計算結果一定放在累加器里。累加器在代表直接地址時,記作ACC,而在專指累加器的指令中,其助記符只寫著。例如:在3+5的加法程序中,第一條指令是把加數(shù)3預先送入累加器A,為第二條加法指令的執(zhí)行作準備,在第二條指令執(zhí)行后累加器A內容為兩數(shù)之和8。MOV A,#03H;A3ADD A,#05H;AA+5累加器的結果會影響到一個重要的特殊功能寄存器PSW的內容。另外,累加器A是數(shù)據(jù)傳送的中轉寄存器,單片機的大部分數(shù)據(jù)傳送都通過累加器進行的,例如:MOV DPTR,#0100H ;DPTR指向片外RAM的一單元地址0

27、100HMOV A,#01HMOVX DPTR,A ;累加器A中內容01H送入片外RAM的0100H單元3)程序狀態(tài)字PSW(Program Status Word ) PSW是一個很重要的8位標志寄存器,主要用來描述CPU執(zhí)行指令后在累加器中結果的特性:進位、溢出等,借此,我們可以了解CPU的當前狀態(tài),并作出相應的處理。各位狀態(tài)通常是在指令執(zhí)行過程中自動形成的,但也可以由用戶根據(jù)需要采用傳送指令加以改變。PSW各標志位定義見表2-2。表2-2 PSW各標志位定義位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位標志CYACF0RS1RS0OVP位地址D7D

28、6D5D4D3D2D1D0Cy(Carry)進位標志位,其功能如下:·加減運算最高位有進位(加法)或有借位(減法),Cy位由硬件自動置,否則被清零。8051中的運算器是一種8位的運算器,我們知道,8位運算器只能表示到0255,如果做加法的話,兩數(shù)相加可能會超過255,這樣最高位就會丟失,造成運算的錯誤,怎么辦?最高位就進到Cy里,用Cy置位來計入最高位的進位行為,這樣就沒事了。此外,CPU在進行移位操作時也會影響這個標志位。·在位操作中,Cy作累加位使用,在位傳送、位邏輯操作中,都要使用進位標志位。AC(Auxiliary Carry)輔助進位位,用于表示加減運算時低4位即

29、A3有無向高4位即A4進位或借位,A3向A4有進位或借位時,則AC由硬件置位,即AC1,否則AC位被清“0”。F0(Flag zero)用戶標志位,此標志位的狀態(tài)通常不是機器在執(zhí)行指令過程中自動形成的,是由用戶根據(jù)程序執(zhí)行的需要用軟件方法(即傳送指令)置位或復位的。該標志位狀態(tài)一經(jīng)設定,便由用戶程序直接檢測,以控制用戶程序的轉向。RS1、RS0工作寄存器組選擇位,8051共有8個8位工作寄存器,分別命名為R0一R7,用戶通過改變RS1、RS0的狀態(tài)可以方便地設定當前R0R7的組號,即實際物理地址。工作寄存器R0R7的物理地址和RS1、RS0之間的選擇關系如表2-3所示。表2-3 工作寄存器選擇

30、關系表RS1 RS0R0-R7組號片內RAM中物理地址0 0000-07H(R0=00H、R1=01H、R7=07H)0 1108-0FH(R0=08H、R1=09H、R7=0FH)1 0210-17H(R0=10H、R1=11H、R7=17H)1 1318-1FH(R0=18H、R1=19H、R7=1FH)8031、8051單片機在復位后RS1、RS0=0,CPU選中第0組作為當前工作寄存器,R0-R7物理地址為00-07H。根據(jù)需要,用戶可利用傳送指令或位操作指令來改變其狀態(tài),如SETB RS0,則第1組就是當前工作寄存器,R0-R7物理地址為08-0FH,這樣的設置為程序中保護現(xiàn)場提供了

31、方便。OV(Overflow)溢出標志位,用于帶符號數(shù)的加減運算,指示運算過程中是否發(fā)生了溢出,由機器執(zhí)行指令過程中自動形成。若機器在執(zhí)行運算指令過程中,運算結果超出累加器A所能表示的8位有符號數(shù)的范圍,即-128+127,則0V 標志由硬件自動置1;否則0V由硬件清“0”,表示運算結果正確。用戶根據(jù)執(zhí)行運算指令后的OV狀態(tài),可以判斷累加器A中的結果是否正確。 在無符號數(shù)的乘法運算中,當乘積超出255時,OV由硬件自動置1,表示乘積超出了8位二進制數(shù)的允許范圍,乘積分別存放在B寄存器和累加器A中;反之,OV由硬件清“0”,表示乘積未超過255,僅在A存放。在除法運算中,當除數(shù)為0時,OV由硬件

32、自動置1,表示除法不能進行,反之,則OV由硬件清“0”,表示除法運算可正常進行。P(Parity)奇偶標志位,表明運算結果即累加器A中1的個數(shù)的奇偶性。在每個指令周期由硬件根據(jù)A中的內容對P進行置位或復位,若則累加器A中1的個數(shù)為奇數(shù),P1;若累加器A中的1的個數(shù)為偶數(shù),P=0。例1 設程序執(zhí)行前RS1、RS0=00H,F(xiàn)0=0,求機器執(zhí)行如下程序后MOV A,#0AHADD A,#0F7HPSW中各位的狀態(tài)是什么?解 上述加法指令執(zhí)行時0 0 0 0 1 0 1 0 B + 1 1 1 1 0 1 1 1 B1 0 0 0 0 0 0 0 1 B CP CS式中:CP為最高位進位,CP=1;

33、CS為次高位進位,CS=1,F(xiàn)0,RS0、RS1由用戶根據(jù)需要設定,加法指令不會改變其狀態(tài),最高位有進位,Cy=1,A3向A4有進位,AC=1,結果A中的1的個數(shù)為奇數(shù),P1,OV的狀態(tài)可由下式確定: CPCS1l0OV=0故 PSW=11000001B=C1H4)堆棧指針SP(Stack Pointor) SP是一個專門用來存放堆棧的棧頂?shù)刂返?位寄存器,能自動加1或減1。堆棧的概念 堆棧是一種按特定順序進行存取的存儲區(qū),這種特定順序可歸結為"后進先出"(LIFO:Last In First Out)或"先進后出"(FILO:First In Last

34、 Out)。就是在片內RAM中劃出一部分單元,用作存放臨時數(shù)據(jù)區(qū)。這些臨時數(shù)是指令執(zhí)行過程中的不能丟失的數(shù),丟失以后程序就無法進行下去,所以要把這些數(shù)保留在堆棧里。也可以說,堆棧相當于一個保護區(qū),有緊急情況發(fā)生時,把重要數(shù)據(jù)保護起來。如,在執(zhí)行中斷時,或調用子程序時,第一個要保護的臨時數(shù)據(jù)是當前PC值,所以在發(fā)生中斷或調用子程序時,CPU會自動把PC當前值壓入堆棧,中斷或調用子程序完了以后,CPU可取出PC值使程序回到斷點處繼續(xù)執(zhí)行下去。另外,在發(fā)生中斷或調用子程序時,會發(fā)生累加器A和其它存儲單元的重復使用,所以必須把當前A或其他存儲單元的內容壓入堆棧保護起來,以便返回后,恢復累加器A或其他存儲單元的內容,即恢復現(xiàn)場。綜上所述,堆棧主要是為子程序調用和中斷操作而設立的,其具體功能是保護斷點地址和保護現(xiàn)場,也可用于調用子程序時參數(shù)的傳遞。    堆棧有棧頂和棧底之分,棧底由棧底地址標識,是固定不變的,決定了堆棧在片內RAM中的物理位置。棧頂由棧頂?shù)刂分甘荆枰粋€專門的硬件寄存器作為堆棧棧頂指針,簡稱棧指針S

溫馨提示

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

評論

0/150

提交評論