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

下載本文檔

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

文檔簡介

1、.單片機原理及應用常州輕工職業(yè)技術(shù)學院前言當今,單片微型計算機技術(shù)迅速發(fā)展,由單片機技術(shù)開發(fā)的智能化測控設備和產(chǎn)品廣泛應用到各個領(lǐng)域,單片機技術(shù)產(chǎn)品和設備促進了生產(chǎn)技術(shù)水平的提高。企業(yè)迫切需要大量熟練掌握單片機技術(shù),并能開發(fā)、應用和維護管理這些智能化產(chǎn)品的高級工程技術(shù)人材。單片機以體積小、功能強、可靠性好、性能價格比高等特點,已成為實現(xiàn)工業(yè)生產(chǎn)技術(shù)進步和開發(fā)機電一體化和智能化測控產(chǎn)品的重要手段。本教材內(nèi)容分為十章。以MCS-51系列單片機為介紹對象,分別介紹MCS-51系列單片機結(jié)構(gòu)原理、MCS-51單片機指令系統(tǒng)、匯編語言程序設計、并行I/O口的使用、并行I/O口的擴展方法及使用、中斷系統(tǒng)和

2、定時/計數(shù)器、A/D轉(zhuǎn)換接口和D/A轉(zhuǎn)換接口技術(shù)、鍵盤與顯示器接口技術(shù)等內(nèi)容。本教材由楊文新、龔益民、韓迎輝老師編寫,謝麗華、劉軍良老師參與本書圖表的繪制。編者2004年7月目 錄第一章 認識單片機 3第二章 MCS-51單片機指令系統(tǒng)14第三章 匯編語言程序設計 27第四章 并行I/O口 33第五章 并行I/O口的擴展 40第六章 中斷系統(tǒng) 49第七章 定時/計數(shù)器 55第八章 A/D轉(zhuǎn)換接口 60第九章 D/A轉(zhuǎn)換接口 63第十章 鍵盤與顯示器接口 67附錄一 WAVE軟件的操作使用附錄二 ASCII碼表附錄三 MCS-51單片機指令系統(tǒng)表附錄四 單片機練習題附錄五 單片機實驗指導書:65

3、第一章 認識單片機一、什么是單片機單片機是將CPU、存儲器、輸入/輸出接口、定時/計數(shù)器等集成在一塊芯片上,是目前銷量最大、應用面最廣、價格最便宜的微型計算機。如圖1-1所示:I/O口CPU程序存儲器定時/計數(shù)器外設取指令圖1-1 單片機結(jié)構(gòu)框圖例1-1 單片機彩燈控制系統(tǒng)(單片機控制8個發(fā)光二極管每隔0.1秒輪流點亮。)使用單片機實驗板進行演示。 二、典型單片機產(chǎn)品1MCS-51系列美國Intel公司生產(chǎn)的8位字長單片機。基本型產(chǎn)品有8051、8031、8751等。2AT89C51系列美國ATMEL公司生產(chǎn)的8位字長單片機。與MCS-51系列單片機兼容,內(nèi)含4KB的flash存儲器。三、MC

4、S-51單片機的內(nèi)部的硬件結(jié)構(gòu)及引腳 (一) MCS-51單片機內(nèi)部的總體硬件結(jié)構(gòu)8051單片機的內(nèi)部基本結(jié)構(gòu),如圖1-2所示。(二) MCS-51單片機的引腳8051單片機是HMOS工藝制造,外形為40條引腳,如圖1-3所示。因為受芯片引腳數(shù)量的限制,有很多引腳具有雙功能。1、主電源引腳 VCC:芯片工作電源端,接5V。Vss:電源接地端。2、時鐘振蕩電路引腳XTAL1:內(nèi)部晶體振蕩電路的反相器輸入端。接法如圖1-5。XTAL2:內(nèi)部晶體振蕩電路的反相器輸出端。接法如圖1-5。3、控制信號引腳RST RST為復位信號輸入端。外部接復位電路。接法如圖1-4。ALEALE為地址鎖存允許信號。 在

