《單片機的基本原理和應(yīng)用設(shè)計》_第1頁
《單片機的基本原理和應(yīng)用設(shè)計》_第2頁
《單片機的基本原理和應(yīng)用設(shè)計》_第3頁
《單片機的基本原理和應(yīng)用設(shè)計》_第4頁
《單片機的基本原理和應(yīng)用設(shè)計》_第5頁
已閱讀5頁,還剩255頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 單片機的基本原理和應(yīng)用設(shè)計本書主要內(nèi)容單片機概述MCS-51系列單片機的組成與工作原理MCS-51 單片機的指令系統(tǒng)匯編語言程序設(shè)計MCS-51單片機的中斷系統(tǒng)定時/計數(shù)器單片機的串行通信及接口MCS-51單片機的系統(tǒng)擴展第1章 單片機概述 本章知識點:計算機的發(fā)展概況 計算機的特點和應(yīng)用 計算機系統(tǒng)的組成單片機概述計算機中常用的數(shù)制與碼制本章重點:微機系統(tǒng)的組成不同數(shù)制間的相互轉(zhuǎn)換原碼、反碼、補碼的概念既相互間的關(guān)系 電子計算機 定義:在程序的控制下自動進行信息處理的電子裝置。 分類:數(shù)字計算機、模擬計算機、模/數(shù)混合計算機。一、現(xiàn)代計算機的發(fā)展歷史 第一代:19461957 電子管計算機

2、(速度慢) 第二代:19571964 晶體管計算機 (速度快,功耗低,性能更穩(wěn)定) 第三代:19641972 集成電路計算機(體積小,可靠性高) 第四代:1972現(xiàn)在 大規(guī)模集成電路計算機 第五代:智能化1.1 計算機的發(fā)展概況二、計算機的發(fā)展方向(1)大型化和巨型化 運算速度快,存儲量大,體積大,價格高。(2)微型化 體積小,重量輕,價格便宜,普及快(3)網(wǎng)絡(luò)化、智能化 軟硬件資源共享,人工智能技術(shù)開發(fā)各種系統(tǒng)1.1 計算機的發(fā)展概況1.2 計算機的特點和應(yīng)用一、計算機的特點 (1)運算速度快 (2)計算精度高 字長:計算機處理的一組二進制數(shù)的位數(shù) (3)存儲能力極強 (4)在程序的控制下自

3、動操作 (5)通用性強 不同行業(yè)的用戶通過編制不同的程序解決不同的問題,而不需要改變硬件。二、計算機的主要性能指標(1)字長:計算機能直接處理的二進制位數(shù),代表實際的處理能力。 字長越長,計算精度越高,尋址范圍越大。(2)主存儲量(內(nèi)存):按字長或字節(jié)計算。 主存儲量越大,執(zhí)行程序的速度越快。(3)存取周期:存儲器進行一次完整的讀寫操作所需的時間。(4)運算速度:一般用每秒內(nèi)所能執(zhí)行的指令條數(shù)來衡量。速度的單位:百萬條指令/秒。(5)主頻:計算機的時鐘頻率,一般用MHZ或GHZ表示。 主頻越高,計算機的運行速度越快。1.2 計算機的特點和應(yīng)用1.2 計算機的特點和應(yīng)用三、計算機的應(yīng)用(1)數(shù)值

4、計算(2)信息處理和事物管理 信息處理:利用計算機對數(shù)據(jù)進行記錄、合并、分類、傳 遞、存儲、計算、檢索等處理。 事務(wù)管理:用計算機及時提供管理信息。如:財務(wù)管理、庫存管理、銷售管理等。(3)自動控制(4)計算機輔助應(yīng)用:CAD、CAM、CAI(5)人工智能(6)日常應(yīng)用1.3 計算機系統(tǒng)的組成CPU(ROM、RAM)1.3 計算機系統(tǒng)的組成一、計算機的硬件(1)運算器作用:運算作用,可進行算術(shù)運算和邏輯運算組成:加法器A (累加器)、寄存器B、狀態(tài)標志寄存器F、通用寄存器等組成。(2)控制器作用:指揮全機工作的中心。用來產(chǎn)生表示節(jié)拍的時序電位和時序脈沖,并將指令規(guī)定的操作類別、條件組成各種相應(yīng)

5、的控制信號,按一定的時間和條件,把信號送到相應(yīng)的線路中協(xié)調(diào)整機工作。組成:指令寄存器、指令譯碼器、程序計數(shù)器、脈沖分配器、時鐘電路、操作控制部件等組成。1.3 計算機系統(tǒng)的組成(3)存儲器 作用:用來存儲程序、數(shù)據(jù)等信息的物理介質(zhì)。 分類:(4)輸入、輸出設(shè)備 作用:輔助主機的工作,提供主機和外設(shè)之間交換信息的工具。 種類:鍵盤、鼠標、顯示器、打印機等。(5)外圍設(shè)備(6)總線 作用:系統(tǒng)中信息傳送的公共通道 分類:地址總線、數(shù)據(jù)總線、控制總線內(nèi)存儲器(主存):直接與CPU交換信息,速度快、容量小外存儲器:存儲容量大,斷電后不會丟失1.3 計算機系統(tǒng)的組成二、計算機的指令和指令系統(tǒng)(1)指令定

6、義:計算機完成某個具體的操作所發(fā)出的指示或命令,并由計算機直接識別執(zhí)行。組成:操作碼、操作數(shù) 操作碼:計算機執(zhí)行何種工作。 操作數(shù):指出參加操作的數(shù)據(jù)或數(shù)據(jù)所在單元的地址。類型:操作類指令、控制轉(zhuǎn)移類指令(2)指令系統(tǒng)(決定計算機的能力,影響 其體系結(jié)構(gòu))定義:所有指令的集合。1.3 計算機系統(tǒng)的組成三、計算機的軟件 分類:系統(tǒng)軟件、應(yīng)用軟件、程序設(shè)計語言(1)系統(tǒng)軟件 由制造者提供,包括監(jiān)控程序、操作系統(tǒng)、匯編軟件、解釋程序、實用程序、診斷程序等。(2)應(yīng)用軟件 定義:指用戶的專業(yè)軟件,是為解決某一專業(yè)領(lǐng)域的問題而編寫的程序。(3)程序設(shè)計語言 作用:編寫程序所使用的語言。 分類:機器語言、

