CH3 MCS-51單片機指令系統(tǒng)-5_第1頁
CH3 MCS-51單片機指令系統(tǒng)-5_第2頁
CH3 MCS-51單片機指令系統(tǒng)-5_第3頁
CH3 MCS-51單片機指令系統(tǒng)-5_第4頁
CH3 MCS-51單片機指令系統(tǒng)-5_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

自動化核心專業(yè)課單片機及接口技術Single-ChipMicrocomputer&InterfaceTechnologyCH3MCS-51單片機指令系統(tǒng)及匯編程序設計(第5講)主講人:于水娟主要內容§3-4MCS-51單片機指令系統(tǒng)3.4.4控制轉移類指令思考練習題3.4.5位操作指令3.4.4控制轉移類指令(17條)控制程序轉移指令主要是修改程序計數器PC的內容。大多不影響標志位。分四類:(一)無條件轉移指令(4條)(二)條件轉移指令(8條)(三)子程序調用與返回指令(4條)(四)空操作指令(1條)§3-4MCS-51單片機指令系統(tǒng)

1、長轉移指令LJMP addr16功能:PC←addr16

00000010a15…………a8a7…………a0指令格式:三字節(jié)(一)無條件轉移指令(4條)

程序執(zhí)行到這條指令一定要轉移!由于addr16是16位,轉移的目標地址范圍是程序存儲器的0000~FFFFH,達64KB。§3-4MCS-51單片機指令系統(tǒng)2、絕對轉移指令AJMPaddr11指令格式:雙字節(jié)

a10a9a800001a7…………a0指令中只給出要轉移的11位地址功能:①(原PC)+2→PC②PC10~0←addr11,(PC15~11)不變§3-4MCS-51單片機指令系統(tǒng)例題:LOOP:AJMPaddr11已知:addr11=00111110000B(1)當LOOP為1030H時,指令存放在1030H和1031H,指令執(zhí)行后程序轉移到?例題:LOOP:AJMPaddr11已知:addr11=00111110000B(條件同前)(2)當LOOP為3030H時,程序轉移到?3、短轉移指令(相對轉移指令)

SJMPrel

指令給出轉移地址的偏移量rel

10000000rel

PC←(原PC)+2+rel功能:指令格式:雙字節(jié):§3-4MCS-51單片機指令系統(tǒng)例1:LOOP:SJMPrel;

已知:LOOP=2000H,rel=54H

相對尋址過程如圖:正數表示正向(向前)轉移偏移量rel的含義和計算:rel是8位二進制補碼表示的帶符號數范圍:-128~+1270~+127對應表示:00H~7FH-128~-1對應表示:80H~FFH目的地址=轉移地址=(原PC)+2+rel目的地址=轉移地址=(當前PC)+rel

rel

=目的地址-(當前PC)§3-4MCS-51單片機指令系統(tǒng)例2:LOOP:SJMPrel

已知LOOP=2000H,轉移目的地址=2000H計算rel:rel=目的地址-(當前PC)=2000H-2002H=-2H(FEH)另一種匯編格式: LOOP:SJMP2000H

LOOP:SJMPrel(2000H:SJMP2000H)

執(zhí)行過程負數表示反向(向后)轉移4、長相對轉移指令(又稱散轉指令)

JMP @A+DPTR

單字節(jié)指令:

01110011功能:PC←(A)+(DPTR)DPTR內容為基址,A的內容作變址(A是8位無符號二進制數)。只要把DPTR的值固定,而給A賦以不同的值,即可實現程序的多分支轉移??纱姹姸嗟呐袆e跳轉指令?!?-4MCS-51單片機指令系統(tǒng)當(A)=0時,轉到2000H單元

當(A)=1時,轉到2002H單元例:鍵盤上有四個操作鍵,用來控制電機的運轉,請編出鍵盤譯碼程序。鍵功能鍵值處理程序正轉0ZZ反轉1FZ快速2KS慢速3MS指令表指令地址指令2000HAJMPZZ2002HAJMPFZ2004HAJMPKS2006HAJMPMS當(A)=0時,轉2000H單元

當(A)=1時,轉2002H單元MOVDPTR,#2000H;2000H為基址MOVA,#NUMB;取鍵值RLA;完成乘2操作JMP@A+DPTR;轉操作鍵處理程序AJMPZZ;轉正轉程序AJMPFZ;轉反轉程序AJMPKS;轉快速程序AJMPMS ;轉慢速程序…………2000H2002H2004H2006H由于AJMP是兩字節(jié)指令,在散轉前對A的內容乘2思考:若將AJMP換成LJMP,則如何改寫程序?(二)條件轉移指令(8條)

都是相對轉移指令條件轉移指令是:程序執(zhí)行到這條指令時若滿足條件就轉移;不滿足條件就不轉移,仍按原來順序繼續(xù)執(zhí)行下一條指令?!?-4MCS-51單片機指令系統(tǒng)1、累加器判零轉移指令(2條)

