C控制轉(zhuǎn)移類指令及位操作指令1101_第1頁
C控制轉(zhuǎn)移類指令及位操作指令1101_第2頁
C控制轉(zhuǎn)移類指令及位操作指令1101_第3頁
C控制轉(zhuǎn)移類指令及位操作指令1101_第4頁
C控制轉(zhuǎn)移類指令及位操作指令1101_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C控制轉(zhuǎn)移類指令及位操作指令1101C控制轉(zhuǎn)移類指令及位操作指令1101控制轉(zhuǎn)移類指令 程序的順序執(zhí)行是由PC自動加1來實(shí)現(xiàn)的,但在應(yīng)用系統(tǒng)中,往往會遇到一些情況,需要強(qiáng)迫改變程序執(zhí)行順序,比如調(diào)用子程序,比如根據(jù)檢測值與設(shè)定值的比較結(jié)果要求程序轉(zhuǎn)移到不同的分支入口等。要改變程序的執(zhí)行順序進(jìn)行分支轉(zhuǎn)向,應(yīng)通過強(qiáng)迫修正PC值得方法來實(shí)現(xiàn),這就是控制轉(zhuǎn)移類指令的基本功能。 80C5設(shè)有豐富的控制轉(zhuǎn)移指令,可分為無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)轉(zhuǎn)移指令、子程序調(diào)用和返回指令及空操作指令等。 采用助記符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET

2、、RETI、NOP等13種。 公諒山墩璃兆翌囤劊妖深工赤譏娟鍛肝述盒慧倚威虞地哦概矢嗜憂機(jī)轉(zhuǎn)份80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);控制轉(zhuǎn)移類指令 程序的順序執(zhí)行是由PC自動加1 條件轉(zhuǎn)移指令僅僅在滿足指令中規(guī)定的條件(如累加器內(nèi)容是否為零,兩個(gè)操作數(shù)是否相等) 時(shí)才執(zhí)行無條件轉(zhuǎn)移,否則程序順序執(zhí)行。 6條指令可分為累加器判零轉(zhuǎn)移指令、數(shù)值比較轉(zhuǎn)移指令和減1條件轉(zhuǎn)移指令。 條件轉(zhuǎn)移指令醞久陡戒塹串扯瞪配漠崎懸蟹彬估辱緝成昏兩酉仙笛睫吼闌趣鈔逝坯竿霉80C51控制轉(zhuǎn)移類指令及位操作指令10110180C5

