單片機原理第1章_第1頁
單片機原理第1章_第2頁
單片機原理第1章_第3頁
單片機原理第1章_第4頁
單片機原理第1章_第5頁
已閱讀5頁,還剩159頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、主編 黃劼2008 2第一章 緒緒 論論1.1單片機與微型計算機的區(qū)別單片機與微型計算機的區(qū)別 一、 計算機發(fā)展簡史v第一臺計算機ENIAC誕生于1946年2月15日v以電子管為基本元件,時鐘頻率100KHz, 運算速度5000次加法/每秒v計算機經(jīng)過了幾代的更新?lián)Q代,到今天已經(jīng)形成了一個龐大的計算機家族。第一臺電子計算機電子計算機技術(shù)的發(fā)展到現(xiàn)在,已電子計算機技術(shù)的發(fā)展到現(xiàn)在,已經(jīng)經(jīng)歷了五代:經(jīng)經(jīng)歷了五代:v電子管計算機;v晶體管計算機;v集成電路計算機;v大規(guī)模集成電路計算機;v超大規(guī)模集成電路計算機。 計算機可分為不同類型,通常所說的“計算機”,本課程將要學(xué)習(xí)的 電子計算機 數(shù)字式電子計

2、算機 數(shù)字式微型電子計算機微 機二、馮諾依曼結(jié)構(gòu)微機基礎(chǔ)結(jié)構(gòu)v匈牙利籍?dāng)?shù)學(xué)家馮諾依曼提出了以儲存器為中心的計算機結(jié)構(gòu)方案v1946年6月,他又提出了“程序存儲”和“二進(jìn)制運算”的思想v現(xiàn)在的計算機大部分仍是這種結(jié)構(gòu),即即硬件部分由運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備五大功能部件組成v微型計算機通過印刷電路板和電纜把上述功能部件有機地連接在一起,以“系統(tǒng)”的形式出現(xiàn),在軟件配合下,實現(xiàn)相應(yīng)的計算和控制功能。v單片機則是把構(gòu)成一臺微型計算機所必需的功能部件集成到一個芯片內(nèi),以“芯片”的形式出現(xiàn),在軟件配合下,實現(xiàn)計算和控制功能。v單片機在本質(zhì)上仍然是一種馮諾依曼結(jié)構(gòu)的數(shù)字式微型電子計算機,其

3、全稱是單片微型計算機Single chip Computer,又稱為微控制器 Microcontrollerv微型計算機的基本理論和有關(guān)概念微型計算機的基本理論和有關(guān)概念同樣適用于單片機系統(tǒng)同樣適用于單片機系統(tǒng)三、單片機和微型計算機的區(qū)別 v微型計算機多用于科學(xué)計算和事務(wù)處理等方面,計算復(fù)雜且要求計算速度快,因此微機的特點是存儲容量大且運算速度快v單片機集成度高、體積小、功耗低、實時處理能力強,主要應(yīng)用于控制領(lǐng)域v單片機和微型計算機的區(qū)別不在單片機和微型計算機的區(qū)別不在本質(zhì)上,而在于針對性及適用對本質(zhì)上,而在于針對性及適用對象的不同象的不同v第一階段(19741978)單片機形成 以Intel

4、公司MCS48系列單片機為代表v第二階段(19781983)性能完善提高 以Intel公司MCS51系列單片機為代表v第三階段(19831990) 16位單片機和高性能8位機并行發(fā)展 以Intel公司MCS96系列單片機為代表1.2 單片機的發(fā)展歷史和趨勢單片機的發(fā)展歷史和趨勢 v第四階段(1990) 1990年2月,i800860超級單片機問世,運算速度為1.2億次/秒,可進(jìn)行32位整數(shù)運算和64位浮點運算,片內(nèi)具有3維圖形處理器。 實質(zhì)是將大型計算機單片化,可完成更為復(fù)雜的控制功能。 1.3 MCS51單片機的特點和型號體系 v基本系列:8051子系列: 包括8031/8751/8051三

5、個具體型號; v增強系列:8052子系列: 包括8032/8752/8052三個具體型號 vCOMS基本系列: 包括80C31/87C51/80C51三個具體型號v所有型號指令和引腳完全兼容所有型號指令和引腳完全兼容 不同系列的差異在于:v基本系列: 片內(nèi)程序存儲器4K,片內(nèi)數(shù)據(jù)存儲器128Byte,2個定時計數(shù)器; v增強系列: 片內(nèi)程序存儲器8K,片內(nèi)數(shù)據(jù)存儲器256Byte ,3個定時計數(shù)器;vCOMS系列: COMS工藝制造,功耗低,電壓范圍廣。又可分為C51和C52兩個子系,區(qū)別同上。同系列不同型號的差異在于:v805X片內(nèi)有4K的ROM作為程序存儲器;v875X片內(nèi)有4K的EPRO

6、M作為程序存儲器;v803X沒有片內(nèi)程序存儲器;v其它功能部件完全一樣,指令和引腳其它功能部件完全一樣,指令和引腳也完全兼容也完全兼容。 v近年多家公司購買了8051的內(nèi)核,推出了眾多兼容機型,使用較廣泛的有: ATMEL公司融入FLASH存儲器技術(shù)的AT89系列Philips公司的80C51、80C552系列; 華邦公司的W78C51、W77C51高速低價系列 ADI公司的ADC8xx高精度ADC系列; Cygnal公司的C8051F系列高速SOC單片機。 MCS-51單片機常用型號性能 1.4 MCS51單片機的應(yīng)用領(lǐng)域 v工業(yè)過程實時控制 v數(shù)據(jù)采集與處理 v機電一體化產(chǎn)品 v辦公自動化

7、設(shè)備 v智能儀器 v家電控制 v汽車電子產(chǎn)品 v商業(yè)營銷設(shè)備 第2章 MCS51單片機硬件組成單片機硬件組成 v本章將介紹MCS51單片機的基本組成;單片機存儲器的組織結(jié)構(gòu);I/O接口的結(jié)構(gòu)和工作原理;單片機的基本工作方式以及單片機的基本時序v通過本章的學(xué)習(xí),應(yīng)該對單片機的整體結(jié)構(gòu)和工作原理有全面的了解,上述內(nèi)容是學(xué)習(xí)和使用單片機指令系統(tǒng)以及設(shè)計單片機控制系統(tǒng)的基礎(chǔ)。 2.1 MCS51單片機內(nèi)部資源單片機內(nèi)部資源 v一個8位微處理器(CPU) v128B片內(nèi)數(shù)據(jù)存儲器(RAM)v4K片內(nèi)程序存儲器(ROM)v21個專用寄存器,實現(xiàn)對內(nèi)部功能部件的控制和數(shù)據(jù)運算v4個8位并行I/O接口(P0、

8、P1、P2、P3) v兩個16位定時/計數(shù)器v一個全雙工串行口v一套完善的中斷管理和處理系統(tǒng) v不同的具體型號,可能在以下方面有所不同片內(nèi)數(shù)據(jù)存儲器容量不同片內(nèi)程序存儲器容量和器件類型不同定時器數(shù)量不同串口數(shù)量不同MCS51單片機的基本結(jié)構(gòu)示意 MCS51單片機的基本結(jié)構(gòu)示意 vMCS51單片機的P0、P2和P3并行接口在CPU控制下,可構(gòu)成地址、數(shù)據(jù)和控制總線,用于外部設(shè)備擴展,MCS51單片機可以擴展:片外數(shù)據(jù)存儲器單元和I/O接口地址共64KB64KB片外程序存儲器 2.2 單片機的中央處理器單片機的中央處理器 v單片機的CPU字長為8位,即對數(shù)據(jù)的處理、傳輸均按8位二進(jìn)制數(shù)(一個字節(jié))