7、匯編語言、高級語言單片機:單片微型計算機就是將CPU、RAM、ROM、定時/計數(shù)器和多種接口都集成到一塊集成電路芯片、尖端武器、日常生活中最廣泛使用的計算機上的微型計算機。因此,一塊芯片就構(gòu)成了一臺計算機。它已成為工業(yè)控制領(lǐng)域、智能儀器儀表。 一、單片機的發(fā)展過程 第一階段(19761978年):低性能單片機的探索階段 第二階段(19781982年):高性能單片機階段 第三階段(19821990年):16位單片機階段 第四階段(1990年):微控制器的全面發(fā)展階段1.4 單片機概述 二、單片機的系統(tǒng)組成 1.硬件系統(tǒng):CPU、存儲器、輸入/輸出接口電路、輸入/輸出設(shè)備等 2 .軟件系統(tǒng) 三、單

8、片機的發(fā)展趨勢(1)微型化(2)低功耗(工作方式多,電源范圍擴大)(3)高速化(4)集成更多資源(5)通信及網(wǎng)絡(luò)功能加強(6)專用型單片機發(fā)展加快1.4 單片機概述1.5 計算機中常用的數(shù)制與碼制一、數(shù)制計算機系統(tǒng)中,對于符號數(shù)有不同的編碼方式,通常有原碼、反碼和補碼。(1)原碼最高位為符號位(正數(shù)用0表示,負數(shù)用1表示),其他位為數(shù)值位。 X=+87=01010111B,X原=01010111B Y=-87=11010111B,Y原=11010111B(2)反碼 正數(shù)的反碼與原碼相同,負數(shù)的反碼是其對應(yīng)的原碼符號位保持為1,數(shù)值位逐位取反的結(jié)果。 X=+87=01010111B,X反=010

9、10111B Y=-87=11010111B,Y反=10101000B1.5 計算機中常用的數(shù)制與碼制(3)補碼 正數(shù)的補碼與原碼相同,負數(shù)的補碼是其對應(yīng)的原碼符號位保持為1,數(shù)值位逐位取反,末位加1的結(jié)果,即對應(yīng)的反碼加1。 X=+87=01010111B,X補=01010111B Y=-87=11010111B,Y補=10101001B二、碼制在計算機中,除了表示數(shù)以外,還要表達字母、字符等信息,他們也是以二進制的形式出現(xiàn)的,只是編碼的形式不同而已,計算機中常見的編碼由BCD碼和ASCII碼。ASCII碼: ASCII碼是一種8位代碼,最高位一般用于奇偶校驗,用其余的7位代碼來對128個字

10、符編碼,其中32個是控制字符,96個是圖形字符。BCD碼:采用二進制數(shù)編碼十進制數(shù)。1.5 計算機中常用的數(shù)制與碼制BCD碼閱讀材料 不同計數(shù)制之間的轉(zhuǎn)換十進制數(shù)一個十進制數(shù),它的數(shù)值是由數(shù)碼0,1,2,8,9來表示的。數(shù)碼所處的位置不同,代表數(shù)的大小也不同。 例如:53478=5104+3103+4102+7101+8100,對應(yīng)于:二進制數(shù)二進制是按“逢二進一”的原則進行計數(shù)的。二進制數(shù)的基為“2”,即其使用的數(shù)碼為0、1,共兩個。二進制數(shù)的權(quán)是以2為底的冪。 例如:10110100=127+026+125+124+023+122+021+020,對應(yīng)于: 其各位的權(quán)為1,2,4,8,即以

11、2為底的0次冪、1次冪、2次冪等。(10110100)2127+026+125+124+023+122+021+020=180十六進制數(shù)十六進制數(shù)的基為16,即基數(shù)碼共有l(wèi)6個:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)。其中A,B,C,D,E,F(xiàn)分別代表值為十進制數(shù)中的10,11,12,13,14,15。十六進制的權(quán)為以16為底的冪。 例如:4F8E=4163+F162+8161+E160=20366,對應(yīng)于:常用計數(shù)制表示數(shù)的方法比較 不同進制數(shù)之間的轉(zhuǎn)換1.十進制數(shù)轉(zhuǎn)換成二進制數(shù)的方法就是用2去除該十進制數(shù),得商和余數(shù),此余數(shù)為二進制代碼的最小有效位(LSB)或最低位

12、的值;再用2除該商數(shù),又可得商數(shù)和余數(shù),則此余數(shù)為LSB左鄰的二進制代碼(次低位)。依此類推,從低位到高位逐次進行,直到商是0為止,就可得到該十進制數(shù)的二進制代碼。 除二取余法 不同進制數(shù)之間的轉(zhuǎn)換例如:將(67)10轉(zhuǎn)換成二進制數(shù),過程如下:即:(67)10=(1000011)2。不同進制數(shù)之間的轉(zhuǎn)換1. 十進制數(shù)轉(zhuǎn)換成二進制數(shù)的方法將已知十進制的小數(shù)乘以2之后,可能有進位,使整數(shù)位為1(當該小數(shù)大于時),也可能沒有進位,其整數(shù)位仍為零。該整數(shù)位的值為二進制小數(shù)的最高位。再將乘積的小數(shù)部分乘以2,所得整數(shù)位的值為二進制小數(shù)的次高位。依此類推,直到滿足精度要求或乘2后的小數(shù)部分為0為止。 乘二

13、取整法 例如:將(0.625)10轉(zhuǎn)換成二進制數(shù),其過程如下:即:(0.625)10=(0.101)2 不同進制數(shù)之間的轉(zhuǎn)換不同進制數(shù)之間的轉(zhuǎn)換2. 二進制數(shù)轉(zhuǎn)換為十進制數(shù)的方法將二進制數(shù)轉(zhuǎn)換成十進制數(shù)時,只要將二進制數(shù)各位的權(quán)乘以各位的數(shù)碼(0或1)再相加即可。例如:將(1101.1001)2制轉(zhuǎn)換成十進制數(shù):(1101.1001)2123+122+021+120+12-1+02-2+02-3+12-48+4+0+1+0.5+0+0+0.0625=(13.5625)10不同進制數(shù)之間的轉(zhuǎn)換3. 二進制與十六進制數(shù)之間的轉(zhuǎn)換方法二進制數(shù)轉(zhuǎn)換成十六進制數(shù)例如:把(101101101.110010

14、1)2轉(zhuǎn)換成十六進制數(shù)。即:(101101101.1100101)2=(16D.CA)16。不同進制數(shù)之間的轉(zhuǎn)換2)十六進制數(shù)轉(zhuǎn)換成二進制數(shù)將十六進制數(shù)轉(zhuǎn)換成二進制數(shù)時,只要將每1位十六進制數(shù)用4位相應(yīng)的二進制數(shù)表示即可完成轉(zhuǎn)換。例如:將(ECA16)16轉(zhuǎn)換成二進制數(shù)。即:(ECA16)16=(111010110)2。思考練習(xí)題(1)微型計算機由哪幾部分組成?(2)什么是單片機?它與一般微型計算機在結(jié)構(gòu)上有什么區(qū)別?(3)單片機主要應(yīng)用在哪些方面?(4)將下面的一組十進制數(shù)轉(zhuǎn)換成二進制數(shù):567423198968(5)將下面的二進制數(shù)轉(zhuǎn)換成十進制數(shù)和十六進制數(shù):101100111010010

