單片機課件第03章_第1頁
單片機課件第03章_第2頁
單片機課件第03章_第3頁
單片機課件第03章_第4頁
單片機課件第03章_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 51的基本指令共111條,按指令在程序存儲器所占的字節(jié)來分,其中:(1)單字節(jié)指令49條;(2)雙字節(jié)指令45條;(3)三字節(jié)指令17條。在實際編程中,在實際編程中,“relrel” ” 通常用標號代替通常用標號代替例:例:SJMP LOOP1SJMP LOOP1例:例:2000H:SJMP 08H ; 原原PC值為值為2000H;執(zhí)行這條指令后的當前;執(zhí)行這條指令后的當前PC值值為為2002H,rel為為08H。2002H+08H=200AH,轉(zhuǎn)移目,轉(zhuǎn)移目的地址為的地址為200AH,程序就跳轉(zhuǎn)至,程序就跳轉(zhuǎn)至200AH去執(zhí)行了。去執(zhí)行了。右圖為右圖為SJMP 08H相對相對尋址示意圖。尋

2、址示意圖。寄存器尋址寄存器尋址R0R0R7R7、A A、B B、C(C(位位) )、DPTRDPTR等等直接尋址直接尋址內(nèi)部內(nèi)部128128字節(jié)字節(jié)RAMRAM、特殊功能寄存、特殊功能寄存器器寄存器間接尋址寄存器間接尋址片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器器立即數(shù)尋址立即數(shù)尋址程序存儲器中的立即數(shù)程序存儲器中的立即數(shù)基址寄存器加變址寄存器間基址寄存器加變址寄存器間接尋址接尋址讀程序存儲器固定數(shù)據(jù)和程序散讀程序存儲器固定數(shù)據(jù)和程序散轉(zhuǎn)轉(zhuǎn)相對尋址相對尋址程序存儲器相對轉(zhuǎn)移程序存儲器相對轉(zhuǎn)移位尋址位尋址內(nèi)部內(nèi)部RAMRAM中的可尋址位、中的可尋址位、SFRSFR中的中的可尋址位

3、可尋址位【例】【例】 若若R0=40H,(30H)=60H,(40H)=50H MOV A,R0 ;將工作寄存器;將工作寄存器R0中的數(shù)據(jù)傳送中的數(shù)據(jù)傳送 至至A中,中,A=40H MOV A,R0 ;將以;將以R0中內(nèi)容為地址的存儲單中內(nèi)容為地址的存儲單 元中的數(shù)據(jù)送至元中的數(shù)據(jù)送至A中中 A=50H MOV A,30H ;將直接地址;將直接地址30H存儲單元中存儲單元中 的數(shù)據(jù)傳送至的數(shù)據(jù)傳送至A中,中,A=60H MOV A,#30H ;將立即數(shù);將立即數(shù)#30H送入送入A中,中, A=30H【例】:當(A)=30H時, 執(zhí)行 MOV R6,A ;(A)R6 結(jié)果: (R6)=30H【例

4、】:當(70H)=10H時, 執(zhí)行 MOV R6,70H ;(70H)R6 結(jié)果: (R6)=10H【例】:執(zhí)行 MOV R6,#78H ;78HR6 結(jié)果: (R6)=78H【例】 當 A=30H 時, 執(zhí)行 MOV 55H,A ;(A)55H 結(jié)果:(55H)=30H【例】:當(A)=30H時,(R0)=44H 執(zhí)行 MOV R0,A ;(A)(R0) 結(jié)果:(44H)=30H【例2】:當(R0)=33H 執(zhí)行 MOV R0,#22H ;22H(R0) 結(jié)果:(33H)=22H【例】: 執(zhí)行 MOV DPTR,#1234H ;1234HDPTR 結(jié)果: (DPTR)=1234H 其中:DP