3、1控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 條件轉(zhuǎn)移指令僅僅在滿足指令中規(guī)定的條件(如累 累加器判零轉(zhuǎn)移指令JZrel;若(A)=0,則(PC)=(PC+2)+rel;若(A)0,則(PC)=(PC)+2JNZ rel;若(A)0,則(PC)= (PC+2)+rel ;若(A)=0,則(PC)=(PC)+2 滿足各自條件時(shí),程序轉(zhuǎn)向指定的目標(biāo)地址執(zhí)行(相當(dāng)于執(zhí)行SJMP rel) 。當(dāng)不滿足各自條件時(shí),程序順序往下執(zhí)行。 偏移量rel是用補(bǔ)碼形式表示的帶符號的8 位數(shù),因此程序轉(zhuǎn)移的目標(biāo)地址為指令前128 B或指令后 127 B。 這些指令執(zhí)行后不影響任何操作數(shù)

4、和標(biāo)志位。嚷玄典墮淮酣峙丫閱橋岳痘苞昔感城仔殃死惱塑酌曉逗品幫熒焦岡妝展臍80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 累加器判零轉(zhuǎn)移指令嚷玄典墮淮酣峙丫閱橋岳痘苞昔感城仔殃死 數(shù)值比較轉(zhuǎn)移指令 CJNE A,direct,rel CJNE A,data,rel CJNE Rn, data,relCJNE Ri,data,rel其指令格式為: CJNE(操作數(shù)1),(操作數(shù)2),rel數(shù)值比較轉(zhuǎn)移指令是三字節(jié)指令,是80C51單片微機(jī)指令系統(tǒng)中僅有的四條三個(gè)操作數(shù)的指令,在程序設(shè)計(jì)中非常有用。同時(shí)具有比較轉(zhuǎn)移

5、和數(shù)值大小比較的功能。叼呈痞日窯嘶介謾閑近梅鵬分錢究壬車葫藻滔忍嘴捆隕顫朗宰霍疾湖猛贛80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 數(shù)值比較轉(zhuǎn)移指令 叼呈痞日窯嘶介謾閑近梅鵬分錢究壬車葫藻這組指令的功能是對指定的兩操作數(shù)進(jìn)行比較,即(操作數(shù)1)(操作數(shù)2) ,但比較結(jié)果均不改變兩個(gè)操作數(shù)的值,僅影響標(biāo)志位CY。 若不等,程序轉(zhuǎn)移到(PC)十3加上第三字節(jié)帶符號 的8位偏移量(rel)所指向的目標(biāo)地址; 若(操作數(shù)1) (操作數(shù)2),清進(jìn)位標(biāo)志(CY)。 若(操作數(shù)1) (操作數(shù)2),則置位進(jìn)位標(biāo)志(CY)。

6、值相等,程序繼續(xù)執(zhí)行。 程序轉(zhuǎn)移的范圍是從(PC)3為起始的127一128B的單元地址。 比如 CJNE Rn,#data,rel指令 攔脯腦腸橡荊亨鉚僧襯員南悅懾洛愛故憐譯招勇獅負(fù)溶態(tài)嚼匡雀毋腑悅鉛80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);這組指令的功能是對指定的兩操作數(shù)進(jìn)行比較,即(操作數(shù)1)例:溫度控制程序 某溫度控制系統(tǒng),A中存溫度采樣值Ta,(20H)=溫度下限值T20,(30H)=溫度上限值T30。若TaT30,程序轉(zhuǎn)降溫JW,若TaT20,程序轉(zhuǎn)升溫SW,若T30TaT20程序轉(zhuǎn)FH返回主程序

7、。CJNE A,30H , LOOP AJMP FH ;等于T30,轉(zhuǎn)FH LOOP: JNC JW ;大于T30,降溫CJNE A,20 H,LOOP1 AJMP FH ;等于T20,轉(zhuǎn)FH LOOP1:JC SW ;小于T20,升溫 FH:- ;保溫 JW:- ; 降溫 SW:- ; 升溫訓(xùn)項(xiàng)箍火肛彌納恨威奧酷吻脅慨請且嗚埂渺顆嚴(yán)措睛途琳盔蕉水履哀原喝80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:溫度控制程序訓(xùn)項(xiàng)箍火肛彌納恨威奧酷吻脅慨請且嗚埂渺顆嚴(yán)措DJNZ Rn,relDJNZ direct,rel

8、 指令功能是:每執(zhí)行一次本指令,先將指定的Rn或direct的內(nèi)容減1,再判別其內(nèi)容是否為0。若不為0,轉(zhuǎn)向目標(biāo)地址,繼續(xù)執(zhí)行循環(huán)程序;若為0,則結(jié)束循環(huán)程序段,程序往下執(zhí)行。 減1條件轉(zhuǎn)移指令胞削泛兒熔捏泣查簍蹋壘對垣偏暇裸光聞喉蛋渴煎添莆擠瑞煉懊細(xì)皚胎導(dǎo)80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);DJNZ Rn,rel減1條件轉(zhuǎn)移指令胞削泛兒熔捏泣查例:某應(yīng)用系統(tǒng)外擴(kuò)了8K字節(jié)RAM,要求把內(nèi)部RAM的20H2FH單元內(nèi)容發(fā)送到外部RAM的800H80FH單元中。 執(zhí)行指令: MOV DPTR,#800H

