




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
單片機原理及應用教程
(第4版)
趙全利主編
杜海龍陳軍秦春斌副主編
2020-8第1章計算機基礎概述1.1單片機應用基礎概述1.2數(shù)制劑編碼1.3計算機系統(tǒng)組成1.4單片機與嵌入式系統(tǒng)1.5單片機應用開發(fā)資源1.6一個簡單的單片機應用示例1.1單片機應用基礎概述1.1.1計算機及單片機簡介1.馮·諾依曼計算機1945年6月發(fā)表的關于EDVAC的報告草案中,提出了以“二進制存儲信息”、“存儲程序(自動執(zhí)行程序)”為基礎的計算機結構思想,即馮·諾依曼結構,如下圖。圖1-1EDVAC計算機硬件經(jīng)典結構2.單片型計算機(單片機)
通常所說的51系列單片機(本書以下簡稱51單片機)是對以Intel公司MCS-51系列單片機中8051為基核推出的各種型號兼容性單片機的統(tǒng)稱。51單片機是學習單片機應用基礎的首選單片機,同時也是應用最廣泛的一種單片機。51單片機其代表型號有Intel公司80C51、ATMEL公司的AT89系列,但51單片機一般不具備自編程能力。當前在應用系統(tǒng)盛行的STC單片機系列,完全兼容51單片機,其抗干擾性強、加密性強、超低功耗、可以遠程升級、價格低廉、使用方便及在系統(tǒng)在應用中編程等內(nèi)部專用功能電路等特點,使得STC系列單片機的應用日趨廣泛。ARM單片機采用了新型的32位ARM核處理器,使其在指令系統(tǒng)、總線結構、調(diào)試技術、功耗以及性價比等方面都超過了傳統(tǒng)的51單片機。1.2數(shù)制及編碼計算機只是一種以二進制數(shù)據(jù)形式內(nèi)部存儲信息、以程序存儲為基礎、由程序自動控制的電子設備。二進制數(shù)是計算機硬件能直接識別并進行處理的惟一形式。1.2.1數(shù)制及其轉(zhuǎn)換
數(shù)制就是計數(shù)方式。常用的數(shù)制有二進制、八進制、十進制、十六進制數(shù)據(jù)等。在計算機內(nèi)只能使用二進制表示,因此,計算機在處理數(shù)據(jù)時,必須進行各種數(shù)制之間的相互轉(zhuǎn)換。1.二進制數(shù)
二進制數(shù)只有兩個數(shù)字符號:0和1。計數(shù)時按“逢二進一”的原則進行計數(shù)。二進制數(shù)的表示形式有(110)2(110.11)210110B等。2.十六進制數(shù)
十六進制數(shù)有16個數(shù)字符號,其中0~9與十進制相同,剩余6個為A~F,分別表示十進制數(shù)的10~15。十六進制數(shù)的計數(shù)原則是逢“十六進一”。為了便于區(qū)別不同進制的數(shù)據(jù),一般情況下可在數(shù)據(jù)后跟一后綴:二進制數(shù)用“B”表示(如00111010B);十六進制數(shù)用“H”表示(如3A5H);十進制數(shù)用“D”表示(如39D或39)。3.不同數(shù)制之間的轉(zhuǎn)換(1)二進制數(shù)轉(zhuǎn)換為十進制數(shù)對任意二進制數(shù)均可按權值展開將其轉(zhuǎn)化為十進制數(shù)。(10)2=1×21+0×20=(2)10對于十進制整數(shù),可采用除2取余的方法轉(zhuǎn)化成二進制數(shù)。對于十進制小數(shù),可采用乘2取整的方法轉(zhuǎn)化成二進制數(shù)。(2)二進制數(shù)與十六進制數(shù)的相互轉(zhuǎn)換
在將二進制數(shù)轉(zhuǎn)換為十六進制數(shù)時,其整數(shù)部分可由小數(shù)點開始向左每4位為一組進行分組,直至高位。若高位不足4位,則補0使其成為4位二進制數(shù),其小數(shù)部分由小數(shù)點向右每4位為一組進行分組,不足4位則末位補0使其成為4位二進制數(shù)。例如:1000101B=01000101B=45H
例如:100101.101B=00100101.1010B=25.AH
需要將十六進制數(shù)轉(zhuǎn)換為二進制數(shù)時,則為上述方法的逆過程。例如:45.AH=01000101.1010B
例如:7ABFH=0111101010111111B
7
A
B
F1.2.2編碼1.二進制數(shù)的編碼(1)機器數(shù)與真值一個數(shù)在計算機中的表示形式叫做機器數(shù),而這個數(shù)本身(含符號“+”或“-”)稱為機器數(shù)的真值。通常在機器數(shù)中,用最高位“1”表示負數(shù),“0”表示正數(shù)(2)原碼、反碼和補碼
1)原碼。正數(shù)的符號位用“0”表示,負數(shù)的符號位用“1”表示,其數(shù)值部分隨后表示,稱為原碼。
2)反碼、補碼。在計算機中,任何有符號數(shù)都是以補碼形式存儲的。對于正數(shù),其反碼、補碼與原碼相同。
對于負數(shù),其反碼為:原碼的符號位不變,其數(shù)值部分按位取反。負數(shù)的補碼為:原碼的符號位不變,其數(shù)值部分按位取反后再加1(即負數(shù)的反碼+1),稱為求補。如果已知一個負數(shù)的補碼,可以對該補碼再進行求補碼(即一個數(shù)的補碼的補碼),即可得到該數(shù)的原碼。2.二—十進制編碼二—十進制編碼又稱BCD編碼,既具有二進制數(shù)的形式,以便于存儲,又具有十進制數(shù)的特點,以便于進行運算和顯示結果。在BCD碼中,用4位二進制代碼表示1位十進制數(shù)。3.ASCII碼
ASCII(AmericanStandardCodeforInformation)碼是一種國際標準信息交換碼,它利用7位二進制代碼來表示字符,再加上1位校驗位,故在計算機中用1個字節(jié)8位二進制數(shù)來表示一個字符,這樣有利于對這些數(shù)據(jù)進行處理及傳輸。1.3計算機系統(tǒng)組成1.3.1計算機硬件組成
1.硬件結構
一臺計算機的基本結構如圖1-5所示。它由運算器、控制器、存儲器、輸入設備和輸出設備五部分組成。圖1-5微型計算機硬件結構
隨著大規(guī)模集成電路技術的迅速發(fā)展,
把運算器、控制器和通用寄存器集成在一塊半導體芯片上,稱其為微處理器(機),也稱CPU。微處理器主要包括算術邏輯運算部件(ALU)、累加器、控制邏輯部件、程序計數(shù)器及通用寄存器等組成。
2.存儲器存儲器具有記憶功能,用來存放數(shù)據(jù)和程序。計算機中的存儲器主要有隨機存儲器(RAM)和只讀存儲器(ROM)兩種。存儲器的容量常以字節(jié)為單位表示如下:
1Byte=8bit
1024B=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB3.總線
總線是連接計算機各部件之間的一組公共的信號線。其可分為系統(tǒng)總線和外總線。系統(tǒng)總線應包括:地址總線(AB)控制總線(CB)數(shù)據(jù)總線(DB)4.輸入輸出(I/O)接口
CPU通過接口電路與外部輸入、輸出設備交換信息。1.3.2.計算機軟件系統(tǒng)
根據(jù)軟件功能的不同,軟件可分為系統(tǒng)軟件和應用軟件。使用和管理計算機的軟件稱為系統(tǒng)軟件。應用軟件是由用戶在計算機系統(tǒng)軟件資源的平臺上,為解決實際問題所編寫的應用程序。1.3.3計算機語言及程序設計
計算機語言是實現(xiàn)程序設計、以便人與計算機進行信息交流的必備工具,又稱程序設計語言。1.計算機語言
計算機語言可分為3類:機器語言、匯編語言、高級語言。
機器語言(又稱二進制目標代碼)是CPU硬件惟一能夠直接識別的語言,在設計CPU時就已經(jīng)確定其代碼的含義。匯編語言使用人們便于記憶的符號來描述與之相應的機器語言,機器語言的每一條指令,都對應一條匯編語言的指令。高級語言(如C51),是一種接近人們習慣的程序設計語言,它使用人們所熟悉的文字、符號及數(shù)學表達式來編寫程序,使程序的編寫和操作都顯得十分方便。2.程序設計程序設計的一般步驟。
1)確定數(shù)據(jù)結構
2)確定算法
3)編程
4)調(diào)試
5)整理源程序并總結資料。3.算法所謂算法,是為解決某一特定的問題,所給出的一系列確切的、有限的操作步驟。在算法設計中應遵循下面幾個準則:
1)可執(zhí)行性。
2)確定性。3)有窮性。
4)輸入。
5)輸出。4.結構化程序設計結構化程序設計步驟:
1)自頂向下,逐步求精。
2)模塊化設計。
3)每一個模塊可以獨立地進行編程﹑調(diào)試。
4)除最上層外,每層功能模塊可接受上層調(diào)用。結構化程序的每個模塊應由3種基本結構組成:順序結構、選擇結構、循環(huán)結構。
1.4單片機與嵌入式系統(tǒng)1.4.1單片機應用特點和應用(1)具有較高的性能價格比。(2)體積小,可靠性高。(3)控制功能強。(4)使用方便、容易產(chǎn)品化。
單片機的應用領域單片機由于其體積小、功耗低、價格低廉,且具有邏輯判斷、定時計數(shù)、程序控制等多種功能,廣泛應用于智能儀表、可編程序控制器、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域。單片機最常用的場合:(1)智能儀器。(2)工業(yè)控制。(3)家用電器。(4)機電一體化。
1.4.2嵌入式系統(tǒng)
從使用的角度來說,計算機應用可分為兩類:
一類是應用廣泛的獨立使用的計算機系統(tǒng)(如個人計算機、工作站等)。
一類是嵌入式計算機系統(tǒng)。所謂嵌入式系統(tǒng),是“以應用為中心、以計算機技術為基礎、軟件硬件可裁減、功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)”。嵌入式系統(tǒng)的重要特征:
1)系統(tǒng)內(nèi)核小
2)專用性強
3)系統(tǒng)精簡
4)高實時性
5)嵌入式軟件開發(fā)走向標準化
6)嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境1.4.3單片機應用系統(tǒng)的組成單片機應用系統(tǒng)包括單片機硬件系統(tǒng)和軟件系統(tǒng)。單片機的硬件系統(tǒng)包括:●單片機系統(tǒng)●單片機應用系統(tǒng)硬件組成單片機的系統(tǒng)軟件構成有兩種模式:●監(jiān)控程序:用非常緊湊的代碼,編寫系統(tǒng)的底層軟件。這些軟件實現(xiàn)的功能,往往是實現(xiàn)系統(tǒng)硬件的管理及驅(qū)動,并內(nèi)嵌一個用于系統(tǒng)的開機初始化等功能的引導(BOOT)模塊。●操作系統(tǒng):已有許多種適合于8位至32位單片機的操作系統(tǒng)進入實用階段,在操作系統(tǒng)的支持下,嵌入式系統(tǒng)會具有更好的技術性能。單片機典型應用系統(tǒng)1.5單片機應用開發(fā)資源
常用的單片機開發(fā)資源包括:單片機開發(fā)板(也可以自制);Keil單片機集成開發(fā)環(huán)境;Proteus仿真軟件;ISP下載軟件;Protel原理圖及PCB設計軟件等。1.單片機開發(fā)板單片機開發(fā)板是用于學習51、STC、AVR、ARM等系列單片機實驗設備,用戶可以根據(jù)選用的單片機芯片系列選用相應的單片機開發(fā)板。2.Keil集成開發(fā)環(huán)境KeilμVision開發(fā)環(huán)境是德國KeilSoftware,Inc.andKeilElektronikGmbH開發(fā)的微處理器開發(fā)平臺,可以開發(fā)多種51單片機程序。3.Proteus仿真軟件Proteus軟件是英國LabCenterElectronics公司開發(fā)的EDA工具軟件。該軟件已有20多年的歷史,用戶遍布全國50多個國家,是目前功能最強,最具成本效益的EDA工具。4.ISP下載ISP(in-systemprogramming)即在線系統(tǒng)編程,一種無需將存儲芯片(如EPROM)從嵌入式設備上取出就能對其進行編程的過程,縮略為ISP。5.Protel軟件Protel軟件主要功能是電路原理圖及PCB設計,工程中常用的版本有Protel99SE、ProtelDXP、Proteldesigner。1.6一個簡單的單片機應用示例
在設計一個單片機應用系統(tǒng)(嵌入式系統(tǒng))時,一般來說要經(jīng)過以下步驟:①分析問題,明確任務。②總體設計,擬定出性能/價格比最高的方案。③硬件設計。④軟件設計。
⑤編譯、仿真及調(diào)試。
⑥程序下載運行。例如,要求8個燈循環(huán)點亮,即8個燈點亮順序循環(huán)左移(或右移),循環(huán)不止(這里為了簡化電路,用8個發(fā)光二極管替代廣告燈)。分析問題,明確任務。(略)總體設計。(略)圖廣告燈控制硬件電路
(1)硬件設計??芍苯佑蓡纹瑱C的輸出口P1并行輸出驅(qū)動8個LED發(fā)光二極管,其硬件電路如圖所示。被控對象是8個發(fā)光二極管,采用共陽極接法,8個發(fā)光二極管的陰極分別由P1.0~P1.7(即單片機端口P1的8位輸入、輸出端)控制。若P1的某位輸出為“0”(低電平),相應位的發(fā)光二極管的陰極為低電平,則該管加正向電壓被點亮發(fā)光。若P1口的某位輸出為“1”,則相應位的發(fā)光二極管截止而熄滅。(2)軟件設計。根據(jù)以上原理,針對其硬件電路可編程實現(xiàn):使P1口每一位依次輸出“0”(低電平),點亮相應位的發(fā)光二極管,并經(jīng)軟件延時后,將“0”(低電平)左移一位后輸出,不斷循環(huán)。匯編源程序如下:ORG0000HMOVA,#0FEH;FEH為點亮第一個發(fā)光二極管的代碼LOOP:MOVP1,A;點亮P1.0位控制的發(fā)光二極管
LCALL DELAY;調(diào)用延遲一段時間的子程序
RL A;“0”左移一位
SJMPLOOP;不斷循環(huán)DELAY:MOVR1,#0FFH;延時子程序入口
LP:MOVR2,#80HLP1:NOP
NOPDJNZR2,LP1DJNZR1,LPRET ;子程序返回END
(3)編譯、仿真及調(diào)試。利用單片機開發(fā)系統(tǒng)編譯、仿真、調(diào)試此程序,并生成.hex文件。對于初學者來講,可以使用Proteus進行仿真。(4)程序下載運行。將程序?qū)?hex文件寫入電路中單片機的程序存儲器ROM中,即可投入使用。AT公司的89系列單片機需要專門編程器寫入程序;STC系列單片機可以由上位機在線通過串口(P3.0/P3.1)直接下載用戶程序,然后對單片機電路直接調(diào)試運行成功后,8個LED發(fā)光二極管燈順序左移點亮,循環(huán)不止。
作業(yè):
本章小結:
謝謝使用
第2章51單片機及硬件結構2.151單片機系列(略)2.251單片機總體結構2.351存儲結構及位處理器2.451工作方式2.551單片機的時序2.6單片機最小系統(tǒng)本章重點內(nèi)容:1.51單片機硬件的功能結構及內(nèi)部組成2.單片機引腳功能及應用特點3.片內(nèi)數(shù)據(jù)存儲器和特殊功能寄存器的組織特點4.單片機的工作方式和典型的CPU時序2.251單片機總體結構
51系列單片機可分為兩大系列:51子系列(普通型)和52子系列(增強型)。51子系列單片機的典型產(chǎn)品有8031、8051、8751、80C51、80C31、89C51、89S51等。它們的結構基本相同,其主要差別反映在片內(nèi)存儲器的配置上有所不同。52子系列及兼容單片機的典型產(chǎn)品有8032、8052、8752、89C52、89S52等,其中,8052、8752內(nèi)含8KB的掩模ROM程序存儲器和256B的RAM數(shù)據(jù)存儲器。增強型的存儲容量為普通型的一倍。2.2.151單片機總體結構框圖及功能8051單片機內(nèi)部由CPU、4KB的ROM、128B的RAM、4個8位的I/O并行端口、一個串行口、兩個16位定時/計數(shù)器及中斷系統(tǒng)等組成。
其內(nèi)部基本結構框圖如圖2-1所示。
圖2-2為8051單片機系統(tǒng)結構原理框圖。圖2-18051單片機內(nèi)部基本結構框圖圖2-28051單片機系統(tǒng)結構原理框圖
各功能部件的作用如下:(1)CPUCPU是單片機內(nèi)部的核心部件,是單片機的指揮和控制中心。CPU可分為運算器和控制器兩大部分。1)控制器控制器的功能是:接受來自程序存儲器ROM存儲單元的指令,并對其進行譯碼,通過定時和控制電路,按時序規(guī)定發(fā)出指令功能所需要的各種(內(nèi)部和外部)控制信息,使各部分協(xié)調(diào)工作,完成指令功能所需的操作。控制器主要包括程序計數(shù)器、指令寄存器、指令譯碼器及定時控制電路等。2)運算器ALU運算器的功能是:對數(shù)據(jù)進行算術運算和邏輯運算。計算機對任何數(shù)據(jù)的加工、處理必須由運算器完成。(2)RAMRAM為單片機內(nèi)部數(shù)據(jù)存儲器。其存儲空間包括隨機存儲器區(qū)、寄存器區(qū)、特殊功能寄存器及位尋址區(qū)。(3)ROMROM為單片機內(nèi)部程序存儲器。(4)
并行I/O口P0~P3是四個8位并行I/O口,每個口既可作為輸入,也可作為輸出。單片機在與外部存儲器及I/O端口設備交換信息時,必須由P0~P3口完成。(5)
定時器/計數(shù)器定時器/計數(shù)器用于定時和對外部事件進行計數(shù)。(6)
中斷系統(tǒng)51單片機有5個中斷源,中斷處理系統(tǒng)靈活、方便,使單片機處理問題的靈活性和工作的效率大大提高。(7)
串行接口串行接口提供對數(shù)據(jù)各位按序一位一位地傳送。(8)
時鐘電路OSC時鐘電路用于產(chǎn)生單片機中最基本的時間單位。2.2.2
51單片機引腳功能51單片機采用40腳雙列直插式封裝,其引腳排列及邏輯符號如圖2-3所示。(1)主電源引腳VCC和VSSVCC:接主電源+5V。VSS:電源接地端。(2)時鐘電路引腳XTAL1和XTAL2XTAL1是片內(nèi)振蕩器反相放大器的輸入端,XTAL2是片內(nèi)振蕩器反相放大器的輸出端,也是內(nèi)部時鐘發(fā)生器的輸入端。圖2-351單片機引腳圖(3).控制信號引腳1)RST/VPDRST/VPD為復位/備用電源輸入端。2)ALE/ALE/為低8位地址鎖存使能輸出/編程脈沖輸入端。3)為外部程序存儲器控制信號,即讀選通信號4)/VPP為外部程序存儲器允許訪問/編程電源輸入。(4).并行I/O口P0~P4端口引腳1)P0口(P0.0~P0.7)P0口內(nèi)部是一個8位漏極開路型雙向I/O端口。P0口在作通用I/O口使用時應外接10千歐的上拉電阻。在端口進行輸入操作(即CPU讀取端口數(shù)據(jù))前,應先向端口的輸出鎖存器寫“1”。2)P1口(P1.0~P1.7)P1口是一個內(nèi)部帶上拉電阻的8位準雙向I/O端口。當P1輸出高電平時,能向外部提供拉電流負載,因此,不需再外接上拉電阻。3)P2口(P2.0~P2.3)P2口也是一個內(nèi)部帶上拉電阻的8位準雙向I/O端口。當CPU訪問外部存儲器時,P2口自動用于輸出高8位地址,與P0口的低8位地址一起形成外部存儲器的16位地址總線。4)P3口(P2.0~P2.7)P3口是一個內(nèi)部帶上拉電阻的8位多功能雙向I/O端口。。2.351存儲結構及位處理器2.3.151存儲器的特點51單片機的存儲器把程序和數(shù)據(jù)的存儲空間嚴格區(qū)分開
,存儲器的劃分方法如下:(1)從物理結構上劃分,有4個存儲空間。
片內(nèi)程序存儲器。
片外程序存儲器。
片內(nèi)數(shù)據(jù)存儲器。
片外數(shù)據(jù)存儲器。(2)從邏輯上劃分,有3個存儲器地址空間。
片內(nèi)外統(tǒng)一編址的64KB的程序存儲器地址空間。
片內(nèi)(128+128)B數(shù)據(jù)存儲器地址空間。
片外64KB的數(shù)據(jù)存儲器地址空間。在訪問不同的邏輯存儲空間時,51單片機提供了不同形式的指令:
MOV指令用于訪問內(nèi)部數(shù)據(jù)存儲器。
MOVC用于訪問片內(nèi)外程序存儲器。
MOVX用于訪問外部數(shù)據(jù)存儲器。51(8051)存儲結構如圖2-4所示。圖2-451(8051)存儲結構2.3.2程序存儲器
程序存儲器用于存放已編制好的程序及程序中用到的常數(shù)。程序存儲器由ROM構成,單片機掉電后ROM內(nèi)容不會丟失。2.3.3數(shù)據(jù)存儲器
數(shù)據(jù)存儲器用于存放程序運算的中間結果、狀態(tài)標志位等。數(shù)據(jù)存儲器由RAM構成,一旦掉電,其數(shù)據(jù)將丟失。
1.通用寄存器區(qū)
在低128B的RAM區(qū)中,將地址00~1FH共32個單元設為工作寄存器區(qū),這32個單元又分為4組,每組由8個單元按序組成通用寄存器R0~R7。通用寄存器R0~R7不僅用于暫存中間結果,而且是CPU指令中尋址方式不可缺少的工作單元。2.可位尋址區(qū)地址為20H~2FH的16個RAM(字節(jié))單元,既可以像普通RAM單元按字節(jié)地址進行存取,又可以按位進行存取,這16個字節(jié)共有128(16×8)個二進制位,每一位都分配一個位地址,編址為00H~7FH。3.只能字節(jié)尋址的RAM區(qū)在30H~7FH區(qū)的80個RAM單元為用戶RAM區(qū),只能按字節(jié)存取。所以,30H~7FH區(qū)是真正的數(shù)據(jù)緩沖區(qū)。2.3.4專用寄存器區(qū)(SFR)在片內(nèi)數(shù)據(jù)存儲器的80H~FFH單元(高128B)中,有21個單元作為專用寄存器(SFR),又稱特殊功能寄存器。下面對部分特殊功能寄存器(SFR)作一簡介:(1)累加器ACC:字節(jié)地址為E0H,并可對其D0~D7各位進行位尋址。D0~D7位地址相應為E0H~E7H。(2)寄存器B:字節(jié)地址為F0H,并可對其D0~D7各位進行位尋址。D0~D7位地址相應為F0H~F7H。主要用于暫存數(shù)據(jù)。(3)程序狀態(tài)字PSW:字節(jié)地址為D0H,并可對其D0~D7各位進行位尋址。D0~D7數(shù)據(jù)位的位地址相應為D0H~D7H。主要用于寄存當前指令執(zhí)行后的某些狀態(tài)信息。(4)堆棧指針SP:字節(jié)地址為81H,不能進行位尋址。(5)端口P1:字節(jié)地址為90H,并可對其D0~D7各位進行位尋址。D0~D7數(shù)據(jù)位的位地址相應為90H~97H(也可表示為P1.0~P1.7)。2.3.5位處理器
51單片機片內(nèi)CPU還是一個性能優(yōu)異的位處理器,也就是說51單片機實際上又是一個完整而獨立的1位單片機(也稱布爾處理機)。
該布爾處理機除了有自己的CPU、位寄存器、位累加器(即進位標志Cy)、I/O口和位尋址空間外,還有專供位操作的指令系統(tǒng),可以直接尋址對位存儲單元和SFR的某一位進行操作。51單片機對于位操作(布爾處理)有置位、復位、取反、測試轉(zhuǎn)移、傳送、邏輯與和邏輯或運算等功能。2.451單片機工作方式51單片機的工作方式包括:復位方式、程序執(zhí)行方式、節(jié)電方式和EPROM的編程和校驗方式,在不同的情況下,其工作方式也不相同。2.4.1復位方式單片機在啟動運行時需要復位,使CPU以及其他功能部件處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,單片機應用程序必須以此作為設計前提。2.4.2程序執(zhí)行工作方式程序執(zhí)行方式通??煞譃檫B續(xù)執(zhí)行和單步執(zhí)行兩種工作方式。1.連續(xù)執(zhí)行方式連續(xù)執(zhí)行方式是所有單片機執(zhí)行工作程序所需要的一種工作方式。2.單步執(zhí)行方式用戶在調(diào)試程序時,常常要一條一條地執(zhí)行程序中的每一條指令。單步執(zhí)行方式就是為用戶調(diào)試程序而設計出的一種工作方式。2.4.3節(jié)電工作方式節(jié)電工作方式是一種能減少單片機功耗的工作方式,通常有空閑方式和掉電方式兩種。
1.掉電方式單片機在運行過程中,如果發(fā)生掉電,片內(nèi)RAM和SFR中的信息將會丟失。為防止信息丟失,可以把一組備用電源加到RST/VPD端,當VCC上的電壓低于VPD上的電壓時,備用電源通過VPD端,以低功耗保持內(nèi)部RAM和SFR中的數(shù)據(jù)。2.空閑方式進入空閑方式后,CPU停止工作,但中斷、串行口和定時器/計數(shù)器可以繼續(xù)工作。2.551單片機的時序
時序就是計算機指令執(zhí)行時各種微操作在時間上的順序關系。2.5.1時鐘計算機執(zhí)行指令的過程可分為取指令、分析指令和執(zhí)行指令三個步驟,每個步驟又由許多微操作所組成,這些微操作必須在一個統(tǒng)一的時鐘脈沖的控制下才能按照正確的順序執(zhí)行。時鐘脈沖由時鐘振蕩器產(chǎn)生。2.5.2CPU時序單片機的時序是指CPU在執(zhí)行指令時所需控制信號的時間順序。時序信號是以時鐘脈沖為基準產(chǎn)生的。CPU發(fā)出的時序信號有兩類:一類用于片內(nèi)各功能部件的控制,另一類信號通過單片機的引腳送到外部。1.時鐘周期、機器周期和指令周期(1)時鐘周期時鐘周期也稱振蕩周期,即振蕩器的振蕩頻率fosc的倒數(shù),是時序中最小的時間單位。(2)機器周期執(zhí)行一條指令的過程可分為若干個階段,每一階段完成一規(guī)定的操作,完成一個規(guī)定操作所需要的時間稱為一個機器周期。(3)指令周期指令周期定義為執(zhí)行一條指令所用的時間。2.51單片機的取指/執(zhí)行時序
取指令階段把程序計數(shù)器PC中的指令地址送到程序存儲器,選中指定單元并從中取出需要執(zhí)行的指令。指令執(zhí)行階段對指令操作碼進行譯碼,以產(chǎn)生一系列控制信號完成指令的執(zhí)行。3.訪問外部ROM時序4.讀外部RAM時序
訪問外部RAM的操作有兩種情況,即讀操作和寫操作,兩種操作的方式基本相同。2.6單片機最小系統(tǒng)
單片機最小系統(tǒng)硬件電路包括電源電路、時鐘電路、復位電路及擴展部分(需要時)等組成。1)必須給單片機提供穩(wěn)定可靠的工作電源。2)為單片機系統(tǒng)配置一個穩(wěn)定可靠的電源供電模塊。3)時鐘電路即振蕩電路,用于產(chǎn)生單片機最基本的時間單位。4)復位電路用于產(chǎn)生復位信號,使單片機從固定的起始狀態(tài)開始工作。
單片機最小系統(tǒng)電路
作業(yè):
本章小結:
謝謝使用
第3章51單片機指令系統(tǒng)及匯編語言程序設計3.1指令系統(tǒng)簡介3.2尋址方式3.3指令系統(tǒng)3.4匯編語言程序設計基礎3.5程序設計實例3.6單片機I/O端口應用程序及仿真3.1指令系統(tǒng)簡介指令系統(tǒng)是一種CPU所能直接執(zhí)行的所有命令的集合,CPU的主要功能是由它的指令系統(tǒng)來體現(xiàn)的。51單片機指令系統(tǒng)共有111條指令,其中有49條單字節(jié)指令、45條雙字節(jié)指令和17條三字節(jié)指令。51單片機的指令系統(tǒng)中有64條指令的執(zhí)行時間為一個機器周期(12個振蕩周期),45條指令的執(zhí)行時間為兩個機器周期。3.1.1指令格式51單片機指令系統(tǒng)中的每一條指令都有兩級指令格式:
CPU可直接識別并執(zhí)行的機器語言指令。
匯編語言指令(簡稱匯編指令)。機器語言指令由二進制數(shù)“0”和“1”編碼而成,也稱目標代碼,執(zhí)行速度最快。
匯編語言指令是在機器語言指令的基礎上,用英文單詞或英文單詞縮寫表示機器語言指令的操作碼(助記符),用符號表示操作數(shù)或操作數(shù)的地址。匯編語言指令實際上是符號化的機器語言。51單片機匯編語言指令格式由以下幾個部分組成:[標號:]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]
其中,[]中的項表示為可選項。標號:又稱為指令地址符號,一般是由1~6個字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號分開。操作碼:是由助記符所表示的指令的操作功能。操作數(shù):是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址。注釋:是為該條指令作的說明,以便于閱讀。操作碼是指令的核心,不可缺少,其他幾項根據(jù)不同指令為可選項。3.1.2指令分類及符號說明
1.指令分類51單片機的指令系統(tǒng)共有111條指令,分為五大類:(1)數(shù)據(jù)傳送指令:片內(nèi)RAM、片外RAM、程序存儲器的傳送指令,交換及堆棧指令。(2)算術運算類:加法、帶進位加、減、乘、除、加1、減1指令。(3)邏輯運算類:邏輯與、或、異或、測試及移位指令。(4)控制程序轉(zhuǎn)移類:無條件轉(zhuǎn)移與調(diào)用、條件轉(zhuǎn)移、空操作指令。(5)布爾變量操作類:分為位數(shù)據(jù)傳送、位與、位或、位轉(zhuǎn)移指令。2.符號說明
#data:表示指令中的8位立即數(shù)(data),“#”表示后面的數(shù)據(jù)是立即數(shù)。#data16:表示指令中的16位立即數(shù)。direct:表示8位內(nèi)部數(shù)據(jù)存儲器單元的地址。Rn:n=0~7,表示當前選中的寄存器區(qū)的8個工作寄存器R0~R7。Ri:i=0或1,表示當前選中的寄存器區(qū)中的2個寄存器R0、R1,可作地址指針即間址寄存器。Addr11:表示11位的目的地址。Addr16:表示16位的目的地址。rel:表示一個補碼形式的8位帶符號的偏移量。用于SJMP和所有的條件轉(zhuǎn)移指令中。DPTR:為數(shù)據(jù)指針,可用作16位的地址寄存器。bit:內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧?:位操作數(shù)的前綴,表示對該位操作數(shù)取反。A:累加器ACC。B:專用寄存器,用于MUL和DIV指令中。C:進位/借位標志位,也可作為布爾處理機中的累加器。@:間址寄存器或基址寄存器的前綴。$:當前指令的首地址?!罕硎緦⒓^右邊的內(nèi)容傳送至箭頭的左邊。3.2尋址方式所謂尋址方式就是尋找或獲得操作數(shù)的方式。51單片機指令系統(tǒng)的尋址方式有以下7種。1.立即尋址在立即尋址方式中,操作數(shù)直接出現(xiàn)在指令中。操作數(shù)前加“#”號表示,也稱立即數(shù)。指令的操作數(shù)可以是8位或16位數(shù)。例如:MOVA,#26H ;A←26H指令執(zhí)行結果:(A)=26H,即把立即數(shù)26H直接送到A中。2.直接尋址在直接尋址方式中,操作數(shù)的單元地址直接出現(xiàn)在指令中,這一尋址方式可進行內(nèi)部存儲單元的訪問。它包括:(1)特殊功能寄存器地址空間。這也是惟一可尋址特殊功能寄存器(SFR)的尋址方式。例如:MOVTCON,A指令執(zhí)行結果:A的內(nèi)容傳送給寄存器TCON。(2)內(nèi)部RAM的低128字節(jié)例如:MOVA,76H指令執(zhí)行結果:內(nèi)部RAM地址為76H單元的內(nèi)容傳送給A。3.寄存器尋址在寄存器尋址方式中,寄存器中的內(nèi)容就是操作數(shù)。例如:MOVA,R1 ;A←(R1)指令執(zhí)行結果:把寄存器R1中的內(nèi)容送到累加器A中。4.寄存器間接尋址在寄存器間接尋址方式中,指定寄存器中的內(nèi)容是操作數(shù)的地址,該地址對應存儲單元的內(nèi)容才是操作數(shù)。例如:MOVA,@R0該指令的功能是將R0所指3FH單元中內(nèi)容45H送A中,執(zhí)行結果:(A)=45H。16位數(shù)據(jù)指針DPTR作為間址寄存器。訪問內(nèi)部數(shù)據(jù)存儲器時,用當前工作寄存器R0和R1作間址,即@R0、@R1,在堆棧操作中則用堆棧指針SP作間址。例如:MOVXA,@R1MOVX@DPTR,A5.變址尋址變址尋址方式是以程序指針PC或數(shù)據(jù)指針DPTR為基址寄存器,以累加器A作為變址寄存器,兩者內(nèi)容相加(即基地址+偏移量)形成16位的操作數(shù)地址,變址尋址方式主要用于訪問固化在程序存儲器中的某個字節(jié)。變址尋址方式有兩類:(1)用程序指針PC作基地址,A作變址,形成操作數(shù)地址:@A+PC。(2)用數(shù)據(jù)指針DPTR作基地址,A作變址,形成操作數(shù)地址:@A+DPTR。
6.相對尋址相對尋址是以程序計數(shù)器PC的當前值作為基地址,與指令中的第二字節(jié)給出的相對偏移量rel進行相加,所得和為程序的轉(zhuǎn)移地址。7.位尋址
51單片機系列單片機中有獨立的性能優(yōu)越的布爾處理器,包括位變量操作運算器、位累加器和位存儲器,可對位地址空間的每個位進行位變量傳送、狀態(tài)控制、邏輯運算等操作。位地址包括:內(nèi)部RAM地址空間的可進行位尋址的128位和SFR地址空間的可位尋址的11個8位寄存器的88位。位尋址給出的是直接地址。
3.3指令系統(tǒng)3.3.1數(shù)據(jù)傳送類指令1.數(shù)據(jù)傳送類指令的特點
數(shù)據(jù)傳送指令是最常用的一類指令,共有29條,可以通過累加器進行數(shù)據(jù)傳送,還可以在數(shù)據(jù)存儲器之間或工作寄存器與數(shù)據(jù)存儲器之間直接進行數(shù)據(jù)傳送。2.數(shù)據(jù)傳送類指令(1)片內(nèi)數(shù)據(jù)傳送指令1)以累加器A為目的操作數(shù)的指令有以下形式:MOVA,Rn ;A←(Rn)源操作數(shù)為寄存器尋址MOVA,@Ri ;A←((Ri))源操作數(shù)為寄存器間接尋址MOVA,direct ;A←(direct)源操作數(shù)為直接尋址MOVA,#data ;A←data源操作數(shù)為立即尋址該組指令的功能是把源操作數(shù)傳送給累加器A。2)以工作寄存器Rn為目的操作數(shù)的指令有以下形式:MOVRn,A ;Rn←(A)MOVRn,direct ;Rn←(direct)MOVRn,#data ;Rn←data3)以直接地址為目的操作數(shù)的指令有以下形式:MOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,@RiMOVdirect,#data4)以間接地址為目的操作數(shù)的指令:MOV@Ri,AMOV@Ri,directMOV@Ri,#data該組指令的功能:把源操作數(shù)所指定的內(nèi)容傳送至以R0或R1為地址指針的片內(nèi)RAM單元中。5)16位數(shù)據(jù)傳送指令有以下惟一形式:MOVDPTR,#data16該指令的功能:把16位立即數(shù)傳送至16位數(shù)據(jù)指針寄存器DPTR。
(2)片外數(shù)據(jù)存儲器傳送指令片外數(shù)據(jù)存儲器傳送指令有以下形式:
MOVXA,@Ri ;A←((Ri)),為寄存器間接尋址
MOVXA,@DPTR ;A←((DPTR)),為寄存器間接尋址
MOVX@R,A ;(Ri)←(A)MOVX@DPTR,A ;(DPTR)←(A)單片機內(nèi)部與片外數(shù)據(jù)存儲器是通過累加器A進行數(shù)據(jù)傳送的。
(3)程序存儲器數(shù)據(jù)傳送指令程序存儲器數(shù)據(jù)傳送指令有以下兩種形式:MOVCA,@A+PC MOVCA,@A+DPTR(4)數(shù)據(jù)交換指令數(shù)據(jù)交換指令有以下形式:
1)字節(jié)交換指令:XCHA,Rn ;A的內(nèi)容與Rn的內(nèi)容交換XCHA,@Ri ;A的內(nèi)容與(Ri)的內(nèi)容交換XCHA,direct ;A的內(nèi)容與(direct)的內(nèi)容交換
2)低半字節(jié)交換指令:XCHDA,@Ri ;A的低四位與(Ri)的低四位交換3)累加器A的高、低半字節(jié)交換指令:SWAPA ;A的低四位與高四位互換(5)堆棧操作指令堆棧操作指令有以下形式:PUSHdirect ;SP←(SP)+1(先指針加1)
;(SP)←(direct)(再壓棧)
POPdirect ;(SP)←(direct)(先彈出)
;SP←(SP)-1(再指針減1)PUSH指令是入棧(或稱壓?;蜻M棧)指令,其功能是先將堆棧指針SP的內(nèi)容加1,然后將直接尋址direct單元中的數(shù)壓入到SP所指示的單元中。POP是出棧(或稱彈出)指令,其功能是先將堆棧指針SP所指示的單元內(nèi)容彈出到直接尋址direct單元中,然后將SP的內(nèi)容減1,SP始終指向棧頂。3.3.2算術運算類指令
1.算術運算類指令特點算術運算類指令共有24條,包括加、減、乘、除4種基本的算術運算指令。
該類指令的主要功能:(1)對8位無符號數(shù)進行直接的運算。(2)借助溢出標志對有符號的二進制整數(shù)進行加減運算。(3)借助進位標志,可以實現(xiàn)多字節(jié)的加減運算。(4)對壓縮的BCD數(shù)進行運算(壓縮BCD數(shù),是指在1個字節(jié)中存放2位BCD數(shù))。(5)算術運算指令對程序狀態(tài)字PSW中的Cy、AC、OV三個標志都有影響,根據(jù)運算的結果可將它們置1或清除。但是加1和減1指令不影響這些標志。算術運算類指令用到的助記符有:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV八種。
2.加法指令(1)不帶進位的加法指令
不帶進位的加法指令有以下形式:ADDA,#data ;A←(A)+dataADDA,direct ;A←(A)+(direct)ADDA,Rn ;A←(A)+(Rn)ADDA,@Ri ;A←(A)+((Ri))這4條指令的功能是完成A中的數(shù)與源操作數(shù)所確定的內(nèi)容按二進制運算相加,其和送入目的操作數(shù)累加器A中。(2)帶進位加法指令帶進位加法指令有以下形式:ADDC A,Rn ;A←(A)+(Rn)+CyADDC A,@Ri ;A←(A)+((Ri))+CyADDC A,direct ;A←(A)+(direct)+CyADDC A,#data ;A←(A)+#data+Cy該組指令的功能:將指令中指出的源操作數(shù)與A的內(nèi)容及進位標志位Cy的值相加,結果送A。此類指令常用于多字節(jié)加法算中。(3)加1指令加1指令有以下形式:INC A ;A←(A)+1INC Rn ;Rn←(Rn)+1INC direct ;(direct)←(direct)+1INC @Ri ;(Ri)←((Ri))+1INC DPTR ;DPTR←(DPTR)+1該組指令的功能:把操作數(shù)指定的單元或寄存器的內(nèi)容加1。(4)十進制調(diào)整指令十進制調(diào)整指令有以下惟一形式:DA A ;A←(A)(BCD碼調(diào)整)指令的功能:將存放于A中的兩個BCD碼(十進制數(shù))的和進行十進制調(diào)整,使A中的結果為正確的BCD碼數(shù)。3.減法指令(1)帶借位減法指令帶借位減法指令有以下形式:SUBB A,Rn ;A←(A)-(Rn)-CySUBB A,@Ri ;A←(A)-((Ri))-CySUBB A,direct ;A←(A)-(direct)-CySUBB A,#data ;A←(A)-data-Cy該組指令的功能:從累加器A中減去源操作數(shù)指定的內(nèi)容和標志位Cy,結果存入累加器A中。(2)減1指令減1指令有以下形式:DECA ;A←(A)-1DECRn ;Rn←(Rn)-1DEC@Ri ;(Ri)←((Ri))-1DECdirect ;(direct)←(direct)-1該組指令的功能:將操作數(shù)指定的內(nèi)容減1。若操作數(shù)為00H,則減1后下溢為0FFH,不影響標志位,只有DECA影響標志位P。4.乘除法指令乘法指令有以下惟一形式:MUL AB ;A←A×B低字節(jié),B←A×B高字節(jié)該指令的功能:把累加器A和寄存器B中的兩個8位無符號數(shù)相乘,乘積又送回A、B內(nèi),A中存放低位字節(jié),B中存放高位字節(jié)。除法指令有以下惟一形式:DIV AB ;A←(A)/(B)(商),B←(A)/(B)(余數(shù))該指令的功能:把A中的8位無符號數(shù)除以B中的8位無符號數(shù),商存放在A中,余數(shù)存放在B中。Cy和OV均清0。若除數(shù)為0,執(zhí)行該指令后結果不定,并將OV置1。3.3.3邏輯運算類指令邏輯操作指令共24條,所有指令均對8位二進制數(shù)按位進行邏輯運算。邏輯運算類指令無進位,一般不影響標志位。1.雙操作數(shù)邏輯運算指令(1)邏輯“與”指令邏輯“與”指令有以下形式:ANL A,Rn ;A←(A)∧(Rn)ANL A,@Ri ;A←(A)∧((Ri))ANL A,direct ;A←(A)∧(direct)ANL A,#data ;A←(A)∧dataANL direct,A ;(direct)←(direct)∧(A)ANL direct,#data ;(direct)←(direct)∧data該組指令的功能:將源操作數(shù)和目的操作數(shù)按對應位進行邏輯“與”運算,并將結果存入目的地址(前4條指令為累加器A,后2條指令為直接尋址的direct單元)中。與運算規(guī)則是:與“0”相與,本位為“0”(即屏蔽);與“1”相與,本位不變。邏輯“與”指令常用于屏蔽操作數(shù)中的某些位。(2)邏輯“或”指令邏輯“或”指令有以下形式:ORL A,Rn ;A←(A)∨(Rn)ORL A,@Ri ;A←(A)∨((Ri))ORL A,direct ;A←(A)∨(direct)ORL A,#data ;A←(A)∨dataORL direct,A ;(direct)←(direct)∨(A)ORL direct,#data ;(direct)←(direct)∨data該組指令的功能:將源操作數(shù)和目的操作數(shù)按對應位進行邏輯“或”運算,并將結果存入目的地址(前4條指令為累加器A,后2條指令為直接尋址的direct單元)中?;蜻\算規(guī)則是:與“1”相或,本位為“1”;與“0”相或,本位不變。(3)邏輯“異或”指令邏輯“異或”指令有以下形式:XRL A,Rn ;A←(A)⊕(Rn)XRL A,@Ri ;A←(A)⊕((Ri))XRL A,direct ;A←(A)⊕(direct)XRL A,#data ;A←(A)⊕dataXRL direct,A ;(direct)←(direct)⊕(A)XRL direct,#data ;(direct)←(direct)⊕data該組指令的功能是:將源操作數(shù)和目的操作數(shù)按對應位進行邏輯“異或”運算,并將結果存入目的地址(前4條指令為累加器A,后2條指令為直接尋址的direct單元)中。異或運算的運算規(guī)則是:與“1”異或,本位為非(即求反);與“0”異或,本位不變。2.單操作數(shù)邏輯運算指令
單操作數(shù)邏輯運算指令有以下形式:(1)累加器A清0指令CLR A ;A←0(2)累加器A求反指令CPL A ;A←()
3.累加器A循環(huán)移位指令(1)累加器A循環(huán)移位指令累加器A循環(huán)移位指令有以下形式:RL A ;A的各位依次左移一位,A.0←A.7RR A ;A的各位依次右移一位,A.7←A.0該組指令不影響標志位。當A的最高位(D7)為0時,執(zhí)行一次RL指令相當于對A進行一次乘2操作。當A的最低位(D0)為0時,執(zhí)行一次RR指令相當于對A進行一次除2操作。(2)帶進位位Cy的累加器A循環(huán)移位指令帶進位位Cy的累加器A循環(huán)移位指令有以下形式:RLC A ;A的各位依次左移一位,Cy←A.7,A.0←CyRRC A ;A的各位依次右移一位,Cy←A.0,A.7←Cy3.3.4控制轉(zhuǎn)移類指令
控制轉(zhuǎn)移指令共17條,可分為三類:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令及子程序調(diào)用與返回指令。1.無條件轉(zhuǎn)移指令不受任何條件限制的轉(zhuǎn)移指令稱為無條件轉(zhuǎn)移指令。51單片機無條件轉(zhuǎn)移指令有以下類型:(1)長轉(zhuǎn)移指令長轉(zhuǎn)移指令有以下惟一形式:LJMP addrl6 ;PC←(PC)+2;PC←addr16該指令功能:把16位地址(addr16)送給PC,從而實現(xiàn)程序轉(zhuǎn)移。允許轉(zhuǎn)移的目標地址在整個程序存儲器空間。(2)絕對轉(zhuǎn)移指令絕對轉(zhuǎn)移指令有以下惟一形式:AJMP
addr11 ;PC←(PC)+2 ;PC10~0←addr10~0,PC15~11不變該指令功能:把PC當前值(加2修改后的值)的高5位與指令中的11位地址拼接在一起,共同形成16位目標地址送給PC,從而使程序轉(zhuǎn)移。(3)相對轉(zhuǎn)移指令(亦稱短轉(zhuǎn)移指令)相對轉(zhuǎn)移指令有以下惟一形式:SJMP rel ;PC←(PC)+2+rel該指令的功能:根據(jù)指令中給出的相對偏移量rel(相對于當前PC=(PC)+2),計算出程序?qū)⒁D(zhuǎn)移的目標地址(PC)+2+rel,把該目標地址送給PC。(4)間接長轉(zhuǎn)移指令(相對長轉(zhuǎn)移指令)間接長轉(zhuǎn)移指令有以下惟一形式:JMP @A+DPTR ;PC←(A)+(DPTR)該指令也稱散轉(zhuǎn)指令,其功能是把累加器A中8位無符號數(shù)與數(shù)據(jù)指針DPTR的16位數(shù)相加,結果作為下一條指令地址送入PC,指令執(zhí)行后不改變A和DPTR中的內(nèi)容,也不影響標志位。2.條件轉(zhuǎn)移指令所謂條件轉(zhuǎn)移指令是指根據(jù)指令中給定的判斷條件決定程序是否轉(zhuǎn)移。當條件滿足時,就按指令給定的相對偏移量進行轉(zhuǎn)移;否則,程序順序執(zhí)行。51單片機的條件轉(zhuǎn)移指令有以下類型:(1)累加器判零轉(zhuǎn)移指令累加器判零轉(zhuǎn)移指令有以下形式:JZ rel JNZ rel這兩條指令均為雙字節(jié)指令,以累加器A的內(nèi)容是否為0作為轉(zhuǎn)移的條件。本指令執(zhí)行前,累加器A應有確定的值。(2)比較不相等轉(zhuǎn)移指令比較不相等轉(zhuǎn)移指令有以下形式:1)指令格式為:CJNE A,#data,rel該指令的功能:若A>data,則PC←(PC)+3+rel,且Cy=0(滿足條件相對轉(zhuǎn)移)。若(A)<data,則PC←(PC)+3+rel,且Cy=1(滿足條件相對轉(zhuǎn)移)。否則,
PC←(PC)+3且Cy=0(順序執(zhí)行)。
2)指令格式為:CJNE A,direct,rel該指令的功能:若(A)>(direct),則PC←(PC)+3+rel,且Cy=0(滿足條件相對轉(zhuǎn)移)。若(A)<(direct),則PC←(PC)+3+rel,且Cy=1(滿足條件相對轉(zhuǎn)移)。否則,PC←(PC)+3且Cy=0(順序執(zhí)行)。3)指令格式為:CJNE Rn,#data,rel該指令的功能:若(Rn)>data,則PC←(PC)+3+rel,且Cy=0(滿足條件相對轉(zhuǎn)移)。若(Rn)<data,則PC←(PC)+3+rel,且Cy=1(滿足條件相對轉(zhuǎn)移)。否則,PC←(PC)+3且Cy=0(順序執(zhí)行)。4)指令格式為:CJNE @Ri,data,rel
該指令的功能:若((Ri))>data,則PC←(PC)+3+rel,且Cy=0(滿足條件相對轉(zhuǎn)移)。若((Ri))<data,則PC←(PC)+3+rel,且Cy=1(滿足條件相對轉(zhuǎn)移)。否則,PC←(PC)+3且Cy=0(順序執(zhí)行)。(3)減1不為0轉(zhuǎn)移指令
減1不為0轉(zhuǎn)移指令有以下形式:DJNZ Rn,rel DJNZ direct,rel 該組指令中第一條指令為兩字節(jié)指令,第二條指令為三字節(jié)指令。3.空操作指令空操作指令有以下惟一形式:NOP ;PC←(PC)+1空操作指令是惟一的一條不使CPU產(chǎn)生任何操作控制的指令,NOP指令的功能是使程序計數(shù)器PC加1,在執(zhí)行時間上消耗12個時鐘周期。
3.3.5子程序調(diào)用與返回指令在調(diào)用子程序過程中需要解決以下方面的問題:(1)保護斷點。所謂斷點是指子程序調(diào)用指令的下一條指令的第一個字節(jié)地址。(2)建立子程序入口。子程序入口是指子程序中第一條指令的第一個字節(jié)地址,即子程序調(diào)用指令給出的目標地址。(3)保護現(xiàn)場。所謂保護現(xiàn)場是指在執(zhí)行子程序前,需要保存程序中正在使用的存儲單元和寄存器的內(nèi)容。51單片機子程序調(diào)用與返回指令有以下形式:1)絕對調(diào)用指令ACALL addrl1其功能是:首先保護斷點,將PC的值壓棧保護(先壓低位,后壓高位),接著將指令中的11位目標地址(addr11)送入PC的低11位與PC的高5位合成一個程序要轉(zhuǎn)移的目標地址。2)長調(diào)用指令LCALL addrl6其功能是:首先保護斷點,將PC的值壓棧保護(先壓低位,后壓高位),接著將指令中的16位目標地址(addr16)送入PC,即子程序入口地址,從而轉(zhuǎn)去執(zhí)行被調(diào)用的子程序。3)一般子程序返回指令RET 當程序執(zhí)行到本指令時,自動從堆棧中取出斷點地址送給PC,程序返回斷點的下一條指令處,繼續(xù)往下執(zhí)行。4)中斷子程序返回指令RETI該指令除具有RET指令的功能外,RETI在返回斷點的同時,還要釋放中斷邏輯以接受新的中斷請求。中斷服務程序(中斷子程序)必須用RETI返回。3.3.6位操作類指令
位操作指令共17條,所有的位操作指令均采用位(直接)尋址方式,在進行位操作時,51單片機匯編語言中的位地址可用以下四種方式表示:(1)直接位地址方式。(2)點操作符表示方式。(3)位名稱方式。(4)用戶定義名方式。1.位傳送指令位傳送指令有以下形式:MOV C,bit ;Cy←(bit)MOV bit,C ;(bit)←(Cy)指令中其中一個操作數(shù)必須是進位標志C,bit可表示任何直接位地址。2.位置位和復位指令(1)位置位指令位置位指令有以下形式:SETB C ;Cy←1SETB bit ;(bit)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源店面管理制度
- 放射標記藥物管理制度
- 潔凈手術室管理制度
- 三流學校管理制度
- 測試結果分析與評測師考試試題及答案
- 兒科風險管理制度
- 護理接待流程管理制度
- 出納職責與管理制度
- 刷題秘籍初級社會工作者考試試題及答案
- 債券信息管理制度
- 第1單元班級衛(wèi)生大掃除(教案)-三年級上冊勞動魯科版
- 鋁合金造型施工方案
- 肱骨外上髁炎的健康宣教
- 交警執(zhí)勤執(zhí)法安全課件
- 內(nèi)墻涂料施工方案
- 委托取水許可驗收合同(2篇)
- 現(xiàn)代密碼學-清華大學-楊波著+習題答案
- 吊裝作業(yè)安全技術交底大全
- 鎳基高溫合金氫脆行為研究進展與對策
- 四川省眉山縣2025屆中考生物仿真試卷含解析
- T-CRHA 089-2024 成人床旁心電監(jiān)測護理規(guī)程
評論
0/150
提交評論