15、1111010011001111010000101 110001011110111010001100第2章 MCS-51系列單片機的組成與工作原理本章知識點: MCS-51單片機的內(nèi)部結(jié)構(gòu) CPU的結(jié)構(gòu)和功能存儲器的組織結(jié)構(gòu)MCS-51單片機的并行輸入輸出端口MCS-51 單片機的外部引腳及功能單片機指令時序本章重點: MCS-51單片機的內(nèi)部結(jié)構(gòu)MCS-51單片機的并行輸入輸出端口MCS-51 單片機的外部引腳及功能MCS-51系列單片機分類:1.無片內(nèi)ROM型芯片,必須外接ROM才能用。2. 帶片內(nèi)ROM型的芯片又分為片內(nèi)EPROM型、片內(nèi)FLASH型、片內(nèi)掩膜ROM型等。MCS-51系列

16、單片機特點:1.程序存儲器與數(shù)據(jù)存儲器分開;2.共有111條指令,其中包括乘除指令和位操作指令;3.中斷源有5個(8032/8052為6個),分為2個優(yōu)先級;4.在RAM區(qū)中開辟了4個通用工作寄存區(qū),共有32個通用寄存器,1個位尋址區(qū);5.4個并行I/O口都可以作為輸入/輸出,在擴展應(yīng)用方式下采用P0和P2口作為片外擴展地址總線;6.內(nèi)部集成了一個全雙工的異步串行接口,可進行數(shù)據(jù)的發(fā)送和接收。2.1 MCS-51系列單片機的硬件及端子功能 一、 MCS-51系列單片機的內(nèi)部結(jié)構(gòu)2.1 MCS-51系列單片機的硬件級端子功能 單一總線連接各單元采用特殊寄存器集中控制(1)8051單片機的基本組成

17、中央處理器(CPU):完成運算和控制。內(nèi)部數(shù)據(jù)存儲器(片內(nèi)RAM):256個字節(jié)的RAM單元,其中128個字節(jié)被專用寄存器占用,前128個字節(jié)單元共用戶存放可讀寫的數(shù)據(jù)。內(nèi)部程序存儲器(內(nèi)部ROM):4KB的掩膜ROM,用于存放程序、原始數(shù)據(jù)或表格。定時器/計數(shù)器:兩個16位的定時器/計數(shù)器,4種工作方式。并行I/O口:4個8位的I/O口(P0、P1、P2、P3),以實現(xiàn)數(shù)據(jù)的并行輸入/輸出。串行口:1個全雙工的串行口,具有4種工作方式,既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。中斷系統(tǒng):有5個中斷源,即外部中斷2個,定時/計數(shù)中斷2個,串行口中斷1個,有2個優(yōu)先級別。時鐘電路

18、:用來產(chǎn)生時鐘脈沖序列。特殊功能寄存器:有21個特殊功能寄存器,用于對片內(nèi)個功能模塊進行監(jiān)控和管理,是片內(nèi)RAM的一部分,與片內(nèi)RAM單元統(tǒng)一編址。2.1 MCS-51系列單片機的硬件及端子功能 2.1 MCS-51系列單片機的硬件及端子功能 其基本特性如下: 8位CPU,含片內(nèi)振蕩器;4KB的程序存儲器ROM;128B的數(shù)據(jù)存儲器RAM;64KB的外部程序存儲器尋址能力;64KB的外部數(shù)據(jù)存儲器尋址能力;32根輸入輸出(I/O)線;2個16位定時/計數(shù)器;1個全雙工異步串行口;21個特殊功能寄存器;5個中斷源,2個優(yōu)先級;具有位尋址功能。(2)MCS-51系列單片機簡介 它是一個微型計算機系

19、統(tǒng), MCS-51系列單片機分為51和52兩個子系列,51是基本型,52是增強型。 52子系列增強的功能是:片內(nèi)ROM從4KB增加到8KB;片內(nèi)RAM從128B增加到256B;定時/計數(shù)器從2個增加到3個;中斷源從5個增加到6個。2.1 MCS-51系列單片機的硬件及端子功能 2.1 MCS-51系列單片機的硬件及端子功能 二、MCS-51系列單片機的端子分布(a)方形封裝(b)雙列直插式封裝(1)電源端子(20、40)用于接入單片機的工作電源。(2)時鐘端子XTAL(19.18)用來提供單片機的工作時鐘信號。在使用單片機內(nèi)部振蕩電路時,這兩個端子用來接石英晶體和微調(diào)電容,在使用外部時鐘時,用

20、來輸入時鐘脈沖。(3)控制信號端子(9、29、30、31)RST/VPD:復(fù)位/備用電源端子。單片機正常工作時,此端子為低電平。在單片機掉電期間,此端子可接備用電源(+5V)。當電源電壓低于規(guī)定的電壓值時,VPD就向片內(nèi)RAM提供電源,比保持RAM內(nèi)的信息不丟失。PSEN:輸出訪問片外程序存儲器的讀選通信號。ALE/PROG:訪問外部存儲器時,ALE用于鎖存低8位的地址信號。如果系統(tǒng)不訪問外部存儲器,ALE端輸出周期性的脈沖信號。EA/VPP:用于區(qū)分片內(nèi)外低4KB范圍存儲空間。該端子接高電平時,CPU訪問片內(nèi)程序存儲器4KB的地址范圍。(4)輸入/輸出端子P0P3(3239、18、2128、

21、1017)均為8位雙向I/O口。其中,P3.0P3.7端子還能用于第二功能。2.1 MCS-51系列單片機的硬件及端子功能 2.1 MCS-51系列單片機的硬件及端子功能 2.1 MCS-51系列單片機的硬件及端子功能 2.2 單片機的CPU一、控制器組成:由指令寄存器、指令譯碼器、程序計數(shù)器PC、數(shù)據(jù)指針DPTR、RAM地址寄存器以及16位地址緩沖器等組成。功能:對來自存儲器中的指令進行譯碼,通過定時電路,在規(guī)定的時刻發(fā)出各種操作所需的全部內(nèi)部和外部的控制信號,使各部分協(xié)調(diào)工作,完成指令所規(guī)定的功能。(1)程序計數(shù)器PC:是一個16位的專用寄存器,用來存放下一條指令的地址,具有自動加1的功能

