




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單片機(jī)復(fù)習(xí)第1章計算機(jī)基礎(chǔ)知識1.1二進(jìn)制數(shù)及其在計算機(jī)中的使用1.2二進(jìn)制數(shù)的算術(shù)運(yùn)算和邏輯運(yùn)算1.3供程序設(shè)計使用的其他進(jìn)制數(shù)1.4計算機(jī)中使用的編碼1.5微型計算機(jī)概述1.1二進(jìn)制數(shù)及其在計算機(jī)中的使用
在計算機(jī)中只能使用二進(jìn)制數(shù)。指令、數(shù)據(jù)、字符和地址的表示以及它們的存儲、處理和傳送,都是以二進(jìn)制的形式進(jìn)行。沒有二進(jìn)制也就沒有電子計算機(jī)。1.1.1二進(jìn)制數(shù)的進(jìn)位計數(shù)特性 1.進(jìn)位計數(shù)制:最常見的是十進(jìn)制數(shù)2.二進(jìn)制數(shù):只有兩個數(shù)字符號0和1,基數(shù)為2,逢2進(jìn)1。二-------十進(jìn)制轉(zhuǎn)換二-----十-------BCD碼轉(zhuǎn)換原碼------反碼-------補(bǔ)碼轉(zhuǎn)換二進(jìn)制能表示的無符號數(shù)和有符號數(shù)一、二進(jìn)制、十進(jìn)制和十六進(jìn)制數(shù)⒈十進(jìn)制數(shù)主要特點(diǎn):①基數(shù)是10。有10個數(shù)碼(數(shù)符)構(gòu)成:0、1、2、3、4、5、6、7、8、9。②進(jìn)位規(guī)則是“逢十進(jìn)一”?!纠?/p>
1234.56
=1×103+2×102+3×101+4×100+5×10-1+6×10-2
=1000+200+30+4+0.5+0.06
上述,103、102、101、100、10-1、10-2
稱為十進(jìn)制數(shù)各數(shù)位的“權(quán)”。⒉二進(jìn)制數(shù)
主要特點(diǎn):①基數(shù)是2。只有兩個數(shù)碼:0和1。②進(jìn)位規(guī)則是“逢二進(jìn)一”。每左移一位,數(shù)值增大一倍;右移一位,數(shù)值減小一半。
二進(jìn)制數(shù)用尾綴B作為標(biāo)識符?!纠?11.11B=1×22+1×21+1×20+1×2-1+1×2-2=7.75
其中,22、21、20、2-1、2-2稱為二進(jìn)制數(shù)各數(shù)位的“權(quán)”
4十六進(jìn)制數(shù)
主要特點(diǎn):①基數(shù)是16。共有16個數(shù)符構(gòu)成:0、1、…、9、A、B、C、D、E、F。其中,A、B、C、D、E、F代表的數(shù)值分別為10、11、12、13、14、15。②進(jìn)位規(guī)則是“逢十六進(jìn)一”。十六進(jìn)制數(shù)用尾綴H表示?!纠緼3.4H
=10×161+3×160+4×16-1
=160+3+0.25
=163.25
其中,163、162、161、160、16-1、16-2稱為十六進(jìn)制數(shù)各數(shù)位的“權(quán)”。二、數(shù)制轉(zhuǎn)換
⒈二進(jìn)制數(shù)與十六進(jìn)制數(shù)相互轉(zhuǎn)換
⑴二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)
①整數(shù)部分:
自右向左,四位一組,不足四位,向左填零,各部分用相應(yīng)的十六進(jìn)制數(shù)替代;
②小數(shù)部分:
自左向右,四位一組,不足四位,向右填零,各部分用相應(yīng)的十六進(jìn)制數(shù)替代;
②十進(jìn)制數(shù)整數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的方法:
除16取余法
⒊十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)、十六進(jìn)制數(shù)①十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)的方法:
乘2取整法⑴整數(shù)部分的轉(zhuǎn)換①十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)的方法:
除2取余法⑵小數(shù)部分的轉(zhuǎn)換②十進(jìn)制小數(shù)轉(zhuǎn)換成十六進(jìn)制小數(shù)的方法:
乘16取整法1)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)方法是:將二進(jìn)制數(shù)按“位權(quán)”展開再相加即可。例1—11011.11B=1×23+0×22+1×21+1×20+1×2-1+1×2-2=8+0+2+1+0.5+0.25=11.75D
2、十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),分整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換。整數(shù)部分:除2(基數(shù))取余數(shù)法;小數(shù)部分:乘2(基數(shù))取整數(shù)法。例1—2將152.0.375D轉(zhuǎn)換為二進(jìn)制數(shù)
結(jié)果為:152.0.375D=10011000.011B
原碼、反碼和補(bǔ)碼1.原碼:機(jī)器數(shù)的原始表示,如:[+4]原=00000100[-4]原=100001002.反碼:正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼由原碼轉(zhuǎn)換得到,符號位不變,數(shù)值位按位取反[+4]反=00000100[-4]反=111110113.補(bǔ)碼:正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼是把反碼的最低位加1[+4]補(bǔ)=00000100[-4]補(bǔ)=11111100§1-4常用編碼
8421BCD碼稱為二-十進(jìn)制數(shù)或簡稱BCD碼(BinaryCodedDecimalCode),用標(biāo)識符[……]BCD表示。
特點(diǎn):保留了十進(jìn)制的權(quán),每一位十進(jìn)制數(shù)字則用二進(jìn)制碼表示。一、8421BCD碼⒈編碼方法
二-十進(jìn)制數(shù)是十進(jìn)制數(shù),逢十進(jìn)一,只是數(shù)符0~9用4位二進(jìn)制碼0000~1001表示而已;
每4位以內(nèi)按二進(jìn)制進(jìn)位;
4位與4位之間按十進(jìn)制進(jìn)位。
⒉轉(zhuǎn)換關(guān)系
⑴BCD碼與十進(jìn)制數(shù)相互轉(zhuǎn)換關(guān)系
⑵BCD碼與二進(jìn)制數(shù)相互轉(zhuǎn)換關(guān)系
BCD碼與二進(jìn)制數(shù)之間不能直接相互轉(zhuǎn)換,通常要先轉(zhuǎn)換成十進(jìn)制數(shù)。
【例】將二進(jìn)制數(shù)01000011B轉(zhuǎn)換成BCD碼。解:01000011B=67=[01100111]BCD
需要指出的是:
決不能把[01100111]BCD誤認(rèn)為二進(jìn)制碼01100111B,二進(jìn)制碼01100111B的值為103,而[01100111]BCD的值為67,顯然兩者是不一樣的。第2章80C51單片機(jī)的硬件結(jié)構(gòu)2.1單片機(jī)的概念2.280C51單片機(jī)的邏輯結(jié)構(gòu)及信號引腳2.380C51單片機(jī)的內(nèi)部存儲器2.480C51單片機(jī)的并行I/O口2.580C51單片機(jī)的時鐘與定時2.680C51單片機(jī)的系統(tǒng)復(fù)位2.7單片機(jī)低功耗工作模式2.1單片機(jī)的概念單片微型計算機(jī)SCMC(SingleChipMicro-Computer),是計算機(jī)、自動控制和大規(guī)模集成電路相結(jié)合的產(chǎn)物。還有其他的稱呼,如:微控制器(MCU),嵌入式微控制器(EMCU),嵌入式微處理器(EMP)等。目前使用最多的仍是8位單片機(jī)。在8位單片機(jī)中80c51的使用更為廣泛。本教材也是以80c51為基礎(chǔ)。2.280C51單片機(jī)的邏輯結(jié)構(gòu)及信號引腳2.2.1
80C51單片機(jī)的內(nèi)部邏輯結(jié)構(gòu)1.中央處理器CPU(1)運(yùn)算電路(2)控制電路2.內(nèi)部數(shù)據(jù)存儲器3.內(nèi)部程序存儲器4.定時器/計數(shù)器5.并行I/O口6.串行口7.中斷控制電路8.時鐘電路9.位處理器10.內(nèi)部總線80C51芯片邏輯結(jié)構(gòu)圖
運(yùn)算器運(yùn)算器主要用于實(shí)現(xiàn)算術(shù)和邏輯運(yùn)算,它由ALU(算術(shù)及邏輯單元)、A(累加器)、B寄存器、PSW狀態(tài)字寄存器和兩個暫存器組成。控制器控制器是控制單片機(jī)各部件協(xié)調(diào)動作的部件。它由PC(程序計數(shù)器)、PC加1寄存器、指令寄存器、指令譯碼器、定時與控制電路組成。
內(nèi)部存儲器存儲器是用來存放程序和數(shù)據(jù)的部件,在單片機(jī)中程序存儲器和數(shù)據(jù)存儲器是分開尋址的。(1)
內(nèi)部程序存儲器由ROM和程序地址寄存器組成,稱內(nèi)部ROM。(2)內(nèi)部數(shù)據(jù)存儲器80C51共有256個RAM單元,其中后128單元被專有寄存器占用,能供用戶使用的只是前128單元,稱內(nèi)部RAM。用于存放可讀寫的數(shù)據(jù)。
定時器/計數(shù)器MCS-51共有2個16位的定時器/計數(shù)器,用于實(shí)現(xiàn)定時或計數(shù)功能,并可用定時計數(shù)結(jié)果對單片機(jī)及系統(tǒng)進(jìn)行控制。并行I/0口MCS-51共有4個8位的I/0口(P0、P1、P2、P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入輸出。串行口MCS-51有一個全雙工的串行口,以實(shí)現(xiàn)單片機(jī)與其它數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳遞。該串行口的功能較強(qiáng),既可作為全雙工異步通訊收發(fā)器使用,也可作為同步移位器使用。中斷控制系統(tǒng)MCS-51設(shè)有五個中斷源(外中斷2個,定時/計數(shù)中斷2個、串行中斷1個),二級優(yōu)先級,可實(shí)現(xiàn)2級中斷嵌套。時鐘電路MCS-51芯片內(nèi)有時鐘電路,但石英晶體和微調(diào)電容需要外接。時鐘電路為單片機(jī)產(chǎn)生時鐘脈沖序列,作為單片機(jī)工作的時間基準(zhǔn),典型的晶體振蕩頻率為12MHz。位處理器位處理器(即布爾處理器)是單片機(jī)中運(yùn)算器的重要組成部分(圖中未畫出),它有很強(qiáng)的位處理功能(實(shí)現(xiàn)置位、復(fù)位、取反,等于0轉(zhuǎn)、等于1轉(zhuǎn)及位與位之間的傳送,邏輯與、或等操作,操作結(jié)果送回進(jìn)位CY)。給單片機(jī)實(shí)現(xiàn)控制功能以極大的方便。內(nèi)部總線2.380C51單片機(jī)的內(nèi)部存儲器
單片機(jī)的內(nèi)部存儲器包括數(shù)據(jù)存儲器和程序存儲器。80C51的數(shù)據(jù)存儲區(qū)共有256個單元,按功能又劃分為:低128單元區(qū)和高128單元區(qū)。
(3)程序狀態(tài)字(PSW----ProgramStatusWord)是8位寄存器,它包含了程序狀態(tài)信息。CY:進(jìn)位標(biāo)志。在執(zhí)行某些算術(shù)和邏輯運(yùn)算時,可被硬件或軟件置位或清除。AC:輔助進(jìn)位標(biāo)志。當(dāng)?shù)?位數(shù)向高4位數(shù)進(jìn)位或借位時,AC將被硬件置1,否則就被清除。RS0,RS1:用軟件置位或清除來確定工作寄存器區(qū)。(0,0)——區(qū)0(00H~07H) (0,1)——區(qū)1(08H~0FH)
(1,0)——區(qū)2(10H~17H) (1,1)——區(qū)3(18H~1FH)OV:溢出標(biāo)志。執(zhí)行算術(shù)運(yùn)算時,由硬件置位或清除。
加減法時OV=C’6異或C’7
乘除也會影響OV,積大于255或除數(shù)為0,OV置位否則清零。
P:奇偶標(biāo)志。每個指令周期都由硬件來置位或清零。A中值為1的位數(shù)為奇數(shù),則P置位,否則清零。表2-4MCS-51專用寄存器一覽表2.3.3堆棧操作1.
棧的概念堆棧是一片按“先進(jìn)后出”原則工作的連續(xù)存儲區(qū)域,(堆棧位于內(nèi)部RAM中的地址為30H~7FH的區(qū)域內(nèi))。。這片存儲區(qū)域的一端固定(稱棧底),一端激活(稱棧頂),并用專用寄存器SP(8位)存放棧頂?shù)刂贰?.3.3堆棧操作堆棧的開辟只能開辟在芯片的內(nèi)部數(shù)據(jù)存儲中。堆棧指針堆棧的兩種操作:進(jìn)棧和出棧。都是對棧頂單元進(jìn)行的。堆棧指針SP用來指示棧頂。SP的內(nèi)容就是堆棧棧頂?shù)拇鎯卧刂贰?/p>
(2)堆棧的操作
進(jìn)棧操作:先SP加1,后寫入數(shù)據(jù)出棧操作:先讀出數(shù)據(jù),后SP減1
注意:系統(tǒng)復(fù)位后,SP的內(nèi)容為07H,而堆棧一般是在內(nèi)部RAM的30H~7FH單元中開辟,所以程序設(shè)計時應(yīng)注意把SP的初始值置為30H以后。(3)堆棧的用途堆棧主要用于存放調(diào)用子程序或中斷時的返回地址或斷點(diǎn)地址,另外在中斷服務(wù)時用于保護(hù)CPU現(xiàn)場。5.堆棧使用方式兩種:自動方式和指令方式。自動方式:在調(diào)用子程序或中斷時,返回地址自動進(jìn)棧。程序返回時,斷點(diǎn)再自動彈回PC。指令方式:使用專用的堆棧操作指令,進(jìn)行進(jìn)出棧操作。進(jìn)棧指令為PUSH,出棧指令為POP。2.3.4內(nèi)部程序存儲器功能:用于存放編好的程序和表格常數(shù)。如何工作:程序計數(shù)器(PC),也叫PC指針,是取指地址。上電復(fù)位后內(nèi)容為0000H,即從0000H地址的指令順序執(zhí)行,最大為FFFFH,所以程序空間為64K。64K空間分為片內(nèi)ROM和片外ROM,但統(tǒng)一編址。
(片內(nèi)有4KROM,地址為0000H~0FFFH)0000~0002H是系統(tǒng)的起動單元,使用時應(yīng)在這個單元中存放一條無條件轉(zhuǎn)移指令,以便轉(zhuǎn)移去執(zhí)行指定的程序。內(nèi)部ROM的0003H~002AH共有40個單元,固定用于5個中斷源的中斷地址區(qū),其具體分配如下:0003H~000AH外部中斷0中斷地址區(qū)000BH~0012H定時器/計數(shù)器0中斷地址區(qū)0013H~001AH外部中斷1中斷地址區(qū)001BH~0022H定時器/計數(shù)器1中斷地址區(qū)0023H~002AH串行口中斷地址區(qū)2.480C51單片機(jī)的并行I/O口80C51共有4個8位的并行雙向I/O口:P0,P1,P2,P3??梢园醋止?jié)尋址外,還可以按位尋址。8051單片機(jī)I/0口的應(yīng)用2.580C51單片機(jī)的時鐘與定時單片機(jī)本身是一個復(fù)雜的同步時序系統(tǒng),為保證同步工作方式的實(shí)現(xiàn),單片機(jī)必須有時鐘信號,以使其系統(tǒng)在時鐘信號的控制下按時序協(xié)調(diào)工作。
CPU的時序是指控制器按照指令的功能發(fā)出一系列在時間上有一定次序的信號。為了控制單片機(jī)各部分電路嚴(yán)格按照時序進(jìn)行工作,電路中要有統(tǒng)一的時鐘信號作為單片機(jī)工作的時間基準(zhǔn)。
2.5.2定時單位1.拍節(jié)與狀態(tài)即振蕩周期,時鐘脈沖頻率的倒數(shù),定義為拍節(jié)(P)。時鐘信號的周期定義為狀態(tài)(S)。1S=2P拍節(jié):振蕩脈沖周期稱為拍節(jié),用“P”表示。狀態(tài):振蕩脈沖經(jīng)過2分頻后,就是單片機(jī)的時鐘信號,時鐘信號的周期定義為狀態(tài),用“S”表示。因此,一個狀態(tài)包含兩個拍節(jié),前半周期對應(yīng)拍節(jié)1(P1),后半周期對應(yīng)拍節(jié)2(P2)。圖2-980C51的取指/執(zhí)行時序a)單字節(jié)單周期指令,例:INCAb)雙字節(jié)單周期指令,例:ADDA,#datac)單字節(jié)雙周期指令,例INCDPTRd)雙字節(jié)雙周期指令:例PHSHdirect
機(jī)器周期是6個狀態(tài)周期、12個時鐘周期。當(dāng)時鐘頻率為12MHz時,機(jī)器周期為1
S;當(dāng)時鐘頻率為6MHz時,機(jī)器周期為2
S。2機(jī)器周期
80C51單片機(jī)工作的基本定時單位,簡稱機(jī)周。 一個機(jī)器周期含有6個狀態(tài)周期,分別為S1、S2、…、S6,每個狀態(tài)周期有兩拍,分別為S1P1、S1P2、S2P1、S2P2…,S6P1、S6P2
3
指令周期
指CPU執(zhí)行一條指令占用的時間(用機(jī)器周期表示)。80C51執(zhí)行各種指令時間是不一樣的,可分為三類:單機(jī)周指令、雙機(jī)周指令和四機(jī)周指令。其中單機(jī)周指令有64條,雙機(jī)周指令有45條,四機(jī)周指令只有2條(乘法和除法指令),無三機(jī)周指令。
圖2-980C51的取指/執(zhí)行時序a)單字節(jié)單周期指令,例:INCAb)雙字節(jié)單周期指令,例:ADDA,#datac)單字節(jié)雙周期指令,例INCDPTRd)雙字節(jié)雙周期指令:例PHSHdirect
牢牢記住:
振蕩周期(時鐘周期)=晶振頻率fosc的倒數(shù); 1個機(jī)器周期=6個狀態(tài)周期 1個機(jī)器周期=12個時鐘周期; 1個指令周期=1、2、4個機(jī)器周期復(fù)位方式有兩種:
一是上電自動復(fù)位方式:該方式是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。即接通電源就可以完成系統(tǒng)復(fù)位工作。
二是按鍵手動復(fù)位方式,該方式分為電平方式和脈沖方式,電平復(fù)位是通過使復(fù)位端經(jīng)過電阻與VCC電源接通而實(shí)現(xiàn)的。如圖2-11b所示。脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實(shí)現(xiàn)的,如圖2-11c所示(P37)。
第3章80C51單片機(jī)指令系統(tǒng)3.1單片機(jī)指令系統(tǒng)概述3.280C51單片機(jī)指令尋址方式3.380C51單片機(jī)指令分類介紹80c51指令中使用的符號的意義作簡要說明:Rn(n=0~7):表示當(dāng)前工作寄存器R0~R7中的任一個寄存器。Ri:可用作間接尋址的寄存器,只能是R0,R1兩個寄存器,i=0,1。direct:8位直接地址,在指令中表示直接尋址方式,尋址范圍256個單元。#data:8位立即數(shù)。#data16:16位立即數(shù)。addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。rel:相對轉(zhuǎn)移指令中的偏移量,為8位帶符號補(bǔ)碼。DPTR:數(shù)據(jù)指針。bit:內(nèi)部RAM(包括專用寄存器)中的直接尋址位。
A:累加器ACC:直接尋址方式的累加器。B:寄存器BC:進(jìn)位標(biāo)志位。也稱為累加位。/:加在位地址的前面,表示對該位狀態(tài)取反。@:間接尋址寄存器的前綴標(biāo)志。(X):某寄存器或某單元中的內(nèi)容。((X)):由“X”間接尋址單元中的內(nèi)容?!杭^左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。
3.280C51單片機(jī)指令尋址方式1.寄存器尋址方式定義:操作數(shù)在寄存器中,只要指定了寄存器就能得到操作數(shù)。MOVA,R0特點(diǎn):由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dú)的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0~R7)、部分專用寄存器(A,B,DPTR,Cy)。2.直接尋址方式定義:指令中操作數(shù)直接以存儲單元地址的形式給出例如: MOVA,3AH特點(diǎn):指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計算機(jī)執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù)。尋址范圍:片內(nèi)RAM區(qū)(低128字節(jié))、專用寄存器。3.寄存器間接尋址方式定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址。如:MOVA,@R0特點(diǎn):指令給出的寄存器中存放的是操作數(shù)地址。寄存器間接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊必須加前綴符號“@”。不能用于尋址特殊功能寄存器SFR。尋址范圍:內(nèi)部RAM低128B(只能使用R0或R1作間址寄存器)、外部RAM(只能使用DPTR作間址寄存器)。對于外部低256單元RAM的訪問,除可以使用DPTR外,還可以使用R0或R1作間址寄存器。4.立即尋址方式定義:將立即參與操作的數(shù)據(jù)直接寫在指令中,這種尋址方式稱為立即尋址。例如 MOVA,#3AH
MOVDPTR,#data16特點(diǎn):指令中直接含有所需的操作數(shù)。該操作數(shù)可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用#data或#data16表示,在立即數(shù)前面加“#”標(biāo)志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。
5.變址尋址方式 定義:操作數(shù)存放在變址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱為變址尋址。例如:
MOVCA,@A+DPTR;(A)←(A)+(DPTR)特點(diǎn):指令操作碼中隱含作為基址寄存器用的DPTR(或PC)和作為變址用的累加器A。在執(zhí)行變址尋址指令時,80c51單片機(jī)先把基地址(DPTR或PC的內(nèi)容)和地址偏移量(A的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。尋址范圍:只能對程序存儲器ROM進(jìn)行尋址,主要用于查表性質(zhì)的訪問。6.位尋址方式定義:指令中給出的操作數(shù)是一個可單獨(dú)尋址的位地址,這種尋址方式稱為位尋址方式。MOVC,3AH特點(diǎn):位尋址是直接尋址方式的一種,其特點(diǎn)是對8位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作。尋址范圍:片內(nèi)RAM低128B中位尋址區(qū)、部分SFR(其中有83位可以位尋址)。7.相對尋址方式定義:將程序計數(shù)器PC的當(dāng)前值(取出本條指令后的PC值)與指令第二個字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標(biāo)地址。稱為相對尋址方式。例如: SJMPrel;(PC)←(PC)+2+rel特點(diǎn):相對轉(zhuǎn)移指令的目的地址=指令地址+指令字節(jié)數(shù)+偏移量相對尋址方式是為實(shí)現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計的,為相對轉(zhuǎn)移指令所使用,其指令碼中含有相對地址偏移量,能生成浮動代碼。
尋址范圍:只能對程序存儲器ROM進(jìn)行尋址。相對地址偏移量(rel)是一個帶符號的8位二進(jìn)制補(bǔ)碼,其取值范圍為
128~+127(以PC為中間的256個字節(jié)范圍)。rel可以是標(biāo)號。3.380C51單片機(jī)指令分類介紹80C51單片機(jī)的指令共有111條。這些指令按功能分成5大類: ——數(shù)據(jù)傳送類(29條) ——算術(shù)運(yùn)算類(24條) ——邏輯運(yùn)算及移位類(24條) ——控制轉(zhuǎn)移類(17條) ——位操作類(17條)3.3.1數(shù)據(jù)傳送類指令1.內(nèi)部RAM數(shù)據(jù)傳送指令組(1)8位立即數(shù)傳送指令 MOVA,#data(8位立即數(shù)送累加器) MOVdirect,#data(8位立即數(shù)送直接尋址單元) MOV@Ri,#data(8位立即數(shù)送Ri間接尋址單元) MOVRn,#data(8位立即數(shù)送寄存器)(2)16位立即數(shù)傳送指令 MOVDPTR,#data16(16位立即數(shù)送DPTR)(3)內(nèi)部RAM單元之間的數(shù)據(jù)傳送指令MOVdirect2,direct1(直接尋址數(shù)據(jù)送直接尋址單元)MOVdirect,@Ri(Ri間接尋址數(shù)據(jù)送直接尋址單元)MOVdirect,Rn(寄存器內(nèi)容送直接尋址單元)MOV@Ri,direct(直接尋址數(shù)據(jù)送Ri間接尋址單元)MOVRn,direct(直接尋址數(shù)據(jù)送寄存器)(4)通過累加器的數(shù)據(jù)傳送指令MOVA,direct(直接尋址數(shù)據(jù)送累加器)MOVA,@Ri(Ri間接尋址數(shù)據(jù)送累加器)MOVA,Rn(寄存器內(nèi)容送累加器)MOVdirect,A(累加器內(nèi)容送直接尋址單元)MOV@Ri,A(累加器內(nèi)容送Ri間接尋址單元)MOVRn,A(累加器內(nèi)容送寄存器)2.外部數(shù)據(jù)存儲器讀/寫指令(1)Ri作間址寄存器的外部RAM單元讀/寫指令MOVXA,@Ri(Ri間接尋址的外部RAM單元讀) MOVX@Ri,A(Ri間接尋址的外部RAM單元寫)(2)DPTR作間址寄存器的外部RAM單元讀/寫指令MOVXA,@DPTR(DPTR間接尋址的外部RAM單元讀) MOVX@DPTR,A(DPTR間接尋址的外部RAM單元寫)3.程序存儲器讀指令組MOVCA,@A+DPTR(程序存儲器讀)MOVCA,@A+PC(程序存儲器讀)4.數(shù)據(jù)交換指令組(1)整字節(jié)交換指令XCHA,Rn(寄存器尋址字節(jié)交換)XCHA,direct(直接尋址字節(jié)交換)XCHA,@Ri(Ri間接尋址字節(jié)交換)(2)半字節(jié)交換指令XCHDA,@Ri(Ri間接尋址半字節(jié)交換)(3)累加器高低半字節(jié)交換指令SWAPA(累加器內(nèi)容高低半字節(jié)交換)5.堆棧操作指令組
PUSHdirect(進(jìn)棧)POPdirect(出棧)1.加法指令組ADDA,#data(立即數(shù)加法)ADDA,direct(直接尋址加法)ADDA,@Ri(間接尋址加法)ADDA,Rn(寄存器尋址加法)2.帶進(jìn)位加法指令組ADDCA,#data(立即數(shù)帶進(jìn)位加法)ADDCA,direct(直接尋址帶進(jìn)位加法)ADDCA,@Ri(間接尋址帶進(jìn)位加法)ADDCA,Rn(寄存器尋址帶進(jìn)位加法)3.3.2算術(shù)運(yùn)算類指令3.帶借位減法指令組SUBBA,#data(立即數(shù)帶借位減法)SUBBA,direct(直接尋址帶借位減法)SUBBA,@Ri(間接尋址帶借位減法)SUBBA,Rn(寄存器尋址帶借位減法)4.加1指令組INCA(累加器加1)INCdirect(直接尋址單元加1)INC@Ri(間接尋址單元加1)INCRn(寄存器加1)INCDPTR(16位數(shù)據(jù)指針加1)5.減1指令組DECA(累加器減1)DECdirect(直接尋址單元減1)DEC@Ri(間接尋址單元減1)DECRn(寄存器減1)6.乘法指令組(1)乘法指令MULAB(乘法)(2)除法指令DIVAB(除法)7.十進(jìn)制調(diào)整指令DAA(十進(jìn)制調(diào)整)1.邏輯“與”運(yùn)算指令組ANLdirect,A(累加器與直接尋址單元邏輯“與”)ANLdirect,#data(立即數(shù)與直接尋址單元邏輯“與”)ANLA,#data(立即數(shù)與累加器邏輯“與”)ANLA,direct(直接尋址單元與累加器邏輯“與”)ANLA,@Ri(間接尋址單元與累加器邏輯“與”)ANLA,Rn(寄存器與累加器邏輯“與”)
3.3.3邏輯運(yùn)算及移位類指令2.邏輯“或”運(yùn)算指令組ORLdirect,A(累加器與直接尋址單元邏輯“或”)ORLdirect,#data(立即數(shù)與直接尋址單元邏輯“或”)ORLA,#data(立即數(shù)與累加器邏輯“或”)ORLA,direct(直接尋址單元與累加器邏輯“或”)ORLA,@Ri(間接尋址單元與累加器邏輯“或”)ORLA,Rn(寄存器與累加器邏輯“或”)3.邏輯“異或”運(yùn)算指令組XRLdirect,A(累加器與直接尋址單元邏輯“異或”)XRLdirect,#data(立即數(shù)與直接尋址單元邏輯“異或”)XRLA,#data(立即數(shù)與累加器邏輯“異或”)XRLA,direct(直接尋址單元與累加器邏輯“異或”)XRLA,@Ri(間接尋址單元與累加器邏輯“異或”)XRLA,Rn(寄存器與累加器邏輯“異或”)4.累加器清0和取反指令組 CLRA(累加器清0) CPLA(累加器按位取反)5.移位指令組RLA(累加器內(nèi)容循環(huán)左移)RRA(累加器內(nèi)容循環(huán)右移)RLCA(通過CY循環(huán)左移)RRCA(通過CY循環(huán)右移)3.3.4控制轉(zhuǎn)移類指令1.無條件轉(zhuǎn)移指令組(1)長轉(zhuǎn)移指令LJMPaddr16(無條件長轉(zhuǎn)移)(2)絕對轉(zhuǎn)移指令A(yù)JMPaddr11(無條件絕對轉(zhuǎn)移)(3)短轉(zhuǎn)移指令SJMPrel(無條件短轉(zhuǎn)移)(4)變址尋址轉(zhuǎn)移指令JMP@A+DPTR(無條件間接轉(zhuǎn)移)2.條件轉(zhuǎn)移指令組(1)累加器判零轉(zhuǎn)移指令 JZrel(累加器判零轉(zhuǎn)移) JNZrel(累加器判非零轉(zhuǎn)移)(2)數(shù)值比較轉(zhuǎn)移指令 CJNEA,#data,rel(累加器內(nèi)容與立即數(shù)比較,不等則轉(zhuǎn)移) CJNEA,direct,rel(累加器內(nèi)容與直接尋址單元比較,不等則轉(zhuǎn)移) CJNERn,#data,rel(寄存器內(nèi)容與立即數(shù)比較,不等則轉(zhuǎn)移) CJNE@Ri,#data,rel(間接尋址單元與立即數(shù)比較,不等則轉(zhuǎn)移)(3)減1條件轉(zhuǎn)移指令 DJNZRn,rel(寄存器減1條件轉(zhuǎn)移) DJNZdirect,rel(直接尋址單元減1條件轉(zhuǎn)移)3.子程序調(diào)用與返回指令組(1)絕對調(diào)用指令 ACALLaddr11(絕對調(diào)用)(2)長調(diào)用指令 LCALLaddr16(長調(diào)用)(3)返回指令 RET(子程序返回) RETI(中斷服務(wù)子程序返回)4.空操作指令NOP(空操作)3.3.5位操作類指令1.位操作概述以位(bit)為單位進(jìn)行的運(yùn)算和操作。位變量也稱為布爾變量或開關(guān)變量。供用戶使用的位處理硬件資源有:位累加器CY內(nèi)部RAM的128個可位尋址位專用寄存器中可尋址位I/O口的可尋址位2.位傳送指令組 MOVC,bit(指定位內(nèi)容送CY) MOVbit,C(CY內(nèi)容送指定位)3.位置位復(fù)位指令組 SETBC(CY置1) SETBbit(指定位置1) CLRC(CY清0) CLRbit(指定位清0)4.位邏輯運(yùn)算指令組 ANLC,bit(指定位與CY邏輯“與”) ANLC,/bit(指定位的反與CY邏輯“與”) ORLC,bit(指定位與CY邏輯“或”) ORLC,/bit(指定位的反與CY邏輯“或”) CPLC(CY取反) CPLbit(指定位取反)5.位控制轉(zhuǎn)移指令組(1)以C狀態(tài)為條件的轉(zhuǎn)移指令 JCrel(CY=1轉(zhuǎn)移) JNCrel(CY=0轉(zhuǎn)移)(2)以位狀態(tài)為條件的轉(zhuǎn)移指令 JBbit,rel(指定位狀態(tài)為1轉(zhuǎn)移) JNBbit,rel(指定位狀態(tài)為0轉(zhuǎn)移) JBCbit,rel(指定位狀態(tài)為1轉(zhuǎn)移,并使該位清0)第4章80C51單片機(jī)匯編語言程序設(shè)計4.1單片機(jī)程序設(shè)計語言概述4.2匯編語言程序的基本結(jié)構(gòu)形式4.380C51單片機(jī)匯編語言程序設(shè)計舉例4.4單片機(jī)匯編語言源程序的編輯和匯編4.580C51單片機(jī)匯編語言偽指令4.1單片機(jī)程序設(shè)計語言概述4.1.1機(jī)器語言和匯編語言機(jī)器語言:用二進(jìn)制編碼表示的指令,是計算機(jī)能直接識別并執(zhí)行的指令。匯編語言:用助記符和專門的語言規(guī)則表示指令的功能和特征。
匯編語言是對機(jī)器語言的改進(jìn),比機(jī)器語言高級。匯編語言的最大優(yōu)點(diǎn)是助記符與機(jī)器指令一一對應(yīng)。用匯編語言編寫的程序占用存儲空間小,運(yùn)行速度快,程序效率高。 缺點(diǎn):難以記憶和使用,程序設(shè)計的技巧性較高,編程難度較大。要求使用者必須精通單片機(jī)的硬件系統(tǒng)和指令系統(tǒng)。缺乏通用性,程序不易移植。4.1.2單片機(jī)使用的高級語言對于8051單片機(jī),現(xiàn)有4種語言支持,即匯編、PL/M、C和BASIC。C語言最終得到廣泛應(yīng)用。 可以大大提高單片機(jī)應(yīng)用系統(tǒng)研制的開發(fā)效率。移植性好。高級語言的不足:生成的目標(biāo)代碼較長,導(dǎo)致應(yīng)用程序運(yùn)行速度較慢。4.1.380C51單片機(jī)匯編語言的語句格式80C51匯編語言的語句格式如下:[<標(biāo)號>]:<操作碼>[<操作數(shù)>];[<注釋>]1.標(biāo)號 是語句地址的標(biāo)志符號,標(biāo)號的幾點(diǎn)規(guī)定:1~8個ASCII字符組成,第一個字符必須是字母。不能使用本匯編語言已經(jīng)定義的符號作為標(biāo)號。標(biāo)號后面必須跟以冒號“:”。同一標(biāo)號在一個程序中只能定義一次。標(biāo)號可有可無。2.操作碼
用于規(guī)定語句執(zhí)行的操作內(nèi)容,用指令助記符表示。不能空缺。3.操作數(shù)操作數(shù)用于為指令操作提供數(shù)據(jù)。可以是空白,也可能有1~3個操作數(shù),各操作數(shù)之間以逗號分隔。4.注釋不屬于語句的功能部分,只是對語句的解釋說明,以“;”開頭。5.分界符(分隔符)用于把語句中的各部分隔開,以便于區(qū)分。分界符包括空格、冒號、分號或逗號等符號。4.2匯編語言程序的基本結(jié)構(gòu)形式三種基本結(jié)構(gòu)形式:順序程序結(jié)構(gòu),分支程序結(jié)構(gòu),循環(huán)程序結(jié)構(gòu)。4.2.1順序程序結(jié)構(gòu)
順序結(jié)構(gòu)程序是最簡單的程序結(jié)構(gòu)。程序既無分支、循環(huán),也不調(diào)用子程序,程序執(zhí)行時一條接一條地按順序執(zhí)行指令。分支結(jié)構(gòu)也稱為選擇結(jié)構(gòu)。為分支需要,程序設(shè)計時應(yīng)給程序段的起始地址賦予一個地址標(biāo)號,以供選擇分支使用。分支結(jié)構(gòu)又可分為單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。1.單分支程序結(jié)構(gòu)單分支程序結(jié)構(gòu)即二中選一,是通過條件判斷實(shí)現(xiàn)的。一般都使用條件轉(zhuǎn)移指令對程序的執(zhí)行結(jié)果進(jìn)行判斷(1)單分支結(jié)構(gòu)舉例
假定在外部RAM中有ST1、ST2和ST3共3個連續(xù)單元,其中ST1和ST2單元中存放著兩個無符號二進(jìn)制數(shù),要求找出其中的大數(shù)并存入ST3單元中。
4.2.2分支程序結(jié)構(gòu)(2)多重單分支結(jié)構(gòu)舉例多重單分支結(jié)構(gòu)中,通過一系列條件判斷,進(jìn)行逐級分支。為此可使用比較轉(zhuǎn)移指令CJNE實(shí)現(xiàn)。例:假定采集的溫度值Ta放在累加器A中。此外,在內(nèi)部RAM54H單元存放溫度下限值T54,在55H單元存放溫度上限值T55。若Ta>T55,程序轉(zhuǎn)向JW(降溫處理程序);若Ta<T54,則程序轉(zhuǎn)向SW(升溫處理程序);若T55≥Ta≥T54,則程序轉(zhuǎn)向FH(返回主程序)。2.多分支程序結(jié)構(gòu)多分支程序結(jié)構(gòu)流程中具有兩個以上條件可供選擇??晒┦褂玫氖亲冎穼ぶ忿D(zhuǎn)移指令“JMP@A+DPTR”,但使用該指令實(shí)現(xiàn)多分支轉(zhuǎn)移時,需要有數(shù)據(jù)表格配合。多分支程序結(jié)構(gòu)
(2)通過轉(zhuǎn)移指令表實(shí)現(xiàn)程序多分支
MOVA,n RLA;分支序號值乘以2 MOVDPTR,#BRTAB;轉(zhuǎn)移指令表首址 JMP@A+DPTRBRTAB: AJMPBR0;轉(zhuǎn)分支程序0 AJMPBR1;轉(zhuǎn)分支程序1 …… AJMPBR127;轉(zhuǎn)分支程序1274.2.3循環(huán)程序結(jié)構(gòu)循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行某個程序段。使用條件轉(zhuǎn)移指令通過條件判斷來實(shí)現(xiàn)和控制循環(huán)。舉例:通過查找結(jié)束標(biāo)志(回車符)以統(tǒng)計字符串長度的循環(huán)程序。設(shè)計方法:假定字符串存放在內(nèi)部RAM從40H單元開始的連續(xù)存儲單元中。為找到結(jié)束標(biāo)志,應(yīng)采用逐個字符依次與回車符(ASCII碼0DH)比較的方法。同時在程序中還應(yīng)設(shè)置一個字符串指針以順序定位字符,設(shè)置一個字符長度計數(shù)器以累計字符個數(shù)。
MOVR2,#0FFH;設(shè)置長度計數(shù)器初值 MOVR0,#3FH;設(shè)置字符串指針初值LOOP: INCR2 INCR0 CJNE@R0,#0DH,LOOP RET4.380C51單片機(jī)匯編語言程序設(shè)計舉例4.3.1算術(shù)運(yùn)算程序1.加減法運(yùn)算(1)多個不帶符號的單字節(jié)數(shù)相加舉例:假設(shè)有多個單字節(jié)數(shù),依次存放在外部RAM21H開始的連續(xù)單元中,要求把計算結(jié)果存放在R1和R2中(假定相加的和為2字節(jié)數(shù))。其中R1為高位字節(jié)。 MOVR0,#21H ;設(shè)置數(shù)據(jù)指針 MOVR3,#N ;字節(jié)個數(shù) MOVR1,#00H ;和的高位字節(jié)清0 MOVR2,#00H ;和的低位字節(jié)清0LOOP: MOVXA,@R0 ;取一個加數(shù) ADDA,R2 ;單字節(jié)數(shù)相加 MOVR2,A ;和的低8位送R2 JNCLOOP1 INCR1 ;有進(jìn)位,則和的高8位加1LOOP1: INCR0 ;指向下一個單元 DJNZR3,LOOP2.乘法運(yùn)算由于乘法指令“MULAB”是對單字節(jié)的,即單字節(jié)數(shù)的乘法運(yùn)算使用一條指令就可以完成;但對多字節(jié)數(shù)的乘法運(yùn)算,則必須通過程序?qū)崿F(xiàn)。舉例:假定要進(jìn)行兩個雙字節(jié)無符號數(shù)乘法運(yùn)算,被乘數(shù)和乘數(shù)分別存放于內(nèi)部RAM的R2、R3單元和R6、R7單元中(其中R2和R6分別為高位字節(jié)),相乘的結(jié)果(積)依次存放在R4、R5、R6、R7單元中。因?yàn)槌藬?shù)和被乘數(shù)各為2字節(jié),因此,須進(jìn)行4次乘法運(yùn)算,得到4次部分乘積。部分積高字節(jié)用H標(biāo)志,部分積低字節(jié)用L標(biāo)志。此外,還要處理部分積相加產(chǎn)生的進(jìn)位。為了進(jìn)一步了解程序,可以把乘法運(yùn)算的實(shí)現(xiàn)過程用示意方法表示出來,如下圖所示。兩個雙字節(jié)無符號數(shù)乘法示意圖3.除法運(yùn)算除法指令“DIVAB”也是對單字節(jié)的,單字節(jié)數(shù)的除法運(yùn)算可以直接使用該指令完成。而多字節(jié)數(shù)據(jù)的除法運(yùn)算需要編程實(shí)現(xiàn),通常采用“移位相減”的方法。舉例:實(shí)現(xiàn)雙字節(jié)無符號數(shù)除法運(yùn)算的程序。為編寫程序,首先要定義一些數(shù)據(jù)單元。R7R6執(zhí)行前存被除數(shù),執(zhí)行后存商(其中R7為高位字節(jié));R5R4存除數(shù)(其中R5為高位字節(jié));R3R2存放每次相除的余數(shù),執(zhí)行后即為最終余數(shù);3AH溢出標(biāo)志單元; R1循環(huán)次數(shù)計數(shù)器(16次)除法運(yùn)算程序比較復(fù)雜,對“移位相減”法有如下幾點(diǎn)說明:①除法運(yùn)算需要對被除數(shù)和除數(shù)進(jìn)行判定:若被除數(shù)為0,除數(shù)不為0,則商為0;若除數(shù)為0,則除法無法進(jìn)行,置標(biāo)志單元3AH為0。②除法運(yùn)算是按位進(jìn)行的,每一位是一個循環(huán),每個循環(huán)都要作3件事:被除數(shù)左移一位,余數(shù)減除數(shù),根據(jù)是否夠減使商位得1或0。對于雙字節(jié)被除數(shù),如此循環(huán)共進(jìn)行16次,除法即可完成。③移位是除法運(yùn)算的重要操作,最簡單的方法是把被除數(shù)向余數(shù)單元左移,然后把被除數(shù)移位后騰出來的低位用來存放商。這樣,除法完成后,被除數(shù)已全部移到余數(shù)單元并逐次被減得到余數(shù),而被除數(shù)單元被商所代替。④除法結(jié)束后,可根據(jù)需要對余數(shù)進(jìn)行四舍五入。為簡單起見,本程序把四舍五入問題省略了。4.3.2定時程序在單片機(jī)的控制應(yīng)用中常有定時的需要,例如定時檢測和定時掃描等。定時功能除可使用定時器/計數(shù)器外,還可以使用程序?qū)崿F(xiàn)。1.單循環(huán)定時程序 MOVR5,#TIMELOOP:NOPNOPDJNZR5,LOOP說明:NOP指令的機(jī)器周期為1,DJNZ指令的機(jī)器周期為2,則一次循環(huán)共4個機(jī)器周期。若單片機(jī)的晶振頻率為6MHz,則一個機(jī)器周期是2μs,因此,一次循環(huán)的延遲時間為8μs。定時程序的總延遲時間是循環(huán)程序段延時時間的整數(shù)倍,故該程序的延遲時間為8×TIME(μs)。TIME是裝入寄存器R5的時間常數(shù),R5是8位寄存器,因此,這個程序的最長定時時間(不計“MOVR5,#TIME”指令)為:256×8μs=2048μs2.較長時間的定時程序單循環(huán)定時程序的時間延遲比較小。為了加長定時時間,應(yīng)采用多重循環(huán)的方法。
MOVR5,#TIME1LOOP2:MOVR4,#TIME2LOOP1:NOP NOP DJNZR4,LOOP1 DJNZR5,LOOP2 RET本程序的最大定時時間及計算公式為:(256×4μs+2μs+1μs)×256×2+4μs=525828μs4.3.3查表程序1.查表指令 按順序讀出存儲器中的數(shù)據(jù)稱為查表。 80C51指令系統(tǒng)中有兩條專用的查表指令: MOVCA,@A+DPTR MOVCA,@A+PC 這兩條MOVC指令在指令系統(tǒng)中稱為“程序存儲器數(shù)據(jù)傳送指令”。 它們的功能完全相同,使用時先確定好PC或DPTR的內(nèi)容,然后只須有規(guī)律地改變A的內(nèi)容,就可以進(jìn)行程序存儲器中表格數(shù)據(jù)的讀出。2.查表程序舉例假定有4×4鍵盤,鍵掃描后把被按鍵的鍵碼放在累加器A中,鍵碼值與鍵處理子程序入口地址的對應(yīng)關(guān)系為: 鍵碼值 入口地址 0 RK0 1 RK1 2 RK2
假定鍵處理子程序在ROM64KB的范圍內(nèi)分布。要求以查表方法,按鍵碼值轉(zhuǎn)向?qū)?yīng)的鍵處理子程序。編輯:編寫程序的過程。匯編語言源程序:用匯編語言編寫的程序稱為匯編語言源程序。匯編:匯編語言源程序不能在單片機(jī)中直接執(zhí)行,必須將其“翻譯”為用二進(jìn)制代碼(機(jī)器語言)表示的目標(biāo)程序才能執(zhí)行。這個“翻譯”過程稱為匯編。4.4單片機(jī)匯編語言源程序的編輯和匯編4.4.1手工編程與匯編手工匯編:先把程序用助記符指令寫出,然后通過查指令代碼表,逐個把助記符指令“翻譯”成機(jī)器碼,最后再把機(jī)器碼的程序輸入單片機(jī),進(jìn)行調(diào)試和運(yùn)行。通常把這種查表翻譯指令的方法稱為手工匯編。由于手工編程是按絕對地址進(jìn)行定位的,所以手工匯編時要根據(jù)轉(zhuǎn)移的目標(biāo)地址計算轉(zhuǎn)移指令的偏移量,不但麻煩而且容易出錯。4.580C51單片機(jī)匯編語言偽指令偽指令(也稱為匯編程序的控制命令)是程序員發(fā)給匯編程序的命令,用來設(shè)置符號值、保留和初始化存儲空間、控制用戶程序代碼的位置。1.匯編起始地址命令ORG(ORiGin)
該命令總是出現(xiàn)在源程序的開頭位置,用于規(guī)定目標(biāo)程序的起始地址。
[<標(biāo)號:>]ORG<地址>
例如:下列ORG命令規(guī)定標(biāo)號START代表地址8000H,即目標(biāo)程序的第一條指令從8000H開始:
ORG8000HSTART:MOVA,#00H……2.匯編終止命令END(ENDofassembly)該命令用于終止源程序的匯編工作。命令格式為:[<標(biāo)號:>]END[<表達(dá)式>][<表達(dá)式>]是選擇項(xiàng),只有主程序模塊才有。[<標(biāo)號:>]也是選擇項(xiàng),當(dāng)源程序?yàn)橹鞒绦驎r才具有,其值為主程序第一條指令的符號地址。3.賦值命令EQU(EQUate)該命令用于給字符名稱賦值。賦值后,其值在整個程序中有效。命令格式為:<字符名稱>]EQU<賦值項(xiàng)>
其中<賦值項(xiàng)>可以是常數(shù)、地址、標(biāo)號或表達(dá)式。4.定義字節(jié)命令DB(DefineByte)命令用于從指定的地址開始,在程序存儲器的連續(xù)單元中定義字節(jié)數(shù)據(jù)。命令格式為:[<標(biāo)號:>]DB<8位數(shù)表><8位數(shù)表>可以是一字節(jié)常數(shù)或字符,或用逗號分開的字節(jié)串,或用引號括起來的字符串。例如:DB “howareyou?”DB -2,-4,-6,10,11,17DBC0H,F9H,A4H,B0HDB99H,92H,82H,F8HDB80H,90H,88H,83HDBC6H,A1H,86H,84H5.定義數(shù)據(jù)字命令DW(DefineWord)該命令用于從指定地址開始,在程序存儲器的連續(xù)單元中定義16位的數(shù)據(jù)字。命令格式為:[<標(biāo)號:>\]DW<16位數(shù)表>存放時,數(shù)據(jù)字的高8位在前(低地址),低8位在后(高地址)。例如, DW“AA” ;存入41H,41H DW“A” ;存入00H,41H DW“ABC” ;不合法,因超過兩字節(jié) DW100H,1ACH,-804 ;按順序存入01H、00H、01H、0ACH、0FCH、0DCH7.位定義命令BIT該命令用于給字符名稱賦以位地址。命令格式為: <字符名稱>BIT<位地址>其中:<位地址>可以是絕對地址,也可以是符號地址(即位符號名稱)。例:AQBITP1.0功能是把P1.0的位地址賦給變量AQ,在其后的編程中AQ就可以作為位地址使用第5章80C51單片機(jī)的中斷與定時5.1中斷概述5.280C51單片機(jī)的中斷系統(tǒng)5.380C51單片機(jī)的定時器/計數(shù)器5.1中斷概述中斷(Interrupt)是一種被廣泛使用的計算機(jī)技術(shù)。中斷技術(shù)實(shí)質(zhì)上是一種
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆烏魯木齊市沙依巴克區(qū)烏魯木齊四中2025年高三下學(xué)期第二次月考數(shù)學(xué)試題文試題含解析
- 新鄉(xiāng)醫(yī)學(xué)院三全學(xué)院《物理化學(xué)實(shí)驗(yàn)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2031年中國碳化硅燒嘴套行業(yè)投資前景及策略咨詢研究報告
- 興義民族師范學(xué)院《社會統(tǒng)計與spss應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東滄江中學(xué)2024屆中考數(shù)學(xué)全真模擬試卷含解析
- 2025項(xiàng)目部管理人員安全培訓(xùn)考試試題(真題匯編)
- 25年公司、項(xiàng)目部、各個班組三級安全培訓(xùn)考試試題含答案(B卷)
- 2025公司廠級員工安全培訓(xùn)考試試題含答案【新】
- 2025年廠里職工安全培訓(xùn)考試試題含完整答案【奪冠系列】
- 2025崗位安全培訓(xùn)考試試題綜合卷
- 2024年大學(xué)試題(宗教學(xué))-道教文化筆試歷年真題薈萃含答案
- 礦用自動抑爆裝置應(yīng)用技術(shù)規(guī)范
- 2024年四川省公務(wù)員錄用考試《行測》試題及答案
- 慢性心力衰竭患者的藥物治療與查房護(hù)理
- 多元智能理論與學(xué)科融合
- 醫(yī)務(wù)人員手衛(wèi)生規(guī)范課件2
- 女性寶媽健康知識講座
- 運(yùn)動營養(yǎng)食品生產(chǎn)許可審查方案
- 景區(qū)保安投標(biāo)方案技術(shù)標(biāo)
- 九宮格數(shù)獨(dú)附答案
- 2023風(fēng)力發(fā)電機(jī)組在線狀態(tài)監(jiān)測裝置技術(shù)規(guī)范
評論
0/150
提交評論