項(xiàng)目二單片機(jī)硬件及指令系統(tǒng)應(yīng)用課件_第1頁
項(xiàng)目二單片機(jī)硬件及指令系統(tǒng)應(yīng)用課件_第2頁
項(xiàng)目二單片機(jī)硬件及指令系統(tǒng)應(yīng)用課件_第3頁
項(xiàng)目二單片機(jī)硬件及指令系統(tǒng)應(yīng)用課件_第4頁
項(xiàng)目二單片機(jī)硬件及指令系統(tǒng)應(yīng)用課件_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—

任務(wù)1.二極管點(diǎn)亮能力目標(biāo)1.能用Proteus構(gòu)建單片機(jī)最小系統(tǒng)2.能運(yùn)用并行I/O接口3.能學(xué)會(huì)程序編寫的基本方法并用KeilC進(jìn)行調(diào)試4.能進(jìn)行燈亮控制電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.了解指令的概念2.掌握尋找方式3.掌握傳送、位操作等指令4.了解并行I/O接口項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—能力目標(biāo)一、任務(wù)要求用單片機(jī)來實(shí)現(xiàn)對一個(gè)發(fā)光二極管實(shí)現(xiàn)點(diǎn)亮的功能。二、任務(wù)分析1.一個(gè)普通二極管被點(diǎn)亮的條件R1在此電路中的選擇范圍為330Ω~1KΩ

一、任務(wù)要求2.用單片機(jī)的I/O口的其中一位來控制二極管的點(diǎn)亮問題給P1.0送一低電平,則二極管就可以被點(diǎn)亮,送一高電平,則二極管就熄滅。2.用單片機(jī)的I/O口的其中一位來控制二極管的三、學(xué)習(xí)知識(shí)

(一)了解指令的概念

1、指令的表示法:由操作碼和操作數(shù)兩大部分組成MCS-51指令格式:[標(biāo)號(hào):]操作助記符[操作數(shù)1][,操作數(shù)2][,操作數(shù)3]其中操作碼助記符一般由2~5個(gè)英文字母組成。51系列單片機(jī)共有111條指令。

三、學(xué)習(xí)知識(shí)(一)了解指令的概念2、指令的分類:按指令在存儲(chǔ)器中所占用的存儲(chǔ)單元分:單字節(jié)NOP

雙字節(jié)ADDA,#05H

三字節(jié)LJMP8000H按指令功能分:數(shù)據(jù)傳送類MOVA,#04算術(shù)運(yùn)算類ADDA,#05H邏輯運(yùn)算類ANLA,#05H控制類LJMP8000H位操作類SETB90H2、指令的分類:3、指令中操作數(shù)的描述Rn——工作寄存器R0~R7。Ri——間接尋址寄存器R0、R1。Direct——直接地址,包括內(nèi)部128BRAM單元地址、21個(gè)SFR地址。#data——8位常數(shù)。#data16——16位常數(shù)。addr16——16位目標(biāo)地址。addr11——11位目標(biāo)地址。rel——8位帶符號(hào)的偏移地址。DPTR——16位外部數(shù)據(jù)指針寄存器。bit——可直接位尋址的位。3、指令中操作數(shù)的描述A——累加器。B——寄存器B。C——進(jìn)、借位標(biāo)志位,或位累加器。@——間接寄存器或基址寄存器的前綴。/——指定位求反。(x)——x中的內(nèi)容。((x))——x中的地址中的內(nèi)容。$——當(dāng)前指令存放的地址。AB——累加器A和B寄存器組成的寄存器對,常出現(xiàn)在乘除法指令中。

A——累加器。(二)掌握尋找方式1、立即數(shù)尋址

MOVA,#40H

2、直接尋址

MOVA,40H

3、寄存器尋址

MOVA,R2

4、寄存器間接尋址

MOVA,@R0

(二)掌握尋找方式(1)采用R0或R1作為寄存器間接尋址,可尋址的片內(nèi)片外的RAM的低256字節(jié)的存儲(chǔ)空間。(2)采用DPTR作寄存器間接尋址,可尋址的片外的數(shù)據(jù)存儲(chǔ)器的整個(gè)64KB的空間。

5、變址尋址操作數(shù)地址=變地址+基地址

如MOVCA,@A+DPTR

(1)采用R0或R1作為寄存器間接尋址,可尋址的片內(nèi)片外的R例:累加器A的內(nèi)容為20H,DPTR的值為2000H,程序存儲(chǔ)器2020H單元內(nèi)容為47H,則執(zhí)行該指令后累加器A的值為47H。