9、進(jìn)行vMCS51系列單片機是8位機 vMCS51系列單片機的CPU由運算器、控制器及相應(yīng)的專用寄存器組成運算器運算器v運算器由算術(shù)/邏輯部件(ALU)為核心,加上累加器ACC、暫存寄存器、程序狀態(tài)字寄存器PSW以及布爾處理器、BCD碼運算調(diào)整電路等構(gòu)成v運算器的功能包括:算術(shù)運算;邏輯運算;位操作??刂破骺刂破?v控制器是CPU的指揮調(diào)度中樞,它包括:定時控制邏輯、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、程序計數(shù)器PC、堆棧指針SP、地址寄存器、地址緩沖器等v運行時控制器對指令進(jìn)行譯碼,然后通過定時和控制電路在規(guī)定時刻發(fā)出所需的內(nèi)、外部控制信號,協(xié)調(diào)各部分的工作,完成指令規(guī)定的操作。 程序計

10、數(shù)器程序計數(shù)器PC(Program Counter) v程序計數(shù)器PC是16位的寄存器,用來存放即將要執(zhí)行的指令地址v可對64KB程序存儲器直接尋址。v讀取指令時,PC內(nèi)容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。v當(dāng)CPU按照PC指示的地址取出一條指令后,PC值將自動增加,指向下一條指令的首字節(jié)地址。 指令寄存器指令寄存器 v指令寄存器用來存放指令代碼。vCPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令存儲器,經(jīng)指令譯碼器譯碼后由定時與控制電路發(fā)出相應(yīng)的控制信號,完成指令功能。 MCS51控制器示意圖2.3 MCS51單片機存儲器體系結(jié)構(gòu)單片機存儲器體系結(jié)構(gòu) v存儲器是微型計算機的重要

11、組成部分,將要或正在執(zhí)行的程序代碼、運算的原始數(shù)據(jù)、中間結(jié)果以及與外部設(shè)備進(jìn)行交換的信息都需要存儲在存儲器中存儲器中哪里存放數(shù)據(jù),哪里存放指令或者哪個存儲器存放數(shù)據(jù),哪個存儲器存放指令以及存儲器地址與I/O口地址如何區(qū)分v是微型計算機設(shè)計時必須解決的問題,這一問題通過存儲器配置方式來解決的 2.3.1 微型計算機存儲器的配置方式 v微型計算機存儲器的配置方式有兩種: Harvard結(jié)構(gòu)與普林斯頓結(jié)構(gòu)結(jié)構(gòu) (普林斯頓結(jié)構(gòu))vMCS51系列單片機的存儲器配置方式采用Harvard結(jié)構(gòu);vMCS-98系列單片機以及80X86系列微處理器采用普林斯頓結(jié)構(gòu)的存儲器配置方式。 2.3.2 51單片機存儲器

12、體系結(jié)構(gòu) v51系列單片機的存儲器配置方式采用Harvard結(jié)構(gòu),存儲器有程序存儲器和數(shù)據(jù)存儲器之分;v單片機在片內(nèi)集成了一定容量的存儲器,在某些情況下,片內(nèi)存儲器容量不夠時,51系列單片機允許在片外擴展存儲器;v因此,51單片機系統(tǒng)在物理上有4個獨立的存儲空間,它們分別是:一. 片內(nèi)程序存儲器片內(nèi)程序存儲器vMCS51單片機片內(nèi)有4K程序存儲器,地址范圍為0000H0FFFH8051采用只讀存儲器(Read Only Memory,ROM)作程序存儲器;8751采用紫外線擦除、可編程只讀存儲器(EPROM);8031片內(nèi)沒有程序存儲器v近年推出的新型號的兼容機型一般采用閃存(FLASH Me

13、mory)作程序存儲器。2.3.2.1單片機的物理存儲空間單片機的物理存儲空間vMCS51單片機可擴展64K片外程序存儲器,地址范圍為0000H0FFFFHv對片外程序存儲器的讀取由/PSEN信號控制。二. 片外程序存儲器片外程序存儲器 三三. 片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器 MCS51單片機內(nèi)部有一定數(shù)量的RAM單元用于存放數(shù)據(jù),稱為片內(nèi)數(shù)據(jù)存儲器,片內(nèi)數(shù)據(jù)存儲器數(shù)量的配置因子系列不同略有區(qū)別:v51子系列:片內(nèi)有128個(地址為00和7FH)RAM單元,高128個單元中(地址為80和0FFH)零星地分布著21個特殊功能寄存器(SFR)。v52子系列:片內(nèi)有256個(地址為00和0FFH)RA

14、M單元,高128個單元中(地址為80和0FFH)零星地分布著26個特殊功能寄存器(SFR)。 片內(nèi)數(shù)據(jù)存儲器的功能劃分 v片內(nèi)數(shù)據(jù)存儲器在分為數(shù)據(jù)存儲單元和特殊功能寄存器區(qū)兩大部分的基礎(chǔ)上,對低128字節(jié)的RAM單元又進(jìn)一步劃分為:工作寄存器區(qū)位尋址區(qū)一般數(shù)據(jù)存儲區(qū)(包括堆棧區(qū))1.工作寄存器區(qū)v片內(nèi)RAM 00H1FH 32個字節(jié)作為工作寄存器;v這32個字節(jié)分成4組,作為4個工作寄存器組。每組包含8個字節(jié),分別稱為R0、R1R7,作為8個工作寄存器使用 ;v由于每一組中都有R0、R1R7等8個工作寄存器,因此每個Rn在物理上都對應(yīng)著4個不同的存儲器單元,而一個工作寄存器到底對應(yīng)于哪個RAM