22、。(2)指令寄存器IR:是一個8位寄存器用于暫存待執(zhí)行的指令,等待譯碼。(3)暫存器TMP:用于暫存進入運算器之前的數(shù)據(jù)。(4)指令譯碼器ID:是對指令寄存器中的指令進行譯碼,將指令變?yōu)閳?zhí)行此指令所需要的電信號。(5)數(shù)據(jù)指針DPTR:是一個16位的專用地址指針寄存器,主要用來存放16位地址,作間接尋址寄存器,訪問片外64K字節(jié)的數(shù)據(jù)存儲器和I/O端口及程序寄存器。2.2 單片機的CPU 二、運算器作用:主要用于處理算術(shù)與邏輯運算等操作。組成:算術(shù)/邏輯運算單元ALU、累加器A、通用寄存器B、暫存器1、暫存器2以及程序狀態(tài)寄存器PSW、位處理邏輯電路和一些專用寄存器組成。 (1)算術(shù)邏輯單元A

23、LU:由加法器和其他邏輯電路組成,完成數(shù)據(jù)的算術(shù)邏輯運算、循環(huán)移位、位操作等。(2)累加器ACC:是一個8位特殊功能寄存器,通過暫存器與ALU相互傳送信息,用來存放一個操作數(shù)或中間結(jié)果。(3)程序狀態(tài)字PSW:是一個8位特殊功能寄存器,用于存儲程序運行過程中的各種狀態(tài)信息。(4)其他器件:用來存放中間結(jié)果,B寄存器用于乘法和除法時,提供一個操作數(shù),對于其他指令,只用作暫存器。三、位處理器 位處理器是單片機的一個特殊組成部分,具有相應(yīng)的指令系統(tǒng),可提供17條位操作指令。 硬件上有自己的“累加器”和自己的位尋址RAM、I/O口空間,是一個獨立的位處理器,位處理器和8位處理器形成完美的結(jié)合。2.2

24、單片機的CPU表2.1 寄存器PSW各位的功能、標志符號與相應(yīng)的位地址2.3 時鐘和時鐘電路(a)內(nèi)部振蕩器方式 (b)外部振蕩器方式 圖2.3 8051單片機的振蕩器方式一、時鐘電路 MCS-51系列單片機內(nèi)部有一個高增益的反相放大器構(gòu)成的振蕩電路,作為CPU的時鐘脈沖源。XTAL1為振蕩電路的輸入端,XTAL2為輸出端,同時作為內(nèi)部時鐘發(fā)生器的輸入端。內(nèi)部振蕩器要保證正常工作,必須在XTAL1、XTAL2端子外接一諧振電路。2.3 時鐘和時鐘電路(a)外接石英晶體的內(nèi)部時鐘方式。(b)8051采用外部振蕩信號時,需將XTAL1接地,XTAL2接外部的時鐘信號。(c)80C51采用外部振蕩信

25、號時,需將XTAL2懸空,XTAL1接外部的時鐘信號。二、時序MCS-51系列單片機的時序定時單位有4個,分別是節(jié)拍、狀態(tài)、機器周期和指令周期。節(jié)拍:振蕩脈沖的周期即為節(jié)拍(用P表示)。狀態(tài):振蕩脈沖經(jīng)過二分頻后,就是單片機的時鐘信號的周期,即為狀態(tài)(用S表示)。 一個狀態(tài)包含兩個節(jié)拍,前半周期對應(yīng)的節(jié)拍叫節(jié)拍1(P1),后半周期對應(yīng)的節(jié)拍叫節(jié)拍2(P2)。振蕩周期:為單片機提供時鐘信號的振蕩源的周期。時鐘周期:是振蕩源信號經(jīng)二分頻后形成的時鐘脈沖信號。 機器周期:通常將完成一個基本操作所需的時間稱為機器周期。一個機器周期總共有6個狀態(tài)。指令周期:是指CPU執(zhí)行一條指令所需要的時間。它一般由若

26、干個機器周期組成。2.3 時鐘和時鐘電路二、時序2.3 時鐘和時鐘電路P1P2S1P2振蕩周期時鐘周期機器周期機器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P22.3 時鐘和時鐘電路復(fù)位2.4 復(fù)位和復(fù)位電路1. ALE/2. 3. /VPP 4. RST(a)上電復(fù)位 (b)電平開關(guān)復(fù)位圖2.13 復(fù)位電路2.3.1 MCS-51單片機的存儲器結(jié)構(gòu)圖2.3 8051存儲器配置圖2.3.2 程序存儲器程序是控制計算機運行的一系列命令。計算機能夠識別并執(zhí)行的命令是由代碼“0”和“

27、1”組成的一組機器指令。 2.3.3 數(shù)據(jù)存儲器單片機的數(shù)據(jù)存儲器由可讀可寫的存儲器RAM組成,最多可擴展到64KB,用于存儲數(shù)據(jù)。 2.3.4 MCS-51單片機的內(nèi)部數(shù)據(jù)存儲器MCS-51單片機的內(nèi)部數(shù)據(jù)存儲器由地址00HFFH共有256個字節(jié)的地址空間組成,這256個字節(jié)的地址空間被分為兩部分,其中內(nèi)部數(shù)據(jù)RAM地址為00H7FH(即0127)。 圖2.4 內(nèi)部數(shù)據(jù)存儲器地址空間1. 內(nèi)部數(shù)據(jù)RAM單元內(nèi)部數(shù)據(jù)RAM分為工作寄存器區(qū)、位尋址區(qū)、通用RAM區(qū)三個部分。 圖2.5 RAM位地址(低128位在00H7FH)(a)系統(tǒng)復(fù)位后,未改變SP初值時的堆棧操作(設(shè)(A)=0ABH)(b)

28、系統(tǒng)復(fù)位后,改變SP初值為60H時的堆棧操作圖2.6 堆棧操作示例2. 特殊功能寄存器特殊功能寄存器SFR的地址空間是80HFFH。 表2.3 特殊功能寄存器的名稱、符號與地址2.4 MCS-51單片機的并行輸入輸出端口2.4.1 P0口結(jié)構(gòu)1. P0用作通用I/O口2. P0用作地址/數(shù)據(jù)總線分時復(fù)用方式2.4.2 P2口結(jié)構(gòu)1. P2口用作地址總線2. P2口用作通用I/O口2.4.3 P3口結(jié)構(gòu)2.4.4 P1口結(jié)構(gòu)2.5.2 外接晶振或外部時鐘信號輸入端 (a)內(nèi)部振蕩器方式 (b)外部振蕩器方式圖2.12 8051單片機的振蕩器方式表2.4 按不同工藝制造的單片機芯片外接振蕩器時的接