MOVCA,@A+DPTR6、相對尋址

如JC60H;設(shè)(PC)=2000H為基址,相對偏移量為60H;

則當(dāng)C=1時(shí),轉(zhuǎn)移的目的地址=2000H+2+60H

例:累加器A的內(nèi)容為20H,DPTR的值為2000H,程序存7、位尋址位尋址是指指令的操作數(shù)為8位二進(jìn)制數(shù)的某一位,指令中給出的是操作數(shù)的位地址??捎糜谖粚ぶ返膮^(qū)域是片內(nèi)RAM20H~2FH單元和部分特殊功能寄存器。(1)可直接使用位地址。(2)對特殊寄存器也可進(jìn)行位尋址。

7、位尋址(三)掌握傳送、位操作等指令1、片內(nèi)數(shù)據(jù)傳送指令單片機(jī)在邏輯上分為三個(gè)空間,分別是程序空間、片內(nèi)數(shù)據(jù)存儲(chǔ)器空間、片外數(shù)據(jù)存儲(chǔ)器空間。

片內(nèi)外程序存儲(chǔ)器ROMEPROMMOVC特殊功能寄存器片內(nèi)RAM128字節(jié)MOVPUSHPOPXCHXCHDMOVX片外數(shù)據(jù)存儲(chǔ)器RAM(三)掌握傳送、位操作等指令片內(nèi)外程序存儲(chǔ)器MOVC特殊功能(1)以A為目標(biāo)地址的傳送指令指令指令代碼操作MOVA,Rn11101rrrA←(Rn)MOVA,direct11100101directA←(direct)MOVA,@Ri1110011iA←((Ri))MOVA,#data1101000A←data(1)以A為目標(biāo)地址的傳送指令指令指令代碼操作MOVA,(2)以直接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOVdirect,A11110101directdirect←(A)MOVdirect,Rn10001rrrdirectdirect←(Rn)MOVdirect,@Ri1000111directdirect←((Ri))MOVdirect,#data01110101directdatadirect←dataMOVdirect1,direct210000101direct2,direct1direct1←(direct2)(2)以直接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOV(3)以Rn為目標(biāo)地址的傳送指令指令指令代碼操作MOVRn,A11111rrrRn←(A)MOVRn,#data01111rrrRn←dataMOVRn,direct10101rrrRn←(direct)(3)以Rn為目標(biāo)地址的傳送指令指令指令代碼操作MOVRn(4)以間接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOV@Ri,A1111011i((Ri))←(A)MOV@Ri,#data0111011i((Ri))←dataMOV@Ri,direct1010011i((Ri))←(direct)(4)以間接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOV(5)十六位數(shù)傳送(以DPTR為目標(biāo)地址)傳送指令指令指令代碼操作MOVDPTR,#data1610010000dataH8dataL8(DPTR)←data16(5)十六位數(shù)傳送(以DPTR為目標(biāo)地址)傳送指令MOVD2、累加器A與片外RAM之間傳送指令MOVX(4條)MOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←AMOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←A

1、3兩條指令完成了將外部數(shù)據(jù)讀入單片機(jī),此時(shí)單片機(jī)的RD為低電平2、4兩條指令完成了將單片機(jī)數(shù)據(jù)寫入外部設(shè)備,此時(shí)單片機(jī)的WR為低電平2、累加器A與片外RAM之間傳送指令MOVX(4條)3、程序存儲(chǔ)器向累加器A傳送指令MOVC(2條)MOVCA,@A+PCMOVCA,@A+DPTR這種指令可用來實(shí)現(xiàn)查表程序,不同之處在于:第一條指令只能在256位中查表,第二條指令可在64KB范圍中查表。3、程序存儲(chǔ)器向累加器A傳送指令MOVC(2條)例:試編寫一程序,實(shí)現(xiàn)將片外RAM的0FAH單元中的內(nèi)容傳送到外RAM的04FFH單元中。分析:根據(jù)圖2-6可以看到,外部存儲(chǔ)單元之間是不能相互傳遞的,所以只有將外部數(shù)據(jù)通過傳向片內(nèi),再將片內(nèi)的數(shù)據(jù)傳向片外來進(jìn)行操作。具體在操作過程中要考慮如下事宜:①定義起始地址、目標(biāo)地址。②源操作數(shù)→A。③A→目標(biāo)操作方式。例:試編寫一程序,實(shí)現(xiàn)將片外RAM的0FAH單元中的內(nèi)容傳送ORG1000HMOVR0,#0FAH;定義源操作數(shù)地址MOVDPTR,#04FFH;定義目標(biāo)地址MOVXA,@R0;源操作數(shù)先送至AMOVX@DPTR,A;A→目標(biāo)地址ENDORG1000H4、位操作指令(1)位傳送指令(2條)MOVC,bitMOVbit,C