5、不訪問外部存儲器時,ALE以時鐘振蕩頻率的16的固定頻率輸出,用示波器觀察ALE引腳上的脈沖信號是判斷單片機芯片是否正常工作的一種簡便方法。 外部程序存儲器ROM的讀選通信號。到外部ROM取指令時,自動向外發(fā)送負脈沖信號。 為訪問程序存儲器的控制信號。 振蕩器和時鐘電路程序存儲器4KB ROM數(shù)據(jù)存儲器256B RAM/SFR8051CPU兩個16位定時器/計數(shù)器中斷系統(tǒng)64K字節(jié)總線擴展控制并行I/O端口全雙工串行口外部時鐘源 外部計數(shù)脈沖 外中斷 控制 外部設備 串行通訊圖1-2 8051單片機的內(nèi)部基本結(jié)構(gòu)4、并行I端口引腳P0口(P0.0 P0.7);P1口(P1.0 P1.7);P2

6、口(P2.0 P2.7);P3口(P3.0 P3.7)。(a)引腳圖 (b) 邏輯符號圖1-3 MCS-51引腳圖(三)復位電路與時鐘電路1復位電路(1)復位電路 單片機的RST引腳是復位信號輸入端,RST引腳上保持兩個機器周期(24個時鐘周期)以上的高電平時,可使單片機內(nèi)部可靠復位。 單片機常用的外部復位電路如圖1-4。(a)上電復位電路 (b)上電復位兼手動復位電路圖1-4 MCS-51的復位電路(2)復位狀態(tài)復位后,單片機內(nèi)部的各寄存器的內(nèi)容將被初始化,包括程序計數(shù)器PC和特殊功能寄存器,其中(PC)=0000H,特殊功能寄存器的狀態(tài)見表1-1。復位不影響片內(nèi)RAM和片外RAM中的內(nèi)容。

7、表1-1 復位后特殊功能寄存器的初始狀態(tài)SFR名稱初始狀態(tài)SFR名稱初始狀態(tài)ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0 P3FFHSBUF不確定IP00000BSCON00HIE000000BPCON0B2時鐘電路時鐘電路用于產(chǎn)生時鐘信號,時鐘信號是單片機內(nèi)部各種微操作的時間基準,在此基礎(chǔ)上,控制器按照指令的功能產(chǎn)生一系列在時間上有一定次序的信號,控制相關(guān)的邏輯電路工作,實現(xiàn)指令的功能。電容容量范圍為30PF10PF,石英晶體頻率的范圍為1212MHZ,常用6MHZ或12MHz。圖1-5 8

8、051的外接石英晶體的時鐘電路3時序單位OSC時鐘ALE圖1-6 時序圖(1)時鐘周期(是時鐘信號頻率fosc的倒數(shù))時鐘周期 = 1 / fosc(2)機器周期:機器周期 = 12 時鐘周期(3)指令周期一條指令從被讀取到被執(zhí)行的整個過程所需的時間稱為指令周期。思考題: fosc分別為6MHZ和12MHZ時,機器周期分別為多少?四、MCS-51單片機的內(nèi)部硬件的主要功能(一)中央處理單元CPU它由運算器和控制器兩部分組成。1運算器運算器是進行各種算術(shù)運算和邏輯運算的部件。與運算器有關(guān)的寄存器包括ACC、B、PSW。(1)累加器ACC(8位寄存器)(2) B寄存器(8位)(3)程序狀態(tài)字寄存器

9、PSW (8位) PSW主要用于存放程序狀態(tài)信息以及運算結(jié)果的標志,所以又稱標志寄存器。其格式如下(D1位沒有定義):D7 D6 D5 D4 D3 D2 D1 D0CYACF0RS1RS0OVPCY 進位標志位。AC 輔助進位標志位。F0 用戶標志位 RS1、RS0 工作寄存器區(qū)選擇控制位 OV 溢出標志位。P 奇偶標志位。2控制器(1)控制器的組成控制器是由程序計數(shù)器PC、指令寄存器、譯碼器、定時與控制電路等組成的。(2)程序計數(shù)器PC PC是一個16位的寄存器,PC中的內(nèi)容是下一條將要執(zhí)行的指令代碼的起始存放地址。當單片機復位之后,(PC)=0000H,引導CPU到0000H地址讀取指令代