29、法2.5.3 輸入輸出引腳:通道0是一個8位漏極開路的雙向輸入輸出通道。在外接存儲器或者擴展I/O接口時,P0口作為復(fù)用的低8位地址總線和雙向數(shù)據(jù)總線。在不擴展存儲器或者I/O接口時,作為準雙向輸入輸出接口。:只有一種功能,即準雙向I/O口。:可作為準雙向I/O口使用;但在接有片外存儲器或擴展I/O接口范圍超過256B時,則該口一般只能作為高8位地址總線使用。:該口除了作為準雙向口外,還具有第二功能。 2.5.4 控制線 1. ALE/2. 3. /VPP 4. RST(a)上電復(fù)位 (b)電平開關(guān)復(fù)位圖2.13 復(fù)位電路2.7 思考練習(xí)題(1)MCS-51單片機包含哪些主要邏輯功能部件?(2

30、)程序狀態(tài)字寄存器PSW包含哪幾個標志位?各位的含義是什么?各有何作用?(3)什么叫單片機?(4)MCS-51單片機的存儲結(jié)構(gòu)有何特點?(5)單片機的EA端有何作用?在8031組成的單片機應(yīng)用系統(tǒng)中,其EA端怎樣處理?為什么?(6)單片機內(nèi)部RAM分為哪幾個部分?各有何作用?(7)MCS-51單片機的堆棧SP在操作中遵循什么原則?在開機復(fù)位時,其初值是多少?是否可以通過程序重新設(shè)置?(8)怎樣確定和改變單片機當前的工作寄存器組?(9)簡要說明單片機的位地址分配。(10)試畫出常用的單片機復(fù)位電路,并說明復(fù)位后各個寄存器的狀態(tài)。第3章 MCS-51單片機的指令系統(tǒng) 匯編語言的指令格式及符號簡介

31、尋址方式 數(shù)據(jù)傳送類指令算術(shù)運算類指令邏輯運算類指令位操作類指令控制轉(zhuǎn)移類指令思考練習(xí)題 3.1 匯編語言的指令格式及符號簡介3.1.1 指令格式標號: 操作碼助記符 第一操作數(shù) ,第二操作數(shù) ,第三操作數(shù) ;注釋例如:LOOP:MOV A, #50H;(A)50H DECR0;(R0)(R0)-1 DJNZ R0, LOOP;(R0)-10,則程序轉(zhuǎn)移到LOOP地址;否則順序執(zhí)行 END;結(jié)束3.1.2 本章中符號的定義3.2 尋 址 方 式 MCS-51單片機有7種尋址方式,見表。 表3.1 7種尋址方式的比較3.2.1 立即尋址例如:MOV A, #23H ; (A)23H,即累加器A的

32、內(nèi)容被替換為立即數(shù)23H。圖3.1 MOV A,#23H的執(zhí)行示意圖該指令的功能是將8位的立即數(shù)23H傳送到累加器A中。如圖所示。其中,目的操作數(shù)采用寄存器尋址,源操作數(shù)采用立即尋址。3.2.2 直接尋址直接尋址是指在指令中包含了操作數(shù)的地址,該地址直接給出了參加運算或傳送的單元或位。直接尋址方式可訪問三種地址空間:特殊功能寄存器SFR(該空間只能采用直接尋址)。內(nèi)部數(shù)據(jù)RAM的低128個字節(jié)單元(該空間還可以采用寄存器間接尋址)。221個位地址空間。例如:MOV A, 40H ;把40H單元的內(nèi)容送到累加器中,即(A)(40H)。 圖3.2 MOV A,40H的執(zhí)行示意圖 3.2.3 寄存器

33、尋址 寄存器尋址是指定某一可尋址的寄存器的內(nèi)容為操作數(shù)。 例如:MOV A, R0 ;(A)(R0)該指令的功能是將R0中的數(shù)據(jù)傳送到累加器A中。源操作數(shù)與目的操作數(shù)都采用了寄存器尋址。 在MCS-51單片機中,能夠用來間接尋址的寄存器有:用戶所選定的工作寄存器組的R0、R1,堆棧指針SP和16位的數(shù)據(jù)指針DPTR。 內(nèi)部數(shù)據(jù)RAM的寄存器間接尋址采用寄存器R0、R1;外部數(shù)據(jù)RAM的寄存器間接尋址有兩種形式:一是采用R0、R1作間址寄存器,這時R0或R1提供低8位地址,而高8位地址則由P2端口提供;二是采用16位的DPTR作間址寄存器。 3.2.4 寄存器間接尋址例如:設(shè)R0的內(nèi)容為60H,

34、且(60H)=10H,即60H地址單元中的內(nèi)容為10H,則語句MOV A, R0的執(zhí)行過程如圖所示。執(zhí)行后,(A)=10H,即累加器A的內(nèi)容成為10H。圖3.3 MOV A,R0的執(zhí)行示意圖又如:MOVX A, R0;(A)(R0),用R0間接尋址的單元中的內(nèi)容替換A的;內(nèi)容。MOVX A, DPTR;(A)(DPTR),用DPTR間接尋址的單元中的內(nèi)容替換;A的內(nèi)容。3.2.5 變址尋址這種尋址方式是以數(shù)據(jù)指針DPTR或程序計數(shù)器PC作為基址寄存器,以累加器A作為偏移量寄存器,將一個基址寄存器的內(nèi)容與偏移量寄存器的內(nèi)容之和作為操作數(shù)地址。 例如:MOVC A, A+DPTR設(shè)(A)=10H,

35、(DPTR)=1000H,程序存儲器的(1010H)=45H,則上面程序語句的功能是將A的內(nèi)容與DPTR的內(nèi)容相加形成操作數(shù)地址(1010H),把該地址中的數(shù)據(jù)傳送到累加器A。即(A)(A)+(DPTR)。結(jié)果:(A)=45H。 圖3.4 MOVC A,A+DPTR的執(zhí)行示意圖 相對尋址是把指令中給定的地址偏移量rel與程序計數(shù)器PC的當前值(讀出該雙字節(jié)或三字節(jié)的跳轉(zhuǎn)指令后,PC指向的下條指令的地址)相加,得到真正的程序轉(zhuǎn)移地址。 例如:JC 80H若C=0,則PC值不變,若C=1,則以當前PC值為基地址,加上80H得到新的PC值。設(shè)該轉(zhuǎn)移指令存放在1005H單元,取出操作碼后PC指向100

36、6H單元,取出偏移量后PC指向1007H單元,所以計算偏移量時PC當前地址為1007H,已經(jīng)為轉(zhuǎn)移指令首地址加2,這里的偏移量以補碼給出,所以80H代表著-80H,補碼運算后,就形成跳轉(zhuǎn)地址0F87H。其過程如圖所示。 3.2.6 相對尋址3.2.6 相對尋址圖3.5 JC 80H的執(zhí)行示意圖3.2.7 位尋址MCS-51單片機可對片內(nèi)RAM的兩個區(qū)域進行位尋址:一個是20H2FH單元的128位,另一個是特殊功能寄存器的93位。在尋址時,同一個位地址可以有多種標識方式,讀者可參看后面節(jié)“位操作指令”的相關(guān)內(nèi)容。3.3.1 通用傳送指令格式:MOV 目的操作數(shù),源操作數(shù)功能:把第二操作數(shù)指定的字