15、單元是由“當(dāng)前工作寄存器組”的設(shè)定決定的;v任一時刻只有一組工作寄存器是“當(dāng)前工作寄存器”,當(dāng)前工作寄存器組由程序狀態(tài)字PSW中的RS1和RS0兩位選擇。 工作寄存器與RAM單元的對應(yīng)關(guān)系 位尋址區(qū) v位尋址區(qū)位于片內(nèi)RAM的20H到2FH 共16個字節(jié)單元,每個單元8位均可位尋址,共有128個可直接尋址位;v這128個位從20H字節(jié)單元的第0位到2FH字節(jié)單元的第7位,依次賦予地址00H7FH v這些地址稱為位地址,注意與字節(jié)地址的區(qū)別片內(nèi)RAM位尋址區(qū)地址表字節(jié)地址位地址D0D1D2D3D4D5D6D720H00H01H02H03H04H05H06H07H21H08H09H0AH0BH0C

16、H0DH0EH0FH22H10H11H12H13H14H15H16H17H23H18H19H1AH1BH1CH1DH1EH1FH24H20H21H22H23H24H25H26H27H25H28H29H2AH2BH2CH2DH2EH2FH26H30H31H32H33H34H35H36H37H27H38H39H3AH3BH3CH3DH3EH3FH28H40H41H42H43H44H45H46H47H29H48H49H4AH4BH4CH4DH4EH4FH2AH50H51H52H53H54H55H56H57H2BH58H59H5AH5BH5CH5DH5EH5FH2CH60H61H62H63H64H65

17、H66H67H2DH68H69H6AH6BH6CH6DH6EH6FH2EH70H71H72H73H74H75H76H77H2FH78H79H7AH7BH7CH7DH7EH7FH3.普通數(shù)據(jù)存儲區(qū) v30H7FH為普通數(shù)據(jù)存儲區(qū),可用于輸入/輸出和中間運算結(jié)果的暫存;v如果程序結(jié)構(gòu)簡單,不需要多個寄存器組交換,部分工作寄存器區(qū)也可作為普通數(shù)據(jù)存儲區(qū)使用;v如果系統(tǒng)不需要進(jìn)行位操作,位尋址區(qū)也可作為普通數(shù)據(jù)存儲區(qū)使用;v注意:堆棧也安排在片內(nèi)數(shù)據(jù)存儲器內(nèi),使用時要避免堆棧區(qū)和普通數(shù)據(jù)存儲區(qū)沖突。 4.特殊功能寄存器 v片內(nèi)有21個特殊功能寄存器,離散地分布在片內(nèi)RAM區(qū)的80H0FFH單元,特殊功

18、能寄存器可分為以下幾類:與運算器相關(guān)的寄存器:ACC,B,PSW 指針類寄存器:SP,DPTR 與并行口相關(guān)的寄存器:P0,P1,P2,P3 與中斷相關(guān)的寄存器:IE,IP 與定時/計數(shù)器相關(guān)的寄存器:TMOD,TCON,TH0,TL0,TH1,TL1與串行口相關(guān)的寄存器:SBUF,SCON,PCON PSW位地址及位名稱vCY:也可寫作C,進(jìn)位標(biāo)志。vAC:輔助進(jìn)位標(biāo)志。vF0:用戶標(biāo)志位。vRS1、RS0:當(dāng)前工作寄存器組選擇位vOV:溢出標(biāo)志位。vP:奇偶標(biāo)志位。特殊功能寄存器地址分布表符 號名 稱字節(jié)地址* P0P0口輸入輸出寄存器80HSP堆棧指針81HDPL數(shù)據(jù)指針DPTR低字節(jié)8

19、2HDPH數(shù)據(jù)指針DPTR高字節(jié)83H* TCON定時/計數(shù)器控制寄存器88HTMOD定時/計數(shù)器方式寄存器89HTL0定時/計數(shù)器0初值寄存器低字節(jié)8AHTL1定時/計數(shù)器1初值寄存器低字節(jié)8BHTH0定時/計數(shù)器0初值寄存器高字節(jié)8CHTH1定時/計數(shù)器1初值寄存器高字節(jié)8DH* P1P1口輸入輸出寄存器90HPCON電源控制寄存器97H* SCON串行口控制寄存器98HSBUF串行口數(shù)據(jù)緩沖器99H* P2P2口輸入輸出寄存器A0H* IE中斷允許寄存器A8H* P3P3口輸入輸出寄存器B0H* IP中斷優(yōu)先級寄存器B8H* PSW程序狀態(tài)字D0H* ACC累加器E0H* BB寄存器F0

20、H按字節(jié)訪問,但每位有規(guī)定含義按字節(jié)訪問,但每位有規(guī)定含義位地址/位名字節(jié)地址位地址/位名字節(jié)地址四. 片外數(shù)據(jù)存儲器 v當(dāng)片內(nèi)數(shù)據(jù)存儲器不夠用時,可通過三總線結(jié)構(gòu),最多擴展64K片外數(shù)據(jù)存儲器,地址范圍為0000H0FFFFH。v對片外數(shù)據(jù)存儲器的讀寫由/RD和/WR信號控制v具體系統(tǒng)可在64K限度內(nèi)根據(jù)需要擴展,對于片外程序存儲器的擴展也是按這一原則進(jìn)行。vMCS51的I/O接口和片外數(shù)據(jù)存儲器共用64K地址空間,擴展時要存儲器和I/O數(shù)據(jù)讀寫沖突。2.3.2.2 MCS51單片機的邏輯存儲空間 v單片機系統(tǒng)中,內(nèi)部數(shù)據(jù)存儲器和外部數(shù)據(jù)存儲器不僅在物理上存在,而且可以同時使用;v內(nèi)部程序存

21、儲器和外部程序存儲器空間雖然在物理同時存在,但在具體系統(tǒng)中,兩個程序存儲器空間的低4K只能任選其一,不能同時使用,v具體使用哪4K由/EA引腳決定: /EA接地,使用片外低4K;反之使用片內(nèi)低4K。v因此,單片機在邏輯上只有3個存儲空間,即內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲器。 存儲空間結(jié)構(gòu)示意圖 片內(nèi)數(shù)據(jù)存儲器程序存儲器外部數(shù)據(jù)存儲器0000H0FFFH 存儲器結(jié)構(gòu)小節(jié) MCS51單片機的存儲器的體系結(jié)構(gòu)比較復(fù)雜, 該體系結(jié)構(gòu)是硬件系統(tǒng)設(shè)計和控制軟件編制的基礎(chǔ)!vMCS51單片機的存儲器按所在位置不 同有片內(nèi)和片外之分: 片內(nèi)存儲器集成在芯片內(nèi)部; 片外存儲器又稱外部存儲器,是根據(jù)系統(tǒng)

