單片機基礎(chǔ)教案_第1頁
單片機基礎(chǔ)教案_第2頁
單片機基礎(chǔ)教案_第3頁
單片機基礎(chǔ)教案_第4頁
單片機基礎(chǔ)教案_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023/10/291單片機基礎(chǔ)教案2023/10/2921、數(shù)據(jù)單位二進制位:在計算機中,二進制中的每個0或1。它是表示信息的最小單位。位(Bit):二進制代碼只有“0”和“1”,在CPU中占1位。字節(jié)(Byte):通常把8位二進制數(shù)定義為一個字節(jié)(Byte),它是數(shù)據(jù)處理的基本單位。字(Word):1個字為2個字節(jié)。字長:計算機一次可處理的二進制數(shù)的位數(shù)。第一章計算機基礎(chǔ)知識1.1二進制數(shù)在計算機中的使用▼

十進制(D)Decimalsystem(scale)▼

二進制(B)Binarysystem▼

十六進制(H)Hexadecimalsystem2023/10/2931.1.1采用二進制編碼的好處(1)物理上容易實現(xiàn)(狀態(tài)分明),可靠性強;(2)運算簡單,通用性強;(3)二進制的0、1數(shù)碼與邏輯量“真”和“假”的0、1吻合。2023/10/294

方法:除2取余

余數(shù)

操作:

2251最低位

2120260231

211最高位

0

結(jié)果:(25)D=(11001)B1.1.2十進制向二進制的轉(zhuǎn)換(除法)

:2023/10/295計算機中使用的編碼BCD碼十進制編碼又稱為BCD碼。常用的壓縮BCD碼又稱為8421碼,它是用四位二進制編碼來表示一位十進制符號。例如:十進制數(shù)124的壓縮BCD碼為0001

0010

0100。十進制數(shù)4.56的壓縮BCD碼為0100.0101

0110。ASCII碼現(xiàn)在的計算機中字符數(shù)據(jù)的編碼通常采用的是美國信息交換標準代碼ASCII碼。基本ASCII碼標準定義了128個字符,用七位二進制來編碼,包括英文大小寫字母、數(shù)字符號0~9,還有一些專用符號,如“:”、“!”、“%”及如換行、回車等。由于在計算機中常用一個字節(jié)(8位)來表示數(shù)據(jù),因此,為湊成一個字節(jié),應(yīng)在ASCII碼的最高位補一個0。通常,為了方便,常用十進制數(shù)或十六進制數(shù)來表示ASCII碼。例如:字符A的ASCII碼用十進制表示為65,用十六進制表示為41H。2023/10/296第二章單片機的硬件結(jié)構(gòu)2.1單片機的基本概念2.1.1單片機的定義:

在一塊硅片上集成了中央處理器(CPU),存儲器(RAM,ROM或EPROM)和各種輸入、輸出接口(定時器,計數(shù)器,并行I/O口,串行口,A/D轉(zhuǎn)換器以及脈沖調(diào)制器PWM等),這樣一塊芯片具有一臺計算機的屬性,因而被稱為單片微型計算機。單片微機是早期SingleChipMicrocomputer的直譯,它忠實地反映了早期單片微機的形態(tài)和本質(zhì)。單片機屬于微型計算機的一種,是把微型計算機中的微處理器、存儲器、I/O接口、定時器/計數(shù)器、串行接口、中斷系統(tǒng)等電路集成在一塊集成電路芯片上形成的微型計算機。因而被稱為單片微型計算機,簡稱為單片機。2023/10/297單片機技術(shù)的應(yīng)用遍布國民經(jīng)濟與人民生活的各個領(lǐng)域2023/10/2982.2

MCS-51單片機具有如下一些特點:集成度高:MCS-51單片機的典型代表產(chǎn)品為8031,8031芯片內(nèi)部包含了128個字節(jié)的RAM,4個8位并行I/O口,1個全雙工的串行口,2個16位的定時器/計數(shù)器,以及一個處理能力很強的中央處理器。系統(tǒng)結(jié)構(gòu)簡單:MCS-51芯片內(nèi)部采用模塊式結(jié)構(gòu),增加或更換一個模塊,就能得到指令系統(tǒng)和引腳兼容的新產(chǎn)品。系統(tǒng)擴展方便:MCS-51具有外擴至64K字節(jié)程序存儲器和64k字節(jié)的外部RAM和I/O口的能力??煽啃愿?MCS-51單片機的總線大多在芯片內(nèi)部不易受干擾,容易采取屏蔽等措施,適應(yīng)范圍寬,在各種惡劣的環(huán)境下都能可靠的工作。處理功能強、速度高:MCS-51單片機指令系統(tǒng)中有加、減、乘除及各種邏輯運算和轉(zhuǎn)移指令,還具有位操作功能。CPU時鐘頻率為12MHz,指令系統(tǒng)中近50%的指令為單字節(jié)指令,指令執(zhí)行速度快。容易產(chǎn)品化:MCS-51由于單片機應(yīng)用系統(tǒng)具有體積小、可靠性高、功能強、價格低等特點,因此容易形成產(chǎn)品,可以把它裝入各種儀器、儀表及控制設(shè)備中。2023/10/2992.380C51邏輯結(jié)構(gòu)圖PSENALERESETXLAT1P0.0~P0.7P2.0~P2.7RAM地址寄存器RAMP0鎖存器P2鎖存器EPROM或ROM程序地址寄存器緩沖器B寄存器ACC暫存器2暫存器1ALUPSW堆棧指針SPPC增量器PC數(shù)據(jù)指針DPTRP0驅(qū)動器P2驅(qū)動器特殊功能寄存器指令寄存器定時及控制P1鎖存器P3鎖存器P1驅(qū)動器P3驅(qū)動器振蕩器VssP1.0~P1.7P3.0~P3.7EAXLAT2Vcc2023/10/29102023/10/29112.380C51單片機的硬件組成

80C51單片機的組成部件:微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存(SFR)2023/10/29122.4MCS-51的引腳

制造工藝為HMOS的MCS-51的單片機都采用40只引腳的雙列直插封裝(DIP)方式,目前大多數(shù)為此類封裝方式。制造工藝為CHMOS的80C51/80C31除采用DIP封裝外,還采用方形封裝方式,為44只引腳。2023/10/291340只引腳按其功能來分,可分為三部分:1.電源及時鐘引腳:

Vcc,Vss;XTAL1,XTAL22.控制引腳:PSEN、ALE、EA、RESET(即RST)。3.I/O口引腳:

P0、P1、P2、P3,為4個8位I/O口的外部引腳。2.4.1芯片引腳介紹2023/10/29142023/10/2915

EA接高電平,PC的值在低4K字節(jié)(0000H—0FFFH)內(nèi),執(zhí)行片內(nèi)ROM,PC>0FFFH,CPU自動訪問片外。EA接低電平,只執(zhí)行片外程序存儲器中的程序。