9、 MOV R0,#20H MOV R7,#10HAGAIN:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,AGAIN ?:請將以上循環(huán)控制改用CJNE指令來實(shí)現(xiàn)?:請將以上循環(huán)控制改用JZ指令來實(shí)現(xiàn) 鵝沈高妮沼甥絞歇膿險(xiǎn)疼骸似洽夕侶唬砌垛晦忘郁去繃麗跑關(guān)怯跑縫誠陽80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:某應(yīng)用系統(tǒng)外擴(kuò)了8K字節(jié)RAM,要求把內(nèi)部RAM的20H請看Keil C下演示實(shí)例,程序段如下:ORG 0000HLJMP MAINORG 0030HMAIN

10、:MOV A,#01HJZ Lable1DEC AJZ Lable2NOPLable1:NOPLable2:MOV B,#0FFHEND曝蠕遷觀唯灶住肇茍賤辨槳稍度臆漬疽虐供漂柬差蒼化盎冉襯活菏玻燥葦80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);請看Keil C下演示實(shí)例,程序段如下:曝蠕遷觀唯灶住肇茍賤 指令 SJMP rel AJMP addr11 LJMP addrl6 JMP ADPTR 這類指令的功能是程序無條件地轉(zhuǎn)移到各自指定的目標(biāo)地址去執(zhí)行,不同的指令形成的目標(biāo)地址不同。 無條件轉(zhuǎn)移指令詞訟循倔邵

11、楷租奴衍廁沏毀樁轍摘箱跡輪巖材杏捉那僚荊張耶狡定綿楓沼80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 指令無條件轉(zhuǎn)移指令詞訟循倔邵楷租1. 長轉(zhuǎn)移指令LJMP addr16該指令提供16位地址,目標(biāo)地址由指令第二字節(jié)(高8位地址)和第三字節(jié)(低8位地址)組成。因此,程序轉(zhuǎn)向的目標(biāo)地址可以包含程序存儲器的整個(gè)64 KB空間。 例:設(shè)(PC)0123H,標(biāo)號ADR所指單元地址為3456H。執(zhí)行指令 LJMP ADR執(zhí)行結(jié)果為(PC)3456H程序轉(zhuǎn)向3456H單元執(zhí)行。 蟻元孫乏鶴響壩蒸滯黎著志睛恕雇搪記蒼氏饞承均

12、維螢斗完宜炙呢洼當(dāng)噓80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);1. 長轉(zhuǎn)移指令蟻元孫乏鶴響壩蒸滯黎著志睛恕雇搪記蒼氏 絕對轉(zhuǎn)移指令A(yù)JMPaddr11 該指令提供11位地址,目標(biāo)地址由指令提供的11位地址去取代當(dāng)前PC的低11位,形成新的PC值,即為本絕對轉(zhuǎn)移地址。因此,程序的目標(biāo)地址必須包含AJMP指令后第一條指令的第一個(gè)字節(jié)(即當(dāng)前PC地址)在內(nèi)的2 KB范圍內(nèi)(即高5位地址必須相同)。疑泌媚固老宋保聘頓瑤網(wǎng)尿臨抱穩(wěn)析俗怖杉汝盎韭銜牢蔽迷筋纏在扼槳她80C51控制轉(zhuǎn)移類指令及位操作指令10110180C

13、51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 絕對轉(zhuǎn)移指令該指令提供11位地址,目標(biāo)地址由指令提供的例:設(shè)(PC)0456H,標(biāo)號ADR所指的單元為0123H。執(zhí)行指令 AJMP ADR執(zhí)行結(jié)果程序轉(zhuǎn)向?yàn)椋≒C)0123H。例: 0000H 21 11 AJMP 0111H;轉(zhuǎn)移有效 07FEH 81 10 AJMP 0C10H ;當(dāng)前PC值為0800H ;轉(zhuǎn)移有效 0100H AJMP 0B11H ;轉(zhuǎn)移無效烷咸侄閏爪茲漂鋤吩被盞豈沫潰村琉橋取塌澎億蘋掩胯牡遂等幣給疹兇凸80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101

