




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章單片微機與機電一體化Single Chip Microcomputer and Mechetronics 1.1 微處理器、微機和單片機的概念微處理器CPU: 運算器與控制器集成在同一片半導體芯片上。本身不是計算機。Central Processing UnitMicroprocessor 1971年1月,INTEL公司的特德霍夫在與日本商業通訊公司合作研制臺式計算器時,將原始方案的十幾個芯片壓縮成三個集成電路芯片。其中的兩個芯片分別用于存儲程序和數據,另一芯片集成了運算器和控制器及一些寄存器,稱為微處理器(即Intel 4004) 匈牙利籍數學家馮諾依曼在方案的設計上做出了重要的貢獻。
2、1946年6月,他又提出了“程序存儲”和“二進制運算”的思想,進一步構建了計算機由運算器、控制器、存儲器、輸入設備和輸出設備組成這一計算機的經典結構。微機:(microcomputer):是具有完整運算及控制功能的計算機,除了包括微處理器(CPU)外,還包括存儲器、接口適配器(即輸入/輸出接口電路)以及輸入/輸出(I/O接口)。微型計算機結構圖 微處理器存儲器設備I/O數據總線地址總線控制總線微處理器、存儲器加上I/O接口電路組成微型計算機。各部分通過地址總線(AB)、數據總線(DB)和控制總線(CB)相連。 微計算機系統概念圖 微處理器、微計算機和微計算機系統的關系微型計算機的應用形態從應用
3、形態上,微型計算機可以分成三種:(1)多板機(系統機) 將CPU、存儲器、I/O接口電路和總線接口等組裝在一塊主機板(即微機主板)上,再通過系統總線和其它多塊外設適配板卡連接鍵盤、顯示器、打印機、軟/硬盤驅動器及光驅等設備。各種適配板卡插在主機板的擴展槽上并與電源、軟/硬盤驅動器及光驅等裝在同一機箱內,再配上系統軟件,就構成了一臺完整的微型計算機系統(簡稱系統機)。工業PC機 也屬于多板機。(2) 單板機將CPU芯片、存儲器芯片、I/O接口芯片和簡單的I/O設備(小鍵盤、LED顯示器)等裝配在一塊印刷電路板上,再配上監控程序(固化在ROM中),就構成了一臺單板微型計算機(簡稱單板機)。單板機圖
4、片單板機的I/O設備簡單,軟件資源少,使用不方便。早期主要用于微型計算機原理的教學及簡單的測控系統,現在已很少使用。單片機(Micro-controller): (single-chip microcomputer) 在一個集成芯片中,集成有微處理器CPU、存儲器RAM和ROM、基本的IO接口以及定時計數部件,即在一個芯片上實現一臺微型計算機的基本功能。 1.2單片微機的特點與發展概況單片機的系統擴展、系統配置較典型、規范,易于構成各種規模的應用系統一、特點體積小,成本低,效益好。具有較高的性能價格比。系統不易受到干擾,可靠性高,使用方便。控制功能強 初級階段 普及階段 發展階段 1 CPU的
5、改進2 存儲器的發展(大容量、高性能) 3 片內I/O接口(外圍電路內裝化、A/D、D/A與芯片做在一起)4 半導體工藝技術的進步(位數擴展 、光科技術、高集成度 )二、發展概況第一階段(76-78)第二階段78年以后第三階段82年以后1.4單片微機在機電一體化中的應用1、 機電一體化設備的控制核心2、 數據采集系統的現場采集單元3、 分布控制系統的前端控制器4、 智能化儀表的機芯5、 消費類電子產品控制6 、 終端及外部設備控制1.5 常用單片機系列簡介單片機系列(上百個品種、幾百種系列) 世界十大CPU廠商的單片機在中國均有銷售,其中主要有Intel、Motorola、ATMEL、NEC、
6、三菱、日立、TI、Philips、松下、東芝、三星、等公司廠商。主要有兩大公司: Intel: MCS-48系列、 MCS-51系列、 MCS-96/98系列 Motorola: 68系列 單片機產品近況 (1)80C51系列單片機產品繁多,主流地位已 經形成,近年來推出的與80C51兼容的主要產品有: ATMEL公司融入Flash存儲器技術的AT89系列; Philips公司的80C51、80C552系列; 華邦公司的W78C51、W77C51高速低價系列; ADI公司的ADC8xx高精度ADC系列; LG公司的GMS90/97低壓高速系列; Maxim公司的DS89C420高速(50MIP
7、S)系列; Cygnal公司的C8051F系列高速SOC單片機。 (2)非80C51結構單片機新品不斷推出,給用戶提供了更為廣泛的選擇空間 ,近年來推出的非80C51系列的主要產品有:Intel的MCS-96系列16位單片機 ; Microchip的PIC系列RISC單片機 ;TI的MSP430F系列16位低功耗單片機 。1.8.1 計數制日常生活中廣泛使用的數為十進制數,這是一種逢十進一的計數方法。用的數制還有二進制、八進制和十六進制等。基數小于10的計數制,可用十進制相應的數碼作為它的數字符號,一個數一般由多個數碼組成。數碼在數中的位置不同,其值也不同。1.8.2 二進制數(用B表示)以2
8、為基數的數制稱為二進位計數制,它只包括0和1兩個數碼,很容易用電子元件的兩種不同的狀態來表示,例如,用高電平表示1,用低電平表示0。所以,計算機中通常采用二進制數。二進制數的計數特征:逢二進一,運算簡單。 在加、減、乘、除四則運算中,乘法實質上是做移位加法,除法則是移位減法。 1.8.3 十六進制數(用H表示)為了書寫和閱讀方便,經常采用十六進制數作為二進制的縮寫形式。十進制數、二進制數、十六進制數的對照表如表1-1所示。在計數時,逢十六進一,這樣書寫長度短,且可方便將十六進制數轉換為二進制數或將二進制數轉換為十六進制數。表 十進制數、二進制數、十六進制數對照表 1.8.4 不同進制數之間的轉
9、換1二進制轉換為十進制基本方法:將二進制數按權展開式,利用十進制數的運算法則求和,即可得到等值的十進制數。2十進制到二進制的轉換l 十進制整數轉換為二進制整數l 十進制小數轉換為二進制小數l 帶小數的十進制數轉換為二進制數3二進制、十六進制之間的相互轉換將二進制數轉換為十六進制數,從低位開始,每四位一組,然后將其轉換為對應的十六進制數。如最后一組不足四位,需在左邊補0。用同樣方法可將二進制小數轉換十六進制小數。只是分組應從小數點右邊開始分成四位一組。十六進制數轉換為二進制數,將每位十六進制數直接轉換成相應的二進制數。數的進位制表示1、進位計數制的一般表達式:ND= dn-1an-1+dn-2a
10、n-2 +d0a0 +d-1a-1+一個a1進制的數轉換成a2進制數的方法:先展開,然后按a2進制的運算法則求和計算。2、十六進制數轉換成十進制數1011.1010B=123+121+120+12-1+12-3=11.625DFC.8H =13162+15161+12160+816-1 = 3580.5數和數制數和數制3、二進制與十六進制數之間的轉換24=16 ,四位二進制數對應一位十六進制數。3AF.2H = 0011 1010 1111.0010 = 1110101111.001B 3 A F 2 1111101.11B = 0111 1101.1100 = 7D.CH 7 D C數和數制
11、例4. 0.625轉換成十六進制數 0.625 16 = 10.0 0.625 = 0.AH例5. 208.625 轉換成十六進制數 208.625 = D0.AH1.8.5 數制書寫約定在書寫計算機程序時,一般不用基數作為下標來區分各種進制,而是用相應的英文字母作后綴來表示各種進制的數。 例如:B(Binary)表示二進制數。 D(Decimal)表示十進制數,一般D可省略,即無后綴的數字為十進制數。 H(Hexadecimal)表示十六進制數。1.8.6 計算機中數的表示1原碼、反碼和補碼l原碼:在符號位中用0表示正、用1表示負的二進制數,稱為原碼。例如, x1=1110111B, x1原
12、=01110111B x2=1110111B, x2原=11110111B數0可是0或0。因此,0在原碼中形式: 0原=0000 0000B, 0原=1000 0000Bl 反碼:正數的反碼=原碼;負數的反碼=原碼的符號位不變而數值按位取反。所謂按位取反,即將各位的1變成0,0變成1。例如,x1=13, x1反=13原=0 0001101B 。又如,x2=13, x2原=13原=1 0001101B, x2反=13反=1 1110010B。l補碼:正數的補碼=原碼;負數的補碼=反碼1。例如,x1=1101101B, x1補=13原=0 1101101B 。又如, x2=1101101B, x2
13、反=10010010B, x2補=10010011B。在補碼表示中,“0”是唯一的。即0補=00000000B 1.8.7 計算機常用編碼 常見的編碼有BCD碼、ASCII碼等。1二 十進制編碼是一種用二進制編碼的十進制數,稱BCD碼。BCD碼用標準的8421的純二進制碼的十六個狀態中的十個(如表1-2所示)。用BCD碼表示十進制數,只要將每位十進制數用適當的四位二進制碼代替即可。表1-2 BCD編碼 2字母和符號的編碼微機普遍采用的是ASCII碼(如表1-3所示)。ASCII碼是一種八位代碼,最高位一般用于奇偶校驗,其余七位二進制碼對128個字符進行編碼。表- ASCII(美國標準信息交換碼
14、)表 43第二章 單片微機原理與結構442.1 80C51系列概述2.1.1 MCS-51系列 (1)MCS-51是Intel公司生產的一個單片機系列名稱。屬于這一系列的單片機有多種,如: 8051/8751/8031; 8052/8752/8032; 80C51/87C51/80C31 80C52/87C52/80C32等 。 45(2)該系列生產工藝有兩種:一是HMOS工藝(高密度短溝道MOS工藝)。二是CHMOS工藝(互補金屬氧化物的HMOS工藝)。CHMOS是CMOS和HMOS的結合,既保持了HMOS高速度和高密度的特點,還具有CMOS的低功耗的特點。在產品型號中凡帶有字母“C”的即為
15、CHMOS芯片,CHMOS芯片的電平既與TTL電平兼容,又與CMOS電平兼容。46(3)在功能上,該系列單片機有基本型和增強型兩大類基本型:8051/8751/803180C51/87C51/80C31增強型:8052/8752/803280C52/87C52/80C3247(4)在片內程序存儲器的配置上,該系列單片機有三種形式,即掩膜ROM、EPROM和ROMLess(無片內程序存儲器)。如:80C51有4K字節的掩膜ROM;87C51有4K字節的EPROM ;80C31在芯片內無程序存儲器。482.1.2 80C51系列 80C51是MCS-51系列單片機中CHMOS工藝的一個典型品種 ;
16、其它廠商以8051為基核開發出的CMOS工藝單片機產品統稱為80C51系列。當前常用的80C51系列單片機主要產品有: Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; ATMEL的:89C51、89C52、89C2051等; Philips、華邦、Dallas、Siemens(Infineon)等公司的許多產品 。492.2 80C51的基本結構與應用模式2.2.1 80C51的基本結構502.2.3 80C51典型產品資源配置與引腳2.2.3.1 80C51典型產品資源配置51由表可見:(1)增強型與基本型在以下幾點不同:片內ROM字節數:從4K增加
17、到8K;片內RAM字節數:從128增加到256;定時/計數器從2個增加到3個;中斷源由5個增加到6個。 52(2)片內ROM的配置形式:無ROM(即ROMLess)型,應用時要在片外擴展程序存儲器;掩膜ROM(即MaskROM)型,用戶程序由芯片生產廠寫入; EPROM型,用戶程序通過寫入裝置寫入,通過紫外線照射擦除; FlashROM型,用戶程序可以電寫入或擦除(當前常用方式)。還有OTPROM型(一次性編程寫入ROM) 產品,具有較高的環境適應性和可靠性。532.2.3.2 80C51的引腳封裝總線型非總線型非總線型單片機已經將用于外部總線擴展用的I/O口線和控制功能線去掉,從而使單片機的
18、引腳數減少、體積減小。542.2.3.3 80C51的內部結構55 2.2.3.4 80C51的內部結構一、80C51的微處理器(CPU)(1)運算器累加器ACC ;寄存器B ;程序狀態字寄存器PSW 。(2)控制器程序計數器PC ;指令寄存器IR ;定時與控制邏輯。568051的內部結構 8051芯片按功能結構CPU控制器程序計數器PC指令譯碼器指令寄存器數據指針寄存器DPTR運算器累加器A程序狀態寄存器PSW 存儲器數據存儲器RAM程序存儲器ROM定時計數器:2個16位定時器T0,T1I/O接口:P0、P1、P2、P3四個8位口一個全雙工串行口5個中斷源57二、80C51的片內存儲器 在物
19、理上設計成程序存儲器和數據存儲器兩個獨立的空間(稱為哈佛結構): 內部ROM容量4K字節 范圍是:0000H0FFFH 內部RAM容量128字節 范圍是:00H7FH 58三、80C51的I/O口及功能單元 四個8位的并行口,即P0P3。它們均為雙向口,既可作為輸入,又可作為輸出。每個口各有8條I/O線。 有一個全雙工的串行口(利用P3口的兩個引腳P3.0和P3.1);有2個16位的定時/計數器 ;有1套完善的中斷系統。 59四、80C51的特殊功能寄存器(SFR)內部有SP,DPTR(可分成DPH、DPL兩個8位寄存器),PCON,IE,IP等21個特殊功能寄存器單元,它們同內部RAM的12
20、8個字節統一編址,地址范圍是80HFFH。這些SFR只用到了80HFFH中的21個字節單元,且這些單元是離散分布的。 增強型單片機的SFR有26個字節單元,所增加的5個單元均與定時/計數器2相關。602.2.3.5 MCS-51系列引腳及功能 1電源引腳: VCC(40腳):供電電源 +5V VSS(20腳):接地線2時鐘電路引腳 : XTAL2(18腳) XTAL1(19腳) 利用內部時鐘電路時,于XTALl與XTAL2之間接一晶體振蕩器, XTAL1為內部放大電路輸入端,XTAL2為輸出端。61振蕩器及時鐘電路振蕩電路 外接時鐘源接法 8051XTAL1XTAL2C1 晶振C2 8051X
21、TAL2XTAL1VSSVCCTTL外部時鐘信號62RSTVPD(9腳) :1.接復位電路可實現復位;2.接 +5V備用電源,當斷電時RAM中數據不丟失。 ALE/PROG(30腳): 1、 訪問片外存儲器時,ALE輸出作低位地址鎖存允許控制; 2、對875l片內EPROM編程(固化時),此腳用于輸入編程脈沖(PROG)。 PSEN(29腳): 訪問片外程序存儲器時,此腳輸出負脈沖作為讀選通信號。3、控制信號引腳63EA/VPP(31腳) :1 、當EA=1,PC4KB,自動執行片外程序存儲器程序。2、當EA=0時,CPU直接訪問片外存儲器。3、在對8751的EPROM編程時,此引腳用于施加編
22、程電壓VPP 644、輸入/輸出口引腳 805l共四個8位I/O口,占32個引腳。 P0口(P0.0P0.7) 占3932腳 Pl口(P1.0P1.7) 占18腳; P2口(P2.0P2.7)占2l28腳; P3口(P3.0P3.7)占1017腳。652.2.4 80C51的時鐘與時序一、80C51的時鐘產生方式內部時鐘 外部時鐘66二、80C51的時鐘信號一個機器周期包含12個晶蕩周期或6個時鐘周期 指令的執行時間稱作指令周期 (單、雙、四周期)672.2.5 80C51單片機的復位一、復位電路復位目的是使單片機或系統中的其它部件處于某種確定的初始狀態。 上電復位電路 按鍵與上電復位 68二
23、、單片機復位后的狀態復位后:PC=0000H,所以程序從0000H地址單元開始執行;啟動后,片內RAM為隨機值,運行中的復位操作不改變片內RAM的內容 ;特殊功能寄存器復位后的狀態是確定的 :P0P3=FFH,各口可用于輸出,也可用于輸入;SP=07H,第一個入棧內容將寫入08H單元;IP、IE和PCON的有效位為0,各中斷源處于低優先級且均被關斷、串行通訊的波特率不加倍;PSW=00H,當前工作寄存器為0組。692.3 80C51的存儲器組織80C51存儲器可以分成兩大類:RAM,CPU在運行時能隨時進行數據的寫入和讀出,但在關閉電源時,其所存儲的信息將丟失。它用來存放暫時性的輸入輸出數據、
24、運算的中間結果或用作堆棧。ROM是一種寫入信息后不易改寫的存儲器。斷電后,ROM中的信息保留不變。用來存放固定的程序或數據,如系統監控程序、常數表格等。 702.3.1存儲器的結構普林斯頓結構- 一般微機的存儲器配置方式.只有一個地址空間, ROM 和RAM的地址同在一個隊列里分配不 同的地址空間,CPU訪問存儲器時,用同類訪問指令。 哈佛結構-程序存儲器和數據存儲器的地址空間分開的結構形式。718051單片微機存儲器采用哈佛結構,分四個物理空間 片內程序存儲器片內 數據存儲器 片外程序存儲器片外數據存儲器。邏輯空間物理空間片內、外統一編址的64KB的程序存儲器地址空間 (用16位地址)256
25、B字節的片內數據存儲器的地址空間用8位地址64KB片外數據存儲器的地址空間72 SFRRAMFFH80H7FH00H4KBROMEA=10FFFH0000HFFFFH 64K RAM (I/O)0000HFFFFH 64K ROM1000H0FFFH EA=00000H8051片內存儲器 存儲空間分布圖73 805l單片機內有4KB ROM(803l無內部ROM),片外還可擴展到64KB的程序存儲區,片內外統一編址。地址范圍是0000HFFFFH,用EA引腳(31腳)控制內外尋址. 當EA1時,片內外統一編址。 片內ROM地址范圍0000H0FFFH共4KB; 片外ROM地址從1000HFFF
26、FH,內外共64KB。 當EA0時,只能片外尋址,即只能執行片外ROM的程序。 片外ROM地址從0000HFFFFH共64KB。74 2.3.2 80C51的程序存儲器配置PC是16位的計數器,所以能尋址64KB的ROM。80C51內部有4KB的掩膜ROM,87C51在內部有4KB的EPROM,而80C31在內部沒有程序存儲器。 75 2.3.3 80C51的數據存儲器配置767FH30H用戶 RAM 區(堆棧、數據緩沖區)2FH20H 位尋址區(位地址 00H7FH)1FH 18HR7 第三組工作寄存器區R017H 10HR7 第二組工作寄存器區R00FH 08HR7 第一組工作寄存器區R0
27、07H 00H R7 第0組工作寄存器區R0 FFHF0HE0HD0HB8HB0HA8HA0H99H98H90H8DH8CH8BH8AH89H88H87H83H82H81H80H BACCPSWIPP3 專IEP2 用SBUFSCON 寄P1TH1 存TH0TL1 器TL0TMOD 區TCONPCON (SFR)DPHDPLSPP0工作寄存器區用戶堆棧區位尋址區專用寄存器區77一、工作寄存器區 低端32個字節分成4個工作寄存器組,每組8個單元。當前工作寄存器組的機制便于快速現場保護。 PSW的RS1、RS0 決定當前工作寄存器組號 寄存器0組 :地址00H07H;寄存器1組 :地址08H0FH
28、;寄存器2組 :地址10H17H;寄存器3組 :地址18H1FH。78二、位尋址區79三、通用RAM區 位尋址區之后的30H至7FH共80個字節為通用RAM區。這些單元可以作為數據緩沖器使用。這一區域的操作指令非常豐富,數據處理方便靈活。 在實際應用中,常需在RAM區設置堆棧。80C51的堆棧一般設在30H7FH的范圍內。棧頂的位置由SP寄存器指示。復位時SP的初值為07H,在系統初始化時可以重新設置。80 2.3.4 80C51的特殊功能寄存器(SFR)81一、與運算器相關的寄存器(3個)累加器ACC,8位。用于向ALU提供操作數,許多運算的結果也存放在累加器中;寄存器B,8位。主要用于乘、
29、除法運算。也可以作為RAM的一個單元使用;程序狀態字寄存器PSW,8位。其各位含義為: CY:進位、借位標志。有進位、借位時 CY=1,否則CY=0; AC:輔助進位、借位標志; F0:用戶標志位,由用戶自己定義; RS1、RS0:當前工作寄存器組選擇位; OV:溢出標志位。有溢出時OV=1,否則OV=0; P:奇偶標志位。ACC中結果有奇數個1時P=1,否則 P=0。82二、指針類寄存器(3個)堆棧指針SP,8位。它總是指向棧頂。 80C51單片機的堆棧常設在30H7FH這一段RAM中。堆棧操作遵循“后進先出”的原則,入棧操作時,SP先加1,數據再壓入SP指向的單元。出棧操作時, 先將SP指
30、向的單元的數據彈出,然后,SP再減1,這時SP指向的單元是新的棧頂。可見,80C51單片機的堆棧區是向地址增大的方向生成的(與常用的80X86微機不同); 數據指針DPTR,16位。用來存放16位的地址。 它由兩個8位的寄存器DPH和DPL組成。間接尋址或變址尋址可訪問片外的64KB范圍的RAM或ROM數據。 83三、與口相關的寄存器(7個)并行I/O口P0、P1、P2、P3,均為8位。 通過對這4個寄存器的讀/寫,可以實現數據從相應口的輸入/輸出;串行口數據緩沖器SBUF;串行口控制寄存器SCON;串行通訊波特率倍增寄存器PCON(一些位還與電源控制相關,所以又稱為電源控制寄存器)。 84四
31、、與中斷相關的寄存器(2個)中斷允許控制寄存器IE;中斷優先級控制寄存器IP。 85五、與定時器/計數器相關的寄存器(6個)定時/計數器T0的兩個8位計數初值寄存器TH0、TL0,它們可以構成16位的計數器,TH0存放高8位,TL0存放低8位;定時/計數器T1的兩個8位計數初值寄存器TH1、TL1,它們可以構成16位的計數器,TH1存放高8位,TL1存放低8位;定時/計數器的工作方式寄存器TMOD;定時/計數器的控制寄存器TCON。86四個IO接口的主要用途及使用注意事項 P0口:1. 數據口(輸送8位數據)(8位二進制) 2. 傳送低8位地址(訪問外部存儲器或其它接口芯片時)分時兼作數據線和
32、低八位地址線,P1口:可輸入、輸出,接打印機、控制信號等P2口:作高八位地址線。P3口:除作IO接口外還兼有專用功能編程時 P0、P1、P2都作輸入口,P0輸入指令,P1輸入低8位地址、P2輸入高8位地址。驗證程序時,Pl、P2仍作地址口而P0輸出指令代碼。注意:P1、P2作輸入口時,必先使每位置“1”,才能讀入外部數據。87 P3用作第二功能使用 P3.0 :RXD(串行口輸入);P3.1 :TXD(串行口輸出);P3.2 : 外部中斷0輸入;P3.3 : 外部中斷1輸入;P3.4 :T0(定時器0的外部輸入);P3.5 :T1(定時器1的外部輸出);P3.6 : (片外數據存儲器“寫”選通
33、控制輸出);P3.7 : (片外數據存儲器“讀”選通控制輸出)。88思考題與習題1、80C51的存儲器組織采用何種結構?存儲器地址空間如何劃分?各地址空間的地址范圍和容量如何?在使用上有何特點?2、80C51晶振頻率為12MHz,時鐘周期、機器周期為多少?3、80C51復位后的狀態如何?復位方法有幾種?4、80C51的片內、片外存儲器如何選擇?5、80C51的PSW寄存器各位標志的意義如何?6、80C51的當前工作寄存器組如何選擇?7、80C51的控制總線信號有哪些?各信號的作用如何?8、80C51的程序存儲器低端的幾個特殊單元的用途如何?89思考題與習題1、十進制數47寫成十六進制 H。2、
34、十進制數47的BCD碼是 B或 H。3、片內數據存儲器為128字節,其地址為 H H。3、片內程序存儲器為4K字節,其地址為 H H。思考題與習題1、80C51系列單片機工作時,某一時刻,專用寄存器PSW=CEH,當前工作寄存器是第 組,累加器ACC結果中有奇數個1還是偶數個1?累加器ACC是否有溢出?2、位尋址區的字節地址是 H H; 位尋址區的位地址是是 H H。3.2.3 邏輯運算指令(24條)一、 邏輯與、或、非、異或指令1ANL類指令(6條) 其功能:將源操作數內容和目的操作數內容按位相“與”,結果存入目的操作數指定單元,源操作數不變。 ANL A,Rn ;ARnA ANL A,di
35、rect ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct) 舉例例 設AF6H,(30H)0FH 執行 ANL A,30H ;A(30H)A 操作如下: 11110110 (F6H) 00001111 (0FH) 注意:按位“與” 00000110 (06H) 結果:A06H,30H地址內容不變即(30H)=0FH 若執行 ANL 30H,A ;(30H)A(30H) 操作同上,結果放在30H地址中,A中內
36、容不變即(30H)=06H,AF6H。2ORL類指令(6條)功能:將源操作數內容與目的操作數內容按位邏輯“或”,結果存入目的操作數指定單元中,源操作數不變。 ORL A,Rn ;ARnA ORL A,direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data ;AdataA ORL direct,A ;(direct)A(direct) ORL direct,#data;(direct)data(direct) 3XRL類指令(6條)功能:將兩個操作數指定內容按位“異或”,結果存于目的操作數指定單元中。“異或”原則是相同為“0”,相異為“1”。 XRL A,
37、Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data;(direct) data(direct) 例 (50H)45H 執行 XRL 50H,#13H ;(50H) 06H(50H) 操作如下: 00010101 (05H) 00000110 (06H) 00010011 (13H) 結果:(50H)13H4取反、清零指令 CPL A ; AA 累加器內容按位取反 CLR A ;00HA 累加器A清0
38、二、 循環移位指令(4條)功能:將累加器A中內容循環移位或者和進位位一起移位RL A ;A中內容循環左移,執行指令一次左移一位RR A ;A中內容循環右移,每執行指令一次右移一位 RLC A ;A與CY內容一起循環左移一位RRC A ;A與Cy內容一起循環右移一位例 MOV A,#10H RL A ;例 MOV A,#10H RR A ;例 MOV A,#10H RLC A ; ;CY=1, A=01H例 MOV A,#10H RRC A ; ; 問題:將P1口的燈移動,可用什么指令?MOV A, #01HLP: MOV P1,A LCALL DELAY RL A SJMP LP3.2.4 控
39、制轉移類指令(17條)功能:根據要求修改程序計數器PC內容,以改變程序運行方向,實現轉移。轉移類指令又可分為: 無條件轉移、條件轉移、絕對轉移、相對轉移和調用、返回指令。一、 無條件轉移類指令(4條) LJMP addl6 ;addl6PC無條件跳轉到addl6 ;地址,可在64KB范圍內轉移, ;稱為長轉移指令 AJMP add11 ;add11PC,無條件轉向add11 ;地址,只能在2KB范圍內轉移 SJMP rel ;PC+2+relPC相對轉移,rel是偏移量, ;它是8位有符號數,范圍-128+127 ;即向后跳轉128B,向前可跳轉127B JMP A十DPTR ;A+DPTRP
40、C,屬散轉指令, ;無條件轉向A與DPTR內容相加后 ;形成的新地址 例1 請看如下程序 PC 2000H LJMP 4000H ;4000HPC 4000H MOV A,#11H 程序執行完第一條無條件轉移指令后,馬上跳轉到4000H地址,執行該地址程序。 例2 程序 2000H:MOV R0,#1BH ;1BHR0 2002H:SJMP 03H ;PC+2+rel=2002H+2+03H ;2007HPC 2006H: 2007H: 執行SJMP 03H指令后,跳轉到2007H地址執行程序。 說明:實際編寫程序時最好把偏移量和轉移地址都用符號表示,機器匯編時自動計算出偏移字節數,不容易出錯
41、,同時也便于修改程序。 例3 ORG 4000H LJMP MAIN ORG 400BH SJMP INTI MAIN: INTI: MAIN、INTI稱為符號地址。 二、 條件轉移類指令(8條) 功能:根據條件判斷是否轉移,條件滿足則轉移, 條件不滿足則順序執行。1. 判 A 轉 JZ rel ;A0, PC+2+relPC ;A0順序執行 JNZ rel ;A0, PC+2+relPC ;A0順序執行2.比較指令功能:源操作數與目的操作數比較,相等順序執行CJNE A,direct,rel ;A(direct)轉向PC+3+relPC ; 且A(direct),0CY ; A(direct
42、),lCY ;A(direct),PC+3PC即順序執行 CJNE A,#data,rel ;Adata轉向PC+3+relPC ; 且 Adata,0CY ;Adata,1CY ;Adata,PC+3PC即順序執行CJNE Rn,#data,rel ;Rndata轉向PC+3+relPC ;且 Rndata,0CY, Rndata,1CY ;Rndata,PC+3PC即順序執行CJNE Ri,#data,rel;(Ri)data轉向PC+3+relPC ;且 (Ri)data,0CY, (Ri)data,1CY ;(Ri)data,PC+3PC即順序執行注意: CJNE類指令中借用進位標志位
43、CY作為比較結果的標志位,目的操作數內容小于源操作數內容CY置“1”,反之CY清“0”。 該類指令多用于分支程序 3.減“1”轉移指令DJNZ Rn,rel ; Rn-1Rn, ;Rn0,PC+2+relPC ;Rn0,PC+2PC順序執行DJNZ direct,rel ;(direct)-1(direct), ;(direct)0轉向PC+2+relPC ;(direct)0,PC+2PC順序執行注意: DJNZ指令執行時Rn或direct先減l,然后再判斷Rn或direct內是否等于0。不為0則轉,為0順序執行。DJNZ指令在循環程序中,控制循環次數很方便。延時程序DELAY: MOV R
44、0, #10 LP: NOP DJNZ R0, LP RET 注意: 編程時不要寫絕對字節數,用符號地址三、 調用、返回、空操作指令1調用指令(2條) 調用指令用于調用子程序。 LCALL addr16 ;長調用指令功能:該指令可調用64KB范圍內的任意子程序,故稱長調用指令。 ACALL addr11 ;短調用指令。功能:只能調用2KB范圍內的子程序,故稱短調用指令。2程序返回指令(2條) RET ;子程序返回指令 功能:放在子程序最后,使程序準確返回到主程序斷點處。 三、 調用、返回、空操作指令 RETI ;中斷返回指令 功能:用于中斷服務程序,使中斷程序結束后準確返回到主程序斷點處,執行
45、過程同RET,它還能清除優先級狀態。3空操作指令(1條) NOP ;只進行取指令、譯碼,不進行任何操作,故為空操作,常用于產生一個機器周期延時。 例 編程控制累加器A中數從0逐次加1,當A中為100時停止加l,把結果存入片內RAM 50H單元中。 程序 CLR A ; 清A MOV R0,#100 ; 循環常數送R0 LP: INC A ; A+1A DJNZ R0,LP ; R0-1R0,R00轉LP MOV 50H,A ;R00(夠100次,A50H) ;(50H)=100=64H 3.2.5 位操作指令(布爾指令)功能:對內部RAM中可進行位操作的區域進行位操作。 主要位操作有變量傳送、
46、邏輯運算、控制轉移等。位操作與字節操作的主要區別: 用進位標志位CY(記為C)作位累加器。C的功能類似累加器A,只是A中可存放8位二進制數,C中只能存放一位二進制數,或為“1”或為“0”。 MOV C,bit ;(bit)C,尋址位的狀態送入C MOV bit,C ;C(bit),C的狀態送位地址中 CLR C ;0C,清0 C累加器 CLR bit ;0(bit),清0尋址位 3.2.5 位操作指令(布爾指令) CPL C ;CC,C取反 CPL bit ;(bit)(bit),尋址位取反 SETB C ;1C,C置“1” SETB bit ;1(bit),尋址位置“1” ANL C,bit
47、 ; C(bit)C,尋址位和C“與”, ;結果在C ANL C,/bit ;C(bit)C,尋址位的非 ;和C“與”,結果在C ORL C,bit ;C(bit)C,尋址位與C“或”, ;結果在C ORL C,/bit ;C(bit)C,尋址位的非 ;和C“或”,結果在C JC rel ; C=1轉向PC+2+relPC ;C0順序執行PC+2PC JNC rel ;C=0轉向PC+2+relPC ;C1順序執行PC+2PC JB bit,rel ;(bit)l轉向PC+3+relPC ; (bit)0順序執行PC+3PC JNB bit,rel ;(bit)0轉向PC+3+relPC ;(
48、bit)l順序執行PC+3PC JBC bit,rel ;(bit)1轉向PC+3+relPC ; 同時0(bit) ;(bit)0順序執行PC+3PC 注意:JBC與JB指令區別,前者轉移后并把尋址位清0,后者只轉移不清0尋址位。 例 用位操作指令編程計算邏輯方程 P1.7ACC.0(B.0+P2.1)+P3.2 式中 “+”表示邏輯“或”; “”表示邏輯“與”。 程序 MOV C,B.0 ;B.0C ORL C,P2.1 ;C P2.1C即B.0 + P2.1C ANL C,ACC.0 ;C ACC.0C ;即ACC.0(B.0 + P2.1)C ORL C,/P3.2 ;C P3.2C
49、; 即 ACC.0(B.0+P2.1)+P3.2C MOV P1.7,C ;CP1.73.2.6 偽指令偽指令或匯編指令: 有一些控制匯編的特殊指令,它們不屬于指令系統也不產生機器碼,故稱為偽指令或匯編指令。 用助記符指令編寫的程序叫源程序,匯編后的程序叫目的程序。 下面介紹幾條常用偽指令。一、地址定位偽指令 格式: ORG addrl6 操作碼 16位地址 例1 ORG 2000H 表示某段程序的起始地址是2000H單元。 注意:在一個源程序中可以多次使用0RG指令以規定不同的程序段地址,但各段地址必須由小到大排列,地址不能交叉、重疊。 例2 ORG 2000H ORG 2500H ORG
50、3000H 這種順序是正確的。若按下面順序排列則是錯誤的。 ORG 2500H ORG 2000H ORG 3000H 二、匯編結束偽指令 格式: END 操作碼 END 放在整塊匯編程序之后,表示匯編到此結束。 注意:END千萬不能放在程序中間,這樣就把END之后的程序丟掉,不予匯編。 三、字節定義偽指令 格式: DB 字節常數或ASCII碼 操作碼 操作數 例如 ORG 2000HDB 30H,40H,24,“C”,“B” 匯編后 (2000H)30H (200lH)40H (2002H)18H(24) (2003H)43H(C的ASCII碼), (2004H)42H(B的ASCII碼)
51、四、定義字偽指令 格式:DW 字常數或ASCII碼 操作碼 操作數 例如: ORG 2000H DW 1246H,7BH,10 匯編后: (2000H)12H (2001H)46H 第1個字 (2002H)00H (2003H)7BH 第2個字 (2004H)00H (2005H)= 0AH第3個字 DW偽指令的功能: 從指定單元開始定義(存儲)若干個字,一個字2個字節。上例定義了3個字:1246H,007BH,000AH(10自動轉換成16進制0AH)。五、賦值偽指令 格式: 標號 EQU 數或符號 例1 DL EQU 2000H 表示 DL2000H,程序中使用DL代替2000H即可,在匯
52、編時,凡遇到DL時,均以2000H代替。 例2 DL EQU R1;表示DL與R1等值。六、定義標號數值偽指令 格式: MN DATA 3000H 匯編后 MN=3000H DATA與EQU的區別在于用DATA定義的標識符匯編時作為標號登記在符號表中,所以可以先使用后定義,而EQU定義的標識符不登記在符號表中,必先定義后使用。1、已知片內RAM (21H)=8FH,把21H的最低位傳送入C中。2、把P1.3的狀態傳送到P1.7。3、把ACC.5與位地址為80H的內容相與的結果,通過P1.4輸出。3.2.3 邏輯運算指令(24條)一、 邏輯與、或、非、異或指令1ANL類指令(6條) 其功能:將源
53、操作數內容和目的操作數內容按位相“與”,結果存入目的操作數指定單元,源操作數不變。 ANL A,Rn ;ARnA ANL A,direct ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct) 舉例例 設AF6H,(30H)0FH 執行 ANL A,30H ;A(30H)A 操作如下: 11110110 (F6H) 00001111 (0FH) 注意:按位“與” 00000110 (06H) 結果:A06H,3
54、0H地址內容不變即(30H)=0FH 若執行 ANL 30H,A ;(30H)A(30H) 操作同上,結果放在30H地址中,A中內容不變即(30H)=06H,AF6H。2ORL類指令(6條)功能:將源操作數內容與目的操作數內容按位邏輯“或”,結果存入目的操作數指定單元中,源操作數不變。 ORL A,Rn ;ARnA ORL A,direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data ;AdataA ORL direct,A ;(direct)A(direct) ORL direct,#data;(direct)data(direct) 3XRL類指令(6
55、條)功能:將兩個操作數指定內容按位“異或”,結果存于目的操作數指定單元中。“異或”原則是相同為“0”,相異為“1”。 XRL A,Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data;(direct) data(direct) 例 (50H)15H 執行 XRL 50H,#06H ;(50H) 06H(50H) 操作如下: 00010101 (05H) 00000110 (06H) 00010011
56、(13H) 結果:(50H)13H4取反、清零指令 CPL A ; AA 累加器內容按位取反 CLR A ;00HA 累加器A清0二、 循環移位指令(4條)功能:將累加器A中內容循環移位或者和進位位一起移位RL A ;A中內容循環左移,執行指令一次左移一位RR A ;A中內容循環右移,每執行指令一次右移一位 RLC A ;A與CY內容一起循環左移一位RRC A ;A與Cy內容一起循環右移一位例 MOV A,#80H RL A ;A01H例 MOV A,#80H RR A ;A40H例 MOV A,#80H RLC A ;CY=0, A00H ;CY=1, A=01H例 MOV A,#80H R
57、RC A ; CY=0, A01000000B (40H) ; CY=1, A11000000B (C0H)問題:將P1口的燈移動,可用什么指令?MOV A, #01HLP: MOV P1,A LCALL DELAY RL A SJMP LP3.2.4 控制轉移類指令(17條)功能:根據要求修改程序計數器PC內容,以改變程序運行方向,實現轉移。轉移類指令又可分為: 無條件轉移、條件轉移、絕對轉移、相對轉移和調用、返回指令。一、 無條件轉移類指令(4條) LJMP addl6 ;addl6PC無條件跳轉到addl6 ;地址,可在64KB范圍內轉移, ;稱為長轉移指令 AJMP add11 ;ad
58、d11PC,無條件轉向add11 ;地址,只能在2KB范圍內轉移 SJMP rel ;PC+2+relPC相對轉移,rel是偏移量, ;它是8位有符號數,范圍-128+127 ;即向后跳轉128B,向前可跳轉127B JMP A十DPTR ;A+DPTRPC,屬散轉指令, ;無條件轉向A與DPTR內容相加后 ;形成的新地址 例1 請看如下程序 PC 2000H LJMP 4000H ;4000HPC 4000H MOV A,#11H 程序執行完第一條無條件轉移指令后,馬上跳轉到4000H地址,執行該地址程序。 例2 程序 2000H:MOV R0,#1BH ;1BHR0 2002H:SJMP
59、03H ;PC+2+rel=2002H+2+03H ;2007HPC 2006H: 2007H: 執行SJMP 03H指令后,跳轉到2007H地址執行程序。 說明:實際編寫程序時最好把偏移量和轉移地址都用符號表示,機器匯編時自動計算出偏移字節數,不容易出錯,同時也便于修改程序。 例3 ORG 4000H LJMP MAIN ORG 400BH SJMP INTI MAIN: INTI: MAIN、INTI稱為符號地址。 二、 條件轉移類指令(8條) 功能:根據條件判斷是否轉移,條件滿足則轉移, 條件不滿足則順序執行。1. 判 A 轉 JZ rel ;A0, PC+2+relPC ;A0順序執行
60、 JNZ rel ;A0, PC+2+relPC ;A0順序執行2.比較指令功能:源操作數與目的操作數比較,相等順序執行CJNE A,direct,rel ;A(direct)轉向PC+3+relPC ; 且A(direct),0CY ; A(direct),lCY ;A(direct),PC+3PC即順序執行 CJNE A,#data,rel ;Adata轉向PC+3+relPC ; 且 Adata,0CY ;Adata,1CY ;Adata,PC+3PC即順序執行CJNE Rn,#data,rel ;Rndata轉向PC+3+relPC ;且 Rndata,0CY, Rndata,1CY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省孝感市漢川市2025屆八下英語期中復習檢測試題含答案
- 流程管理培訓內容
- 2025年法學專業課程考試試卷及答案
- 2025年大眾傳媒與傳播研究試題及答案
- 2025年初級護師考試題及答案
- 2025年動態數據分析師資格考試試題及答案
- 2025上海中考數學真題及答案
- 裝配鉗工初級培訓
- 出生日期及全職工作證明文書(5篇)
- 美術教育體系構建與實踐路徑
- GB/T 24067-2024溫室氣體產品碳足跡量化要求和指南
- GB 44495-2024汽車整車信息安全技術要求
- 人教版五年級3《長方體和正方體》 單元整體作業設計
- 2024年廣東省中考物理試卷(含答案逐題解析)
- DB43-T 2745-2023 地理標志產品 汨羅粽子
- 乒乓球體育課教案
- NB-T47003.1-2022常壓容器第1部分:鋼制焊接常壓容器
- 云南紅河州一中2025屆高一下數學期末綜合測試試題含解析
- 2024北京西城公安分局流管員招聘筆試參考題庫含答案解析
- 2021利達JB-QG-LD988EL JB-QT-LD988EL 火災報警控制器 消防聯動控制器調試手冊
- 浙二醫院護士進修心得體會6篇
評論
0/150
提交評論