22、需要,用存儲器芯片擴展而成51系統(tǒng)可擴展64K程序存儲器和64K數(shù)據(jù)存儲器具體系統(tǒng)中,片外存儲器的容量可能不同v MCS51單片機的存儲器按在系統(tǒng)中的作 用分為程序存儲器和數(shù)據(jù)存儲器:程序存儲器:用于存放編寫的程序,CPU從程序存儲器獲取指令、進(jìn)行譯碼和執(zhí)行 數(shù)據(jù)存儲器:存放運算的中間結(jié)果、輸入/輸出的數(shù)據(jù)等4“數(shù)據(jù)”和“指令”在本質(zhì)上都是二進(jìn)制代碼,51單片機根據(jù)二進(jìn)制代碼所在的存儲器空間不同,對其有不同的解釋vMCS51單片機的存儲器使用的器件可以 是ROM、RAM、EPROM、EEPROM 以及FLASH 等不同器件的存儲特性不同,與其在系統(tǒng)是程序存儲器還是數(shù)據(jù)存儲器沒有必然聯(lián)系所有類型

23、的存儲器芯片都既可作數(shù)據(jù)存儲器也可作程序存儲器用ROM、EPROM、EEPROM作程序存儲器,用 RAM作數(shù)據(jù)存儲器 由于單片機存儲器有內(nèi)外和程序/數(shù)據(jù)之分,所以單片機在物理上有物理上有 4 個存儲空間,且地址有重疊。在使用是要特別注意: 1)在具體系統(tǒng)中,片內(nèi)、外程序存儲在具體系統(tǒng)中,片內(nèi)、外程序存儲器的低器的低4K只能任選其一,不能同時使用。只能任選其一,不能同時使用。 具體使用哪4K由/EA引腳決定: /EA接地,使用片外低4K; 反之使用片內(nèi)低4K 。因此,單片機在邏輯上只有邏輯上只有 3 個存儲空間。2)訪問不同的地址空間指令不同。)訪問不同的地址空間指令不同。 分別使用分別使用MO

24、V,MOVX,MOVC指令訪問內(nèi)部指令訪問內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲。數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲。3)使用MOV,MOVX,MOVC指令訪問不同存儲訪問不同存儲器空間時,單片機器空間時,單片機CPU發(fā)出的控制信號不同發(fā)出的控制信號不同:vMOVC訪問片外程序存儲器時,產(chǎn)生/PSEN信號;vMOVX讀寫片外數(shù)據(jù)存儲器時產(chǎn)生/RD和/WR信號。4)訪問程序存儲器和片外數(shù)據(jù)存儲器時使用16位地址,訪問片內(nèi)數(shù)據(jù)存儲器時使用8位地址容易混淆的概念:容易混淆的概念:數(shù)據(jù)存儲器與RAM;程序存儲器與ROM。 數(shù)據(jù)存儲器與程序存儲器是指它在單片機系統(tǒng)中所處的地位和功能,取決于受控于單片

25、機CPU的何種信號。 RAM與ROM是指不同類型的存儲器器件,它們特性不同。 在51單片機系統(tǒng)中一般用一般用RAM作數(shù)據(jù)存儲器,ROM作程序存儲器。 但兩者概念完全不同完全不同。 一個存儲器芯片在單片機系統(tǒng)中到底是程序存儲器還是數(shù)據(jù)存儲器不取決于它是ROM/RAM/EPROM或是其他器件,而僅僅取決于它受控于單片機什么信號受控于PSEN信號的是程序存儲器;受控于RD/WR信號的是數(shù)據(jù)存儲器。 2.4 MCS51單片機的并行單片機的并行I/O接口接口 2.4.1 P0口的結(jié)構(gòu) 它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動及控制電路組成P0口既可作一般I/O口使用,也可作低8位地址線和數(shù)據(jù)線使

26、用P0口作一般I/O口使用時,內(nèi)部控制端為低電平P0口的位結(jié)構(gòu)圖 P0口作一般I/O口使用時,是準(zhǔn)雙向口2.4.2 P1口的結(jié)構(gòu) vP1口是通用準(zhǔn)雙向靜態(tài)口,輸出有鎖存vP1口內(nèi)部用上拉電阻代替了P0口的場效應(yīng)管T1,因此作輸出時不需外接上拉電阻vP1口有輸入、輸出和讀修改寫3種工作方式 2.4.3 P2口的結(jié)構(gòu) vP2口既可作通用I/O口,又是高8位地址總線v和其它口區(qū)別在于多了IO/地址轉(zhuǎn)換部分2.4.4 P3口的結(jié)構(gòu) 當(dāng)處于第一功能時,第二功能輸出線為1P3用作第二功能使用 當(dāng)CPU不對P3口進(jìn)行字節(jié)或位尋址時,內(nèi)部硬件自動將口鎖存器的Q端置1,這時,P3口作為第二功能使用。I/O口第第

27、 二二 功功 能能I/O口第第 二二 功功 能能P3.0串行數(shù)據(jù)接收端P3.4T/C0外部脈沖輸入端P3.1串行數(shù)據(jù)發(fā)送端P3.5T/C1外部脈沖輸入端P3.2外部中斷0輸入P3.6寫片外數(shù)據(jù)存儲器P3.3外部中斷1輸入P3.7讀片外數(shù)據(jù)存儲器2.4.5 并行I/O口小結(jié) 1.驅(qū)動能力vP0P3口可兼容CMOS和TTL電平vP0口的每一位口線可以驅(qū)動8個LSTTL負(fù)載。在作為通用 I/O口時,由于輸出驅(qū)動電路是開漏方式,需外接上拉電阻;當(dāng)作為地址/數(shù)據(jù)總線使用時,口線輸出不是開漏的,無須外接上拉電阻。vP1、P2、P3口的每一位能驅(qū)動4個LSTTL負(fù)載。它們的輸出驅(qū)動電路內(nèi)部有上拉電阻,所以可

28、以方便地由集電極開路(OC門)電路或漏極開路電路驅(qū)動,無須外接上拉電阻。2.各端口的應(yīng)用功能vP0口:不進(jìn)行系統(tǒng)擴展時,可作一般I/O口使用;進(jìn)行系統(tǒng)擴展時,是低8位地址和數(shù)據(jù)分時復(fù)用總線vP1口:單純I/O口vP2口:不進(jìn)行系統(tǒng)擴展時,可作一般I/O口使用;進(jìn)行系統(tǒng)擴展時,作高8位地址總線vP3口:雙功能口,其第二功能是大部分控制總線v某位作第一功能輸入或作第二功能使用時,其內(nèi)部鎖存器必須置1(復(fù)位后內(nèi)部鎖存器已經(jīng)置1)v復(fù)位后,32個引腳均為高電平,故在初始化時應(yīng)考慮是否滿足外接電路外接電路的要求。2.5 MCS51單片機引腳介紹 1.電源引腳 2.外接晶振引腳3.控制信號和其他電源引腳4