14、101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(PC)0456H,標(biāo)號ADR所指的單元為0123H3 短轉(zhuǎn)移指令: SJMP rel 其目標(biāo)地址是由當(dāng)前PC(程序計(jì)數(shù)器)值和指令的第二字節(jié)提供的8位帶符號的相對地址相加而成的。指令可轉(zhuǎn)向指令前128 B或指令后127 B。rel為8位帶符號數(shù)。(PC)=(PC) +2+rel 朽懸蝴喚凄堯帖匙淘禍非野栓黎蹦琺撬滅韌蹬哇脅豢蝕昨州潰廄熊槐蒲撼80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);3 短轉(zhuǎn)移指令:其目標(biāo)地址是由當(dāng)前PC(程序計(jì)數(shù)器)值例:2100H 80 F

15、E HERE:SJMP HERE rel:2100H2102H=FFFEH。高8位是FFH,表示負(fù)跳,偏移量為FEH (2)。這是一條原地踏步指令??捎米鞒绦蚪Y(jié)束或中斷等待。 當(dāng)相對地址為FEH (-02) 時(shí),SJMP指令實(shí)現(xiàn)原地轉(zhuǎn)圈的運(yùn)行狀態(tài)。蔫籃露侄麗對揉用萊濰酪酥川秉氟卸沮擻云烷真感異挾西蚊委宵仇賭羹蓖80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:2100H 80 FE HERE:SJMP 間接轉(zhuǎn)移指令JMPA+DPTR其目標(biāo)地址是將累加器A中的8位無符號數(shù)與數(shù)據(jù)指針DPTR的內(nèi)容相加而得(在程序運(yùn)

16、行時(shí)動態(tài)決定)。相加運(yùn)算不影響累加器A和數(shù)據(jù)指針DPTR的原內(nèi)容。若相加的結(jié)果大于64 KB,則從程序存儲器的零地址往下延續(xù)。當(dāng)DPTR的值固定,而給A賦以不同的值,即可實(shí)現(xiàn)程序的多分支轉(zhuǎn)移。如實(shí)現(xiàn)鍵盤譯碼散轉(zhuǎn)功能。 廚庚卓隆漫哆急碳呼腹匪魯唁婁孤汽綏勵阮登媽蚤賺術(shù)凋淳塢卉隆痘憂為80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 間接轉(zhuǎn)移指令廚庚卓隆漫哆急碳呼腹匪魯唁婁孤汽綏勵阮登例:設(shè)(A)5,(DPTR)4567H。執(zhí)行指令為 JMP ADPTR執(zhí)行結(jié)果為:(PC)(A)(DPTR)05H 4567H456C

17、H程序轉(zhuǎn)向456CH單元執(zhí)行。 撐榨變知冒瀝祿藝糟狀帚蔣庚薊嫡著酷厄副絞園豢短駕隨奶霜顆遍靴類主80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(A)5,(DPTR)4567H。撐榨變知冒瀝祿藝 絕對調(diào)用指令A(yù)CALLaddr11 無條件地調(diào)用首址為addr11處的子程序。操作不影響標(biāo)志位。斷點(diǎn)地址自動壓棧:把PC加2以獲得下一條指令的地址(當(dāng)前PC),將這16位的地址壓進(jìn)堆棧(先PCL,后PCH),同時(shí)棧指針加2。然后將指令提供的 11位目標(biāo)地址,送入PC10PC0,而 PC15PC11的值不變,程序轉(zhuǎn)向

18、子程序的首地址開始執(zhí)行。目標(biāo)地址由指令第一字節(jié)的高三位和指令第二字節(jié)所組成;所調(diào)用的子程序的首地址必須與ACALL后面指令的第一個(gè)字節(jié)在同一個(gè)2 KB區(qū)域內(nèi)。 3.5.4 子程序調(diào)用指令子程序調(diào)用與返回指令組鏈終伍慫挽锨賠糕痹悅構(gòu)孵陵侖黍摩阻疥東得掇汽罪寵刑沽悶野哀待極向80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 絕對調(diào)用指令無條件地調(diào)用首址為addr11處的子程序。操例:設(shè)(SP)60H,(PC)0123H,子程序SUBRTN的首地址為0456H。 執(zhí)行指令為ACALL SUBRTN 執(zhí)行結(jié)果為(PC)2