10、碼,CPU每讀取一個字節(jié)的指令,PC的內(nèi)容會自動加1,指向下一個地址,使CPU按順序去讀取后面的指令,從而引導CPU按順序執(zhí)行程序。(二)存儲器18051的存儲器分為兩大存儲空間:程序存儲器(ROM)空間(1)片內(nèi)4KB 的程序存儲器,其地址為0000H0FFFH(2)片外64KB的程序存儲器,其地址為0000HFFFFH數(shù)據(jù)存儲器(RAM)空間 (1)片內(nèi)256B的數(shù)據(jù)存儲器,00H7FH為通用的數(shù)據(jù)存儲區(qū),80HFFH為專用的特殊功能寄存器區(qū) FFFFH FFFFH 1000H0FFFH 0FFFH FFH 80H7FH 0000H 0000H 00H 0000H 程序存儲器 內(nèi)部數(shù)據(jù)存儲

11、器 外部數(shù)據(jù)存儲器60KB外部ROM4KB內(nèi)部 ROM(EA=1)4KB外部ROM(EA=0)特殊功能寄存器內(nèi)部RAM64KB外部RAM圖1-7 8051的存儲器結(jié)構(gòu)(2)片外64KB的數(shù)據(jù)存儲器,其地址為0000HFFFFH與8051不同的是,8751片內(nèi)包含4KB的EPROM程序存儲器,而8031內(nèi)部不包含程序存儲器。2程序存儲器(1)程序存儲器主要用于存放程序和表格常數(shù)。(2)程序存儲器分為片內(nèi)、片外兩部分,總?cè)萘孔畲鬄?4KB,地址為0000HFFFFH。(3)引腳的接法對于8051、8751等片內(nèi)有程序存儲器的芯片, 引腳應該接高電平;對于8031這種片內(nèi)無程序存儲器的芯片,引腳應該

12、接低電平。3數(shù)據(jù)存儲器數(shù)據(jù)存儲器主要用于存放各種數(shù)據(jù)。以下只對內(nèi)部數(shù)據(jù)存儲器進行介紹。 用戶區(qū)位尋址區(qū)(位地址007F)工作寄存器區(qū)3(R0R7)工作寄存器區(qū)2(R0R7)工作寄存器區(qū)1(R0R7)工作寄存器區(qū)0(R0R7)7FH 30H 2FH 20H 1FH 00H 圖1-8 內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu)(1) 低128B的內(nèi)部數(shù)據(jù)存儲器按其功能不同劃分為三個區(qū)域。工作寄存器區(qū)( 00H1FH )該區(qū)均分為四個小區(qū),任何時候,只有一個區(qū)的工作寄存器可以工作,稱為當前工作寄存器區(qū)。當前區(qū)的選擇可通過對寄存器PSW中的RS1、RS0兩個位的設置來進行,見表1-2。 表1-2 當前工作寄存器區(qū)的選擇RS

13、1RS0當前工作寄存器區(qū)000區(qū)011區(qū)102區(qū)113區(qū)思考題:單片機復位時,當前工作寄存器區(qū)是哪個? 位尋址區(qū)(20H2FH) 位尋址區(qū)有16個單元組成,共128個位,每個位具有位地址,表1-3中表格數(shù)據(jù)是每個位的位地址。每個單元也可作一般的數(shù)據(jù)緩沖單元使用。位地址映象7FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49

14、H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H表1-3 片內(nèi)RAM的位尋址 字節(jié)地址 2FH2EH2DH2CH2BH2AH29H28H27H26H 25H24H23H22H21H20H用戶區(qū) ( 30H7F

15、H) 為一般數(shù)據(jù)緩沖區(qū),堆棧區(qū)通常也設置在這個區(qū)域內(nèi)。(2)高128字節(jié)(特殊功能寄存器區(qū))8051內(nèi)部有21個特殊功能寄存器(簡稱SFR),它們均為8位的寄存器,離散分布在80HFFH區(qū)域,剩下107個單元是沒有定義的,用戶不能使用。見表1-4。有11個SFR的字節(jié)地址可被8整除(地址以0和8結(jié)尾),可以位尋址(表中已給出它們的位地址)。表1-4 特殊功能寄存器地址對照表SPR名稱符號D7 位地址/位定義 D0字節(jié)地址B寄存器BF7F6F5F4F3F2F1F0(F0H)累加器AACCE7E6E5E4E3E2E1E0(E0H)程序狀態(tài)字PSWD7D6D5D4D3D2D1D0(D0)CYACF0