29、.輸入輸出引腳1. 電源引腳vVCC:電源端,單片機的工作電源,接5V;vVSS:接地端;vVPP:與/EA引腳復(fù)用,對內(nèi)部有EPROM的芯片編程時的編程電壓輸入端;v/PROG:與ALE引腳復(fù)用,內(nèi)部EPROM的芯片編程時的編程脈沖入端;vVPD:與RST引腳復(fù)用,備用電源輸入端,當(dāng)主電源下降或斷點時, VPD可為片內(nèi)數(shù)據(jù)存儲器提供電源,實現(xiàn)掉電保護; 2. 控制信號引腳vALE(Address Latch Enable):地址鎖存允許信號輸出端 v/PSEN(Program Select Enable):外部程序存儲器輸出允許控制信號v/EA:程序存儲器低端部分選擇控制端,/EA =0,程

30、序存儲器低端部分在片外;/EA =1,程序存儲器低端部分在片內(nèi)vRST:復(fù)位信號輸入3.并行I/O接口引腳vP0.0P0.7:P0口,數(shù)據(jù)/低八位地址復(fù)用總線端口vP1.0P1.7:P1口,靜態(tài)通用端口vP2.0P2.7:P2口,高八位地址總線端口vP3.0P3.7:P3口,雙功能靜態(tài)端口 4. 時鐘電路引腳內(nèi)部振蕩方式外部時鐘源接入方式HMOS型CHMOS型vXTAL1:內(nèi)部振蕩電路輸入端; vXTAL2:內(nèi)部振蕩電路輸出端。2.6 MCS51單片機時序基本概念 時 序vCPU不間斷地從程序存儲器取出指令,然后執(zhí)行指令,其速度可達(dá)每秒數(shù)十萬條指令。因此,CPU及相關(guān)部件必須按照一定節(jié)拍協(xié)調(diào)運

31、行。而CPU及相關(guān)部件的相互協(xié)調(diào)是由CPU發(fā)出的相關(guān)信號控制的。v把CPU發(fā)出的相關(guān)信號(反映在單片機相應(yīng)管腳上)的電壓波形以相同的時間橫軸繪在同一個波形圖中,稱為時序圖,簡稱時序。v要在實時控制領(lǐng)域應(yīng)用計算機控制必須了解 CPU 的時序。vCPU發(fā)出的時鐘脈沖控制信號有兩類:一類用于計算機內(nèi)部,和外部無直接關(guān)系;另一類送到片外,用于控制/聯(lián)絡(luò)擴展的外部存儲器和外部設(shè)備,這類信號和硬件設(shè)計和軟件編程有直接關(guān)系!(1)振蕩周期 為單片機提供時鐘信號的振蕩源的周期,是所有信號的最小單位(2)時鐘周期 又稱為狀態(tài)周期S ,MCS51單片機規(guī)定兩個晶振周期作為一個時鐘周期,這兩個晶振周期分別稱為P1和

32、P2節(jié)拍。(3)機器周期 6個狀態(tài)周期為一個機器周期,是單片機完成一個基本操作的最短時間v有關(guān)概念和術(shù)語(4)指令周期 CPU執(zhí)行一條指令所需的時間 不同的指令執(zhí)行時間不一樣,即指令周期不一樣 MCS51的指令周期有1、2、4個機器周期3種 若外接晶振頻率為12MHz,則 振蕩周期1/12MHz= 1/12us=0.0833us 時鐘周期2振蕩周期0.167us 機器周期6時鐘周期12振蕩周期1us 指令周期14us有關(guān)周期信號關(guān)系圖2.6 單片機的復(fù)位方式及初始狀態(tài)v上電開機時 ,或者因為程序本身錯誤,或者受到外部干擾而“死機”,需要對計算機進(jìn)行復(fù)位; vMCS51單片機的復(fù)位目的:完成設(shè)置

33、PC指針初值設(shè)定有關(guān)特殊功能寄存器的初值,是相關(guān)的功能部件復(fù)位后有一個確定的初始狀態(tài)。v復(fù)位由RST引腳上持續(xù)兩個以上機器周期的高電平實現(xiàn)。 常用復(fù)位電路上電復(fù)位電路上電復(fù)位和按鍵復(fù)位電路 特殊功能寄存器復(fù)位初值 特殊功能寄存器初始狀態(tài)特殊功能寄存器初始狀態(tài)A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0P3FFHSBUFBIP00000BSCON00HIE000000BPCON0Bv指令是規(guī)定CPU執(zhí)行某類操作的命令vCPU具有的全部指令的集合稱為指令系統(tǒng)v指令系統(tǒng)是人機交互的紐帶v本章將介紹以下幾

34、方面的內(nèi)容:單片機指令系統(tǒng)的格式、標(biāo)識及其助記符;單片機指令系統(tǒng)的尋址方式;單片機指令系統(tǒng)的分類以及每條指令的意義。 第第3章章 MCS51單片機指令系統(tǒng)單片機指令系統(tǒng) 3.1 單片機指令系統(tǒng)的特點vMCS51單片機的指令系統(tǒng)包含5種類型的指令,有7種尋址方式,其機器語言共有255種操作代碼,即機器碼v匯編語言使用42種助記符表示指令的功能v每種功能的指令所涉及的操作數(shù)可能有不同的尋址方式,因此,各種功能的指令與該指令所涉及的操作數(shù)可能有的尋址方式相組合,共構(gòu)造出111條指令v即:MCS51單片機的指令系統(tǒng)一共有42種助記符,111條匯編語言指令,且用255個機器碼表示。 例如: ADD 加法

35、助記符ADD A,RnADD A,Ri尋址方式不同具體操作數(shù)有8個,所以機器碼有8個 具體操作數(shù)有2個,所以機器碼有2個 匯編指令助記符機器碼3.1 單片機指令系統(tǒng)的特點v指令系統(tǒng)長度:單字節(jié)指令49條;雙字節(jié)指令45條;三字節(jié)指令17條。v指令執(zhí)行時間:單機器周期指令64條;雙機器周期指令45條;只有乘、除兩條指令需要4個機器周期。v指令系統(tǒng)特點: 對存儲空間要求較少且執(zhí)行速度較快,可用較小的存儲空間存放完成功能較復(fù)雜的控制程序,精簡而高效,適于在實時測控領(lǐng)域使用。3.2 匯編語言格式及機器碼表示方法3.2.1 指令系統(tǒng)的匯編語言格式v指令通常包含操作碼(Operation Code)和操作

36、數(shù)(Operand)兩個部分操作碼指明執(zhí)行的操作的性質(zhì)與功能,即指示計算機執(zhí)行何種操作;操作數(shù)指出參加操作的數(shù)據(jù)或數(shù)據(jù)所在單元的地址。v指令系統(tǒng)的匯編語言格式為: 標(biāo)號: 操作助記符 目的操作數(shù) ,源操作數(shù) ;注釋 3.2.2 指令系統(tǒng)的機器碼表示方法一、單字節(jié)指令v單字節(jié)指令中既包含操作碼的信息,也包含操作數(shù)的信息,單字節(jié)指令包括兩種情況:一種是指令的含義和對象都很明確,用一個字節(jié)已能完全表示,即沒有與這條指令功能相同而操作對象不同的指令。 例如,將累加器A的內(nèi)容加1的指令 INC A即為單字節(jié)指令,指令的編碼為:0000 0100B,這類指令的機器碼編碼格式為:另一種情況是8位編碼含有操作