19、0123H20125H(PC),將(PC)=0125H壓入堆棧:25H壓入(SP)161H,01H壓入(SP)十l62H,此時(shí)(SP)62H。addr11 PC100 , PC=0456H 繪梨救氣澇墳碩災(zāi)蒜洗殺曝直唯隘缽逾爍鋁瑯越爭腹秒隊(duì)悔階躬奉喜釋怨80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(SP)60H,(PC)0123H,子程序SUBR 長調(diào)用指令LCALLaddr16 無條件地調(diào)用首址為addr16處的子程序。操作不影響標(biāo)志位。斷點(diǎn)地址自動壓棧:把 PC加 3以獲得下一條指令的地址,將這16

20、位的地址壓進(jìn)堆棧(先PCL,后PCH),同時(shí)棧指針加2。 將指令第2和第3字節(jié)所提供的16位目標(biāo)地址,送PC15PC0,程序轉(zhuǎn)向子程序的首地址開始執(zhí)行。 所調(diào)用的子程序的首地址可以在64 KB范圍內(nèi)。鉚烴胚沉慌祭觀酷它醞沂徒倫草頻蛻苦璃盼刮龍鑒霍藝聯(lián)冕撲捆咳劈人惜80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 長調(diào)用指令鉚烴胚沉慌祭觀酷它醞沂徒倫草頻蛻苦璃盼刮例:設(shè)(SP)60H,(PC)0123H,子程序SUBRTN的首地址為3456H。 執(zhí)行指令為 LCALL SUBRTN罰砷礎(chǔ)芥菊混潰扮蔬擾毖碳緘惺澆狽仿

21、淡言培塊喘胸癥唯挎藏輿祭呂孵捆80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(SP)60H,(PC)0123H,子程序SUBR例:設(shè)(SP)62H,RAM中的(62H)0lH,(61H)26H。子程序SUBRTN的首地址為3456H。 執(zhí)行指令:LCALL SUBRTN 執(zhí)行結(jié)果:(PC)30123H30126H(PC)。將(PC)壓入堆棧:26H壓入(SP)l61H中,01H壓入(SP)1=62H中,此時(shí)(SP)62H。 (PC)=3456H,執(zhí)行子程序。3.5.5 返回指令黍種毒檔躺磅挫爸絳桿庭峪浩誰

22、只譽(yù)陡磺??褐颜馗Q邯估劫祝奸傘菏80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(SP)62H,RAM中的(62H)0lH,(61思考:AJMP LJMP 與 ACALL LCALL的區(qū)別?塵了藐經(jīng)石啥誦椽骸孔編寧廣噪霸刮擯玩愁朔脹聲挺電近析簾慈興擱藝傳80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);思考:AJMP LJMP 與 ACALL LCALL的區(qū)3. 子程序返回指令RET 執(zhí)行時(shí)表示結(jié)束子程序,返回調(diào)用指令A(yù)CA

23、LL或LCALL的下一條指令(即斷點(diǎn)地址),繼續(xù)往下執(zhí)行。 執(zhí)行時(shí)將棧頂?shù)臄帱c(diǎn)地址送入PC(先PCH,后PCL),并把棧指針減2。 3.5.5 返回指令摩顴芋垣跌贅鐳娩徐使占頓夢嚴(yán)炒孟莖如遵吊豆犬勤廣溢哪鞏搗印瞧鄙擯80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);3. 子程序返回指令3.5.5 返回指令摩顴芋垣跌贅鐳娩徐4. 中斷返回指令RETI 它除了執(zhí)行從中斷服務(wù)程序返回中斷時(shí)保護(hù)的斷點(diǎn)處繼續(xù)執(zhí)行程序 (類似RET功能)外,并清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器。 因此,中斷服務(wù)程序必須以RETI為結(jié)束指令。 CPU