(2)位修正指令(6條)

CLRCCLRbitCPLCCPLbitSETBCSETBbit4、位操作指令四、任務(wù)實(shí)施(一)用Proteus構(gòu)建單片機(jī)最小系統(tǒng)硬件

圖2-7單片機(jī)控制的二極管點(diǎn)亮電路四、任務(wù)實(shí)施圖2-7單片機(jī)控制的二極管點(diǎn)亮電路(二)編寫程序并進(jìn)行調(diào)試在任務(wù)分析中得知,給P1.0賦個(gè)低電平,發(fā)光二極管就被點(diǎn)亮。程序如下:

ORG0000H;從程序空間地址0000H開始L:MOVP1,#0FEH;點(diǎn)亮二極管

SJMPL;在此處踏步等待

END

;結(jié)束(二)編寫程序并進(jìn)行調(diào)試

ORG0000H;從程序空間地址0(三)進(jìn)行二極管點(diǎn)亮電路仿真調(diào)試

圖2-8單片機(jī)控制的二極管點(diǎn)亮仿真電路

(三)進(jìn)行二極管點(diǎn)亮電路仿真調(diào)試

五、總結(jié)與提高完成了二極管點(diǎn)亮的任務(wù),大家考慮一下:1、能否用兩個(gè)按鈕來控制二極管的點(diǎn)亮與熄滅,一個(gè)按鈕定義為點(diǎn)亮功能,另一個(gè)按鈕定義為熄滅。2、能否采用一個(gè)按鈕來實(shí)現(xiàn)二極管的點(diǎn)亮與熄滅,按一下按鈕,二極管被點(diǎn)亮,再按一下后,熄滅,再按下點(diǎn)亮,再按下熄滅…。

五、總結(jié)與提高能力目標(biāo)1.能編寫和用KeilC調(diào)試簡單的延時(shí)子程序2.能用KeilC進(jìn)行單步,連續(xù)調(diào)試3.能進(jìn)行單燈閃爍電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.學(xué)習(xí)轉(zhuǎn)移指令的運(yùn)用2.掌握子程序的編寫方法項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—任務(wù)2.單燈閃爍能力目標(biāo)項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—一、任務(wù)要求要求二極管亮滅閃爍的時(shí)間為200ms,控制端口仍然采用P1.0口。二、任務(wù)分析在任務(wù)一中我們已成功將二極管點(diǎn)亮,本任務(wù)與任務(wù)一所不同的是要由P1.0產(chǎn)生的時(shí)序信號(hào)如圖2-9所示。一、任務(wù)要求200

ms圖2-9單燈閃爍控制時(shí)序

三、學(xué)習(xí)知識(shí)(一)主程序和子程序的概念

所謂主程序就是根據(jù)設(shè)計(jì)者的要求完成主要功能的程序。子程序的概念:主程序中反復(fù)用到的一些重復(fù)的功能模塊程序,如果都放在主程序中,會(huì)讓主程序顯得冗長,所以常將這種需要頻繁使用的基本操作設(shè)計(jì)成相對獨(dú)立的程序段。200ms圖2-9單燈閃爍控制時(shí)序三、學(xué)習(xí)知識(shí)1、子程序的調(diào)用與返回子程序的調(diào)用:短調(diào)用指令A(yù)CALLaddr11,長調(diào)用指令LCALLaddr16,不同的是前者跳轉(zhuǎn)的范圍為2K后者跳轉(zhuǎn)的范圍為64K。返回指令:RET從子程序返回到主程序,RETI從中斷服務(wù)程序返回到主程序