37、碼和寄存器編碼。 例如:將當(dāng)前工作寄存器R0中的數(shù)據(jù)傳送到累加器A中的指令:MOV A,R0,機器碼為1110 1000B,這類指令的機器碼編碼格式為:二.雙字節(jié)指令v雙字節(jié)指令中,用第一字節(jié)表示操作碼,第二個字節(jié)表示參與操作的數(shù)據(jù)或數(shù)據(jù)存放的地址。vMCS51指令系統(tǒng)中有45條雙字節(jié)指令。這類指令的指令編碼格式為:MOV A,01HMOV A,02H MOV A,0FFH操作數(shù)本身一字節(jié)三. 三字節(jié)指令v三字節(jié)指令的第一字節(jié)是操作碼,后兩個字節(jié)是操作數(shù)。v操作數(shù)可以是數(shù)據(jù)(立即數(shù)),也可以是存放數(shù)據(jù)的地址,因此,三字節(jié)指令的編碼形式有以下四種情況:操作碼操作碼操作碼操作碼立即數(shù)地 址立即數(shù)地

38、 址立即數(shù)立即數(shù)地 址地 址 例如:MOV 20H,#50Hv編碼為01110101B,00100000B,01010000B。十六進(jìn)制表示為75H,20H,50H。v功能是將數(shù)據(jù)“50H”傳送到內(nèi)部數(shù)據(jù)存儲器的20H單元中。v這類指令中的存儲單元有256個,需用一字節(jié)表示,數(shù)據(jù)也有256個,也需用一字節(jié)表示,因此需要用3個字節(jié)表示指令的具體功能3.2.3 指令中的符號標(biāo)識v為了方便講解指令系統(tǒng),本書用一些符號標(biāo)識來代替若干相似的操作數(shù),以用一條“指令”代表若干條同類指令,v在后續(xù)章節(jié)中用到的符號標(biāo)識及含義如下: Rn(n=07)-當(dāng)前選中的工作寄存器組中的寄存器R0R7之一;Ri(i=0,1

39、)-當(dāng)前選中的工作寄存器組中的寄存器R0或R1; -間址寄存器前綴; #data -8位立即數(shù);#data16-16位立即數(shù);direct-片內(nèi)數(shù)據(jù)存儲器地址及SFR地址(可用符號名稱表示);addr11-11位目的地址;addr16-16位目的地址;rel-補碼形式表示的8位地址偏移量,值在128127范圍內(nèi); bit-片內(nèi)數(shù)據(jù)存儲器可位尋址單元的位地址、SFR的位地址(可用符號名稱表示); /位操作數(shù)的取反操作前綴;() 表示 地址單元或寄存器中的內(nèi)容; 將箭頭右邊的內(nèi)容送入箭頭左邊的單元中。 將箭頭左邊的內(nèi)容送入箭頭右邊的單元中。 3.3 MCS51單片機指令系統(tǒng)的尋址方式 v執(zhí)行指令時

40、,得到參與操作的數(shù)據(jù)或者數(shù)據(jù)所在的地址單元的方法就是尋址方式。v51指令系統(tǒng)有七種尋址方式,即:變址尋址、相對尋址、位尋址。寄存器尋址、立即尋址、直接尋址、寄存器間接尋址、v一條指令執(zhí)行時,對源操作數(shù)和目的操作數(shù)都要尋址,本章針對源操作數(shù)對尋址方式進(jìn)行介紹。3.3.2 直接尋址 v在指令中直接給出操作數(shù)的地址,即指令中操作數(shù)部分是存放操作數(shù)的地址,這種尋址方式稱為直接尋址。v直接尋址的尋址空間為片內(nèi)數(shù)據(jù)存儲區(qū),即地址為00H7FH的RAM單元和地址在80H0FFH的21個特殊功能寄存器v對于特殊功能寄存器一般采用其符號名稱,這主要是為了程序可讀性好,不論使用符號名稱還是具體地址,指令的功能和對

41、應(yīng)的機器碼都完全一樣 v直接尋址還可用于對片內(nèi)數(shù)據(jù)區(qū)中可位尋址單元的位和可位尋址的特殊功能寄存器的位進(jìn)行尋址v的特殊功能寄存器的位的位地址表示方法與特殊功能寄存器地址的表示方法類似:既可用其位名稱也可用位地址,為了使程序可讀性好,一般使用位名稱代表其具體地址。 使用直接尋址要注意兩個問題 v 注意區(qū)分操作數(shù)是字節(jié)地址還是位地址 MOV A,30HMOV C,30H v 注意寄存器尋址與直接尋址的區(qū)別 INC A機器碼為04H INC ACC 機器碼為05E0H INC 0E0H 3.3.3 立即尋址 v指令編碼中直接給出操作數(shù)(數(shù)據(jù))的尋址方式稱為立即尋址。v立即數(shù)可以為一個字節(jié),也可以是兩個

42、字節(jié),并要用符號“#”來標(biāo)識v由于立即數(shù)是一個常數(shù),所以只能作為源操作數(shù)。v立即尋址所對應(yīng)的尋址空間為程序存儲器。 例:MOV A,#5AH 5AH特殊功能寄存器區(qū)A74H5AH程序存儲器3.3.4 寄存器間接尋址 v指令中給出寄存器名,以該寄存器中的內(nèi)容為地址,從該地址去取操作數(shù)的尋址方式稱為寄存器間接尋址。v尋址的存儲空間為片內(nèi)數(shù)據(jù)存儲器或片外數(shù)據(jù)存儲器。 v為了和寄存器尋址相區(qū)別,寄存器名前加“”符號v尋址片內(nèi)數(shù)據(jù)存儲器時,數(shù)據(jù)傳送采用“MOV”類指令,CPU不產(chǎn)生訪問外部數(shù)據(jù)存儲器的讀/寫信號,間接尋址寄存器采用寄存器R0或R1(堆棧操作時采用SP);v尋址片外數(shù)據(jù)存儲器時,數(shù)據(jù)傳送采

43、用“MOVX”類指令,CPU將產(chǎn)生訪問外部數(shù)據(jù)存儲器的讀/寫信號,這時間接尋址寄存器有兩種選擇:采用R0和R1作間址寄存器,這時R0或R1提供低8位地址(外部數(shù)據(jù)存儲器多于256字節(jié)采用頁面方式訪問時,由P2口未使用的I/O引腳提供高位地址);采用DPTR作為間址寄存器,提供16位地址,可訪問整個片外數(shù)據(jù)存儲器的64K空間。 例:假設(shè)DPTR內(nèi)容為2000H, 片外數(shù)據(jù)存儲器2000H單元內(nèi)容為30H,片外數(shù)據(jù)存儲器累加器A執(zhí)行 MOVX A,DPTR將以DPTR的內(nèi)2000H為地址,把片外數(shù)據(jù)存儲器2000H單元內(nèi)容30H傳送到累加器A3.3.5 變址尋址v以一個基地址加上一個偏移量形成操作