程序存儲器可分為片內(nèi)和片外。由于邏輯上還是屬于同一空間,所以訪問用的是相同的指令。訪問片內(nèi)還是片外取決于EA引腳上所接電平。2023/10/29162023/10/2917

2.4.2程序計數(shù)器PCPC中存放的內(nèi)容:下一條將要執(zhí)行的指令在程序存儲器中的地址。PC的位數(shù)決定了單片機對程序存儲器可以直接尋址的范圍。程序計數(shù)器的基本工作方式:(1)順序執(zhí)行時,PC自動加1。(2)執(zhí)行轉(zhuǎn)移指令時,PC被置入新值,從而使程序流向改變。(3)執(zhí)行子程序調(diào)用或響應(yīng)中斷時,單片機自動完成下列操作:①PC的現(xiàn)行值(斷點值),自動壓入堆棧。②將子程序入口地址或中斷向量的地址送入PC,程序改變流向,轉(zhuǎn)向執(zhí)行子程序或ISR(中斷服務(wù)程序)

。執(zhí)行完畢后,遇到RET或RETI時,將堆棧中保存的斷點值彈到PC中,程序又返回到斷點處繼續(xù)執(zhí)行未完成的部分。2023/10/2918

2.4.3堆棧指針SPSP是一個8位的SFR,堆棧的實質(zhì)是一個特殊的RAM區(qū),主要功能是暫放數(shù)據(jù)和地址。堆棧的具體功能為:(1)

保護斷點:子程序調(diào)用以及中斷時,最終都要返回主程序。為了保證程序能正確返回,應(yīng)該在堆棧中預先將主程序的斷點保護起來。(2)

現(xiàn)場保護:單片機執(zhí)行子程序或ISR(中斷服務(wù)程序)之后,很可能要用到單片機中的一些寄存器,為了不破壞寄存器中的原有內(nèi)容,可以把有關(guān)寄存器的內(nèi)容保存起來,送入堆棧。2023/10/2919

堆棧的特點:先進后出。堆棧的操作:進棧(PUSH),出棧(POP)。第一個進棧的數(shù)據(jù)所在的單元稱為棧底,然后逐次進棧,最后進棧的數(shù)據(jù)所在的存儲單元稱為棧頂。入棧時:SP指針的內(nèi)容先自動加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;——先加后壓出棧時:先把SP指針指向的單元的數(shù)據(jù)取出,然后再把SP指針的內(nèi)容自動減1。復位時,SP的初值為07H,因此堆棧實際上從08H開始存放數(shù)據(jù)?!葟椇鬁p2023/10/2920堆棧的操作有兩種方式:(1)指令方式,使用堆棧操作指令進行進棧/出棧操作。(2)自動方式,在調(diào)用子程序或產(chǎn)生中斷時,返回地址(斷點)自動進棧。程序返回時,斷點地址再自動彈回PC。這種堆棧操作不需要干預,是通過硬件自動實現(xiàn)的。2023/10/2921基本門電路

基本門電路的符號與真值表如下圖所示。

2023/10/2922

基本門電路2023/10/2923觸發(fā)器

1.基本RS觸發(fā)器

基本RS觸發(fā)器的符號及用法如圖所示。

2.鐘控RS觸發(fā)器

鐘控型RS觸發(fā)器的符號及用法如圖1-12(見下頁)所示。

邊沿觸發(fā)RS觸發(fā)器(主從型RS觸發(fā)器)的符號及用法如圖1-

13(見下頁)所示。2023/10/2924

圖時鐘控制RS觸發(fā)器

圖主從型RS觸發(fā)器2023/10/29253.D觸發(fā)器

D觸發(fā)器的符號及用法如圖1-14所示。

圖1-14時鐘控制D觸發(fā)器

74LS273是常用的D觸發(fā)器之一,它內(nèi)部由8個D觸發(fā)器構(gòu)成,其引腳及真值表如圖(見下頁)所示。

74LS273用S低電來復位,用CP脈沖上升沿將8個輸入端D7~D0的狀態(tài)鎖存在7個輸出端Q7~Q0。

74LS273不能呈高阻態(tài),而74LS374則具有三態(tài)輸出功能。74LS374引腳及真值表如圖(見下頁)所示。2023/10/2926

圖1-1574LS273引腳與真值表

圖1-1674LS374引腳與真值表2023/10/2927JK觸發(fā)器

JK觸發(fā)器的符號及用法如圖1-17所示。

圖1-17主從型JK觸發(fā)器

譯碼器

二進制譯碼器常用的有2-4譯碼器和3-8譯碼器。以2-4譯碼器為例,其符號及真值表如圖1-18(見下頁)所示。

譯碼器中最常用的產(chǎn)品是3-8譯碼器74LS138,它有三個片選控制端,這三個片選控制端內(nèi)部是"與"的關(guān)系,只有同時2023/10/2928有效時,譯碼器才能工作。74LS138引腳及真值表如圖1-18所示(見課本)。

圖1-182-4譯碼器及其真值表

2023/10/2929三態(tài)門,三態(tài)電路是一種重要的總線接口電路。這里的三態(tài),是指它的輸出既可以是一般二值邏輯電路的正常的“0”狀態(tài)和“1”狀態(tài),又可以保持特有的高阻抗狀態(tài),(相當于隔斷狀態(tài))。處于高阻抗狀態(tài)時,其輸出相當于斷開狀態(tài),沒有任何邏輯控制功能。三態(tài)電路的輸出邏輯狀態(tài)的控制,是通過一個輸入引腳實現(xiàn)的。當EN為低電平輸入時,三態(tài)電路呈現(xiàn)正常的“0”或“1”的輸出;當EN為高電平輸入時,三態(tài)電路給出高阻態(tài)輸出。用EN控制使能端,來控制門電路的通斷??梢跃邆溥@三種狀態(tài)的器件就叫做三態(tài)門。2023/10/29302.5并行I/O端口P0口:雙向8位三態(tài)I/O口,此口為地址總線(低8位)及數(shù)據(jù)總線復用口,只有該口能直接用于對外部存儲器的讀/寫數(shù)據(jù)操作。P1口:準雙向口,專門供用戶使用的I/O口。P2口:準雙向口,供系統(tǒng)擴展時輸出高8位地址,也可作為一般I/O口。P3口:準雙向口,雙功能口。MCS-51系列單片機有4個8位的并行I/O接口:P0、P1、P2和P3口。它們是特殊功能寄存器中的4個。這4個口,既可以作輸入,也可以作輸出,既可按8位處理(字節(jié)),也可按位方式使用。輸出時具有鎖存能力,輸入時具有緩沖功能。2023/10/2931一、P0口P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復用口,也可作為通用的I/O接口。它包括一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅(qū)動電路和輸出控制電路組成,它的一位結(jié)構(gòu)如圖:2023/10/2932①當控制信號為高電平“1”:P0口作為地址/數(shù)據(jù)分時復用總線用。這時可分為兩種情況:(1)一種是從P0口輸出地址或數(shù)據(jù)。控制信號為高電平“1”,使轉(zhuǎn)換開關(guān)MUX把反相器4的輸出端與V1接通,同時把與門打開。如果從P0口輸出地址或數(shù)據(jù)信號,當?shù)刂坊驍?shù)據(jù)為“1”時,經(jīng)反相器4使V1截止,而經(jīng)與門3使V2導通,P0.x引腳上出現(xiàn)相應(yīng)的高電平“1”;當?shù)刂坊驍?shù)據(jù)為“0”時,經(jīng)反相器4使V1導通而V2截止,引腳上出現(xiàn)相應(yīng)的低電平“0”,這樣就將地址/數(shù)據(jù)的信號輸出。(2)另一種是從P0口輸入數(shù)據(jù)。包括讀引腳和讀緩沖器。如果從P0口輸入數(shù)據(jù),輸入數(shù)據(jù)從引腳下方的三態(tài)輸入緩沖器進入內(nèi)部總線。②當控制信號應(yīng)為低電平“0”:P0口作為通用I/O口使用??刂菩盘枮椤?”,轉(zhuǎn)換開關(guān)MUX把輸出級與鎖存器Q端接通,在CPU向端口輸出數(shù)據(jù)時,因與門3輸出為“0”,使V2截止,此時,輸出級是漏極開路電路。當寫入脈沖加在鎖存器時鐘端CLK上時,與內(nèi)部總線相連的D端數(shù)據(jù)取反后出現(xiàn)在Q端,又經(jīng)輸出T1反相,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。當要從P0口輸入數(shù)據(jù)時,引腳信號仍經(jīng)輸入緩沖器進入內(nèi)部總線。2023/10/2933二、P1口P1口是準雙向口,它只能作通用I/O接口使用。P1口的結(jié)構(gòu)與P0口不同,它的輸出只由一個場效應(yīng)管V1與內(nèi)部上拉電阻組成,如圖:

輸入輸出原理特性與P0口作為通用I/O接口使用時一樣,當其輸出時,可以提供電流負載,不必像P0口那樣需要外接上拉電阻。P1口具有驅(qū)動4個LSTTL負載的能力。2023/10/2934三、P2口P2口也是準雙向口,它有兩種用途:通用I/O接口和高8位地址線。它的1位的結(jié)構(gòu)如圖2.8,與P1口相比,它只在輸出驅(qū)動電路上比P1口多了一個模擬轉(zhuǎn)換開關(guān)MUX和反相器3。2023/10/2935①當控制信號為為高電平“1”:轉(zhuǎn)換開關(guān)接右側(cè),P2口用作高8位地址總線使用時,訪問片外存儲器的高8位地址A8~A15由P2口輸出。如系統(tǒng)擴展了ROM,由于單片機工作時一直不斷地取指令,因而P2口將不斷地送出高8位地址,P2口將不能作通用I/O口用。如系統(tǒng)僅僅擴展RAM,這時分幾種情況:(1)當片外RAM容量不超過256字節(jié),在訪問RAM時,只須P0口送低8位地址即可,P2口仍可作為通用I/O口使用;(2)當片外RAM容量大于256字節(jié)時,需要P2口提供高8位地址,這時P2口就不能作通用I/O接口使用。②當控制信號為為高電平“0”:轉(zhuǎn)換開關(guān)接左側(cè),P2口用作當作為準雙向通用I/O接口??刂菩盘柺罐D(zhuǎn)換開關(guān)接左側(cè),其工作原理與P1相同,只是P1口輸出端由鎖存器ō接V1,而P2口是由鎖存器Q端經(jīng)反相器3接V1,也具有輸入、輸出、端口操作三種工作方式,負載能力也與P1相同。2023/10/2936四、P3口P3口1位的結(jié)構(gòu)如圖2.9。它的輸出驅(qū)動由與非門3、V1組成,輸入比P0、P1、P2口多了一個緩沖器4。2023/10/2937P3口除了作為準雙向通用I/O口使用外,它的每一根線還具有第二種功能??诰€替代的第二功能P3.0RXD(串行口輸入)P3.1TXD(串行口輸出)P3.2INT0(外部中斷0輸入)P3.3INT1(外部中斷1輸入)P3.4T0(定時器/記數(shù)器0的外部輸入)P3.5T1(定時器/記數(shù)器1的外部輸入)P3.6WR(片外數(shù)據(jù)存儲器“寫選通控制”輸出P3.7RD(片外數(shù)據(jù)存儲器“讀選通控制”輸出2023/10/2938②當P3口作為第二功能時:鎖存器的Q輸出端必須為高電平,否則V1管導通,引腳將被箝位在低電平,無法實現(xiàn)第二功能。當鎖存器Q端為高電平,P3口的狀態(tài)取決于第二功能輸出線的狀態(tài)。

單片機復位時,鎖存器的輸出端為高電平。P3口第二功能中輸入信號RXD、INT0、INT1、T0、T1經(jīng)緩沖器4輸入,可直接進入芯片內(nèi)部。①當P3口作為通用I/O接口時:第二功能輸出線為高電平,與非門3的輸出取決于鎖存器的狀態(tài)。這時,P3是一個準雙向口,它的工作原理、負載能力與P1、P2口相同。2023/10/2939端口小結(jié):(1)系統(tǒng)總線: 地址總線(16位):P0(地址低8位)、P2口(地址高8位)數(shù)據(jù)總線(8位):P0口(地址/數(shù)據(jù)分時復用,借助ALE);控制總線(6根):P3口的第二功能和9、29、30、31腳;(2)供用戶使用的端口:P1口、部分未作第二功能的P3口;(3)P0口作地址/數(shù)據(jù)時,是真正的雙向口,三態(tài),負載能力 為8個LSTTL電路;P1~P3是準雙向口,負載能力為4個

LSTTL電路。(4)P0~P3在用作輸入之前必須先寫“1”,即:(P0)=FFH~(P3)=FFH。2023/10/29402.6MCS-51系列單片機的時序2.6.1機器周期和指令周期

機器周期:機器周期是單片機的基本操作周期,每個機器周期包含S1、S2、

、S6個狀態(tài),每個狀態(tài)包含2拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機器周期包含12個時鐘周期。依次可表示為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。指令周期:計算機工作時不斷的取指令和執(zhí)行指令。計算機取一條指令至執(zhí)行完該指令需要的時間稱為指令周期,不同的指令,指令周期不同。單片機的指令周期以機器周期為單位。MCS-51系列單片機中,大多數(shù)指令的指令周期由一個機器周期或兩個機器周期組成,只有乘法、除法指令須要4機器周期指令。S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2時鐘信號2023/10/2941振蕩脈沖并不直接使用,由XTAL2或XTAL1端送往內(nèi)部時鐘電路(fosc):經(jīng)過2分頻,向CPU提供2相時鐘信號P1和P2(f拍節(jié)=1/2fosc);再經(jīng)3分頻,產(chǎn)生ALE時序(fALE=1/6fosc);經(jīng)過12分頻,成為機器周期信號(MC=12/fosc),如下圖所示。需要指出的是,CPU的運算操作在P1期間,數(shù)據(jù)傳送在P2期間。2023/10/2942時鐘周期:振蕩器輸出的時鐘脈沖頻率的倒數(shù)。為單片機中最小、最基本的時間單位。狀態(tài)周期:振蕩信號經(jīng)2分頻后獲得的信號周期,稱S,顯然,S為時鐘周期的2倍。機器周期:12個時鐘周期為一個機器周期,對應(yīng)計算機執(zhí)行一個基本操作所需的時間。指令周期:執(zhí)行一條指令所需的時間,至少包含一個機器周期。當時鐘頻率為12MHz和6MHz時,時鐘周期分別為1/12us和1/6us,機器周期分別為1us和2us。2023/10/29432.7MCS-51系列單片機的工作方式2.7.1復位方式

在時鐘電路工作以后,當外部電路使得RST端出現(xiàn)2個機器周期(24個時鐘周期)以上的高電平時,系統(tǒng)內(nèi)部復位。

復位有兩種方式:上電復位和按鈕復位。VccRSTVssMCS-51VccRSTVssMCS-511k1k200

(a)上電復位電路(b)按鈕復位電路例:若使用頻率為6MHz的晶振,則復位信號持續(xù)時間應(yīng)超過

____才能完成復位操作。fosc=6MHzMC=12/fosc=12/6MHz=2μst=4μs2023/10/2944特殊功能寄存器初始內(nèi)容特殊功能寄存器初始內(nèi)容A00HTCON00HPC0000HTL000HB00HTH000HPSW00HTL100HSP07HTH100HDPTR0000HSCON00HP0~P3FFHSBUFXXXXXXXXBIPXX000000BPCON0XXX0000BIE0X000000BTMOD00H復位后狀態(tài):2023/10/2945第3章單片機匯編程序設(shè)計3.1MCS-51系列單片機匯編指令格式及標識

指令是使計算機完成基本操作的命令。一種計算機能夠執(zhí)行的全部指令的集合,稱為這種計算機的指令系統(tǒng)。單片機的指令系統(tǒng)與微型計算機的指令系統(tǒng)不同,MCS-51系列單片機指令系統(tǒng)共有:

111條指令;42種指令助記符。2023/10/2946MCS-51系列單片機指令系統(tǒng)功能強、指令短、執(zhí)行快。從功能上可分成五大類:1、數(shù)據(jù)傳送指令;

2、算術(shù)運算指令;

3、邏輯操作指令;

4、控制轉(zhuǎn)移指令;

5、位操作指令。2023/10/29473.1.1指令格式[標號:]操作碼助記符[目的操作數(shù)][,源操作數(shù)][;注釋](1)操作碼助記符表明指令的功能,不同的指令有不同的指令助記符,它一般用說明其功能的英文單詞的縮寫形式表示。(2)操作數(shù)用于給指令的操作提供數(shù)據(jù)、數(shù)據(jù)的地址或指令的地址,操作數(shù)往往用相應(yīng)的尋址方式指明。MCS-51單片機指令系統(tǒng)的指令按操作數(shù)的多少可分為無操作數(shù)、單操作數(shù)、雙操作數(shù)和三操作數(shù)四種情況。(3)標號是該指令的符號地址,后面須帶冒號。它主要為轉(zhuǎn)移指令提供轉(zhuǎn)移的目的地址。(4)注釋是對該指令的解釋,前面須帶分號。它們是編程者根據(jù)需要加上去的,用于對指令進行說明,對于指令本身功能而言是可以不要的。2023/10/2948(1)Ri和Rn:表示當前工作寄存器區(qū)中的工作寄存器。

i取0或1,表示R0或R1。n取0~7,表示R0~R7。(2)#data:表示包含在指令中的8位立即數(shù)。(3)#data16:表示包含在指令中的16位立即數(shù)。(4)rel:以補碼形式表示的8位相對偏移量,范圍為-128~+127,主要用在相對尋址的指令中。用于SJMP或所有的條件轉(zhuǎn)移指令中。(5)addr16和addr11:分別表示16位直接地址和11位直接地址。(6)direct:表示直接尋址的地址。(7)bit:表示可位尋址的直接位地址。(8)(X):表示X單元中的內(nèi)容。3.1.2指令中用到的標識符

為便于后面的學習,在這里先對指令中用到的一些符號的約定意義作以下說明:2023/10/2949(9)((X)):表示以X單元的內(nèi)容為地址的存儲器單元內(nèi)容,即(X)作地址,該地址單元的內(nèi)容用((X))表示。(10)/和→符號:“/”表示對該位操作數(shù)取反,但不影響該位的原值?!啊北硎静僮髁鞒?,將箭尾一方的內(nèi)容送入箭頭所指一方的單元中去。(11)Cy:進位標志或進位位,也可作為位處理機中的1位累加器。

(12)

@:間址寄存器或基址寄存器的前綴。如@Ri,@A+DPTR2023/10/29503.2MCS-51指令系統(tǒng)的尋址方式

所謂尋址就是尋找確定參與操作的數(shù)的真正地址。一般來說,尋址方式越多則計算機的功能就越強,靈活性亦越大,指令系統(tǒng)也就越復雜。

MCS-51單片機的指令系統(tǒng)共有7種尋址方式。1、立即尋址

2、直接尋址3、寄存器尋址4、寄存器間接尋址5、變址尋址

6、相對尋址

7、位尋址2023/10/29513.2.1常數(shù)尋址(立即尋址)

操作數(shù)是常數(shù),使用時直接出現(xiàn)在指令中,緊跟在操作碼的后面,作為指令的一部分。與操作碼一起存放在程序存儲器中,可以立即得到并執(zhí)行,不需要經(jīng)過別的途徑去尋找。常數(shù)又稱為立即數(shù),故又稱為立即尋址。在匯編指令中,立即數(shù)前面以“#”符號作前綴。在程序中通常用于給寄存器或存儲器單元賦初值,例如:

MOVA,#20H

其功能是把立即數(shù)20H送給累加器A,其中源操作數(shù)20H就是立即數(shù)。指令執(zhí)行后累加器A中的內(nèi)容為20H。2023/10/29523.2.2直接尋址

指令直接給出操作數(shù)地址。占一個字節(jié)。可訪問兩種地址空間:特殊功能寄存器地址空間是唯一能訪問該空間的尋址方式。片內(nèi)內(nèi)部RAM(128個字節(jié):00H~7FH)2023/10/29533.2.2直接尋址

直接尋址是指數(shù)據(jù)在存儲器單元中,在指令中直接提供存儲器單元的地址。在MCS-51系統(tǒng)中,這種尋址方式針對的是片內(nèi)數(shù)據(jù)存儲器和特殊功能寄存器。在匯編指令中,指令中直接以地址數(shù)的形式提供存儲器單元的地址。例如:

MOVA,20H

其功能是把片內(nèi)數(shù)據(jù)存儲器20H單元的內(nèi)容送給累加器A。如指令執(zhí)行前片內(nèi)數(shù)據(jù)存儲器20H單元的內(nèi)容為30H,則指令執(zhí)行后累加器A的內(nèi)容為30H。指令中20H是地址數(shù),它是片內(nèi)數(shù)據(jù)存儲單元的地址。在MCS-51中,數(shù)據(jù)前面不加“#”是存儲單元地址而不是常數(shù),常數(shù)前面要加符號“#”。

對于特殊功能寄存器,在指令中使用時往往通過特殊功能寄存器的名稱使用,而特殊功能寄存器名稱實際上是特殊功能寄存器單元的符號地址,因此它們是直接尋址。例如:

MOVA,P0

其功能是把P0口的內(nèi)容送給累加器A。P0是特殊功能寄存器P0口的符號地址,該指令在翻譯成機器碼時,P0就轉(zhuǎn)換成直接地址80H。2023/10/29543.2.3寄存器數(shù)尋址(寄存器尋址)

操作數(shù)在寄存器中,使用時在指令中直接提供寄存器的名稱,這種尋址方式稱為寄存器尋址。在MCS-51系統(tǒng)中,這種尋址方式針對的寄存器只能是R0~R78個通用寄存器和部分特殊功能寄存器(如累加器A、寄存器B、數(shù)據(jù)指針DPTR等)中的數(shù)據(jù),對于其它的特殊功能寄存器中的內(nèi)容的尋址方式不屬于它。在匯編指令中,寄存器尋址在指令中直接提供寄存器的名稱,如R0、R1、A、DPTR等。例如:

MOVA,R0

其功能是把R0寄存器中的數(shù)送給累加器A,在指令中,源操作數(shù)R0為寄存器尋址,傳送的對象為R0中的數(shù)據(jù)。如指令執(zhí)行前R0中的內(nèi)容為20H,則指令執(zhí)行后累加器A中的內(nèi)容為20H。2023/10/29553.2.4寄存器間接尋址

寄存器間接尋址是指數(shù)據(jù)存放在存儲單元中,而存儲單元地址存放在寄存器中,在指令中通過提供存放存儲單元地址的寄存器來使用對應(yīng)的存儲單元。形式為:@寄存器名。例如:MOVA,@R1

該指令的功能是將以工作寄存器R1中的內(nèi)容為地址的片內(nèi)RAM單元的數(shù)據(jù)傳送到累加器A中去。指令的源操作數(shù)是寄存器間接尋址。80H20H20HA80HR1

在MCS-51單片機中,寄存器間接尋址用到的寄存器只能是通用寄存器R0、R1和數(shù)據(jù)指針寄存器DPTR和SP

,它能訪問的數(shù)據(jù)是片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。其中,片內(nèi)數(shù)據(jù)存儲器只能用R0和R1作指針間接訪問;片外數(shù)據(jù)存儲器,低端的256字節(jié)單元,既可以用兩位十六進制地址以R0或R1作指針間接訪問,也可用DPTR作指針間接訪問,而高端的字節(jié)單元則只能以DPTR作指針間接訪問。對于片內(nèi)RAM和片外RAM的低端256字節(jié)都可以用R0和R1作指針訪問,它們之間用指令來區(qū)別。片內(nèi)RAM訪問用MOV指令,片外RAM訪問用MOVX指令。

若R1中的內(nèi)容為80H,片內(nèi)RAM地址為80H的單元中的內(nèi)容為20H,則執(zhí)行該指令后,累加器A的內(nèi)容為20H。2023/10/2956例如:MOVCA,@A+DPTR

其功能是將數(shù)據(jù)指針寄存器DPTR的內(nèi)容和累加器A中的內(nèi)容相加作為程序存儲器的地址,從對應(yīng)的單元中取出內(nèi)容送累加器A中。指令中,源操作數(shù)的尋址方式為變址尋址,設(shè)指令執(zhí)行前數(shù)據(jù)指針寄存器DPTR的值為2000H,累加器A的值為05H,程序存儲器2005H單元的內(nèi)容為30H,則指令執(zhí)行后,累加器A中的內(nèi)容為30H。示意圖如左圖所示。2000H30H30HDPTRA2005H05HA+3.2.5變址尋址

變址尋址是指操作數(shù)的地址由基址寄存器的地址加上變址寄存器的地址得到。在MCS-51系統(tǒng)中,它是以數(shù)據(jù)指針寄存器DPTR或程序計數(shù)器PC為基址,累加器A為變址,兩者相加得存儲單元的地址,所訪問的存儲器為程序存儲器。2023/10/2957程序存儲器2000HDPTR64H(10H)A2010H64H10H2000H變址尋址的指令只有三條:MOVCA,@A+DPTR、MOVCA,@A+PC和JMP@A+DPTR

例:(DPTR)=2000H,(A)=10H,

MOVCA,@A+DPTR指令操作示意圖如下圖所示。2023/10/29583.2.4位尋址

位尋址是指操作數(shù)是二進制位的尋址方式。在MCS-51單片機中有一個獨立的位處理器,有多條位處理指令,能夠進行各種位運算。在MCS-51系統(tǒng)中,位處理的操作對象是各種可位尋址位。對于它們的訪問是通過提供相應(yīng)的位地址來處理。

指令給出位地址。一位數(shù)據(jù)在存儲器位尋址區(qū)。

(1)內(nèi)部RAM低128單元中的位尋址區(qū):位地址為00H~07FH共128位(字節(jié)地址為20H~2FH);

(2)內(nèi)部RAM高128單元中的專用寄存器的可尋址位:

SFR中11個有位地址寄存器中的83位。2023/10/2959

在MCS-51系統(tǒng)中,位地址的表示可以用以下幾種方式:1.直接使用位地址(00H~7FH)。 例如:PSW的位6可表示為0D6H(位地址)。2.字節(jié)地址帶位號。 例如:PSW的位6可表示為0D0H.6;

20H.3表示20H單元的3位。3.特殊功能寄存器名帶位號。 例如:PSW的位6可表示為PSW.6;

P0.1表示P0口的1位。4.位符號地址,即位名稱的表示方法 例如:PSW的位6可表示為AC;

TR0是定時/計數(shù)器T0的啟動位。

F0標志位2023/10/2960例:

MOVC,40H ;CY?(位地址40H)

設(shè)指令執(zhí)行前CY=1,位地址40H存儲器單元如圖,執(zhí)行指令后,CY=?29H0110001028H11010110位尋址區(qū)02023/10/29613.2.5相對尋址(只用于轉(zhuǎn)移指令)

相對尋址是以當前程序計數(shù)器PC值加上指令中給出的偏移量rel得到目的位置的地址。在MCS-51系統(tǒng)中,相對轉(zhuǎn)移指令的操作數(shù)屬于相對尋址。在使用相對尋址時要注意以下兩點:(1)當前PC值是指轉(zhuǎn)移指令執(zhí)行時的PC值,它等于轉(zhuǎn)移指令的地址加上轉(zhuǎn)移指令的字節(jié)數(shù)。實際上是轉(zhuǎn)移指令的下一條指令的地址。例如:若轉(zhuǎn)移指令的地址為2010H,轉(zhuǎn)移指令的長度為2字節(jié),則轉(zhuǎn)移指令執(zhí)行時的PC值為2012H。(2)偏移量rel是8位有符號數(shù),以補碼表示,它的取值范圍為-128~+127。當為負值時,向前轉(zhuǎn)移,當為正數(shù)時向后轉(zhuǎn)移。相對尋址的目的地址為:目的地址=轉(zhuǎn)移指令的地址+轉(zhuǎn)移指令的字節(jié)數(shù)+rel=當前PC+relPC--(前)+(后)2023/10/2962例如:SJMP08H;PC←PC+2+08H(PC)=2000H指令操作示意圖如下圖所示。程序存儲器(2000H)200AHSJMP200AH08H2000H+208HPC2000H2023/10/29633.3MCS-51系列單片機指令系統(tǒng)3.3.1數(shù)據(jù)傳送指令

數(shù)據(jù)傳送類指令共28條,是將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP

8種。這類指令可分為三組:

普通傳送指令;數(shù)據(jù)交換指令;堆棧操作指令。2023/10/2964一、普通傳送指令普通傳送指令以助記符MOV為基礎(chǔ)。分成片內(nèi)數(shù)據(jù)存儲器傳送指令、片外數(shù)據(jù)存儲器傳送指令和程序存儲器傳送指令。1.片內(nèi)數(shù)據(jù)存儲器傳送指令MOV指令格式:MOV目的操作數(shù),源操作數(shù)其中:源操作數(shù)可以為A、Rn、@Ri、direct、#data,目的操作數(shù)可以為A、Rn、@Ri、direct,組合起來總共16條。2023/10/2965(1)以A為目的操作數(shù)

MOVA,Rn ;A←Rn MOVA,direct ;A←(direct)

MOVA,@Ri ;A←(Ri)

MOVA,#data ;A←#data(2)以Rn為目的操作數(shù)

MOVRn,A ;Rn←A MOVRn,direct ;Rn←(direct)

MOVRn,#data ;Rn←#data(3)以直接地址direct為目的操作數(shù)

MOVdirect,A ;(direct)←A MOVdirect,Rn ;(direct)←Rn MOVdirect,direct ;(direct)←(direct)

MOVdirect,@Ri ;(direct)←(Ri)

MOVdirect,#data ;(direct)←#data按目的操作數(shù)的尋址方式劃分為五組:2023/10/2966(4)以間接地址@Ri為目的操作數(shù)

MOV@Ri,A ;(Ri)←A MOV@Ri,direct ;(Ri)←(direct)

MOV@Ri,#data ;(Ri)←#data(5)以DPTR為目的操作數(shù)

MOVDPTR,#data16;DPTR←#data16注意:

源操作數(shù)和目的操作數(shù)中的Rn和@Ri不能相互配對。如不允許有“MOVRn,Rn”,“MOV@Ri,Rn”這樣的指令,在MOV指令中,不允許在一條指令中同時出現(xiàn)工作寄存器,無論它是寄存器尋址還是寄存器間接尋址。

2023/10/2967MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H練習題:用兩種尋址方式實現(xiàn),將片內(nèi)RAM60H單元的數(shù)據(jù)傳送給累加器A。解:MOVA,#60H(×)MOVR0,#60H(√)

MOVA,@R0;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOVR0,60HMOVA,@R0

(×)

解:MOVA,60H

(√)

結(jié)果A=32H例:順序執(zhí)行下列指令序列,求每一步執(zhí)行結(jié)果。地址內(nèi)容…32H58H…60H32H2023/10/2968

說明:1、一條指令中不能同時出現(xiàn)兩個工作寄存器。

非法指令: MOVR1,R2

MOVR2,@R02、間址寄存器只能使用R0、R1。

非法指令:MOVA,@R23、

SFR區(qū)只能直接尋址,不能用寄存器間接尋址。

非法指令:MOVR0,#80H

MOVA,@R04、指令表:注意表中指令字節(jié)數(shù)和機器周期數(shù)2023/10/29692.片外數(shù)據(jù)存儲器傳送指令MOVX

在MCS-51系統(tǒng)中只能通過累加器A與片外數(shù)據(jù)存儲器進行數(shù)據(jù)傳送,訪問時,只能通過@Ri和@DPTR以間接尋址方式進行。MOVX指令共有四條:①DPTR作16位數(shù)據(jù)指針,尋址64KB片外RAM空間:

MOVXA,@DPTR

;A←(DPTR)

(讀)

MOVX@DPTR,A

;(DPTR)←A

(寫)②Ri作8位數(shù)據(jù)指針,尋址256B片外RAM空間:

MOVX A,@Ri

;A←(P2Ri)

(讀)

MOVX @Ri,A

;(P2Ri)←A

(寫)

其中前兩條指令通過DPTR間接尋址,可以對整個64KB片外數(shù)據(jù)存儲器訪問。后兩條指令通過@Ri間接尋址,只能對片外數(shù)據(jù)存儲器的低端的256字節(jié)訪問,訪問時將低8位地址放于Ri中。2023/10/2970例:實現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送(2000H)→(2100H)。

MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A ;DPTR=2000H

;A=X

;DPTR=2100H

;(2100H)=X習題:將片外RAM0000H單元的數(shù)據(jù)傳送到片內(nèi)RAM的60H單元。片外數(shù)據(jù)存儲器不能直接尋址。下列為非法指令:

MOVXA,2000HMOVX2100H,2000H思考題:為什么對DPTR的數(shù)據(jù)傳送使用內(nèi)部傳送指令?2023/10/29713.程序存儲器傳送指令MOVC

程序存儲器傳送指令只有兩條,一條用DPTR基址變址尋址。一條用PC基址變址尋址。這兩條指令通常用于訪問表格數(shù)據(jù),因此以稱為查表指令。①DPTR為基址寄存器:

MOVC A,@A+DPTR;A?(A+DPTR)(讀) 查表范圍為64KB程序存儲器任意空間,稱為遠程查表指令。②PC為基址寄存器:

MOVC A,@A+PC ;A?(A+PC)(讀) 常數(shù)表只能在查表指令后256B范圍內(nèi),稱為近程查表指令。特點:

MOVCA,@A+DPTR指令可訪問整個ROM的64KB空間,表格可放在ROM

的任何位置,與MOVC指令無必然的關(guān)系。

MOVCA,@A+PC指令優(yōu)點:不改變PC的狀態(tài),根據(jù)A的內(nèi)容取表格常數(shù)。缺點:(1)表格只能存放在查表指令以下的256個單元內(nèi)。(2)當表格首地址與本指令間有其它指令時,須用調(diào)整偏移量,調(diào)整量為下一條指令的起始地址到表格首址之間的字節(jié)數(shù)。2023/10/2972例如:查表指令MOVCA,@A+PC所在的地址為2000H,表格的起始單元地址為2035H,表格的第4個元素(位移量為03H)的內(nèi)容為45H,則查表指令的處理過程如下:MOVA,#03H;表格元素相對于表首的位移量送累加器AADDA,#34H;當前程序計數(shù)器PC相對于表首的差值加到累加器A中MOVCA,@A+PC;查表,查得第4個元素內(nèi)容45H送累加器A

注意:查表指令的長度為1個字節(jié),當前程序計數(shù)器PC的值應(yīng)為查表指令的地址加1。地址內(nèi)容2000HMOVC2001H………2035H表格2036H…2037H45HPC→2023/10/2973【例3-1】寫出完成下列功能的程序段。(1)將R0的內(nèi)容送R6中程序為:

MOVA,R0 MOVR6,A(2)將片內(nèi)RAM30H單元的內(nèi)容送片外60H單元中程序為: MOVA,30H MOVR0,#60H MOVX@R0,A(3)將片處RAM1000H單元的內(nèi)容送片內(nèi)20H單元中程序為: MOVDPTR,#1000H MOVA,@DPTR MOV20H,A(4)將ROM2000H單元的內(nèi)容送片內(nèi)RAM的30H單元中程序為: MOVA,#0 MOVDPTR,#2000H MOVCA,@A+DPTR MOV30H,A2023/10/2974二、數(shù)據(jù)交換指令普通傳送指令實現(xiàn)將源操作數(shù)的數(shù)據(jù)傳送到目的操作數(shù),指令執(zhí)行后源操作數(shù)不變,數(shù)據(jù)傳送是單向的。數(shù)據(jù)交換指令數(shù)據(jù)作雙向傳送,傳送后,前一個操作數(shù)原來的內(nèi)容傳送到后一個操作數(shù)中,后一個操作數(shù)原來的內(nèi)容傳送到前一個操作數(shù)中。數(shù)據(jù)交換指令要求第一個操作數(shù)須為累加器A,共有5條。

XCHA,Rn ;A←→Rn XCHA,direct ;A←→(direct) XCHA,@Ri ;A←→(Ri) XCHDA,@Ri ;A0~3←→(Ri)0~3 SWAPA ;A0~3←→A4~72023/10/2975【例3-2】若R0的內(nèi)容為30H,片內(nèi)RAM30H單元的內(nèi)容為23H,累加器A的內(nèi)容為45H,則執(zhí)行

XCHA,@R0

指令后片內(nèi)RAM30H單元的內(nèi)容為45H,累加器A中的內(nèi)容為23H。若執(zhí)行SWAPA指令,則累加器A的內(nèi)容為54H。習題:將片內(nèi)RAM60H單元與61H單元的數(shù)據(jù)交換。例:設(shè)A=29H,執(zhí)行指令XCHA,2AH后,

A=?,(2AH)=?38H29HXCH60H,61H;

←對嗎?不對!!29H2023/10/2976三、堆棧操作指令堆棧是在片內(nèi)RAM中按“先進后出,后進先出”原則設(shè)置的專用存儲區(qū)。數(shù)據(jù)的進棧和出棧由指針SP統(tǒng)一管理。在MCS-51系統(tǒng)中,堆棧操作指令有兩條:

PUSHdirect ;SP←(SP+1),(SP)←(direct) POPdirect ;(direct)←(SP),(SP)←(SP-1)

其中PUSH指令入棧,POP指令出棧。操作時以字節(jié)為單位。入棧時SP指針先加1,再入棧。出棧時內(nèi)容先出棧,SP指針再減1。用堆棧保存數(shù)據(jù)時,先入棧的內(nèi)容后出棧;后入棧的內(nèi)容先出棧。

【例3-3】若入棧保存時入棧的順序為:

PUSHA PUSHB

則出棧的順序為:

POPB POPA2023/10/2977

30H

61H

70H

62H

10H

60H

SP

PUSHA

(SP)+1=61H

SP(A)

61H例如:當(SP)=60H,(A)=30H,(B)=70H時執(zhí)行下列指令PUSHB

(SP)+1=62H

SP(B)

62H

結(jié)果:(61H)=30H(62H)=70H(SP)=62H

棧底棧頂2023/10/297812H

60H

70H

62HSP例如:當(SP)=62H,(62H)=70H,(61H)=30H時,執(zhí)行下列指令POPDPH

((SP))

DPH(SP)-1

SPPOPDPL

((SP))

DPL(SP)-1

SP

結(jié)果:(DPTR)=7030H(SP)=60H

30H

61HSPDPHDPLSP2023/10/2979習題:找出指令錯誤并改正:1.MOVA,#1000H;A←1000H(A裝1個字節(jié)數(shù))2.MOVXA,1000H;A←(1000H)片外RAM(DPTR、Ri)3.MOVCA,1000H;A←(1000H)片外ROM(DPTR、PC)4.MOVX60H,A ;片外RAM(60H)←A(應(yīng)為MOV)5.MOVR0,60H;片內(nèi)RAM:(61H)←(60H)

MOV61H,@R0(片內(nèi)RAM可直接尋址)

6.XCHR1,R2 ;R1?R2(必須有A參加)7.MOVXDPTR,#2000H;DPTR←2000H(應(yīng)為MOV)8.MOVX60H,@DPTR ;片內(nèi)RAM←片外RAM(必須有A參加)2023/10/29803.3.2算術(shù)運算指令一.加法指令1.一般的加法指令ADDADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data ;A←A+#data2.帶進位加指令ADDCADDCA,Rn ;A←A+Rn+CADDCA,direct ;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data ;A←A+#data+C3.加1指令I(lǐng)NCA ;A←A+1INCRn ;Rn←Rn+1INCdirect ;(direct)←(direct)+1INC@Ri ;(Ri)←(Ri)+1INCDPTR ;DPTR←DPTR+1

其中,ADD和ADDC指令在執(zhí)行時要影響CY、AC、OV和P標志位。而INC指令除了INCA要影響P標志位外,對其它標志位都沒有影響。在MCS-51單片機中,常用ADD和ADDC配合使用實現(xiàn)多字節(jié)加法運算。2023/10/2981【例3-4】試把存放在R1R2和R3R4中的兩個16位數(shù)相加,結(jié)果存于R5R6中。處理時,R2和R4用一般的加法指令ADD,結(jié)果放于R6中,R1和R3用帶進位的加法指令ADDC,結(jié)果放于R5中,程序如下:

MOV A,R2 ADD A,R4 MOV R6,A MOV A,R1 ADDCA,R3 MOV R5,AR1R2R3R4R5R6C+ADDADDCC2023/10/2982二.減法指令1.帶借位減法指令SUBBSUBBA,Rn ;A←A-Rn-CSUBBA,direct ;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data ;A←A-#data-

C2.減1指令DECDECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-12023/10/29833.乘法指令MUL

在MCS-51單片機中,乘法指令只有一條:

MULAB

該指令執(zhí)行時將對存放于累加器A中的無符號被乘數(shù)和放于B寄存器中的無符號乘數(shù)相乘,積的高字節(jié)存于B寄存器中,低字節(jié)存于累加器A中。指令執(zhí)行后將影響CY和OV標志,CY復位,對于OV:當積大于255時(即B中不為0),OV為1;否則,OV為0。2023/10/29844.除法指令DIV

在MCS-51單片機中,除法指令也只有一條:

DIVAB

該指令執(zhí)行時將用存放在累加器A中的無符號被除數(shù)與存放在B寄存器中的無符號除數(shù)相除,除得的結(jié)果,商的存于累加器A中,余數(shù)存于B寄存器中。指令執(zhí)行后將影響CY和OV標志,一般情況CY和OV都清0,只有當B寄存器中的除數(shù)為0時,CY和OV才被置1。2023/10/29855.十進制調(diào)整指令在MCS-51單片機中,十進制調(diào)整指令只有一條:

DAA

它只能用在ADD或ADDC指令后面,用來對兩個二位的壓縮的BCD碼數(shù)通過用ADD或ADDC指令相加后存于累加器A中的結(jié)果進行調(diào)整,使得它得到正確的十進制結(jié)果。通過該指令可實現(xiàn)兩位十進制BCD碼數(shù)的加法運算。它的調(diào)整過程為:(1)若累加器A的低四位為十六進制的A~F或輔助進位標志AC為1,則累加器A中的內(nèi)容作加06H調(diào)整。(2)若累加器A的高四位為十六進制的A~F或進位標志CY為1,則累加器A中的內(nèi)容作加60H調(diào)整。2023/10/29862023/10/29873.3.3邏輯操作指令一.邏輯與指令ANLANLA,Rn ;A←A

RnANLA,direct ;A←A

(direct)ANLA,@Ri ;A←A((Ri))ANLA,#data ;A←AdataANLdirect,A ;(direct)←(direct)AANLdirect,#data;(direct)←(direct)data二.邏輯或指令ORLORLA,Rn ;A←ARnORLA,direct ;A←A(direct)ORLA,@Ri ;A←A((Ri))ORLA,#data ;A←AdataORLdirect,A ;(direct)←(direct)AORLdirect,#data;(direct)←(direct)data2023/10/2988三.邏輯異或指令XRLXRLA,Rn ;A←A

RnXRLA,direct ;A←A

(direct)XRLA,@Ri ;A←A((Ri))XRLA,#data ;A←AdataXRLdirect,A ;(direct)←(direct)

AXRLdirect,#data;(direct)←(direct)

data

在使用中,邏輯與用于實現(xiàn)對指定位清0,其余位不變;邏輯或用于實現(xiàn)對指定位置1,其余位不變;邏輯異或用于實現(xiàn)指定位取反,其余位不變?!纠?-7】寫出完成下列功能的指令段。1.對累加器A中的1、3、5位清0,其余位不變

ANLA,#11010101B2.對累加器A中的2、4、6位置1,其余位不變

ORLA,#01010100B3.對累加器A中的0、1位取反,其余位不變

XRLA,#00000011B2023/10/2989四.清零和求反指令1.清零指令:CLRA ;A←02.求反指令:CPLA ;A←ā

在MCS-51系統(tǒng)中,只能對累加器A中的內(nèi)容進行清零和求反,如要對其它的寄存器或存儲單元進行清零和求反,則須放在累加器A進行,運算后再放回原位置?!纠?-8】寫出對R0寄存器內(nèi)容求反的程序段。程序為:

MOVA,R0 CPLA MOVR0,A2023/10/2990五.循環(huán)移位指令

MCS-51系統(tǒng)有四條對累加器A的循環(huán)移位指令,前兩條只在累加器A中進行循環(huán)移位,后兩條還要帶進位標志CY進行循環(huán)移位。每一次移一位。分別如下:

1)8位循環(huán)指令:

RLA

;A循環(huán)左移一位

RRA

;A循環(huán)右移一位2)9位循環(huán)指令:

RLCA;帶CY循環(huán)左移一位

RRCA;帶CY循環(huán)右移一位AAACAC2023/10/2991CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A01CYR6R5CY;CY=0;R6=01010101B,R5=10101010B,CY=0;R6=01010101B,R5=01010100B,CY=1;R6=10101011B,R5=01010100B,CY=0用9位循環(huán)指令實現(xiàn)多字節(jié)移位:例:設(shè)R6=55H,R5=0AAH編程將寄存器R6R5中的雙字節(jié)數(shù)X左移一位?!纠?-9】若累加器A中的內(nèi)容為10001011B,CY=0,則執(zhí)行RLCA指令后累加器A中的內(nèi)容為00010110,CY=1。;R5=01010100B,CY=12023/10/29923.3.4控制轉(zhuǎn)移指令共有17條,包括:無條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;子程序調(diào)用及返回指令。一、無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令是指當執(zhí)行該指令后,程序?qū)o條件地轉(zhuǎn)移到指令指定的地方去。無條件轉(zhuǎn)移指令包括長轉(zhuǎn)移指令、絕對轉(zhuǎn)移指令、相對轉(zhuǎn)移指令和間接轉(zhuǎn)移指令。2023/10/2993一、無條件轉(zhuǎn)移指令指令:LJMP,AJMP,SJMP,JMP——4條LJMPaddr16長跳轉(zhuǎn)指令