5、H=12H,DPL=34H【例】【例】 PUSH 30H;(;(30H)=2BH,操作過程如圖,操作過程如圖【例】【例】 POP A;(;(A)=2BH,操作過程如圖,操作過程如圖【例】:(DPTR)=1F62H,(1F62H)=70H,執(zhí)行下列指令: MOVX A,DPTR ;(DPTR)A 結(jié)果:(A)=70H【例】:(R0)=6FH,(A)=05H,執(zhí)行下列指令: MOVX Ri,A ;(A)(R0) 結(jié)果:(6FH)=05H問題:地址為6FH的存儲單元屬于片內(nèi)還是片外?【例】: (A)=30H,執(zhí)行地址1000H處的指令 1000H: MOVC A,A+PC 本指令占用一個字節(jié),下一條

6、指令的地址為1001H,(PC)=1001H再加上A中的30H,得1031H,結(jié)果將程序存儲器中1031H的內(nèi)容送入A。 (2) MOVC A,A+DPTR 操作過程:以DPTR作為基址寄存器,A的內(nèi)容作為無符號數(shù)和DPTR的內(nèi)容相加得到一個16位的地址,把由該地址指出的程序存儲器單元的內(nèi)容送到累加器A。 【例】:(DPTR)=8100H (A)=40H 執(zhí)行指令 MOVC A,A+DPTR 結(jié)果將程序存儲器中8140H單元內(nèi)容送入累加器A中。9、字節(jié)交換指令:XCH A,Rn ; (A)(Rn),n=07XCH A,direct ; (A)(direct)XCH A,Ri ; (A)(Ri)

7、),i=0,1 操作:將累加器A的內(nèi)容和源操作數(shù)的內(nèi)容相互交換。 源操作數(shù)有寄存器尋址、直接尋址、寄存器間接尋址等方式。問題:本指令是否可以采用立即尋址方式。 例如:XCH A,#88H 結(jié)論:不行 結(jié)果:(A)=08H,(R7)=80H XCH A,40H ;(A)(40H) 結(jié)果:(A)=F0H,(40H)=08H XCH A,R0 ;(A)(R0) 結(jié)果:(A)=0FH, (30H)=F0H 最終執(zhí)行結(jié)果: (A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H(A)=5EH,(60H)=39H。 MOV60H,#30HMOVR0,#60HMOVA,R0MOVR1,AM

8、OV40H,R1MOV60H,30H;立即數(shù)30H送60H單元,即:30H60H;立即數(shù)60H送R0,即:60HR0;間址,60H單元內(nèi)容送A,即:30HA;A的內(nèi)容送R1,即:30HR1;間址,30H單元內(nèi)容送40H,即:50H40H;30H單元內(nèi)容送60H單元,即:50H60H程序執(zhí)行結(jié)果:(A)=30H,(R0)=60H,(R1)=30H, (60H)=50H,(40H)=50H, (30H)=50H內(nèi)容不變【例】【例】 按下列要求傳送數(shù)據(jù):設(shè)按下列要求傳送數(shù)據(jù):設(shè)ROM(2000H)=ABHROM(2000H)=ABH (1)ROM 2000H (1)ROM 2000H單元數(shù)據(jù)送內(nèi)單元

9、數(shù)據(jù)送內(nèi)RAM 10HRAM 10H單元;單元; (2)R0M 2000H(2)R0M 2000H單元數(shù)據(jù)送外單元數(shù)據(jù)送外RAM 80HRAM 80H單元;單元; (3)ROM 2000H(3)ROM 2000H單元數(shù)據(jù)送外單元數(shù)據(jù)送外RAM 1000HRAM 1000H單元;單元;解解(1)(1):MOV DPTR,#2000H ;置基址2000H,DPTR=2000H MOV A,#00H ;置變址0,A=00H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH MOV 10H,A ;存內(nèi)RAM 10H單元,(10H)=ABH解解(2)(2):MOV DPTR,#1FFFH

10、;置基址1FFFH,DPTR=1FFFH MOV A,#01H ;置變址01H,A=01H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH MOV R0,#80H ;置外RAN間址,R0=80H MOVX R0,A ;寫外RAM 80H,外RAM(80H)=ABH解解(3)(3):MOV DPTR,#2000H ;置基址2000H,DPTR=2000H MOV A,#00H ;置變址0,A=00H MOVC A,A+DPTR ;讀ROM 2000H,A=ABH MOV DPH,1OH ;修改外RAN地址,DPTR=1000H MOVX DPTR,A ;寫外RAM 1000H,外

11、RAM(1000H)=ABH【例】【例】 已知已知ROMROM中存有中存有0909的平方表,首地址為的平方表,首地址為2000H2000H,試根,試根據(jù)累加器據(jù)累加器A A中的數(shù)值查找對應(yīng)的平方值,存入內(nèi)中的數(shù)值查找對應(yīng)的平方值,存入內(nèi)RAM 30HRAM 30H。( (設(shè)設(shè)A=3)A=3) 解:解:若用若用DPTRDPTR作為基址寄存器,可編程如下:作為基址寄存器,可編程如下:1000H1000H:MOV DPTRMOV DPTR,#2000H #2000H ;置;置ROMROM平方表首地址平方表首地址 MOVC AMOVC A,A+DPTR A+DPTR ;A+2000H=2003H(A+

12、2000H=2003H(設(shè)設(shè)A=3)A=3), ;A=(2003H)=09HA=(2003H)=09H MOV 30H MOV 30H,A A ;平方值存入內(nèi);平方值存入內(nèi)RAM 30HRAM 30H中中 2000H2000H:00H 00H ;平方表:;平方表:0 02 2=0=02001H2001H:01H 01H ; 1 12 2=1 =1 2002H2002H:04H 04H ; 2 22 2=4=42003H2003H:09H 09H ; 3 32 2=9=92004H2004H:10H 10H ; 4 42 2=16=16,16=10H16=10H 2009H2009H:51H 5

13、1H ; 9 92 2=81=81,81=51H81=51H結(jié)果為:(A)=4FH,Cy=1,Ac=0,OV=0,P=1 注意:上面的運算中,由于位6和位7同時有進位,所以標志位OV=0。結(jié)果為:(A)=34H,Cy=1,Ac=1,OV=1,P=1 注意:由于位7有進位,而位6無進位,所以標志位OV=1 結(jié)果為:(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1的位數(shù)為奇數(shù)) 例 (A)=C9H ,(R2)=54H,Cy=1,執(zhí)行指令: SUBB A,R2 1100 1001 B -)0101 0100 B -) 1 B 0111 0100 B結(jié)果:(A)=74H,Cy=0,Ac=0

14、,OV=1(位6向位7借位)試編寫計算EE33H-A0E0H的程序,結(jié)果送51H(高)、50H(低):CLRCMOVA,#33HSUBBA,#0E0HMOV50H,AMOVA,#0EEHSUBBA,#0A0HMOV51H,A【例】(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH執(zhí)行指令: DEC A;(A)-1ADEC R7 ;(R7)-1R7DEC 30H;(30H)-130HDEC R1 ;(R1)-1(R1)結(jié)果:(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,P=1。4右環(huán)移指令:RR A 功能:累加器A的內(nèi)容向右

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論