16、RS1RS0OV-P中斷優(yōu)先級控制IPBFBEBDBCBBBAB9B8(B8H)-PSPT1PX1PT0PX0I/O端口3P3B7B6B5B4B3B2B1B0(B0H)P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0中斷允許控制IEAFAEADACABAAA9A8(A8H)EA-EAET1EX0ET0EX0I/O端口2P2A7A6A5A4A3A2A1A0(A0H)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0串行數(shù)據(jù)緩沖SBUF(99H)串行控制SCON9F9E9D9C9B9A9998(98H)SW0SW1SW2RENTB8RB8TIRII/O端口1P1979

17、6959493929190(90H)P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0定時/計數(shù)器1(高字節(jié))TH1(8DH)定時/計數(shù)器0(高字節(jié))TH0(8CH)定時/計數(shù)器1(低字節(jié))TL1(8BH)定時/計數(shù)器0(低字節(jié))TL0(8A)定時/計數(shù)器方式選擇TWODGATEC/TW1W0GATEC/TW1W0(89H)定時/計數(shù)器控制TCON8F8E8D8C8B8A8988(88H)TF1TR1TF0TR0IE1IT1IE0IT0電源控制與波特率選擇PCON(87H)數(shù)據(jù)指針高字節(jié)DPH(83H)數(shù)據(jù)指針低字節(jié)DPL(82H)堆棧指針SP(81H)I/O端口0P087868

18、58483828180(80H)P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 五、 計算機中的數(shù)制與編碼(一)常用數(shù)制數(shù)制也就是進位制,計算機中常用的進位制有二進制(B字母結(jié)尾)、十進制(D字母結(jié)尾,可省略)、十六進制(H字母結(jié)尾)等。其中二進制是計算機內(nèi)部使用的,十進制、十六進制通常是人們書寫程序或描述計算機工作過程時使用的。(二)數(shù)制間的轉(zhuǎn)換三種進制的對應關(guān)系見表1-5。表1-5 三種進制數(shù)對照表二進制(B)十六進制(H)十進制(D)二進制(B)十六進制(H)十進制(D)0000001000880001111001990010221010.A100011331011B1

19、10100441100C120101551101D130110661110E140111771111F151十進制轉(zhuǎn)換為二進制 整數(shù)部分的轉(zhuǎn)換方法稱為“除2取余法”。小數(shù)部分的轉(zhuǎn)換方法稱為“乘2取整法”。2二進制轉(zhuǎn)換成十進制將二進制數(shù)的各個非零位分別乘以位權(quán)之后相加求和。3十進制轉(zhuǎn)換成十六進制整數(shù)部分的轉(zhuǎn)換方法稱為“除16取余法”。小數(shù)部分的轉(zhuǎn)換方法稱“乘16取整法”。4十六進制轉(zhuǎn)換成十進制將十六進制數(shù)的各個非零位分別乘以位權(quán)后相加求和。5二進制與十六進制之間的轉(zhuǎn)換二進制數(shù)轉(zhuǎn)換成十六進制數(shù)的方法是:4位二進制數(shù)對應于1位十六進制數(shù)(對應關(guān)系見表1-4)。十六進制數(shù)轉(zhuǎn)換為二進制數(shù)的方法是:將每1

20、位十六進制數(shù)用對應的4位二進制數(shù)替換。練習:1 將194轉(zhuǎn)換成二進制數(shù)2 將120轉(zhuǎn)換成十六進制數(shù)3 將10101000B轉(zhuǎn)換成十進制數(shù)4將19BH轉(zhuǎn)換成十進制數(shù)5將二進制數(shù)1011011110B轉(zhuǎn)換為十六進制數(shù)6將十六進制數(shù) 7B25H 轉(zhuǎn)換為二進制數(shù)(三)常用二進制編碼1 二進制編碼的十進制數(shù)十進制數(shù)用二進制編碼的形式來表示,稱為二十進制編碼,即:BCD碼(Binary Code Decimal)。最常用的是8421BCD碼。表1-5列出了BCD碼(8421碼)與十進制數(shù)的對照表?;Q時,可以按4位對應1位的原則,進行轉(zhuǎn)換。表1-6 BCD(8421)碼與十進制數(shù)的對照表十進制數(shù)BCD碼十