JZrel

當(A)=0,則轉移PC=(原PC)+2+rel當(A)≠0,則程序順序執(zhí)行(原PC)+2→PCJNZrel

當(A)≠0,則轉移PC=(原PC)+2+rel當(A)=0,則程序順序執(zhí)行(原PC)+2→PC

§3-4MCS-51單片機指令系統(tǒng)例題:0100H:JZ LAB1

0102H:DECA

0103H:JZ LAB2設(A)=01H,LAB1=01B0H,LAB2=0150H計算2個偏移量確定程序轉向1)rel1=01B0H-0102H=AEH2)rel2=0150H-0105H=4BH3)程序轉向LAB2=0150H2、比較不相等轉移指令〔兩數不等轉移指令〕(4條)CJNEA,direct,rel CJNEA,#data,rel CJNERn,#data,relCJNE@Ri,#data,rel

都是三字節(jié)指令!§3-4MCS-51單片機指令系統(tǒng)格式:

CJNE(左操作數),(右操作數),rel功能:(左操作數)-(右操作數)①比較兩數是否相等不相等:轉移為(原PC)+3+rel→目的PC相等:順序執(zhí)行(原PC)+3→PC②比較大小若(左操作數)>

(右操作數)則置Cy=0,否則Cy=1指令執(zhí)行后操作數不變!§3-4MCS-51單片機指令系統(tǒng)3、循環(huán)轉移指令〔減1不為0轉移指令〕(2條)操作:(Rn)-1→Rn若Rn≠0,循環(huán)轉移到(原PC)+2+rel→PC若Rn=0,順序執(zhí)行(原PC)+2→PC功能:用于控制程序的循環(huán)次數,Rn作循環(huán)次數計算器。1)DJNZRn,rel

操作碼rel

占兩個字節(jié)§3-4MCS-51單片機指令系統(tǒng)2)DJNZdirect,rel操作:(direct)-1→direct若direct≠0,循環(huán)轉移(原PC)+3+rel→PC若direct=0,順序執(zhí)行(原PC)+3→PC功能:用于控制程序的循環(huán)次數。direct作循環(huán)次數計算器。11010101directrel三個字節(jié)3、循環(huán)轉移指令(2條)〔減1不為0轉移指令〕§3-4MCS-51單片機指令系統(tǒng)例:將內部RAM從40H開始的連續(xù)20個單元的數據,傳送到外部RAM從2000H開始的連續(xù)單元中。解:ORG 1000HMOV R1,#20 ;置循環(huán)次數 MOV R0,#40H MOV DPTR,#2000H LOOP:MOV A,@R0 MOVX @DPTR,A INCR0 INCDPTR DJNZ R1,LOOP SJMP $

END思考:遇到第一個0,立刻停止傳送?(三)子程序調用和返回指令(4條)為何引入子程序?在程序設計中,常出現幾個地方都需要進行功能完全相同的處理,為減少程序編寫和調試的工作量,使某一段程序能被公用,于是引入了主程序和子程序的概念。

什么叫子程序?常把具有一定功能的公用程序段作為子程序而單獨編寫,當主程序需要引用這一子程序時,可利用調用指令CALL對子程序進行調用。在子程序末尾安排一條返回指令RET,使子程序執(zhí)行結束后能返回主程序?!?-4MCS-51單片機指令系統(tǒng)返回2返回1第2次調用第1次調用子程序DELAY主程序斷點斷點主程序調用子程序以及從子程序返回示意圖§3-4MCS-51單片機指令系統(tǒng)1、長調用指令LCALLaddr16

指令存儲格式:占3個字節(jié)指令功能:1)當前PC{斷點地址(PC+3)}壓棧;2)16位子程序入口地址addr16→PC。

※LCALL可調用程序存儲器64kB范圍內任一子程序。00010010a15…….a8a7…….a0§3-4MCS-51單片機指令系統(tǒng)例:執(zhí)行指令LCALLSUB

設:(SP)=40H,(PC)=1200H,子程序入口地址SUB為5500H。(PC)=5500H執(zhí)行結果:2、絕對調用指令ACALLaddr11

指令存儲格式:占2個字節(jié)功能:1)當前PC{斷點地址(PC+2)}壓棧;2)11位子程序入口地址addr11→PC10~0,(PC15~11)不變。※只可調用在ACALL指令后2kB范圍內的子程序。a10a9a810001a7…………a0§3-4MCS-51單片機指令系統(tǒng)例:執(zhí)行指令: ACALLSUB

設:(SP)=40H,(PC)=2200H,子程序入口地址SUB為2355H。(PC)=0010

001101010101B=2355H因為:SUB=2355H=00100