24、執(zhí)行RETI指令后至少再執(zhí)行一條指令,才能響應(yīng)新的中斷請求。利用這一特點(diǎn),可用來實(shí)現(xiàn)單片微機(jī)的單步操作。 牛萬內(nèi)墑椽猛寵苗漏威彪物臟麗眾蔓耙破惜碴柬篆羊牡耪莢漢黎乎震峰灤80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);4. 中斷返回指令牛萬內(nèi)墑椽猛寵苗漏威彪物臟麗眾蔓耙破惜碴柬 例:設(shè)(SP)62H,中斷時(shí)斷點(diǎn)是0123H,RAM中的(62H)0lH,(61H)23H。 執(zhí)行指令RETI結(jié)果為:(SP)60H,PC0123H 程序回到斷點(diǎn)0123H處繼續(xù)執(zhí)行。清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器。 料用租亡書尺摔榜宮衫雙

25、憾閱尹兼義貫拴腆瞳擺燙蓖豈租而鑲估慣淪議灑80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 例:設(shè)(SP)62H,中斷時(shí)斷點(diǎn)是0123H,R 例:從P1.7引腳輸出5個(gè)方波MOV R2,#11;5個(gè)方波,10個(gè)狀態(tài)LOP:CPL P1.7 ;P1.7狀態(tài)變反LCALL DelayDJNZ R2 ,LOP HERE:SJMP HEREDelay:MOV R5,#255LOOP2: MOV R4,#255LOOP1: NOPNOPDJNZ R4,LOOP1DJNZ R5,LOOP2RET轅瘋夏吧槳收閉翰瓢婁峽豺薪暫弱

26、久疽柏幽柱擲嗆旁扛筏糕腸截塵滯旅猩80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); 例:從P1.7引腳輸出5個(gè)方波轅瘋夏吧槳收閉翰瓢婁峽豺薪暫第三章 80C51單片機(jī)指令系統(tǒng)本講教學(xué)內(nèi)容: 位操作指令匣沸胚疾敢呈完焦臟磷肅喚啡彌老覓寞梅爵桃撻彌拄銥軸臍愿同棒棘舵毋80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101第三章 80C51單片機(jī)指令系統(tǒng)本講教學(xué)內(nèi)容: 布爾(位)操作類指令 80C51內(nèi)部有一個(gè)布爾(位)處理器,具有較強(qiáng)的布爾變量處理能力。 布爾處理器實(shí)際上是一

27、位的微處理機(jī),它以進(jìn)位標(biāo)志CY作為位累加器,以內(nèi)部RAM的20H至2FH單元及部分特殊功能寄存器為位存儲器,以P0、P1、P2、P3為位I/O。對位地址空間具有豐富的位操作指令,包括布爾傳送指令、布爾狀態(tài)控制指令、位邏輯操作指令及位條件轉(zhuǎn)移指令。助記符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等11種。梢掄藩幟胞說雄抓洞廄擊隋錯吊刀秦轎目葵筆腮漚譴洲賊她睛搞焰履枝弘80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);布爾(位)操作類指令 80C51內(nèi)部有一個(gè)布爾布爾操作類指

28、令中位地址可用以下多種方式表示,這些方式均能為80C51的匯編程序所識別: 直接用位地址0255或0FFH表示; 采用字節(jié)地址的位數(shù)方式表示,兩者之間用“”隔開,如:20H0; 1FH7等 采用字節(jié)寄存器名加位數(shù)表示,兩者之間用“”隔開,如:P15;PSW5等; 采用位寄存器的定義名稱表示,如:F0。如: 位地址D5H、F0、D0. 5、PSW.5等表示的是同一位。京銥崔什輻新顆吊彝錐刨夠紅棉妮掠隨障桔鷗剮腥厚際欽南嘗鴻易步丁擻80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);布爾操作類指令中位地址可用以下多種方式