21、進制數(shù)BCD碼00000501011000160110200107011130011810004010091001 課堂練習:(1)將79.32轉(zhuǎn)換成BCD碼(2)將BCD碼100001100101轉(zhuǎn)換成十進制2 字符編碼(ASCll碼)計算機中的各種字符,包括 0 9數(shù)字、大小寫英文字母、標點符號及用于控制的特殊符號等,也必須用二進制編碼表示。在計算機中一般統(tǒng)一使用ASCII碼來表示字符。ASCII碼是美國信息交換標準代碼的簡稱。每個字符的ASCII碼是由7位二進制數(shù)構(gòu)成,第八位(最高位)通常定為奇偶校驗位。例如:數(shù)字 09的ASCII碼為30H39H;大寫字母AZ的ASCII碼為41H5A

22、H。(四)帶符號數(shù)的表示在計算機中是使用數(shù)字“0”和“1”來表示數(shù)的符號的。如,“+”號用“0”表示;“”號用“1”表示。一個數(shù)在計算機中有三種表示方法:原碼、反碼、補碼。下面以8位帶符號數(shù)為例進行介紹。1、 原碼最高位(D7位)作符號位,用“0”或“1”表示數(shù)的正或負,其余位為數(shù)值位,用來表示該數(shù)的大小,即絕對值。例: + 112 原碼 = 01110000B 112 原碼 = 11110000B原碼所能表示的十進制范圍是: 127 +127。2、反碼正數(shù)的反碼與原碼相同;負數(shù)的反碼,符號位為1,數(shù)值位是將原碼的數(shù)值位按位取反(即原來是“0”的,取為“1”,原來是“1”的,取為“0”)。例:

23、+112 反碼 = 01110000B 112 反碼 =10001111B反碼可表示的十進制范圍是: 127 + 127。3、補碼表示法正數(shù)的補碼與原碼相同;負數(shù)的補碼,符號位為“1”,數(shù)值位是將反碼的數(shù)值位加1形成。例:+112 補碼 = 01110000B 112 補碼= 10010000B用補碼可表示的十進制范圍是: 128 +127。因為帶符號數(shù)用補碼表示,可以簡化運算,所以較常用。 (五)無符號數(shù)無符號的8位二進制數(shù)沒有符號位,8位均為數(shù)值位。即:8位無符號二進制數(shù)對應的十進制范圍為(0 255)。第二章 MCS-51單片機指令系統(tǒng)一、指令的表達形式每條指令有兩種不同的表達形式:1二

24、進制代碼(機器碼)指令2助記符(匯編語言)指令助記符指令: MOV A, # 30H 二進制代碼指令: 01110100 00110000助記符指令必須轉(zhuǎn)換成二進制代碼指令才能存入存儲器。本章僅介紹助記符指令格式,對應的機器碼格式可參考附錄。二、匯編語言指令格式操作碼 第一操作數(shù) ,第二操作數(shù) ,第三操作數(shù)(1)操作碼:用來規(guī)定指令進行何種操作,是指令中不能空缺的部分。(2)操作數(shù):表示參與指令操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。為可選項。有兩個操作數(shù)時,前一個為目的操作數(shù),后一個為源操作數(shù)。三、指令中有關(guān)操作數(shù)符號的說明Rn工作寄存器R0R7(n= 0、1、27)。Ri 工作寄存器R0和R1(i=0