44、數(shù)地址的尋址方式稱為變址尋址。v基址寄存器可以是數(shù)據(jù)指針DPTR或程序計數(shù)器PC,基地址則是基址寄存器的內(nèi)容;v累加器A作為偏移量寄存器,其內(nèi)容為偏移量v基址寄存器的內(nèi)容與偏移量寄存器的內(nèi)容之和作為操作數(shù)地址。變址尋址的尋址空間為程序存儲器。變址尋址的指令只有兩條,即: MOVC A,A+PC MOVC A,A+DPTR v兩條指令均訪問程序存儲器3.3.6 相對尋址 v相對尋址用于轉(zhuǎn)移類指令,該尋址方式以程序計數(shù)器PC的當(dāng)前值(指讀出該2字節(jié)或3字節(jié)的轉(zhuǎn)移指令后,PC指向的下條指令的地址)為基準(zhǔn),加上指令中給出的相對偏移量 rel 形成目標(biāo)地址,并將目標(biāo)地址送入PC,使程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)

45、執(zhí)行 v目標(biāo)地址源地址轉(zhuǎn)移指令的字節(jié)數(shù)rel v假設(shè)轉(zhuǎn)移指令 SJMP 08H從程序存儲器2000H單元開始存放,因為這條指令是兩字節(jié)指令,所以v目標(biāo)地址2000H208H200AH3.3.7 位尋址 v對位地址中的內(nèi)容進(jìn)行操作的尋址方式稱為位尋址。v采用位尋址指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位。下列指令均是位尋址指令:MOV C,20HSETB 30HCLR RI v位尋址指令中,操作數(shù)部分是要操作的數(shù)的位地址,因此,位尋址實質(zhì)上是直接尋址。 位地址的表示方法1. 用位名稱(限特殊功能寄存器) 例如: CLR RS02. 用位地址(通用) 例如: CLR 0D3H3. 用“字節(jié)地址.位”的

46、形式(通用) 例如: CLR 0D0H.3 4. 對于可位尋址的特殊功能寄存器,可用“特殊功能寄存器名.位” 例如: CLR PSW.35.通過BIT偽指令給位地址賦予名稱,然后使用名稱對位進(jìn)行操作 例如: FLAG BIT 30H MOV C,F(xiàn)LAG 3.4 指令系統(tǒng)分類介紹指令系統(tǒng)分類介紹 v指令系統(tǒng)的111條指令,按照指令功能,可大致分為v數(shù)據(jù)傳送類指令、v算術(shù)操作類指令、v邏輯操作類指令、v程序轉(zhuǎn)移類指令、v位操作指令。注意v不同的指令尋址的存儲區(qū)不一樣,要操作某個地址單元中的數(shù)據(jù),不僅地址要正確,還必須保證所使用的指令能尋址數(shù)據(jù)所在的那個邏輯存儲區(qū)。v必須清楚指令中源操作數(shù)和目的操

47、作數(shù)所對應(yīng)的邏輯存儲區(qū) 3.4.1 數(shù)據(jù)傳送類指令 v傳送類指令是最基本,使用最多的一類指令,可實現(xiàn)數(shù)據(jù)傳送、存儲和交換等操作v這類指令一般不影響標(biāo)志寄存器PSW的狀態(tài),v例外:將數(shù)據(jù)傳送到累加器A時,會影響奇偶標(biāo)志P 1.以累加器以累加器A為目的操作數(shù)的傳送指令為目的操作數(shù)的傳送指令 v源操作數(shù)的尋址方式可以是寄存器尋址、直接尋址、寄存器間接尋址、和立即尋址四種基本尋址方式 MOV A , Rn ; (A)(Rn)MOV A , direct ;(A)(direct)MOV A , Ri ;(A)(Ri)MOV A, #data ;(A)#data 例:已知(A)30H,(R0)=40H,片

48、內(nèi)數(shù)據(jù)存儲區(qū)40H單元的內(nèi)容為(40H)=50H:MOV A,R0 ;將R0中的數(shù)據(jù)取出送入A,(A)=40HMOV A,40H ;將40H單元數(shù)據(jù)送入A,(A)=50HMOV A,R0 ;以R0為間址寄存器,將其內(nèi)容40H作為地址,再把該地址單元(片內(nèi)數(shù)據(jù)存儲區(qū)40H單元)的內(nèi)容送入A,(A)=50H。2.以寄存器Rn為目的操作數(shù)的傳送指令 vMOV Rn,direct; Rn (direct)vMOV Rn,#data; Rn #datavMOV Rn,A; Rn A 例:若片內(nèi)數(shù)據(jù)存儲器50H單元的內(nèi)容(50H)=40H, 執(zhí)行指令 MOV R6,50H 后,(R6)40H。 3.以直接

49、地址為目的操作數(shù)的傳送指令以直接地址為目的操作數(shù)的傳送指令 vMOV direct,A;(direct) (A)vMOV direct,Rn;(direct) (Rn)vMOV direct,direct1;(direct)(direct1)vMOV direct,Ri ;(direct)(Ri)vMOV direct,#data;(direct) #data 4. 以間接地址為目的操作數(shù)的傳送指令以間接地址為目的操作數(shù)的傳送指令 vMOV Ri , A ; (Ri) (A)vMOV Ri , direct ; (Ri) (direct)vMOV Ri , #data ; (Ri) #data

50、 5. 查表指令查表指令 vMOVC A,A+DPTR ;(A)(A)+(DPTR) vMOVC A,A+PC ;(PC)(PC)+1,(A)(A)+(PC) 問題: 1 兩條指令尋址的存儲空間是哪個空間? 2 兩條指令的查找范圍各是多大?6. 外部數(shù)據(jù)存儲器傳送指令 MOVX A,DPTR ;(A) (DPTR)MOVX DPTR,A ;(DPTR) (A)MOVX A,Ri ;(A) (P2Ri)MOVX Ri,A ;(P2Ri)(A) v注意:v 該組指令既可訪問外部數(shù)據(jù)存儲器,也可訪問I/O單元v 注意每條指令的數(shù)據(jù)傳輸方向1. 注意每條指令的16位外部地址的形成方法7.數(shù)據(jù)交換類指令