——可在64KB范圍內(nèi)跳轉(zhuǎn)AJMPaddr11絕對跳轉(zhuǎn)指令

——可在指令所在的2KB范圍內(nèi)跳轉(zhuǎn)SJMPrel相對跳轉(zhuǎn)指令

——可在當前PC-128與+127范圍內(nèi)跳轉(zhuǎn)JMP@A+DPTR間接長跳轉(zhuǎn)指令

——可在以DPTR為基址+A為偏移量之和所指向的64KB程序范圍內(nèi)跳轉(zhuǎn)2023/10/29941.長轉(zhuǎn)移指令LJMP

指令格式:LJMPaddr16

;PC←addr16

指令后面帶目的位置的16位地址,執(zhí)行時直接將該16位地址送給程序指針PC,程序無條件地轉(zhuǎn)到16位目標地址指明的位置去。指令中提供的是16位目標地址,所以可以轉(zhuǎn)移到64KB程序存儲器的任意位置,故得名為“長轉(zhuǎn)移”。該指令不影響標志位,使用方便。缺點是:執(zhí)行時間長,字節(jié)數(shù)多。2023/10/29952.絕對轉(zhuǎn)移指令指令格式:AJMPaddr11

;PC10~0←addr11

AJMP指令后帶的是目的位置的低11位直接地址,執(zhí)行時,先將程序指針PC的值加2(該指令長度為2字節(jié)),然后把指令中的11位地址addr11送給程序指針PC的低11位,而程序指針的高5位不變,執(zhí)行后轉(zhuǎn)移到PC指針指向的新位置。由于11位地址addr11的范圍是00000000000~111

溫馨提示

  • 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

提交評論