版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MCS-51單片機(jī)原理及應(yīng)用第章
MCS-51指令系統(tǒng)及匯編程序設(shè)計(jì)本章內(nèi)容提要MCS—51系列單片機(jī)的尋址方式, 六種尋址方式的定義與表達(dá)方式MCS—51系列單片機(jī)的指令系統(tǒng), 各指令的格式、功能、簡(jiǎn)單應(yīng)用單片機(jī)原理及應(yīng)用計(jì)算機(jī)工作的基本原理是存儲(chǔ)程序并執(zhí)行程序,而程序則由能實(shí)現(xiàn)某種功能的指令序列構(gòu)成。編寫程序時(shí)使用的程序設(shè)計(jì)語(yǔ)言有三種:機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。
機(jī)器語(yǔ)言是CPU唯一能直接識(shí)別的語(yǔ)言,是機(jī)器指令的集合,二進(jìn)制代碼書(shū)寫。用匯編語(yǔ)言和高級(jí)語(yǔ)言編制的程序稱之為源程序,都要轉(zhuǎn)換成機(jī)器語(yǔ)言程序后才能為計(jì)算機(jī)直接執(zhí)行,這種用機(jī)器語(yǔ)言描述的程序我們通常稱之為目標(biāo)程序。單片機(jī)原理及應(yīng)用
高級(jí)語(yǔ)言的特點(diǎn)是通用性強(qiáng),可以在不同的機(jī)器上運(yùn)行。用高級(jí)語(yǔ)言編寫的程序要用編譯程序或解釋程序翻譯成機(jī)器語(yǔ)言程序方能執(zhí)行。
匯編語(yǔ)言是用助記符來(lái)表示機(jī)器指令的一種程序設(shè)計(jì)語(yǔ)言。其每條語(yǔ)句對(duì)應(yīng)相應(yīng)的機(jī)器指令。匯編語(yǔ)言與機(jī)器的指令系統(tǒng)密切相關(guān),不同的機(jī)型其指令系統(tǒng)不同,匯編語(yǔ)言程序不具備高級(jí)語(yǔ)言的通用性,用匯編語(yǔ)言編寫的程序要經(jīng)過(guò)匯編程序(也可以手譯)翻譯成機(jī)器語(yǔ)言程序后才能為計(jì)算機(jī)所識(shí)別。
其特點(diǎn)是占用的內(nèi)存小、執(zhí)行速度快。
單片機(jī)原理及應(yīng)用
指令系統(tǒng):一臺(tái)計(jì)算機(jī)具有的所有指令的集合稱為該計(jì)算機(jī)的指令系統(tǒng)。
MCS—51系列單片機(jī)的指令系統(tǒng)共有111條指令,在儲(chǔ)存空間與執(zhí)行時(shí)間上都有較高的效率,還含有豐富的位操作指令,成為該指令系統(tǒng)的一大特色。
按其功能可分為數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、程序轉(zhuǎn)移、位操作等5個(gè)大類。
按指令長(zhǎng)度:?jiǎn)巫止?jié)指令49條、雙字節(jié)指令46條、三字節(jié)指令只有16
條。按指令執(zhí)行時(shí)間:?jiǎn)螜C(jī)器周期指令64條,雙機(jī)器周期指令45條,乘除2
條指令的執(zhí)行時(shí)間為4個(gè)機(jī)器周期。
單片機(jī)原理及應(yīng)用操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0雙字節(jié)指令:標(biāo)號(hào):操作碼操作數(shù)或操作數(shù)地址(尋址方式);注釋單字節(jié)指令:操作碼70三字節(jié)指令:操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?0指令按字節(jié)長(zhǎng)度可以分為三種:指令的格式:例如:MOVA,R0例如:MOVA,30H例如:MOVDPTR,#2010H由1~6個(gè)字符組成,字母開(kāi)頭由2~5個(gè)字母組成的助記符字符串,規(guī)定指令的操作功能操作數(shù)1~3,逗號(hào)隔開(kāi),不同指令操作數(shù)個(gè)數(shù)不同單片機(jī)原理及應(yīng)用二、尋址方式
計(jì)算機(jī)的指令通常由操作碼和操作數(shù)兩部分構(gòu)成。操作碼部分指出了指令的功能,通常用代表該功能的英文縮寫來(lái)表示;而操作數(shù)部分則可能是操作數(shù)本身或操作數(shù)所在的地址。表示指令中操作數(shù)所在位置的方法稱為尋址方式。對(duì)MCS—51系列單片機(jī),操作數(shù)可以為0~2個(gè)。不同的指令系統(tǒng),具有的尋址方式也不同,相同功能的指令采用不同的尋址方式,有時(shí)可以節(jié)約空間,有時(shí)可以提高速度,尋址方式的多樣化增加了指令的靈活性。 MCS—51系列單片機(jī)的指令系統(tǒng)有6種基本的尋址方式。指令給出參與運(yùn)算的數(shù)據(jù)的方式稱為尋址方式單片機(jī)原理及應(yīng)用
立即尋址操作數(shù)就在指令中,跟在操作碼的后面,該操作數(shù)被稱為立即數(shù)。在指令中,立即數(shù)前面加“#”符號(hào)作為標(biāo)志。指令:MOVA,#40H^#data結(jié)果A中等于#40H程序存儲(chǔ)器0100000001110100此指令的立即數(shù)40H此指令的操作碼74HPC+1PC單片機(jī)原理及應(yīng)用立即尋址
指令中直接給出操作數(shù)數(shù)值的尋址方式。立即操作數(shù)用前面加有#號(hào)的8位或16位數(shù)來(lái)表示。例如:MOV A,#60H ;A←#60HMOV DPTR,#3400H ;DPTR←#3400HMOV 30H,#40H ;30H單元←#40H上述三條指令執(zhí)行完后,累加器A中數(shù)據(jù)為立即數(shù)據(jù)60H,DPTR寄存器中數(shù)據(jù)為3400H,30H單元中數(shù)據(jù)為立即數(shù)40H。單片機(jī)原理及應(yīng)用直接尋址指令中含有操作數(shù)的直接地址(內(nèi)部RAM),該地址指出了 參與運(yùn)算或傳送的數(shù)據(jù)的直接單元(或位地址) 可訪問(wèn):SFR、內(nèi)部RAM低128字節(jié)、片內(nèi)RAM位地址 如:MOVA,40H結(jié)果:A中為(?)程序存儲(chǔ)器40HPC+10E5HPC內(nèi)部RAM49h05H0e2h……0FH40H41H3FHMOVC,40H結(jié)果:位C中為?
28H單片機(jī)原理及應(yīng)用直接尋址
指令中直接給出操作數(shù)地址的尋址方式,能進(jìn)行直接尋址的存儲(chǔ)空間有SFR寄存器和內(nèi)部數(shù)據(jù)RAM。例如:MOV A,30H ;A←30H內(nèi)部RAM單元中的內(nèi)容30H為直接給出的內(nèi)部RAM的地址。單片機(jī)原理及應(yīng)用寄存器尋址
指令指出當(dāng)前工作區(qū)某一個(gè)寄存器(R0~R7)的內(nèi)容作為操作數(shù)值 指令操作碼字節(jié)的低3位指明所使用的寄存器。 INC Rn 十六進(jìn)制代碼:08~0FH INC R0 十六進(jìn)制代碼:08 INC R1 十六進(jìn)制代碼:09 INC R2 十六進(jìn)制代碼:0A單片機(jī)原理及應(yīng)用寄存器尋址
以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。通用寄存器指A、B、DPTR以及R0~R7
。例如: CLR A ;A←0 INC R0 ;R0←R0+1 ADD R5,#20H ;R5←#20H+R5單片機(jī)原理及應(yīng)用寄存器間接尋址@Ri
指令指出R0、R1(用@R0或@R1)表示,其內(nèi)容為地址所指的內(nèi)RAM或外RAM中的數(shù)值,作為操作數(shù)值。
例如:R0=40H,MOVA,@R0 結(jié)果:A=? MOVXA,@R0 結(jié)果:A=??jī)?nèi)RAM080H40H39H外RAM020H40H39HMOVX指令也可用DPTR作寄存器間接尋址單片機(jī)原理及應(yīng)用寄存器間接尋址以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲(chǔ)器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。能用于寄存器間接尋址的寄存器有R0,R1,DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。單片機(jī)原理及應(yīng)用片內(nèi)RAM30HR034HA30H34HMOV@R0,A間接尋址示意圖單片機(jī)原理及應(yīng)用片外RAM45HA0010H45H10HR1片外RAM2000HDPTR30HA2000H30HMOVXA,@R1間接尋址示意圖MOVX@DPTR,A間接尋址示意圖單片機(jī)原理及應(yīng)用尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個(gè)數(shù)送P1口MOVP1,R0單片機(jī)原理及應(yīng)用變址尋址
變址尋址只能對(duì)程序存儲(chǔ)器中數(shù)據(jù)進(jìn)行操作。由于程序存儲(chǔ)器是只讀的,因此變址尋址只有讀操作而無(wú)寫操作,在指令符號(hào)上采用MOVC的形式。如:MOVCA,@A+DPTR;A←(A+DPTR)MOVCA,@A+PC ;A←(A+PC)基址寄存器是PC。單片機(jī)原理及應(yīng)用MOVCA,@A+DPTR;A←(A+DPTR)變址尋址示意圖程序存儲(chǔ)器2000HDPTR10HA2010H64H10H2000H單片機(jī)原理及應(yīng)用相對(duì)尋址
以當(dāng)前程序計(jì)數(shù)器PC的內(nèi)容為基礎(chǔ),加上指令給出的一字節(jié)補(bǔ)碼數(shù)(偏移量)形成新的PC值的尋址方式。相對(duì)尋址用于修改PC值,主要用于實(shí)現(xiàn)程序的分支轉(zhuǎn)移。例如,SJMP08H;PC←PC+2+08H
單片機(jī)原理及應(yīng)用程序存儲(chǔ)器(2000H)200AHSJMP200AH08H2000H+208HPC2000HSJMP08H相對(duì)尋址示意圖單片機(jī)原理及應(yīng)用位尋址位尋址只能對(duì)有位地址的單元作位尋址操作。位尋址其實(shí)是一種直接尋址方式,其地址是位地址。例如:SETB10H;將10H位置1若22H單元中存放著數(shù)據(jù)40H,22H單元的D0位的位地址為10H,執(zhí)行上述指令后(22H)=41H。MOV32H,C;32H←進(jìn)位位CORLC,32H;C←C∨32H單片機(jī)原理及應(yīng)用寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址MOVCA,@A+DPTR目的地寄存器操作數(shù)內(nèi)部RAM3AH65H3AH基址寄存器12H變址寄存器34H內(nèi)部RAM46HXXHADPTRPC46H單片機(jī)原理及應(yīng)用目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址基址+變址尋址相對(duì)尋址XXH位尋址操作數(shù)SJMP54HPC+54HPC2002H······2002H=2056HPC2056H單片機(jī)原理及應(yīng)用寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址20H······27H21H28H21H20H100000000如果想使27H單元的D5位置1,該怎么辦呢?單片機(jī)原理及應(yīng)用單元地址2FH2EH2DH2CH2BH2AH29H28H
26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07
MSB
位地址
LSB7E766E665E564E46
362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44
342C241C140C047B736B635B534B43
332B231B130B037A726A625A524A42
322A221A120A027971696159514941
312921191109017870686058504840
30282018100800位尋址地址表例:SETB3DH
3D
3C
3B3F
3E3A
393827H單片機(jī)原理及應(yīng)用寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對(duì)尋址位尋址SETB3DH20H······27H21H28H21H20H000000010單片機(jī)原理及應(yīng)用指令描述約定符號(hào)含義Rn表示當(dāng)前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1#data表示8位立即數(shù),即00H~FFH#data16表示16位立即數(shù),即0000H~FFFFHaddr16表示16位地址,用于64K范圍內(nèi)尋址addr11表示11位地址,用于2K范圍內(nèi)尋址direct8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能寄存器的地址Rel帶符號(hào)的8位偏移量(-128~+127)Bit位尋址區(qū)的直接尋址位(X)X地址單元中的內(nèi)容,或X作為間接尋址寄存器時(shí)所指單元的內(nèi)容←將←后面的內(nèi)容傳送到前面去單片機(jī)原理及應(yīng)用MCS-51的指令1數(shù)據(jù)傳送指令(29條)
2算術(shù)運(yùn)算指令(24條)3邏輯運(yùn)算指令(24條)4控制轉(zhuǎn)移指令(17條)5位操作指令(17條)6常用偽指令(17條)
學(xué)習(xí)MCS—51單片機(jī)的指令系統(tǒng)應(yīng)從指令的格式、功能、適用的尋址方式、運(yùn)用等幾方面著手。單片機(jī)原理及應(yīng)用3.2指令系統(tǒng)及應(yīng)用CYAcF0RS1RS0OVF1PPSW單片機(jī)原理及應(yīng)用目的地址源地址數(shù)據(jù)MOV<目的操作數(shù)>,<源操作數(shù)>MOVA,#20H,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data20HA1數(shù)據(jù)傳送指令(29條)
——8位數(shù)據(jù)傳送指令(15條)
單片機(jī)原理及應(yīng)用練習(xí)1
設(shè)內(nèi)部RAM中33H單元中內(nèi)容為44H,34H單元中內(nèi)容為0AFH,R0中內(nèi)容為33H,R1中內(nèi)容為00H,給出以下每一條指令執(zhí)行后A中的值和PSW中P的值。 MOVA,#34H MOVA,34H MOVA,R1 MOVA,@R0
單片機(jī)原理及應(yīng)用練習(xí)2設(shè)內(nèi)部RAM30H單元中內(nèi)容為52H,指出以下指令執(zhí)行順次時(shí)的結(jié)果。
MOVA,#30H MOVA,30H MOVR0,#30H MOVA,@R0 MOV30H,#30H單片機(jī)原理及應(yīng)用——16位數(shù)據(jù)傳送指令(1條)
以數(shù)據(jù)指針DPTR為目的操作數(shù),把16位數(shù)據(jù)送入DPTR
MOVDPTR,#data16 MOVDPTR,#0A5FFH單片機(jī)原理及應(yīng)用——外部數(shù)據(jù)傳送指令(4條)
MOVX<目的操作數(shù)>,<源操作數(shù)>,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA單片機(jī)原理及應(yīng)用MOVC查表指令MOVCA,@A+PC;(A+PC)AMOVCA,@A+DPTR;(A+DPTR)A基址寄存器加變址寄存器間接尋址 以十六位PC或DPTR作為基址寄存器,以8位累加器A作為變址寄存器,兩內(nèi)容相加形成16位地址,此尋址方式常用于查表。單片機(jī)原理及應(yīng)用1)字節(jié)交換指令(3條)
——交換和查表類指令(9條)
,AXCHdirectRn@RidirectARn@Ri2)低半字節(jié)交換指令(1條)
XCHDA,@Ri3)累加器A中高4位和低4位交換(1條)
SWAPA4)查表指令(2條)
MOVCA,@A+PCMOVCA,@A+DPTR5)堆棧操作指令(2條)
PUSHdirectPOPdirect單片機(jī)原理及應(yīng)用3.2.1數(shù)據(jù)傳送類指令4)交換指令 XCHA,Rn XCHA,@Ri XCHA,direct XCHDA,@Ri SWAPA若A=0ABHR1=045H(44H)=0EFH(45H)=0CDH分別執(zhí)行XCHA,R1XCHA,@R1XCHA,44H XCHDA,@R1SWAPA單片機(jī)原理及應(yīng)用1.MOVA,#1000H ;A←1000H2.MOVXA,1000H ;A←(1000H)片外RAM3.MOVCA,1000H ;A←(1000H)片外ROM4.MOVX60H,A ;片外RAM(60H)←A5.MOVR0,60H ;片內(nèi)RAM:(61H)←(60H) MOV61H,@R06.XCHR1,R2 ;R1←→R27.MOVXDPTR,#2000H;DPTR←2000H8.MOVX60H,@DPTR ;片內(nèi)RAM←片外RAM9.MOVR1,R2 ;R1←R2下列指令是否錯(cuò)誤,如錯(cuò)請(qǐng)改正:?jiǎn)纹瑱C(jī)原理及應(yīng)用3.2指令系統(tǒng)及應(yīng)用5)堆棧指令
進(jìn)棧PUSHdirect 1.SP+1送SP 2.(direct)送(SP)若當(dāng)前SP=60H(30H)=0ABH執(zhí)行PUSH30H產(chǎn)生的結(jié)果為:
出棧 POPdirect 1.(SP)送(direct)2.SP-1送SP若(65H)=091H(64H)=0A1H(63H)=0B1H(32H)=0C1H當(dāng)前SP=64H,執(zhí)行POP32H結(jié)果為:?jiǎn)纹瑱C(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令1)不帶進(jìn)位位的加法指令 ADDA,Rn ADDA,direct ADDA,@Ri ADDA,#data影響CYAcOVP例:A=85HR0=20H(20H)=0AFH執(zhí)行指令 ADDA,@R0
10000101A結(jié)果:A=34HCY=1 +) 10101111(20H) Ac=1OV=1P=1 (1) 00110100 單片機(jī)原理及應(yīng)用directdirect2算術(shù)運(yùn)算類指令(24條)
——加法指令(8條)
A,Rn@Ri#dataADDRn@Ri#datadirectdirectA,Rn@Ri#dataADDCRn@Ri#data——減法指令(4條)
directdirectA,Rn@Ri#dataSUBBRn@Ri#dataADDCA,B;(A+B+CY→A)SUBBA,B;(A–B–
CY→A)單片機(jī)原理及應(yīng)用3.2指令系統(tǒng)及應(yīng)用3.2.2算術(shù)運(yùn)算類指令1)不帶進(jìn)位位的加法指令 ADDA,Rn ADDA,direct ADDA,@Ri ADDA,#data影響CYAcOVP例:A=53HR0=0FCH執(zhí)行指令 ADDA,R0 01010011結(jié)果:A=4FHCY= +) 11111100 Ac=OV=P= (1) 01001111 單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令2)帶進(jìn)位位的加法指令 ADDCA,Rn ADDCA,direct ADDCA,@Ri ADDCA,#data影響CYAcOVP例:A=85HR0=20H(20H)=0FFHCY=1執(zhí)行指令 ADDA,@R0
結(jié)果:A=84HCY=1 Ac=1OV=0P=1 思考:如何實(shí)現(xiàn)雙字節(jié)數(shù)相加?單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令3)帶進(jìn)位位的減法指令 SUBBA,Rn SUBBA,direct SUBBA,@Ri SUBBA,#data影響CYAcOVP例:A=0C9HR2=54HCY=1執(zhí)行指令 SUBBA,R2
11001001結(jié)果:A=74HCY=0 01010100 Ac=0OV=1P=0 -) 1 01110100 思考:如何實(shí)現(xiàn)雙字節(jié)數(shù)相減?單片機(jī)原理及應(yīng)用BCD碼:00110100——BCD碼調(diào)整指令(1條)
DAA注意:DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法指令。十進(jìn)制二進(jìn)制BCD碼012345678910
11
12
13
14
15000000010010001101000101011001111000100110101011110011011110111100000001001000110100010101100111100010010001000000010001000100100001001100010100000101011816+34十進(jìn)制0001100000010110+BCD碼001011100011010000101110-00000110差6單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令十進(jìn)制調(diào)整指令
DAA只能跟在加法指令后,將A中結(jié)果調(diào)整為BCD碼。例:執(zhí)行指令 MOVA,#56H MOVR5,#67H ADDA,R5 DAA結(jié)果A=23HCY=1其它不變化單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令4)加1指令(增量指令) INCA INCRn INCdirect INC@Ri INCDPTR例: A=0FFH執(zhí)行指令 INCA 結(jié)果?例 R0=09H R2=10H執(zhí)行指令 INCR0
INC R1 結(jié)果?單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令減1指令
DECA DECRn DECdirect DEC@Ri例:A=0FHR7=19H(30H)=00HR1=40H(40H)=0FFH分別執(zhí)行指令DECADECR7DEC30HDEC@R1結(jié)果A=0EHP=1 R7=18H; (30H)=0FFH (40H)=0FEH單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令乘法指令
MULAB把A和B中的無(wú)符號(hào)數(shù)相乘,低字節(jié)存于A中, 高字節(jié)存于B中。CY位總清零,積大于0FFH,置位OV例:執(zhí)行指令 MOVA,#50H MOVB,#0A0H MULAB結(jié)果A=00HB=32H0V=1CY=0其它不變化思考:如何實(shí)現(xiàn)雙字節(jié)數(shù)相乘?單片機(jī)原理及應(yīng)用3.2.2算術(shù)運(yùn)算類指令除法指令
DIVAB把A和B中的無(wú)符號(hào)數(shù)相除,執(zhí)行指令后,商 存于A中,余數(shù)存于B中,CY、OV均清零。除 數(shù)為零時(shí),A、B內(nèi)容不確定,并置位OV例:執(zhí)行指令 MOVA,#0FBH MOVB,#12H DIVAB結(jié)果A=0DHB=11H0V=0CY=0其它不變化單片機(jī)原理及應(yīng)用邏輯及移位類指令
——邏輯與指令(6條)
助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期ANLA,direct01010101directAA∧direct按位相與1ANLA,Rn01011rrrAA∧Rnn=0~7rrr=000~1111ANLA,@Ri0101011iAA∧(Ri)i=0,11ANLA,#data01010100dataAA∧#data
1ANLdirect,A01010010direct(direct)(direct)∧A不影響PSW的P標(biāo)志1ANLdirect,#data01010011directdata(direct)(direct)∧#data不影響PSW的P標(biāo)志2單片機(jī)原理及應(yīng)用——邏輯或指令(6條)
01000011directdata助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期ORLA,direct01000101directAA∨direct按位相或1ORLA,Rn01001rrrAA∨Rnn=0~7,rrr=000~1111ORLA,@Ri0100011iAA∨(Ri)i=0,11ORLA,#data01000100dataAA∨#data
1ORLdirect,A01000010direct(direct)(direct)∨A不影響PSW的P標(biāo)志1ORLdirect,#data(direct)(direct)∨#data不影響PSW的P標(biāo)志2單片機(jī)原理及應(yīng)用——邏輯異或指令(6條)
助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期XRLA,direct01100101directAA(direct)按位相異或1XRLA,Rn01101rrrAARnn=0~7,rrr=000~1111XRLA,@Ri0110011iAA(Ri)i=0,11XRLA,#data01100100dataAA#data
1XRLdirect,A01100010direct(direct)(direct)A不影響PSW的P標(biāo)志1XRLdirect,#data01100011directdata(direct)(direct)#data不影響PSW的P標(biāo)志2單片機(jī)原理及應(yīng)用3.2.3邏輯運(yùn)算類指令
2)兩個(gè)操作數(shù)的邏輯操作指令邏輯與ANL、邏輯或ORL、邏輯異或XRL例: MOVA,#38H MOVR0,#0FH ANLA,R0結(jié)果:A=?例:將P1口低3位設(shè)置位輸入 ORLP1,03HORLP1,#03HORLP1,07HORLP1,#07H單片機(jī)原理及應(yīng)用——累加器A清0和取反指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期CLRA11100100A00HA中內(nèi)容清0,影響P標(biāo)志1CPLA11110100A中內(nèi)容按位取反,影響P標(biāo)志1AA單片機(jī)原理及應(yīng)用RLARRARLCARRCAA.0A.7A.0A.7A.0A.7A.0A.7CYCY——循環(huán)移位指令單片機(jī)原理及應(yīng)用2.4控制轉(zhuǎn)移類指令
——無(wú)條件轉(zhuǎn)移指令(4條)1)長(zhǎng)轉(zhuǎn)移指令:LJMP0AAAAH;AAAAHPCPC=0000HPC=AAAAH0000H0001H······AAA9HAAAAH0002H假設(shè)執(zhí)行該指令前,PC的值為0000H。注意:該指令可以轉(zhuǎn)移到64KB程序存儲(chǔ)器中的任意位置。單片機(jī)原理及應(yīng)用PC高5位(保持不變)PC低11位A10A9A800001A7A6A5A4A3A2A1A0操作數(shù)(第二字節(jié))11位轉(zhuǎn)移地址的形成示意圖程序計(jì)數(shù)器PC2)絕對(duì)轉(zhuǎn)移指令A(yù)JMPaddr11;PC+2PC,addr11PC.10~PC.0操作碼(第一字節(jié))單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
1)無(wú)條件轉(zhuǎn)移指令長(zhǎng)跳轉(zhuǎn)指令:LJMPaddr16把操作數(shù)分別裝進(jìn)PC的高字節(jié)和低字 節(jié)??梢蕴D(zhuǎn)至64KBROM的任何地方。短跳轉(zhuǎn):AJMPadd11在此指令2KB范圍內(nèi)跳轉(zhuǎn),即在頁(yè)內(nèi)跳轉(zhuǎn) 實(shí)際使用時(shí),一般采用符號(hào)地址,即標(biāo)號(hào)。相對(duì)轉(zhuǎn)移指令:SJMPrelPC+2+rel送PC,在前128B至后127B間 跳轉(zhuǎn)。單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
2)散轉(zhuǎn)指令(基址加變址寄存器間接轉(zhuǎn)移指令)
JMP@A+DPTRA+DPTR送PC形成16位跳裝目的地址。 常用于按鍵等轉(zhuǎn)移控制。3)條件轉(zhuǎn)移指令 以跳裝指令的下一條指令為中心,256B范圍內(nèi)跳轉(zhuǎn)。當(dāng)條件 滿足時(shí)執(zhí)行跳轉(zhuǎn)。一、測(cè)試條件符合轉(zhuǎn)移指令
JZrel 如果A中為0,則跳轉(zhuǎn) JNZrel 如果A中不為0,則跳轉(zhuǎn)
單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
3)條件轉(zhuǎn)移指令
JCrel CY位為1,執(zhí)行跳轉(zhuǎn)
JNCrel CY位為1,執(zhí)行跳轉(zhuǎn) JBbit,rel 字節(jié)尋址位為1,執(zhí)行跳轉(zhuǎn) JNBbit,rel 字節(jié)尋址位為0,執(zhí)行跳轉(zhuǎn) JBCbit,rel 字節(jié)尋址位為1,執(zhí)行跳轉(zhuǎn),并清0此位單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
3)條件轉(zhuǎn)移指令 比較不等轉(zhuǎn)移指令
CJNEA,direct,rel CJNEA,#data,rel CJNERn,#data,rel CJNE@Ri,#data,rel比較兩操作數(shù)的大小,如果值不等,則轉(zhuǎn)移,如果第一操作數(shù)小于第二操作數(shù),還要CY位置1,否則CY清0。整個(gè)操作不影響兩操作數(shù)內(nèi)容。單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
3)條件轉(zhuǎn)移指令比較不等轉(zhuǎn)移指令例: 根據(jù)A的內(nèi)容大于60H、小于60H、等于60H三種情況作不同的處理。
CJNEA,#60H,NEQ ;A不等于60H轉(zhuǎn)移
EQ: …………. ;A=60H處理程序
………….. NEQ:JCLOW
………….. ;A>60H處理程序
LOW:………… ;A<60H處理程序
單片機(jī)原理及應(yīng)用3.2.4控制轉(zhuǎn)移類指令
3)條件轉(zhuǎn)移指令 減一不等于0轉(zhuǎn)移指令
DJNZRn,rel DJNZdirect,rel 將源操作數(shù)Rn或(direct)減一,如果值不等0,則轉(zhuǎn)移。 此指令使得允許以RAM單元用作程序循環(huán)計(jì)數(shù)器。例:延時(shí)程序 DELAY: MOV30H,#03H DEL0: MOV31H,#0F0H DEL1: DJNZ31H,DEL1 DJNZ30H,DEL0
思考:如何用DJNZ指令,將內(nèi)部RAM區(qū)域字節(jié)地址20H~30H清零?單片機(jī)原理及應(yīng)用3.2.5位操作類指令
1)位變量傳送指令 MOVC,bit MOVbit,C例: 執(zhí)行以下兩條指令 MOVC,06H MOVP1.0,C2)位變量修改指令 CLRC CLRbiteg.CLR27H;(24H).70 CPLC CPLbit SETBC SETBbit eg.SETBP1.7P1.71單片機(jī)原理及應(yīng)用3.2.5位操作類指令
3)位變量邏輯操作指令
邏輯與 ANLC,bit ANLbit,C
邏輯或 ORLC,bit ORLC,/bit 斜線“/”表示邏輯非單片機(jī)原理及應(yīng)用3.2.5調(diào)用返回指令
短調(diào)用 ACALLaddr11 PC+2PCL入(SP+1)PCH入(SP+2),即SP=SP+2長(zhǎng)調(diào)用 LCALL
addr16 兩者的區(qū)別在于所調(diào)用程序所在地址范圍不同,前者在同一頁(yè)面地址內(nèi)調(diào)用,后者可在64K范圍內(nèi)調(diào)用。返回指令: RET在子程序結(jié)尾,必須是此指令,才能從子程序中返回至主程序例:若SP=62H,(62H)=07H,(61H)=30H執(zhí)行
RET結(jié)果:SP=60HPC=0730H單片機(jī)原理及應(yīng)用3.2.5調(diào)用返回指令
中斷返回指令: RETI在中斷子程序結(jié)尾,必須是此指令,才能從子程序中返回至主程序,并清除相應(yīng)的中斷寄存器。3.2.6空操作指令
NOP3.2.7偽指令
ORG定位偽指令 EQU END 匯編結(jié)束 BIT DB DW DS單片機(jī)原理及應(yīng)用將00H~0FH這16個(gè)數(shù)順序地置入片內(nèi)RAM20H~2FH單元中。
方案一
MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0DJNZR7,LOOPSJMP$還有什么方法實(shí)現(xiàn)循環(huán)的終止?單片機(jī)原理及應(yīng)用方案二MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$單片機(jī)原理及應(yīng)用方案三
MOVR0,#20H MOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0DECAJNZLOOPSJMP$單片機(jī)原理及應(yīng)用方案四
MOVR0,#20H MOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0SUBBA,#01HJNCLOOPSJMP$單片機(jī)原理及應(yīng)用2.5位操作類指令單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07
MSB
位地址
LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區(qū)位地址表單片機(jī)原理及應(yīng)用助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期MOVC,bit10100010CYbit位傳送指令,結(jié)果影響CY標(biāo)志2MOVbit,C10010010bitCY位傳送指令,結(jié)果不影響PSW2位置位和位清零指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期CLRC11000011CY0位清0指令,結(jié)果影響CY標(biāo)志1CLRbit11000010bitbit0位清0指令,結(jié)果不影響PSW1SETBC11010011CY1位置1指令,結(jié)果影響CY標(biāo)志1SETBbitbit1位置1指令,結(jié)果不影響PSW111010010bit位傳送指令單片機(jī)原理及應(yīng)用位運(yùn)算指令助記符格式機(jī)器碼(B)相應(yīng)操作指令說(shuō)明機(jī)器周期ANLC,bit10000010bitCYCY∧bit位與指令2ANLC,/bit10110010bit位與指令2ORLC,bit01110010bitCYCY∨bit位或指令2ORLC,/bit10100010bit位或指令2CPLC10110011位取反指令2CPLbit10110010位取反指令,結(jié)果不影響CY2CYCY∧bitCYCY∨bitCYCYbitbit助記符格式機(jī)器碼(B)相應(yīng)操作機(jī)器周期JBbit,rel00100000bitrel若bit=1,則PCPC+rel,否則順序執(zhí)行2JNBbit,rel00110000bitrel若bit=0,則PCPC+rel,否則順序執(zhí)行2JBCbit,rel00010000bitrel若bit=1,則PCPC+rel,bit0,否則順序執(zhí)行2位轉(zhuǎn)移指令單片機(jī)原理及應(yīng)用3.2.5調(diào)用返回指令
中斷返回指令: RETI在中斷子程序結(jié)尾,必須是此指令,才能從子程序中返回至主程序,并清除相應(yīng)的中斷寄存器。3.2.6空操作指令
NOP3.2.7偽指令
ORG 定位偽指令 EQU 符號(hào)定義偽指令 END 匯編結(jié)束
DB 定義字節(jié)數(shù)據(jù)偽指令 DW 定義字?jǐn)?shù)據(jù)偽指令 DS 定義空間偽指令單片機(jī)原理及應(yīng)用例1:查表子程序:多字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)成ASCII碼入口:R0內(nèi)裝有16進(jìn)制數(shù)低位地址 R2內(nèi)裝此多字節(jié)十六進(jìn)制數(shù)的字節(jié)數(shù)出口:R1內(nèi)裝有ASCII數(shù)低位地址HEXASC: MOVA,@R0 MOVCA,@A+PC ANLA,#0FH MOV@R1,A ADDA,#16 INCR0 MOVCA,@A+PC INCR1 MOV@R1,A DJNZR2,HEXASC INCR1 DECR1 MOVA,@R0 RET SWAPA ASCTAB:DB“0,1,2,3,4,5,6,7,8,9” ANLA,#0FH DB“A,B,C,D,E,F” ADDA,#07H單片機(jī)原理及應(yīng)用例2:如果Xi均為單字節(jié)數(shù),按順序存放于內(nèi)RAM從50H開(kāi)始的單元中,n存放于R2中,現(xiàn)求此n個(gè)數(shù)之和,放于R3R4中NSU: MOVR3,#0 INCR0 MOVR4,#0 DJNZR2,LOOP MOVR0,#50 RETLOOP:MOVA,R4 ADDA,@R0 MOVR4,A CLRA ADDCA,R3 MOVR3,A
思考,如果是8個(gè)單字節(jié)數(shù),如何計(jì)算平均?單片機(jī)原理及應(yīng)用例3:多重循環(huán),50毫秒延時(shí)(12MHz晶振)最簡(jiǎn)單的多重循環(huán)為由DJNZ指令構(gòu)成的軟件延時(shí)程序DEL: MOVR7,#200 ;1DEL1: MOVR6,#125 ;1DEL2:DJNZR6,DEL2 ;2 DJNZR7,DEL1 ;2 RET 延時(shí)1+(1+2×R6+2)×R7+2=50,203uS注意:用軟件延時(shí)時(shí),不允許有中斷,否則將嚴(yán)重的影響定時(shí)的準(zhǔn)確性。改為:DEL: MOVR7,#200 ;1 DEL1:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 32507-2024電能質(zhì)量術(shù)語(yǔ)
- GB/T 45143-2024造船與海上結(jié)構(gòu)物氣脹式救生筏材料
- 二零二五年度食品出口銷售合同標(biāo)準(zhǔn)范本3篇
- 二零二五年節(jié)能照明設(shè)備銷售合作協(xié)議3篇
- 二零二五版建筑廢棄物資源化利用與處理合同3篇
- 二零二五年度汽車買賣及售后服務(wù)合同范本3篇
- 二零二五版新型采購(gòu)監(jiān)控設(shè)備采購(gòu)與維護(hù)服務(wù)協(xié)議3篇
- 2025年國(guó)有企業(yè)廠長(zhǎng)任期目標(biāo)責(zé)任書(shū)及薪酬激勵(lì)機(jī)制合同3篇
- 二零二五年度高空橋梁檢修作業(yè)安全協(xié)議書(shū)2篇
- 二零二五版技術(shù)專利權(quán)轉(zhuǎn)讓與產(chǎn)業(yè)鏈協(xié)同創(chuàng)新與市場(chǎng)拓展服務(wù)協(xié)議3篇
- TSDPIA 05-2022 寵物貓砂通用技術(shù)規(guī)范
- 驗(yàn)貨報(bào)告范本(英文版)
- 理想氣體熱力過(guò)程
- 2022度機(jī)構(gòu)編制重要事項(xiàng)的報(bào)告【3篇】
- GB/T 25772-2010滾動(dòng)軸承鐵路客車軸承
- GB 31247-2014電纜及光纜燃燒性能分級(jí)
- 專利評(píng)估報(bào)告模板
- 士卓曼種植系統(tǒng)外科植入流程課件
- 二年級(jí)下冊(cè)《一起長(zhǎng)大的玩具》導(dǎo)讀教學(xué)-一場(chǎng)別樣的童年之旅
- 二尖瓣狹窄并關(guān)閉不全共17張課件
- 心臟瓣膜病護(hù)理課件
評(píng)論
0/150
提交評(píng)論