51、vXCHA , Rn ; (A) (Rn)vXCHA , direct ; (A)(direct)vXCHA , Ri ; (A)(Ri)vXCHDA , Ri ; (A03)(Ri)03)vSWAPA ; (A03)(A47) 交換類指令數(shù)據(jù)傳送示意圖片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器8. 16位數(shù)據(jù)傳送指令 MOV DPTR, #data16 ;(DPTR) #data16 9. 堆棧操作類指令堆棧操作類指令 PUSH direct ; (SP)(SP)+1,(SP)(direct) POP direct ; (direct)(SP),(SP) (SP)1v壓棧時堆棧指針SP先加1,然后進(jìn)行數(shù)據(jù)

52、傳送;v彈棧時先進(jìn)行數(shù)據(jù)傳送,然后堆棧指針SP減1 v使用堆棧時要注意壓棧和彈棧的順序,并保證堆棧平衡傳送類指令小節(jié) v內(nèi)數(shù)據(jù)存儲器數(shù)據(jù)傳送使用MOV、XCH、XCHD、SWAP、PUSH、POP等助記符;v程序存儲器數(shù)據(jù)傳送或稱查表指令使用 MOVC助記符,共兩條指令。v片外數(shù)據(jù)存儲器數(shù)據(jù)傳送使用 MOVX助記符,共四條指令;內(nèi)部數(shù)據(jù)傳送途徑3.4.2 算術(shù)運算類指令 v該類指令可以完成加、減、乘、除以及加1、減1和十進(jìn)制調(diào)整等運算v這類指令多數(shù)以A為源操作數(shù)之一,同時又使A為目的操作數(shù)。 1. 加法指令 vADD A, #data;(A) (A) + #data vADD A , Rn;(

53、A) (A) + (Rn)vADD A , direct;(A) (A) + (direct)vADD A , Ri;(A) (A) + (Ri)2.帶進(jìn)位加法指令帶進(jìn)位加法指令A(yù)DDC 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 + (CY)3.帶借位減法指令帶借位減法指令SUBB A , Rn ; (A) (A) (Rn) (CY)SUBB A , direct ;

54、 (A) (A) (direct) (CY)SUBB A , Ri ; (A) (A) (Ri) (CY)SUBB A , #data ; (A) (A) #data (CY)4.加1和減1指令I(lǐng)NC A ;(A)(A)+1INC Rn;(Rn)(Rn)+1INC direct ;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR ;(DPTR)(DPTR)+1DEC A ;(A)(A)1DEC Rn;(Rn)(Rn)1DEC direct ;(direct)(direct)1DEC Ri;(Ri)(Ri)1DEC DPTR ;(DPTR)(DPTR)15.十進(jìn)

55、制調(diào)整指令 DA A ;把A中的二進(jìn)制數(shù)調(diào)整為BCD碼v調(diào)整要完成的任務(wù):1)當(dāng)累加器A中的低4位數(shù)出現(xiàn)了非BCD碼(10101111)或低4位產(chǎn)生進(jìn)位(AC=1),則應(yīng)在低4位加6調(diào)整,以產(chǎn)生低4位正確的BCD結(jié)果。2)當(dāng)累加器A中的高4位數(shù)出現(xiàn)了非BCD碼(10101111)或高4位產(chǎn)生進(jìn)位(CY=1),則應(yīng)在高4位加6調(diào)整,以產(chǎn)生高4位正確的BCD結(jié)果。v執(zhí)行本指令后,PSW中的CY表示結(jié)果的百位值。例:設(shè)A的內(nèi)容為BCD碼56,R3內(nèi)容為BCD 碼69 ,要求兩數(shù)按10進(jìn)制相加執(zhí)行指令 ADD A,R3 DA A01010110011010011011111101100110 調(diào)整 0

56、01001011結(jié)果 125 10進(jìn)制6.乘除指令乘除指令乘法 MUL AB ;(B)158(A)70 (A)(B)v乘數(shù)、被乘數(shù)分別存于A、Bv乘積低字節(jié)存于A。如果乘積大于0FFH,則高字節(jié)存于B,且置位溢出標(biāo)志,否則溢出標(biāo)志清零v進(jìn)位標(biāo)志CY總是為零 除 法DIV AB ;(A)商 (B)余數(shù) (A) /(B) v運算前,被除數(shù)、除數(shù)分別存于A、B;v運算后,商存于A,余數(shù)存于B;v進(jìn)位標(biāo)志CY清零;v若除數(shù)為零,置位溢出標(biāo)志OV,否則清零OV。 3.4.3邏輯操作類指令1.邏輯與指令A(yù)NL A, Rn ;(A)(A)(Rn)ANL A, direct ;(A)(A)(direct)AN

57、L A, Ri ;(A)(A)(Ri)ANL A, #data ;(A)(A) #dataANL direct, A ;(direct)(direct)(A)ANL direct, #data ;(direct)(direct) #data2.邏輯或指令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)#data3.

58、 邏輯異或指令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 direct, #data ;(direct)(direct) # datav與、或、異或三類指令都是按位進(jìn)行邏輯運算,不影響CY、AC和OV標(biāo)志位;v以A為目的操作數(shù)的指令影響P標(biāo)志位。v如果操作數(shù)direct或Ri是并行I/O口地址,則內(nèi)容取自I/O口鎖存器而非引腳內(nèi)容;v當(dāng)目的操作數(shù)direct是

59、并行I/O口地址是,這類指令是“讀修改寫”指令4. 累加器清零及取反指令CPL A ;(A)(/A)CLR A ;(A)0v這兩條指令影響P標(biāo)志位;v第二條指令還影響Z標(biāo)志5. 移位指令v所有移位指令只能對累加器A內(nèi)容進(jìn)行操作 v循環(huán)左移指令 RL A ;(An1)(An),(A0)(A7)CyA7 A0v 循環(huán)右移指令 RR A ;(An)(An1),(A7)(A0) v 帶進(jìn)位位循環(huán)左移指令 RLC A ;(An1)(An),(CY)(A7), (A0)(CY) CyA7 A0v 帶進(jìn)位位循環(huán)左移指令 RRC A ;(An)(An1),(CY)(A0), (A7)(CY) CyA7 A03

60、.4.4 控制轉(zhuǎn)移類指令 v控制轉(zhuǎn)移類指令可改變程序執(zhí)行的順序,是實現(xiàn)判斷、分支以及循環(huán)等程序結(jié)構(gòu)的必需指令v控制轉(zhuǎn)移類指令,可分為無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用子程序及返回指令及一條空操作指令1. 無條件轉(zhuǎn)移指令 LJMP addr16 ;PC addr16SJMP rel ;PC PC + 2 + relAJMP addr11 ;PC100 addr11 JMP A+DPTR;PC A + DPTRv第一條為長轉(zhuǎn)移指令,直接給出16位目標(biāo)地址,可轉(zhuǎn)移到64K程序存儲器的任何單元 v第二條為相對轉(zhuǎn)移指令,操作數(shù)為偏移量,即目標(biāo)地址與相對轉(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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論