01101010101執(zhí)行結果:3、子程序返回指令:RET定義:返回指令是使CPU從子程序返回到主程序的指令。功能:從堆棧中自動彈出斷點地址(棧頂兩個連續(xù)元)→PC。PC15~8←((SP)),SP←(SP)-1PC7~0←((SP)),SP←(SP)-1§3-4MCS-51單片機指令系統(tǒng)4、中斷返回指令RETI(了解)定義:該指令除了執(zhí)行RET指令的操作外,還清除內部相應的中斷優(yōu)先級有效觸發(fā)器。因此,中斷服務程序必須以RETI為結束指令。功能:從棧頂兩個連續(xù)單元彈出斷點地址→PC清除內部相應的中斷優(yōu)先級有效觸發(fā)器§3-4MCS-51單片機指令系統(tǒng)(四)空操作指令:NOP

操作:(原PC)+1→PC功能:僅使PC加1,然后繼續(xù)執(zhí)行下條指令,無任何其它操作。00000000作用:延時程序中產生一個機器周期的延遲調試程序中用為單周期、單字節(jié)指令§3-4MCS-51單片機指令系統(tǒng)3.4.5位操作類指令(17條)MCS-51單片機內設置了獨立的布爾處理器,它具有相應的一套位操作指令。位存儲器:在進行位操作時,進位標志Cy作位累加器C。片內RAM字節(jié)地址為20H~2FH的連續(xù)128位(00H~7FH)能被8整除的SFR的83位(80H~FFH)位操作指令可實現傳送、邏輯運算、控制程序轉移等功能§3-4MCS-51單片機指令系統(tǒng)位地址的5種表示方式:直接位地址:0~255或00H~FFH。位名稱:F0(PSW的),TI(SCON的),EA(IE的)單元地址.位:25H.0→28H,20H.0→00H專用寄存器符號.位:P0.5,PSW.5偽指令定義的符號:USR:BITF0§3-4MCS-51單片機指令系統(tǒng)(一)位傳送指令(2條)MOVC,bit;(bit)→Cy MOVbit,C;(Cy)→bit 雙字節(jié)Bit是位地址,可有5種表示方式。§3-4MCS-51單片機指令系統(tǒng)(二)位置位清0指令(4條)清0:CLR C ;C←0CLR bit ;bit←0置1:SETB C ;C←1SETB bit ;bit←1§3-4MCS-51單片機指令系統(tǒng)(三)位邏輯運算指令(6條)位邏輯”與”運算ANLC,bit;(Cy)∧(bit)→CyANLC,/bit;(Cy)∧(/bit)→Cy 位邏輯”或”運算ORLC,bit ;(Cy)∨(bit)→CyORLC,/bit ;(Cy)∨(/bit)→Cy取反CPL C ;C←/(C)CPL bit ;(bit)←/(bit)§3-4MCS-51單片機指令系統(tǒng)已知:(21H)=FEH,(24H)=80H,(P1)=00HCLR CCPL 08HCLR 27HCPLCMOV 20H,CSETB P1.7(C)=(21H)=(24H)=(P1)=1FFH01H80H分析下面位操作指令順序執(zhí)行后的結果:§3-4MCS-51單片機指令系統(tǒng)例:編寫實現下列邏輯操作的程序段若(P1.0)=1,(ACC.7)=1,且(OV)=0時,將位累加器CY置1,程序如下:MOVC,P1.0ANLC,ACC.7ANLC,/OV執(zhí)行結果:當滿足給定的條件,必將CY置1。§3-4MCS-51單片機指令系統(tǒng)(四)位條件轉移指令(5條)功能:分別檢測指定位是1還是0。若條件符合,則轉移;條件不符合,則順序執(zhí)行。§3-4MCS-51單片機指令系統(tǒng)1、以CY內容為條件的轉移指令(2條)

JCrel若(Cy)=1,則轉移(原PC)+2+rel→PC若(Cy)=0,則順序執(zhí)行(原PC)+2→PCJNCrel若(Cy)=0,則轉移(原PC)+2+rel→PC若(Cy)=1,則順序執(zhí)行(原PC)+2→PC§3-4MCS-51單片機指令系統(tǒng)2、以位地址內容為條件的轉移指令(3條)(3字節(jié))

JBbit,rel若(bit)=1,則轉移(PC)+3+rel→PC若(bit)=0,則順序執(zhí)行(PC)+3→PCJNBbit,rel若(bit)=0,則轉移(PC)+3+rel→PC若(bit)=1,則順序執(zhí)行(PC)+3→PCJBCbit,rel(判位變量并清0轉移指令)若(bit)=1,則轉移(PC)+3+rel→PC且0→bit若(bit)=0,則順序執(zhí)行(PC)+3→PC§3-4MCS-51單片機指令系統(tǒng)1.將外部數據存儲器RAM從1000H開始的連續(xù)單元的數據,傳送到內部RAM從40H開始的連續(xù)單元,所傳送的數據為零時,傳送停止。 MOV DPTR,#1000H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論