37、節(jié)內(nèi)容傳送到第一操作數(shù)指定的單元中。不影響源操作數(shù)內(nèi)容,不影響別的寄存器和標志。 1. 以累加器A為目的操作數(shù)的傳送類指令3.3 數(shù)據(jù)傳送類指令指令助記符及功能說明如下:例1 若(50H)=10H,則執(zhí)行指令MOV A, 50H之后,(A)=10H。例2 若(R0)=20H,(20H)=39H,則執(zhí)行指令MOV A, R0后,(A)=39H。例3 若(R5)=55H,則執(zhí)行指令MOV A, R5后,(A)=55H。2. 以Rn為目的操作數(shù)的傳送類指令例1 若(A)=20H,則執(zhí)行指令MOV R3, A后,(R3)=20H。例2 若(30H)=01H,則執(zhí)行指令MOV R7, 30H后,(R7)

38、=01H。指令助記符及功能說明如下:例1 若(30H)=20H,(R0)=30H,則執(zhí)行指令MOV 90H, R0的結(jié)果為(90H)=20H。例2 若例1中的條件不變,而執(zhí)行指令MOV P1, R0,則(P1)=20H。 3. 以直接地址directX為目的操作數(shù)的傳送類指令指令助記符及功能說明如下:例1 若(R0)=50H,(50H)=20H,(A)=10H,則執(zhí)行指令“MOV R0, A”后,50H單元的內(nèi)容由原來的20H變?yōu)?0H。4. 以寄存器間接地址Ri為目的操作數(shù)的傳送類指令指令助記符及功能說明如下:5. 16位目標地址傳送指令這條指令的功能是:把16位立即數(shù)送入DPTR中。而16

39、位的數(shù)據(jù)指針DPTR由DPH與DPL組成,該指令執(zhí)行后,16位立即數(shù)的高8位送入DPH中,低8位送入DPL中。該指令的執(zhí)行,不影響程序狀態(tài)寄存器PSW。指令助記符及功能說明如下:3.3.2 外部數(shù)據(jù)存儲器(或I/O口)與累加器A傳送指令例1 設(shè)(P2)=20H,現(xiàn)將A中數(shù)據(jù)存儲到20FFH單元中去。可用以下程序?qū)崿F(xiàn):MOV R1, #0FFH ;(R1)0FFHMOVX R1, A ;(20FFH)(A)也可采用下述程序?qū)崿F(xiàn):MOV DPTR, #20FFH ;(DPTR)20FFHMOVX DPTR, A ;(DPTR)(A),即(20FFH)(A)指令助記符與功能說明如下:3.3.2 外部

40、數(shù)據(jù)存儲器(或I/O口)與累加器A傳送指令例2 將外部數(shù)據(jù)存儲器7FF0H單元中的數(shù)據(jù)取出,存放到外部數(shù)據(jù)存儲器2000H單元中去。MOV DPTR, #7FF0HMOVX A, DPTRMOV DPTR, #2000HMOVX DPTR, A例1 在外部程序存儲器2000H單元開始存放了數(shù)字09的共陰極數(shù)碼管的16進制數(shù)的字形代碼3FH、06H、6FH。要求根據(jù)A中的值(09)來查找該數(shù)字所對應(yīng)的代碼以便顯示。若用PC作基址寄存器,則需要在MOVC A, A+PC指令前用一加法指令對地址進行調(diào)整:ADD A, #dataMOVC A, A+PC3.3.3 程序存儲器向累加器A傳送數(shù)據(jù)指令指令

41、助記符與功能說明如下: 1. 字節(jié)交換指令例1 設(shè)(R1)=30H,(30H)=45H,(A)=7FH,則執(zhí)行指令:XCH A, R1結(jié)果:(A)=45H,而(30H)=7FH,從而實現(xiàn)了累加器A與內(nèi)部數(shù)據(jù)存儲器RAM中30H單元的數(shù)據(jù)交換。3.3.4 數(shù)據(jù)交換指令指令助記符與功能說明如下:2. 半字節(jié)交換指令例1 設(shè)(30H)=6FH,(R0)=30H,(A)=0F6H,則執(zhí)行指令:XCHD A, Ri結(jié)果:(A)=0FFH,(30H)=66H數(shù)據(jù)交換指令除了影響始終跟蹤A中數(shù)據(jù)奇偶性的P標志外,對PSW中其他標志位均無影響。指令助記符與功能說明如下:3. 累加器A中高四位與低四位交換指令S

42、WAP A該指令所執(zhí)行的操作是累加器A中的高4位與低4位的內(nèi)容互換,其結(jié)果仍存放在累加器A中。例1 設(shè)(A)=0A5H(10100101B),則執(zhí)行指令:SWAP A結(jié)果:(A)=5AH(01011010B)指令SWAP交換了A中高、低半字節(jié)(30和74),結(jié)果不影響標志寄存器PSW。3.3.5 堆棧操作指令堆棧操作指令只有2條,即:壓入(PUSH)和彈出(POP)。壓入指令:PUSH direct ;SPSP+1,(SP)(direct)彈出指令:POP direct ;(SP)(direct),SPSP-1例1PUSH A ;保護A中數(shù)據(jù) PUSH PSW ;保護標志寄存器中數(shù)據(jù) ;執(zhí)行服

43、務(wù)程序 POP PSW ;恢復(fù)標志寄存器中數(shù)據(jù) POP A ;恢復(fù)A中數(shù)據(jù)例2PUSH A PUSH PSW POP A POP PSW例3 PUSH DPH PUSH DPL POP DPL POP DPH3.4.1 加減運算指令 1. 加法指令 這類指令所完成的操作是把源操作數(shù)(立即數(shù)、直接地址單元內(nèi)容、間接地址單元內(nèi)容、工作寄存器內(nèi)容)與累加器A的內(nèi)容相加,將結(jié)果保存在累加器A中。 3.4 算術(shù)運算類指令指令助記符與功能說明如下:例1 執(zhí)行指令:MOV A, #0A9HADD A, #0B8H對程序狀態(tài)寄存器的影響如圖所示。運算結(jié)果:(A)=61H,CY=1,AC=1,OV=1,P=1,