1、子程序的調(diào)用與返回2、子程序設(shè)計(jì)(1)每個(gè)子程序都有一個(gè)唯一的入口(唯一的名稱),并以標(biāo)號(hào)作為標(biāo)識(shí),以便主程序的正確調(diào)用,子程序通常以RET指令作為結(jié)束。(2)為了使子程序具有通用性,子程序的操作對象通常采用寄存器或寄存器間址等尋址方式。2、子程序設(shè)計(jì)(3)為了使子程序不論存放在存儲(chǔ)器的任何區(qū)域都能被正確執(zhí)行,在子程序中如有轉(zhuǎn)移指令,應(yīng)使用相對轉(zhuǎn)移指令而不能用絕對轉(zhuǎn)移指令。(4)進(jìn)入子程序時(shí),應(yīng)對那些主程序中使用并在子程序中繼續(xù)需要使用的寄存器的內(nèi)容進(jìn)行保護(hù)(即保護(hù)主程序現(xiàn)場),在返回主程序時(shí)應(yīng)恢復(fù)它們的原來的狀態(tài)。(3)為了使子程序不論存放在存儲(chǔ)器的任何區(qū)域都能被正確執(zhí)行,子程序設(shè)計(jì)的基本步驟如下:(1)確定子程序的名稱(入口標(biāo)號(hào))。(2)確定子程序的入口參數(shù)及出口參數(shù)。(3)確定所使用的寄存器和存儲(chǔ)單元機(jī)器使用目的。(4)確定子程序的算法,編寫源程序。子程序設(shè)計(jì)的基本步驟如下:例、設(shè)內(nèi)部RAM20H、21H單元中有兩個(gè)數(shù)a和b,編程求c=a2+b2,并把c送入內(nèi)存單元22H中。該程序由兩部分組成:主程序和子程序。主程序通過累加器A傳送入口參數(shù)a和b,子程序用于求平方并將結(jié)果通過累加器A傳送給主程序,主程序再求兩平方和。例、設(shè)內(nèi)部RAM20H、21H單元中有兩個(gè)數(shù)a和b,編程求c

主程序ORG0100H

MOVA,20H;a→AACALLSQR;求a2MOVR0,A;a2→R0MOVA,21H;b→AACALLSQR;求b2ADDA,R0;a2+b2→AMOV22H,A;存入22H單元END

以下為子程序ORG1000H

SQR:ADDA,#01H;

MOVCA,@A+PC

RET

TAB:DB00H,01H,04H,09H,16H,

DB25H,36H,49H,64H,81H

ORG0100H

MOVA,20H;a→AACALLS(二)循環(huán)轉(zhuǎn)移指令DJNZRn,rel;(Rn)←(Rn)—1若(Rn)≠0,則PC+2+rel,跳轉(zhuǎn)至目標(biāo)地址若(Rn)=0,PC+2

跳轉(zhuǎn)到本指令的下一條指令去執(zhí)行DJNZdirect,rel;(direct)←(direct)—1若(direct)≠0,則PC+2+rel,跳轉(zhuǎn)至目標(biāo)地址若(direct)=0,PC+2

跳轉(zhuǎn)到本指令的下一條指令去執(zhí)行(二)循環(huán)轉(zhuǎn)移指令DJNZ指令主要用來實(shí)現(xiàn)計(jì)數(shù)功能,一旦計(jì)數(shù)完畢,立即退出循環(huán)體,否則繼續(xù)在循環(huán)體中循環(huán)。例:將8031內(nèi)部的RAM40H~4FH單元置為#00H。解:

DJNZ指令主要用來實(shí)現(xiàn)計(jì)數(shù)功能,一旦計(jì)數(shù)完畢,例:將803

ORG0000h

MOVR0,#40H;置首址

MOVR2,#10H;置長度LOOP:MOV@R0,A

INCR0;修改指針

DJNZR2,LOOP;判斷長度

END

ORG0000h

MOVR0,#40H;置首址

MOV(三)延時(shí)子程序的設(shè)計(jì)1、機(jī)器周期當(dāng)振蕩脈沖頻率為12MHZ,一個(gè)機(jī)器周期為1us。當(dāng)振蕩脈沖頻率為6MHZ,一個(gè)機(jī)器周期為2us。2、指令周期執(zhí)行一條指令所需的時(shí)間叫指令周期,一般指令需1、2、4個(gè)機(jī)器周期。3、單循環(huán)程序運(yùn)用(三)延時(shí)子程序的設(shè)計(jì)圖2-10延時(shí)子程序(5.135ms)

圖2-10延時(shí)子程序(5.135ms)考慮在此單循環(huán)程序外再嵌套一層循環(huán),見下方第2~7部分,以內(nèi)部(3~6行)產(chǎn)生延時(shí)時(shí)間為5ms為重復(fù)操作對象,重復(fù)操作的次數(shù)由外循環(huán)來進(jìn)行參數(shù)設(shè)置,由外部循環(huán)中R7設(shè)定為20,這樣重復(fù)20次1ms的操作后延時(shí)約為100ms,考慮到晶振會(huì)帶來點(diǎn)誤差。圖2-11延時(shí)子程序(102ms)