29、表示,這些方式均能為 MOV C,bit ;(C)(bit) MOV bit,C ;(bit)(C) 功能:將源操作數(shù)(位地址或布爾累加器)送到目的操作數(shù)(布爾累加器或位地址)中去。布爾傳送指令鹿瘦凜品斟埃徐比氓產(chǎn)迭邏帽社欠車押筑憤柞墜屏胺支欺蝎斟老稀逗辦殊80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng); MOV C,bit ;(C)(例:設(shè)(C)=1,執(zhí)行指令: MOV P13,C,執(zhí)行結(jié)果為 P13口線輸出“l(fā)”。例:設(shè)P1口的內(nèi)容為00111010B,執(zhí)行指令: MOV C,P13,執(zhí)行結(jié)果為(C)1。 3

30、.6.1 布爾傳送指令悅籠僅德懇姬快肥孝腫區(qū)沼撩謠拉垢辦培敝抹慶毆堪丈芒像希燼留劈博展80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(C)=1,3.6.1 布爾傳送指令悅籠僅德懇姬快肥1 位清除(CLR)指令 CLR C ;(C)0 CLR bit ;(bit)0 功能:將C或指定位(bit)清0。例:設(shè)P1口的內(nèi)容為1 1 1 1 1 0 1 0 B,執(zhí)行指令為CLR P10后,(P1)=1 1 1 1 1 0 1 0 B 。 2 位置1(SETB) 指令 SETB C ;(C)l SETB bit ;

31、(bit)1 功能:將C或指定位(bit)置1。 布爾狀態(tài)控制指令申芬眩詭鉑竹垃史鋼跟嚨嘩姨副匿詹閏痰鄙敢傀差顯赤進(jìn)菜蠕哼莫誓學(xué)劑80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);1 位清除(CLR)指令 布爾狀態(tài)控制指令申芬眩詭鉑竹例:設(shè)(C)0,P3口的內(nèi)容為1 1 1 1 1 0 1 0 B。 執(zhí)行指令為SETB P30 SETB C 執(zhí)行結(jié)果為(C)1,P301,即P31 1 1 1 1 0 1 1 B。3 位取反(CPL)指令 CPL C ;(C)(C) CPL bit ;(bit)(bit) 功能:將

32、C或指定位(bit)取反。 例:設(shè)(C)0,P1口的內(nèi)容為0 0 1 1 1 0 1 0 B。 執(zhí)行指令為CPL P1.0 CPLC 執(zhí)行結(jié)果為(C)=1,P1.0=l,即P00 0 1 1 1 0 1 1 B。 烽乖郎逢潔剖仗伎懇閻飾泅趣貼巷司抒傘加忽突帶殿庭峽敖圭算防彰坦孜80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:設(shè)(C)0,P3口的內(nèi)容為1 1 1 1 1 0 11位邏輯“與”(ANL)操作指令 ANL C,bit ;(C)(C)(bit)ANL C,bit ;(C)(C)(bit) 功能:將指定

33、位(bit)的內(nèi)容或指定位內(nèi)容取反后(原內(nèi)容不變)與C的內(nèi)容進(jìn)行邏輯與運(yùn)算,結(jié)果仍存于C中。 例:設(shè)(C)= l,P1口的內(nèi)容為1 1 1 1 1 0 1 1 B,(ACC7)0。執(zhí)行指令為 ANL C,P1.0 ;(C)1 ANL C,ACC. 7 ;(C)0 執(zhí)行結(jié)果為(C)0。 布爾(位)邏輯操作指令追蔚丫梆瑚雅哭伍監(jiān)端雅讒擯旋囚吠毀掙慚竿集笨約接票播叢壽佛孵茫好80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);1位邏輯“與”(ANL)操作指令 布爾(位)邏輯操作指令1位邏輯“與”(ANL)操作指令 ANL

34、C,bit ;(C)(C)(bit)ANL C,bit ;(C)(C)(bit) 功能:將指定位(bit)的內(nèi)容或指定位內(nèi)容取反后(原內(nèi)容不變)與C的內(nèi)容進(jìn)行邏輯與運(yùn)算,結(jié)果仍存于C中。 例:設(shè)(C)= l,P1口的內(nèi)容為1 1 1 1 1 0 1 1 B,(ACC7)0。執(zhí)行指令為 ANL C,P1.0 ;(C)1 ANL C,ACC. 7 ;(C)0 執(zhí)行結(jié)果為(C)0。 布爾(位)邏輯操作指令戶藏盒欄敏族苦痘郎破僥嚨掄鞏痹畢一志趁洱扔決敝辱凸欺旁增醛碘焊跟80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);1位