44、(PSW)=0C5H例2 8位數(shù)加法程序片斷1: MOVA, #23H ADDA, #5AH運算結(jié)果:(A)=7DH,CY=0,OV=0,AC=0,P=0,(PSW)=00H。 例3 8位數(shù)加法程序片斷2:MOVA, #0ABHADDA, #9AH運算結(jié)果:(A)=45H,CY=1,OV=1,AC=1,P=1,(PSW)=0C5H。 帶進位加法指令與前述加法指令的區(qū)別僅為考慮進位位,其他與加法指令相同。2. 帶進位加法指令指令助記符與功能說明如下:例3 利用ADDC指令可以進行多字節(jié)的加法運算。設(shè)有兩個16位數(shù)相加,被加數(shù)的高8位放在41H,低8位放在40H,加數(shù)的高8位放在43H,低8位放在

45、42H,和的低8位存放在50H,高8位存放在51H,進位位存放在52H。可編程序如下:例1 設(shè)(A)=0AAH,(R0)=55H,C=1,則執(zhí)行指令:ADDC A, R0運算結(jié)果:(A)=00000000B,AC=1,CY=1,OV=1。例2 設(shè)(A)=35H,(40H)=21H,C=0,則執(zhí)行指令:ADDC A, 40H運算結(jié)果:(A)=56H,AC=0,CY=0,OV=0。這與執(zhí)行指令“ADD A, 40H”的結(jié)果是一樣的。SHJ: MOV A, 40H;(A)被加數(shù)低8位ADD A, 42H;與加數(shù)低8位相加MOV 50H, A;和的低8位存入50HMOV A, 41H;(A)被加數(shù)高8

46、位ADDC A, 43H;被加數(shù)高8位與加數(shù)高8位以及低位來的進位相加MOV 51H, A;和的高8位存入51H單元MOV A, #00H;(A)00HADDC A, #00H;(A)(A) +00H+高8位來的進位MOV 52H, A;進位位C內(nèi)容存入52H單元3. 帶借位減指令指令助記符與功能說明如下:例1 設(shè)(40H)=0BAH,(41H)=98H,試編寫40H內(nèi)容減去41H內(nèi)容后,結(jié)果再存入40H單元的程序。MOVA, 40H;(A)(40H)CLRC;進位位C清0SUBBA, 41H;(A)(A)-(41H) -(C)MOV40H, A;(40H)(A)執(zhí)行以上程序后,(40H)=2

47、2H,CY=0,OV=0。如果參與運算的兩數(shù)為無符號數(shù),則其溢出與否與OV狀態(tài)無關(guān),而是靠CY是否有借位來判斷,OV僅僅表示帶符號數(shù)運算時是否溢出。例2 設(shè)有兩個16位數(shù)相減,被減數(shù)的高8位放在41H,低8位放在40H,減數(shù)高8位放在43H,低8位放在42H,差的低8位存放在50H,高8位存放在51H,借位位存放在52H。 可編程序如下:SHJIAN:MOV A, 40H ;(A)被減數(shù)低8位CLR C ;C位清0SUBB A, 42H ;減去減數(shù)低8位MOV 50H, A ;差的低8位存入50HMOV A, 41H ;(A)被減數(shù)高8位SUBB A, 43H ;被減數(shù)高8位減去減數(shù)高8位與借

48、位MOV 51H, A ;差的高8位存入51H單元MOV A, #00H ;(A)00HADDC A, #00H ;(A)高8位的借位位MOV 52H, A ;借位位C內(nèi)容存入52H單元1. 乘法指令例1 設(shè)(A)=67H(103),(B)=0ADH(173),執(zhí)行指令:MUL AB運算結(jié)果:乘積為459BH(17819),(A)=9BH,(B)=45H。另外:OV=1,CY=03.4.2 乘除運算指令 MUL AB ;(A)乘積低8位,(B)乘積高8位例2 設(shè)被乘數(shù)為16位無符號數(shù),低8位存放在地址為K的單元,高8位存放在地址為K+1的單元。乘數(shù)為8位無符號數(shù),存放在M單元。編程求出二者乘積

49、,并將乘積的07位存放在R1,815位存放在R2,1623位存放在R3中。分析:16位無符號數(shù)與8位無符號數(shù)相乘的步驟示意如下:程序編制如下:MOV R0, #K ;設(shè)置被乘數(shù)地址指針MOV A, R0 ;被乘數(shù)送A中MOV B, M ;乘數(shù)送B中MUL AB ;(K)(M)MOV R1, A ;乘積的07位存入R1MOV R2, B ;暫存積的815位INC R0 ;指向被乘數(shù)高8位地址MOV A, R0 ;取被乘數(shù)高8位MOV B, M ;乘數(shù)送B中MUL AB ;(K+1)(M)ADD A, R2 ;求得乘積的815位MOV R2, A ;乘積的815位存入R2MOV A, BADDC

50、A, #00H ;求得乘積的1623位MOV R3, A ;乘積的1623位存入R32. 除法指令例1 設(shè)(A)=9AH,(B)=23H,執(zhí)行指令:DIV AB則(A)=04H,(B)=0EH,OV=00H,CY=00H3.4.2 乘除運算指令 DIV AB ;(A)商,(B)余數(shù)3.4.3 增1減1指令1. 增1指令I(lǐng)NC A ;(A)(A)+1INC direct ;(direct)(direct)+1INC Ri ;(Ri)(Ri)+1INC Rn ;(Rn)(Rn)+1INC DPTR ;(DPTR)(DPTR)+1例1 設(shè)(A)=40H,(41H)=29H,則執(zhí)行下列指令:INC A

51、;(A)40H+1HINC 41H;(41H)29H+1H結(jié)果:(A)=41H,(41H)=2AH例2 設(shè)(R0)=56H,片內(nèi)RAM單元(56H)=0FFH,(57H)=50H,則執(zhí)行下列指令:INC R0;(56H)00HINC R0;(R0)57HINC R0;(57H)51H結(jié)果:(56H)=00H,(R0)=57H,(57H)=51H例3 執(zhí)行下述指令序列:MOV DPTR,#2FFEH;(DPTR)2FFEHINC DPTR;(DPTR)2FFFHINC DPTR;(DPTR)3000HINC DPTR;(DPTR)3001H則(DPTR)=3001H2. 減1指令DEC A;(A

52、)(A)-1DEC direct;(direct)(direct)-1DEC Ri;(Ri)(Ri)-1DEC Rn;(Rn)(Rn)-1例1 設(shè)(R0)=4FH,片內(nèi)RAM單元(4FH)=40H,(4EH)=00H,執(zhí)行指令:DEC R0 ;(4FH)3FHDEC R0 ;(R0)4EHDEC R0 ;(4EH)0FFH結(jié)果:(R0)=4EH,(4EH)=0FFH,(4FH)=3FH3.4.4 二/十進制調(diào)整指令 DA A該指令的功能是對累加器A中的“二/十”進制(BCD碼)加法結(jié)果進行調(diào)整。例1 執(zhí)行下面的指令:MOVA, #86HADDA, #47H結(jié)果:(A)=0CDH,CY=0,AC