考慮在此單循環(huán)程序外再嵌套一層循環(huán),見下方第2~7部分,以內(nèi)四、任務(wù)實(shí)施(一)硬件電路同任務(wù)一。(二)100ms延時(shí)子程序的調(diào)試。這已在延時(shí)子程序的設(shè)計(jì)中完成。(三)編寫完整的主程序和子程序。

ORG0000H

L1:MOVP1,#0FEH;點(diǎn)亮二極管

LCALLDELAY2;延時(shí)200ms

MOVP1,#0FFH;關(guān)閉二極管

LCALLDELAY2;延時(shí)200ms

LJMPL1;返回到首址

ORG0100H

四、任務(wù)實(shí)施

ORG0000H

L1:MOVP1,#0FEDELAY2:MOVR7,#20;延時(shí)200ms子程序D1:MOVR6,#00H

D2:NOP

NOP

DJNZR6,D2

DJNZR7,D1

RET

;返回

END

DELAY2:MOVR7,#20;延時(shí)200ms子程序D1(四)進(jìn)行單燈閃爍綜合調(diào)試。將上述生成的單燈閃爍.hex文件加載到用Proteus繪制的硬件電路CPU后臺(tái),點(diǎn)擊運(yùn)行,可以觀察到二極管以200ms閃爍的結(jié)果圖2-12單燈閃爍電路仿真

(四)進(jìn)行單燈閃爍綜合調(diào)試。圖2-12單燈閃爍電路仿真五、總結(jié)與提高1、純粹的硬件電路設(shè)計(jì):硬件定時(shí)不占CPU時(shí)間,但需通過改變電路的元件參數(shù)來調(diào)節(jié)定時(shí)時(shí)間,在使用上不方便。2、延時(shí)子程序:像本次任務(wù)中,CPU大量的時(shí)間停留在延時(shí)程序中增加了開銷,所以軟件定時(shí)時(shí)間不宜過長。3、可編程定時(shí)器:通過對系統(tǒng)時(shí)鐘脈沖的計(jì)數(shù)來實(shí)現(xiàn),計(jì)數(shù)值通過改變計(jì)數(shù)值程序設(shè)定。可以不占用CPU的開銷。

五、總結(jié)與提高項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—

任務(wù)3.跑馬燈

能力目標(biāo)1.能通過程序的編寫使燈從上依次向下輪流點(diǎn)亮,或從下往上依次輪流點(diǎn)亮。2.能用KeilC進(jìn)行單步,連續(xù)調(diào)試3.能進(jìn)行跑馬燈電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.學(xué)習(xí)向左或向右轉(zhuǎn)指令的運(yùn)用2.狀態(tài)計(jì)數(shù)器的設(shè)計(jì)3.程序流程圖的畫法項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—能力目標(biāo)一、任務(wù)要求P1口的8位分別接著二極管,通過編程依次實(shí)現(xiàn)P1口8個(gè)二極管由低位到高位依次點(diǎn)亮和熄滅,依次點(diǎn)亮的時(shí)間為100ms。二、任務(wù)分析通過任務(wù)要求分析,需要在P1口產(chǎn)生如下時(shí)序:見圖2-13所示。

一、任務(wù)要求100ms700ms

P1.023456P1.1P1.2P1.3P1.4P1.5P1.6P1.7圖2-13跑馬燈要求P1口產(chǎn)生的時(shí)序

100ms700msP1.023456P1.1P1.2P1.通過任務(wù)分析,要解決如下問題:(1)100ms的延時(shí)子程序,前面任務(wù)二中已會(huì)運(yùn)用,更可以直接拿來運(yùn)用。(2)狀態(tài)轉(zhuǎn)移的實(shí)現(xiàn)。(3)一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題。通過任務(wù)分析,要解決如下問題:三、學(xué)習(xí)知識(shí)(一)狀態(tài)轉(zhuǎn)移的實(shí)現(xiàn)

1、RLA;roundlefta助記例:(A)=81H,RLA