25、或1)。Direct內(nèi)部RAM的單元地址,地址范圍為00FFH。# data8位立即數(shù),即常數(shù)。# data1616位立即數(shù)。addr1616位目的地址。Addrll 11位目的地址。四、MCS-51單片機指令系統(tǒng)MCS51的指令按功能分為五大類:數(shù)據(jù)傳送、算術(shù)運算、邏輯運算、控制轉(zhuǎn)移和位操作指令。(一) 數(shù)據(jù)傳送類指令 注意:源操作數(shù)在傳送前后保持不變。1 內(nèi)部數(shù)據(jù)傳送指令 指令 功能說明MOV A,Rn ; A(Rn)MOV A, direct ; A(direct)MOV A,Ri ; A (Ri)MOV A,#data ; A#dataMOV Rn,A ; Rn(A) MOV Rn,d

26、irect ; Rn(direct)MOV Rn,# data ; Rn# dataMOV direct , A ;direct (A)MOV direct , Rn ;direct (Rn)MOV direct , Ri ; direct (Ri)MOV direct1,direct2 ; direct1(direct2)MOV direct, #data ; direct#dataMOV Ri, A ; ( Ri) ( A)MOV Ri, direct ; ( Ri) ( direct)MOV Ri, #data ; ( Ri) #dataMOV DPTR, #data16 ;DPTR#d

27、ata16 【例2-1】 設(30H)=40H,(40H)=10H,(P1)=0CAH,試判斷下列程序執(zhí)行后的結(jié)果。MOV R0,#30H ; R0#30HMOV A, R0 ; A(30H),(A)= 40HMOV R1, A ; R1(A),(R1)=40HMOV B, R1 ; B(40H),(B)=10HMOV R1, P1 ; (R1) (P1),(40H)=0CAHMOV P2, P1 ; P2(P1),(P2)=0CAH結(jié)果是:(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH2外部數(shù)據(jù)傳送指令此類指令完成對片外RAM單元中數(shù)據(jù)的讀/寫操作。(1)讀指令 M

28、OVX A ,DPTR ;A(DPTR) MOVX A , Ri ; A(Ri) (2)寫指令 MOVX DPTR , A ;(DPTR)(A) MOVX Ri , A ; (Ri)(A) 注意:用R0和R1間接尋址時,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。使用時,要先將低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。 【例2-2】 將片外RAM1000H單元中的內(nèi)容送到2000H單元。 方法一 MOV DPTR ,#1000H ; DPTR#1000H MOVX A ,DPTR ; A(DPTR) MOV DPTR ,#2000H ;

29、 DPTR# 2000H MOVX DPTR ,A ;(DPTR)(A)方法二 MOV P2 ,#10H ;P2#10H MOV R0 ,#00H ;R0#00HMOVX A,R0 ;A(R0) MOV P2 ,#20H ;P2#20H MOVX R0,A ;(R0)(A) 注意:在兩個片外RAM單元之間是不能直接進行數(shù)據(jù)的傳送的,必須經(jīng)過片內(nèi)的累加器A來間接地傳送。 3訪問程序存儲器的傳送指令(查表指令) MOVC A,A+PC ;PC(PC)+1 , A(A)+(PC)MOVC A,A+DPTR ;A(A)+(DPTR) 其功能是到程序存儲器中查表格數(shù)據(jù)送入累加器A。程序存儲器中除了存放程

30、序之外,還會放一些表格數(shù)據(jù),又稱查表指令。指令中的操作數(shù)為表格數(shù)據(jù)。前一條指令將A中的內(nèi)容與PC的內(nèi)容相加得到16位表格地址;后一條指令是將A中的內(nèi)容與DPTR中的內(nèi)容相加得到16位表格地址。4數(shù)據(jù)交換指令XCH A,Rn ; (A)(Rn ) XCH A,direct ; (A)(direct ) XCH A,Ri ;(A)(Ri) XCHD A, Ri ; (A)30 (Ri)30 5堆棧操作指令在片內(nèi)RAM的00H7FH地址區(qū)域中,可設置一個堆棧區(qū),主要用于保護和恢復CPU的工作現(xiàn)場。(1)進棧指令 PUSH direct ; SP(SP)+1 ; (SP)(direct);(2)出棧指