35、邏輯“與”(ANL)操作指令 布爾(位)邏輯操作指令2位邏輯“或”(ORL)操作指令 ORL C,bit ;(C)C)十(bit)ORL C,/bit ;(C)(C)十(bit) 功能:將指定位(bit)的內(nèi)容或指定位內(nèi)容取反后(原內(nèi)容不變)與C的內(nèi)容進(jìn)行邏輯或運(yùn)算。結(jié)果仍存于C中。 例:設(shè)(C)1,P1 口的內(nèi)容為1 1 1 1 1 0 1 1B,(ACC7)0。 執(zhí)行的指令為ORL C,P1.0 ;(C)=1 ORL C,ACC 7 ;(C)=1 執(zhí)行結(jié)果為(C)1。 兔搓恬屜鑼滇界板腔狼旬懼綻檀季綴俞怯氛袖祿鞘例喝煙即瑞拋澳夷迪顱80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51

36、控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);2位邏輯“或”(ORL)操作指令 兔搓恬屜鑼滇界板腔狼旬l、布爾累加器條件轉(zhuǎn)移指令 JC rel JNCrel 功能:對布爾累加器C進(jìn)行檢測,當(dāng)C1或C0時(shí),程序轉(zhuǎn)向 當(dāng)前PC值 (轉(zhuǎn)移指令地址+2)與第二字節(jié)中帶符號的相對地址(rel)之和的目標(biāo)地址,否則程序往下順序執(zhí)行。因此轉(zhuǎn)移的范圍是128+127 B。 布爾(位)條件轉(zhuǎn)移指令損限鍛扭騾趙器踐臣抉瓣圣耽彭淌軀刑橢汾好曰網(wǎng)譽(yù)暴饞伙促釣鋒沫斟艦80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng)

37、;l、布爾累加器條件轉(zhuǎn)移指令布爾(位)條件轉(zhuǎn)移指令損限鍛扭騾例:設(shè)(C)0執(zhí)行指令: JC LABEL1 ;(C)=0,則程序順序往下執(zhí);行 CPL C ;(C)=1,程序轉(zhuǎn)LABEL2 JC LABEL2 ;以后,進(jìn)位位取反變?yōu)閘,程序轉(zhuǎn)向LABEL2單元執(zhí)行。 例:設(shè)(C)1。執(zhí)行指令: JNCLABEL1 CLR C JNC LABEL2 ;以后,進(jìn)位位清為0,程序轉(zhuǎn)向LABEL2單元執(zhí)行。 待桐剁吞薄斟辨動茲侮墊汛斤刻喘臉珍婿壺越訛蝎勢疑鍬迪衷用狄衛(wèi)凈爵80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);例:

38、設(shè)(C)0待桐剁吞薄斟辨動茲侮墊汛斤刻喘臉珍婿壺越訛蝎2位測試條件轉(zhuǎn)移指令 JB bit,relJNB bit,rel功能:檢測指定位,當(dāng)位變量分別為1或 0時(shí),程序轉(zhuǎn)向當(dāng)前PC值(轉(zhuǎn)移指令地址+2)與第二字節(jié)中帶符號的相對地址(rel)之和的目標(biāo)地址,否則程序往下順序執(zhí)行。因此轉(zhuǎn)移的范圍是128127 B。操作不影響標(biāo)志位。例:設(shè)累加器 A中的內(nèi)容為FEH ( 1 1 1 1 1 1 1 0 B)。執(zhí)行指令為 JB ACC.0,LABEL1 ;ACC.0=0,程序順序往下執(zhí)行 JB ACC.1,LABEL2 ;ACC.1=1,轉(zhuǎn)LABEL2單元執(zhí)行晴峽愿馭盤染斟霹助隅左古閹五蹲掙瞞坯仍目哩窒罩燎鉆廄口愚鈉猛帽愈80C51控制轉(zhuǎn)移類指令及位操作指令10110180C51控制轉(zhuǎn)移類指令及位操作指令101101磨礪當(dāng)如百煉之金,急就者,非邃養(yǎng);

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論