后A7移至A0的后邊,其它位向左移1位,執(zhí)行結(jié)果(A)=03H。將累加器A的內(nèi)容左移1位,位A7循環(huán)移入A0,不影響其它的標(biāo)志位。三、學(xué)習(xí)知識(shí)1、RLA;roundleft2、RLCA和RLA指令一樣都使A中內(nèi)容逐位左移一位,但RLCA將使CY連同A中的內(nèi)容一起左移循環(huán),A7進(jìn)入CY,CY進(jìn)入A0。

例:(A)=81H,CY=0執(zhí)行RLCA后,(A)=02H,CY=1

2、RLCA

例:(A)=81H,CY=0執(zhí)行RLC

3、RRA;roundrightARRA指令的異同點(diǎn)類似于RLA,僅是A中數(shù)據(jù)位移方向向右。例:(A)=81HRRA執(zhí)行結(jié)果(A)=0C0H

3、RRA;roundrightAR

4、RRCA指令的異同點(diǎn)類似于RLCA僅是A中數(shù)據(jù)位移方向向右。例:(A)=81H,CY=0執(zhí)行RRCA(A)=40H,CY=1

4、RRCA指令的異同點(diǎn)類似于RLCA僅是A中(二)一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題

在本任務(wù)中我們可以將Rn設(shè)為08H,然后進(jìn)行一次狀態(tài)轉(zhuǎn)移,Rn就減1,直至減到Rn為0(三)跑馬燈程序周而復(fù)始的實(shí)現(xiàn)學(xué)習(xí)指令:無條件轉(zhuǎn)移指令(4條)1、AJMPaddr11低11位這條指令的實(shí)現(xiàn)過程:①首先將當(dāng)前PC指針加2。②然后用addr11位的地址替換PC指針的低11位,形成新的PC指針而轉(zhuǎn)移到新的地址。③跳轉(zhuǎn)的范圍為2K。

(二)一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題(三)跑馬燈程序周而例:ZHUAN:AJMPaddr11設(shè)addr11=001,0000,0011B標(biāo)號(hào)ZHUAN的值為16位地址1230H①PC+21230H+02H=1232H=0001,0010,0011,0010B②替換低11位新的PC值為0001,0001,0000,0011B=1103H

例:ZHUAN:AJMPaddr112、長轉(zhuǎn)移指令(長跳轉(zhuǎn)指令)LJMPaddr16執(zhí)行完該條指令時(shí),無條件轉(zhuǎn)移到指令所提供的16位地址去,所以轉(zhuǎn)移地址可在64K程序空間內(nèi)跳轉(zhuǎn)。例:LJMP9000H執(zhí)行完該條指令后,將使程序轉(zhuǎn)移到9000H單元繼續(xù)執(zhí)行。2、長轉(zhuǎn)移指令(長跳轉(zhuǎn)指令)3、相對轉(zhuǎn)移指令——相對尋址SJMPrel

rel——取值范圍-128~+127(向前向后)采用的是跳轉(zhuǎn)兩量的補(bǔ)碼(向下為正,向上為負(fù)——求補(bǔ))最終跳轉(zhuǎn)的目的地為PC+2+rel4、間接轉(zhuǎn)移指令JMP@A+DPTR該指令是無條件的間接轉(zhuǎn)移(散轉(zhuǎn))指令,一般用于程序的多種出口的實(shí)現(xiàn)。

3、相對轉(zhuǎn)移指令——相對尋址例:根據(jù)累加器A的數(shù)值設(shè)計(jì)散轉(zhuǎn)表程序

MOVA,#dataMOVDPTR,#TABLEADDA,#dataJMP@A+DPTRTABLE:AJMPPORT0(PC=TABLE)AJMPPORT1(PC=TABLE1)AJMPPORT2(PC=TABLE2)

例:根據(jù)累加器A的數(shù)值設(shè)計(jì)散轉(zhuǎn)表程序條件0data0=0(A)=0PORT0(PC指針)出口0條件1data1=1(A)=1PORT1(PC指針)出口1條件2data2=2(A)=2PORT2(PC指針)出口2┈┈┈┈┈┈(PC指針)┈┈條件Ndatan=n(A)=nPORTN(PC指針)出口N

條件0data0=0PORT0出口0條件1data1=1PO例:設(shè)A中為鍵值,試編寫按鍵值處理相應(yīng)事件的程序段。解:MOVDPTR,#KYEGMOVB,#03HMULABJMP@A+DPTR┈┈KYEG:LJMPKEYG0

LJMPKEYG1

例:設(shè)A中為鍵值,試編寫按鍵值處理相應(yīng)事件的程序段。比較LJMP、AJMP、SJMP、JM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論