31、令POP direct ; direct(SP); SP (SP)1;二、算術(shù)運算類指令注意大部分指令的執(zhí)行結(jié)果將影響程序狀態(tài)字PSW的有關(guān)標志位。(一)加法指令ADD A, Rn ;A(A)+(Rn ) ADD A, direct ;A(A)+(direct) ADD A, Ri ;A(A)+((Ri)) ADD A, # data ;A(A)+ data ADDC A, Rn ;A(A)+(Rn )+(CY) ADDC A, direct ;A(A)+(direct)+(CY) ADDC A, Ri ;A(A)+((Ri))+ (CY) ADDC A, # data ;A(A)+ data

32、+(CY) 如果把參加運算的兩個操作數(shù)看作是無符號數(shù)(0255),加法運算對CY標志位的影響如下:(1) 若結(jié)果的第7位向前有進位(C7= 1),CY=1(2) 若結(jié)果的第7位向前無進位(C7= 0),CY=0【例2-3】 設有兩個無符號數(shù)放在A和R2中,設(A)= 0C6H(198),(R2)= 68H(104),執(zhí)行指令:ADD A,R2 試分析運算結(jié)果及對標志位的影響。 解: 寫成豎式 (A) 11000110 198 (R2) + 01101000 + 104 (A) 1 00101110 302 結(jié)果是:(A)= 2EH, CY=1。(二)加1指令I(lǐng)NC A ;A(A)+1 INC

33、Rn ;Rn(Rn)+1 INC direct ;direct(direct)+1 INC Ri ;(Ri)(Ri)+1 INC DPTR ;DPTR(DPTR)+1 這組指令的功能是使源操作數(shù)的值加1。【例2-4】 設有兩個16位無符號數(shù),被加數(shù)存放在內(nèi)部RAM的30H(低位字節(jié))和31H(高位字節(jié))中,加數(shù)存放在40H(低位字節(jié))和41H(高位字節(jié))中。試寫出求兩數(shù)之和,并把結(jié)果存放在30H和31H單元中的程序。參考程序為:MOV R0,#30H ; 地址指針R0賦值MOV R1,#40H ; 地址指針R1賦值MOV A,R0 ;被加數(shù)的低8位送AADD A,R1 ;被加數(shù)與加數(shù)的低8位相

34、加,和送A,并影響CY標志MOV R0, A ;和的低8位存30H單元INC R0 ;修改地址指針R0INC R1 ;修改地址指針R1MOV A,R0 ;被加數(shù)的高8位送AADDC A,R1 ;被加數(shù)和加數(shù)的高8位與CY相加,和送AMOV R0, A ;和的高8位存31H單元(三)減法指令1帶借位減法指令 SUBB A, Rn ;A(A)(Rn)(CY) SUBB A, direct ;A(A)(direct)(CY) SUBB A,Ri ;A(A)(Ri)(CY) SUBB A,#data ;A(A) data (CY) 該組指令的功能是從累加器A減去源操作數(shù)及標志位CY,其結(jié)果再送累加器A

35、。CY位在減法運算中是作借位標志。SUBB指令對標志位的影響如下:(1)若第7位向前有借位(C7= 1),則CY=1;(2)若第7位向前無借位(C7= 0),則CY=0,【例2-5】 在A和R3中存有兩個無符號數(shù), 設(A)=98H,(R3)=6AH,CY=1,執(zhí)行指令:SUBB A, R3分析執(zhí)行結(jié)果及對標志位的影響解: (A) 10011000 98H (R3) 01101010 6AH CY 1 1 (A) 00101101 2DH結(jié)果是: (A)=2DH,CY=02減1指令DEC A ; A(A)-1 DEC Rn ; Rn(Rn)-1 DEC direct ; direct(dire

36、ct)-1 DEC Ri ; (Ri) (Ri)-1 這組指令的功能是使源操作數(shù)的值減1。 (四)十進制調(diào)整指令 DA A 指令專用于實現(xiàn)BCD碼的加法運算,其功能是將累加器A中按二進制相加后的結(jié)果調(diào)整成BCD碼相加的結(jié)果。(1) ADD或ADDC指令的結(jié)果是二進制數(shù)之和。(2) DA 指令的結(jié)果是BCD碼之和十進制調(diào)整指令執(zhí)行時會對Cy位產(chǎn)生影響?!纠?-6】MOV A, #75H MOV R3, #69H ADD A, R3 ;(A)=DEH,CY=0 MOV B, A ;(B)= DEH DA A ; (A)=44H,CY=1(五)乘法指令MUL AB ; BA(A)(B) 指令的功能是