53、=0所得結(jié)果并不是BCD碼,若接著執(zhí)行以下指令:DA A則結(jié)果:(A)=33H,CY=1,AC=11. 累加器A清0指令格式:CLR A功能:將00H送入累加器A中。3.5 邏輯運算指令3.5.1 單操作數(shù)指令2. 累加器A取反指令格式:CPL A功能:將累加器A中內(nèi)容取反(將A中內(nèi)容按位取反,即邏輯非運算)后再送回累加器A中。例1 設(shè)(A)=98H,執(zhí)行指令CLR A ;(A)0CPL A ;(A)0FFH結(jié)果:(A)=0FFH3. 累加器A內(nèi)容循環(huán)左移一位指令格式:RL A功能:將累加器A中的內(nèi)容循環(huán)左移一位。即例1 設(shè)(A)=10001000,則執(zhí)行指令“RL A”后,結(jié)果:(A)=00

54、0100014. 累加器A內(nèi)容帶進位位CY循環(huán)左移一位指令格式:RLC A功能:將累加器A中的內(nèi)容與進位標志位CY一起循環(huán)左移一位。即:例1 設(shè)(A)=01010101,(CY)=1。則執(zhí)行指令“RLC A”后,結(jié)果:(A)=10101011,(CY)=0。5. 累加器A內(nèi)容循環(huán)右移一位指令格式:RR A功能:將累加器A中的內(nèi)容循環(huán)右移一位。即:例1 設(shè)(A)=00010001,則執(zhí)行指令“RR A”后,結(jié)果:(A)=100010006. 累加器A內(nèi)容帶進位位CY循環(huán)右移一位指令格式:RRC A功能:將累加器A中的內(nèi)容與進位標志位CY一起循環(huán)右移一位。即:例1 設(shè)(A)=10101011,(C

55、Y)=0。則執(zhí)行指令“RRC A”后,結(jié)果:(A)=01010101,(CY)=1。3.5.2 雙操作數(shù)指令1. 邏輯與指令邏輯與的規(guī)則定義為:(其中表示邏輯與)00=001=10=011=1例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行指令“ANL A, R3”。結(jié)果:(A)=81H(10000001B)。指令執(zhí)行過程如下:2. 邏輯或指令邏輯或的規(guī)則定義為:(其中表示邏輯或)00=000=10=111=1例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行指令“ORL A, R3”。結(jié)果:(A)=0EFH(11101111B)。指令執(zhí)行過程如下:3. 邏輯異或指令邏輯異或的規(guī)則定義為(其

56、中表示邏輯異或):00=11=010=01=1例1 設(shè)(A)=0C3H,(R3)=0ADH,執(zhí)行指令“XRL A, R3”。結(jié)果:(A)=6EH(01101110B)。指令執(zhí)行過程如下:例2 試把分別保存在30H、31H單元中用ASCII碼表示的兩位數(shù),轉(zhuǎn)換成兩位BCD碼,并以壓縮BCD碼形式存入30H單元中。程序如下:ANL 30H, #0FH;30H單元的ASCII碼轉(zhuǎn)換成BCD碼MOV A, 31H;取31H單元的ASCII碼ANL A, #0FH;31H單元的ASCII碼變成BCD碼RL ARL ARL ARL AORL 30H, A;結(jié)果存入30H單元例1 要將20H位的內(nèi)容傳送給2

57、3H位,不能直接用“MOV 20H, 23H”,因為該指令執(zhí)行的實際是字節(jié)傳送,若要將20H位的內(nèi)容傳送給23H位,可用下述程序?qū)崿F(xiàn):MOV C, 20H ;(C)(20H)MOV 23H, C ;(23H)(C)3.6 位操作類指令3.6.1 位數(shù)據(jù)傳送指令指令助記符與功能說明如下:目的操作數(shù) 源操作數(shù) 功能說明MOV C, bit;(C)(bit)MOV bit, C;(C)(bit)指令格式如下:CLR C;(C)(0)CLR bit;( bit)(0)以上指令可使直接尋址位(bit)或位累加器C清0,不影響其他標志。例1 片內(nèi)RAM單元26H的內(nèi)容為0FFH,執(zhí)行指令:CLR 32H結(jié)

58、果:(26H)=0FBH(11111011B),其中,32H為26H單元第二位的位地址。3.6.2 位狀態(tài)控制指令 1. 位清0指令指令格式如下:CPL C ;(C)(/C)CPL bit ;(bit)(/bit)以上指令把位累加器C或者直接尋址位(bit)內(nèi)容取反,不影響其他標志位。例1 執(zhí)行下面的指令序列:MOV P1,#2FH;(P1)(2FH即00101111B)位求反位求反結(jié)果:(P1)=2AH(00101010B)。2. 位求反指令指令格式如下:SETB C;(C)1SETB bit;(bit)1以上指令把進位標志C或者任何可直接尋址位(bit)置1,不影響其他標志位。例1 假設(shè)進

59、位標志C內(nèi)容為0,輸出口P1原來的內(nèi)容為0FH(00001111B),則執(zhí)行下面指令:SETB C結(jié)果:(C)=1,(P1)=8FH(10001111B)。 3. 位置1指令例1 當位地址(2AH)=1,(32H)=1,同時累加器中(ACC.7)=0時,進位位C=1,否則C清0,可編程序如下:MOVC, 2AH ;(C)(2AH)ANLC, 32H ;(C)(C)(32H)ANLC, /ACC.7 ;(C)(C)(/ACC.7)3.6.3 位邏輯操作指令 1. 位與指令指令助記符與功能說明如下:目的操作數(shù) 源操作數(shù) 功能說明ANL C, bit ;(C)(C)(bit)ANL C, /bit

60、;(C)(C)(/bit)指令助記符與功能說明如下:目的操作數(shù) 源操作數(shù) 功能說明ORL C, bit ;(C)(C)(bit)ORL C, /bit ;(C)(C)(/bit)位或指令的功能是將直接尋址位的內(nèi)容或直接尋址位內(nèi)容取反后(不改變原來位的內(nèi)容)和位累加器C的內(nèi)容相或,結(jié)果保存在C中。例1 寫出位地址(2AH)=1和(32H)=1、累加器(ACC.7)=0相或的程序:MOVC, 2AH ;(C)(2AH)ORLC, 32H ;(C)(C)(32H)ORLC, ACC.7 ;(C)(C)(ACC.7)結(jié)果:(C)=1。2. 位或指令圖為判C轉(zhuǎn)移指令的執(zhí)行過程。3.6.4 位條件轉(zhuǎn)移指令

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論