單片機(jī)課件6新_第1頁(yè)
單片機(jī)課件6新_第2頁(yè)
單片機(jī)課件6新_第3頁(yè)
單片機(jī)課件6新_第4頁(yè)
單片機(jī)課件6新_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理及其應(yīng)用,主講:孟慶申 河北師范大學(xué)物理學(xué)院 電子信息工程系,第四章 MCS-51指令系統(tǒng),8 控制轉(zhuǎn)移指令,1) 無(wú)條件轉(zhuǎn)移指令,A 短跳轉(zhuǎn)指令,AJMP addr11,例 KWR: AJMP addr11 如果addr11=00100000000B,標(biāo)號(hào)KWR地址為1030H,則執(zhí)行該條指令后,程序轉(zhuǎn)移到(0001000100000000B),即轉(zhuǎn)移到1100H;當(dāng)KWR為3030H時(shí),執(zhí)行該條指令后,程序轉(zhuǎn)移到3100H。,本指令可實(shí)現(xiàn)2K字節(jié)范圍內(nèi)的無(wú)條件跳轉(zhuǎn)。,該指令在運(yùn)行時(shí)先將PC+2(得到當(dāng)前 PC 值),然后將其高 5 位和指令第一字節(jié)的高三位以及指令第二字節(jié)相結(jié)合得

2、到:,(PC15 PC14 PC13 PC12 PC11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0),送入PC形成轉(zhuǎn)跳目的地址。,本指令可實(shí)現(xiàn)256字節(jié)范圍內(nèi)的無(wú)條件跳轉(zhuǎn)。該指令在運(yùn)行時(shí)先將PC+2(得到當(dāng)前PC值),然后將指令中的有符號(hào)的位移量rel加到當(dāng)前PC上,送入PC形成轉(zhuǎn)跳目的地址。轉(zhuǎn)向的目標(biāo)地址可以在這條指令前128字節(jié)到后127字節(jié)之間。,B 相對(duì)轉(zhuǎn)移指令,SJMP rel,例 KRD:SJMP PKRD,如果KRD標(biāo)號(hào)值為0100H,即SJMP這條指令的機(jī)器碼存放于0100H和0101H這兩個(gè)單元中;標(biāo)號(hào)PKRD值為0123H,即轉(zhuǎn)跳的目標(biāo)地址為012

3、3H,則指令的第二字節(jié)(相對(duì)偏移量)應(yīng)為 rel =0123H-0102H=21H,例 執(zhí)行指令: LJMP 8100H 執(zhí)行結(jié)果是使程序轉(zhuǎn)移到8100H。,C 長(zhǎng)跳轉(zhuǎn)指令,LJMP addr16,這條指令執(zhí)行時(shí)把指令的第二和第三字節(jié)分別裝入PC的高位字節(jié)和低位字節(jié)中,即無(wú)條件地轉(zhuǎn)向指定地址。,D 基寄存器加變址寄存器間接轉(zhuǎn)移指令,JMP A+DPTR,這條指令的功能是把累加器中 8 位無(wú)符號(hào)數(shù)與數(shù)據(jù)指針DPTR中的16位數(shù)據(jù)相加(模 216),結(jié)果作為下一條指令地址送入PC,不改變累加器和數(shù)據(jù)指針內(nèi)容,也不影響標(biāo)志位。,PM: MOVR1,A RL A ADD A,R1 MOV DPTR,#

4、PTMB JMP A+DPTR PTMB:LJMP PM0 LJMP PM1 LJMP PM2 LJMP PM3 LJMP PM4 LJMP PM5 LJMP PM6 LJMP PM7,例:如果累加器A中存放等處理命令編號(hào)(07),程序存貯器中存放著標(biāo)號(hào)為 PMTB的轉(zhuǎn)移表,則執(zhí)行下面的程序,將根據(jù)A內(nèi)命令編號(hào)轉(zhuǎn)向相應(yīng)的命令處理 程序:,2)條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令是依據(jù)某種特定條件而轉(zhuǎn)移的指令。條件滿足才轉(zhuǎn)移,條件不滿足時(shí)則順序執(zhí)行下面的指令。當(dāng)滿足條件時(shí),把當(dāng)前PC值與有符號(hào)的相對(duì)偏移量相加得到轉(zhuǎn)向地址。,A 測(cè)試條件符合轉(zhuǎn)移指令,JZ rel ; 如果累加器ACC為0,則執(zhí)行轉(zhuǎn)移;,J

5、NZ rel ; 如果累加器ACC不為0,則執(zhí)行轉(zhuǎn)移;,JC rel ; 如果進(jìn)位標(biāo)志CY為1,則執(zhí)行轉(zhuǎn)移;,JNC rel ; 如果進(jìn)位標(biāo)志CY為0,則執(zhí)行轉(zhuǎn)移;,JB bit , rel ;如果直接尋址的位值為1(bit)=1 ,則執(zhí)行轉(zhuǎn)移;,JNB bit , rel ;如果直接尋址的位值為0(bit)=0 ,則執(zhí)行轉(zhuǎn)移;,JBC bit , rel ;如果直接尋址的位值為1(bit)=1 ,則執(zhí)行轉(zhuǎn)移 并清“0”直接尋址位;,B 比較不相等轉(zhuǎn)移指令,CJNE A,direct, rel,CJNE A, #data, rel,CJNE Rn, #data, rel,CJNE Ri, #d