37、把累加器A和寄存器B中兩個8位無符號整數(shù)相乘,并把乘積的高8位存于寄存器B中,低8位存于累加器A中。乘法運算指令執(zhí)行時會對標志位產(chǎn)生影響:CY標志總是被清0,即CY=0;OV標志則反映乘積的位數(shù),若OV=1,表示乘積為16位數(shù);若OV=0,表示乘積為8位數(shù)。(六)除法指令 DIV AB ; A商,B余(A)(B) 指令的功能是把累加器A和寄存器B中的兩個8位無符號整數(shù)相除,所得商的整數(shù)部分存于累加器A中,余數(shù)存于B中。除法指令執(zhí)行過程對標志位的影響:CY位總是被清0,OV標志位的狀態(tài)反映寄存器B中的除數(shù)情況,若除數(shù)為0,則OV=1,表示本次運算無意義,否則,OV=0。三、邏輯運算類指令在MCS

38、51指令系統(tǒng)中,邏輯運算類指令有25條,可實現(xiàn)與、或、異或等邏輯運算操作。這類指令有可能會影響CY和P標志位的狀態(tài)。(一)累加器A的邏輯操作指令 1、累加器A清0CLR A ; A00H 2、累加器A取反CPL A ; A() 【例2-7】 設(A)=33H,執(zhí)行指令CPL A 結(jié)果是:(A)= 0CCH3、累加器A循環(huán)左移D7D0RL A 利用左移指令,可實現(xiàn)對A中的無符號數(shù)乘2的目的?!纠?-8】 執(zhí)行下列指令后,A中的內(nèi)容如何變化?MOV A,11H ;(A)=11H(17)RL A ;(A)=22H(34)RL A ;(A)=44H(68)RL A ;(A)=88H(136)RL A

39、;(A)=11H(17)4、累加器A帶進位循環(huán)左移CYD7D0 RLC A 5、累加器A循環(huán)右移 D7 D0 RR A 對累加器A進行的循環(huán)右移,可實現(xiàn)對A中無符號數(shù)的除2運算。6、累加器A帶進位循環(huán)右移CYD7 D0 RRC A 7、累加器A半字節(jié)交換D7D4 D3D0 SWAP A 功能是將累加器A中內(nèi)容的高4位與低4位互換。【例2-9】 設(A)=63H,執(zhí)行指令SWAP A結(jié)果為:(A)= 36H。(二)邏輯與指令 ANL A,Rn ;A(A)(Rn) ANL A,direct ; A(A)(direct ) ANL A,Ri ;A(A)(Ri) ANL A,#data ; A(A)

40、#data ANL direct,A ;direct (direct )(A) ANL direct,#data ;direct (direct ) #data 功能是將目的操作數(shù)和源操作數(shù)按位進行邏輯與操作,結(jié)果送目的操作數(shù)。在程序設計中,邏輯與指令主要用于對目的操作數(shù)中的某些位進行屏蔽(清0)。方法是:將需屏蔽的位與“0”相與,其余位與“1”相與即可。(三)邏輯或指令 ORL A,Rn ;A(A)(Rn) ORL A,direct ; A(A)(direct ) ORL A,Ri ;A(A)(Ri) ORL A,#data ; A(A) #data ORL direct,A ;direct (direct )(A) ORL direct,#data ;direct (direct ) #data 功能是將目的操作數(shù)和源操作數(shù)按位進行邏輯或操作,結(jié)果送目的操作數(shù)。邏輯或指令可對目的操作數(shù)的某些位進行置位。方法是:將需置位的位與“1”相或,其余位與“0”相或即可,常用于組合數(shù)據(jù)。(四)邏輯異或指令XRL A,Rn ;A(A)(Rn) XRL A,direct ; A(A)(direct ) XRL A,Ri ;A(A)(Ri) XRL A,#data ; A(A) #data XRL direct,A ;direct (direct )(A) XRL

溫馨提示

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

最新文檔

評論

0/150

提交評論