6、ata, rel,這組指令的功能是比較兩個(gè)操作數(shù)的大小。如果值不相等,則轉(zhuǎn)移。,轉(zhuǎn)移地址為:當(dāng)前PC值加相對(duì)偏移量。,注意:如果第一操作數(shù)(無(wú)符號(hào)整數(shù))小于第二操作數(shù),則置位進(jìn)位標(biāo)志位于CY;否則,清“0”CY。不影響任何一個(gè)操作數(shù)的內(nèi)容。,例 執(zhí)行下面程序后將根據(jù)A的內(nèi)容大于60H、等于60H、小于60H三種情況做不同處理:,CJNE A,#60H,NEQ ; (A)不等于60H轉(zhuǎn)移,EQ: ; (A)等于60H處理程序,NEQ:JC LOW ; (A)小于60H轉(zhuǎn)移,; (A)大于60H處理程序,LOW: ; (A)小于60H處理程序,這組指令把源操作數(shù)減1,結(jié)果回送到源操作數(shù)中去。如果結(jié)

7、果不為“0”,則轉(zhuǎn)移。源操作數(shù)有寄存器尋址和直接尋址方式。這組指令允許把內(nèi)部RAM單元用作程序計(jì)數(shù)器。,C 減1不為0轉(zhuǎn)移指令,DJNZ Rn, rel,DJNZ direct, rel,例: 延時(shí)程序:,START : SETB P1.1 DL: MOV 30H,#03H DL0: MOV 31H,#0F0H DL1: DJNZ 31H, DL1 DJNZ 30H,DL0 CPL P1.1 AJMP DL,本程序的功能是:從P1.1輸出一個(gè)方波。,3)調(diào)用和返回指令,子程序:具有一定功能的公用程序段。,子程序的特點(diǎn):參數(shù)傳遞和子程序返回。,子程序調(diào)用執(zhí)行過(guò)程: 調(diào)用子程序時(shí),把下一條指令地址

8、(當(dāng)前PC值) 保留到堆棧中,堆棧指針SP加2,子程序的起始地址 送PC,CPU轉(zhuǎn)向并執(zhí)行子程序,當(dāng)遇到返回指令時(shí), 從堆棧中取出中斷處的地址并送回到PC ,于是CPU 又回到主程序繼續(xù)執(zhí)行下去。,子程序可以被主程序多次調(diào)用。也可以在子程序中再調(diào) 用別的子程序(即子程序嵌套)。,A 短調(diào)用指令,ACALL addr11,執(zhí)行這條指令時(shí),把當(dāng)前PC值(下一條指令的地址)壓進(jìn)堆棧(先進(jìn)PCL,后進(jìn)PCH),堆棧指針SP加2。并把當(dāng)前PC值的高5位和指令第一字節(jié)的高三位以及指令第二字節(jié)相結(jié)合得到:,(PC15 PC14 PC13 PC12 PC11 a10a 9 a 8 a7 a6 a5 a4 a3

9、 a2 a1 a0),即為子程序的起始地址,并送入 PC 轉(zhuǎn)向執(zhí)行子程序。,結(jié)果: (SP)=62H,內(nèi)部RAM中堆棧區(qū)內(nèi)(61H)=25H,(62H)=01H, (PC)=0345H,例 若(SP)=60H,標(biāo)號(hào)MA值為0123H,子程序SUB位于0345H,則執(zhí)行指令:,MA:ACALL SUB,B 長(zhǎng)調(diào)用指令,LCALL addr16,執(zhí)行本指令時(shí),把當(dāng)前PC值(下一條指令的地址)壓進(jìn)堆棧(先進(jìn)PCL,后進(jìn)PCH),堆棧指針SP加2。接著把指令的第二字節(jié)和第三字節(jié)(a15a14a13a12a11a10a9a8,a7a6a5a4a3a2a1a0)分別裝入PC的高位字節(jié)和低位字節(jié),從而轉(zhuǎn)向執(zhí)

10、行子程序。,例: 若(SP)=60H,標(biāo)號(hào)START值為0100H,標(biāo)號(hào)DIR值為8100H,則執(zhí)行指令:,START: LCALL DIR,結(jié)果為: (SP)=62H,(61H)=03H,(62H)=01H, (PC)=8100H,本指令必須放在子程序的結(jié)尾。,C 返回指令, 從子程序返回指令,RET,這條指令的功能是從堆棧中退出被壓入的PC值的高字節(jié)和低字節(jié),把堆棧指針SP減2,即重新得到子程序調(diào)用指令后面的指令地址,繼續(xù)程序的運(yùn)行。,例 若(SP)=62H,(62H)=07H,(61H)=30H,則執(zhí)行 指令: RET,結(jié)果: (SP)=60H,(PC)=0730H, CPU從0730H開始執(zhí)行程序。,MAIN: MOV A, #03H ML: MOV P1, A ACALL DL MXCH: CPL AJMP ML DL: MOV R7, #64H DL1: MOV R6,#00H DL6: DJNZ R6,DL6 DJNZ R7,DL1 RET,例 : 如圖所示,在P1.0P1.3分別裝有兩個(gè)紅燈和兩個(gè)綠燈,則下面就是一種紅綠燈定時(shí)切換的程序:,D 空操作指令 NOP 該

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論