第四章匯編語言程序設(shè)計(jì)_第1頁
第四章匯編語言程序設(shè)計(jì)_第2頁
第四章匯編語言程序設(shè)計(jì)_第3頁
第四章匯編語言程序設(shè)計(jì)_第4頁
第四章匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 匯編語言程序設(shè)計(jì)1、編程將片內(nèi)40H60H單元中的內(nèi)容送到以3000H為首的存儲(chǔ)區(qū)內(nèi)。答:MOVR1,#40HMOVR2,#21HMOVDPTR,#3000HL1:MOVA,R1MOVXDPTR,AINCR1INCDPTRDJNZR2,L12、編程計(jì)算下列算式的程序(1)23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,B;溢出處理ADDCA,#00HXCHA,BADDA,#03H;A中為結(jié)果低位,B中為高位(2)CDH+15H-38H-46H=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H(3)1234H

2、+8347H=MOVA,#34HADDA,#47HMOV30H,AMOVA,#12HADDCA,#83HMOV31,A;30H存結(jié)果低位,31H存結(jié)果高位(4)AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,#04HMOV32H,A;30H為低位,32H為高位3、設(shè)有兩個(gè)4位BCD碼,分別存放在23H、22H單元和33H、32H單元中,求他們的和,并送入43H、42H單元中(低位在低字節(jié),高位在高字節(jié))。答:MOVA,22HADDA,32HMOV42H,AMOVA,23

3、HADDCA,33HMOV43H,A4、略5、編程計(jì)算片內(nèi)RAM區(qū)50H59H單元中數(shù)的平均值,結(jié)果存放在5AH中。答:MOVR0,#8MOVR1,#50HMOVA,#00HL1:ADDA,R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、編寫計(jì)算下式的程序。設(shè)乘積和平方結(jié)果均小于255。a 、b值分別存在片外3001H和3002H單元中,結(jié)果存于片外3000H單元中。(1) MOVDPTR,#3001HMOVXA,DPTRMOV30H,A;a暫存30H單元INCDPLMOVXA,DPTRCJNEA,30H,L1;是否a=bMOVA,#25SJMPSAVEL1:JNC

4、L2MOVB,30HMULABSJMPSAVEL2:MOVB,AMOVA,30HDIVABSAVE:MOVDPTR,#3000HMOVXDPRT,A(2) MOVDPTR,#3001HMOVXA,DPTRMOV30H,AINCDPTRMOVXA,DPTRADDA,30HMOVB,AMULAB; (ab)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,#10SAVE:MOVDPTR,#3000HMOVCDPTR,A7、設(shè)有兩個(gè)長(zhǎng)度均為15的數(shù)組,分別存放在以200H和210H為首地址的存儲(chǔ)區(qū)中,試編程求其對(duì)應(yīng)項(xiàng)之和

5、,結(jié)果存放到以220H為首地址的存儲(chǔ)區(qū)中。答:MOVDPH,#02HMOVR1,#15MOVR2,#00H; 數(shù)組1首地址低位MOVR3,#10H; 數(shù)組2首地址低位MOVR4,#20H; 和首地址低位L1:MOVDPL,R2MOVXA,DPTRMOVR1,AMOVDPL,R3MOVXA,DPTRADDA,R1MOVDPL,R4MOVXDTPR,AINCR2INCR3INCR4DJNZR1,L1SJMP$8、設(shè)有100個(gè)無符號(hào)數(shù),連續(xù)存放在以2000H為首地址的存儲(chǔ)區(qū)中,試編程統(tǒng)計(jì)正數(shù)、負(fù)數(shù)和零的個(gè)數(shù)。答:MOV30H,#00H;正數(shù)計(jì)數(shù)器MOV31H,#00H;負(fù)數(shù)計(jì)數(shù)器MOV32H,#00

6、H;零計(jì)數(shù)器MOVDPTR,#2000HMOVR1,#100L4:MOVXA,DPTRINCDPTRCJNEA,#0,L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1,L4SJMP$9、將片外數(shù)據(jù)存儲(chǔ)器地址為1000H1030H的數(shù)據(jù)塊,全部搬遷到片內(nèi)RAM 30H60H中,并將原數(shù)據(jù)塊區(qū)域全部清零。答:MOV R0,#30HMOV R2,#31HMOV DPTR ,#1000HLP:MOVX A,DPTRMOV R0,AAND A,#00HMOVX DPTR,AINC R0INC DPTRDJNZ R2,LPSJMP$10、試編寫一子程序

7、,是R1、R0指向的兩個(gè)片外RAM連續(xù)單元中的高4位二進(jìn)制數(shù),合并成一個(gè)字節(jié),裝入累加器A中。已知R0指向低地址,并要求該單元高四位放在A中高四位。答:MOVXA,R1ANLA,#0F0HSWAPAMOVR2,AMOVXA,R0ANLA,#0F0HORLA,R211、試編程把以2040H為首地址的連續(xù)50個(gè)單元的無符號(hào)數(shù)按降序排列,存放到以3000H為首地址的存儲(chǔ)區(qū)中。答:MOVR2,#50MOVR3,#20HMOVR4,#40H;源地址MOVR5,#30HMOVR6,#00H;目的地址SEND:MOVDPH,R3;SEND將2040H數(shù)據(jù)塊移入3000H存儲(chǔ)區(qū)MOVDPL,R4MOVXA,D

8、PTRINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,SENDMOVR2,#49;重復(fù)次數(shù)CMP1:MOVDPTR,#3000HMOVR3,#49;比較次數(shù)CMP2:MOVXA,DPTRMOVB,AINCDPTRMOVXA,DPTRCJNEA,B,L1L1:JCNOMOVEMOV30H,ACLRCMOVA,DPLSUBBA,#01HMOVDPL,AMOVA,30HMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,ANOMOVE:DJNZR3,CMP2;50個(gè)數(shù)

9、重復(fù)一遍?DJNZR2,CMP1;排序結(jié)束?LJMP$12、試編一查表程序,從首地址為2000H,長(zhǎng)度為100的數(shù)據(jù)塊中找出ASCII碼為A,將其地址送到20A0H和20A1H單元中。答:MOVDPTR,#2000HMOVR2,#100GO_ON:MOVXA,DPTRCJNEA,#41H,IFENDMOVA,DPHMOVB,DPLMOVDPTR,#20A0HMOVXDPTR,AINCDPTRXCHA,BMOVXDPTR,ASJMPOVERIFEND:INCDPTRDJNZR2,GO_ONOVER:SJMPOVER13、設(shè)在200H204H單元中,存放5個(gè)壓縮BCD碼,編程將他們轉(zhuǎn)換成ASCII

10、碼,存放到以205H單元為首地址的存儲(chǔ)區(qū)。答:MOVR2,#05HMOVR3,#02HMOVR4,#00HMOVR5,#02HMOVR6,#05HCHLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVB,ASWAPAANLA,#0FHORLA,#30HMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVA,BANLA,#0FHORLA,#30HMOVXDPTR,AMOVR5,DPHMOVR6,DPLDJNZR2,CHLP14、有一無符號(hào)數(shù)據(jù)塊長(zhǎng)度在30H單元中,其首地址為31H單元,求出數(shù)據(jù)塊中最大值,

11、并存入40H中。答:MOVR0,#31HMOVR1,30HMOV40H,#00HLOOP:MOVA,R0CJNEA,40H,L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H,AAGAIN:INCR0DJNZR1,LOOPSJMP$15、略16、在以2000H為首地址的存儲(chǔ)區(qū)內(nèi),存放20個(gè)用ASCII碼表示的09之間的數(shù),試編程,將它們轉(zhuǎn)換成BCD碼,并以壓縮BCD碼的形式存在3000H3009H單元中。答:MOVR2,#10MOVR3,#20HMOVR4,#00HMOVR5,#30HMOVR6,#00HLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRAN

12、LA,#0FHSWAPAXCHA,BINCDPTRMOVXA,DPTRANLA,#0FHORLA,BINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、試編程實(shí)現(xiàn)下列邏輯表達(dá)式功能。設(shè)P1.7P1.0為8個(gè)變量的輸入端,而其中P1.7又作為變量的輸出端。;輸入端定義X0EQUP1.0X1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQUP1.5X6EQUP1.6X7EQUP1.7(1)MOVC,X0ANLC,X1ANLC,/X2O

13、RLC,X3MOV00H,CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP1.7,C(2)MOVC,X0ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略 19、略20、試編寫延時(shí)1s、1min、1h子程序。;單片機(jī)時(shí)鐘fosc=12MHz,計(jì)算為近似值;1s延時(shí)子程序DLY_1S:MOVR0,#10L3:MOVR1,#200L2:MOVR2,#250L1:DJNZR2,L1DJNZR1,L

14、2DJNZR0,L3RET;延時(shí)1minDLY_1M:MOVR3,#60L4:LCALLDLY_1SDJNZR3,L4RET;延時(shí)1hDLY_1H:MOVR4,#60L5:LCALLDLY_1MDJNZR4,L5RET21、用程序?qū)崿F(xiàn)c=a2+b2。設(shè)a、b均小于10,a存在31H單元中,b存在32H單元中,c存33H單元。答:ORG1000HSR:MOVA,31HACALLSQRMOVR1,AMOVA,32HACALLSQRADDA,R1MOV33H,ASJMP$;求平方子程序如下(采用查平方表的方法)SQR:INCAMOVCA, A+PC RETTABLE:DB 0, 1, 4, 9, 1

15、6DB 25,36,49,64,81END22、如何實(shí)現(xiàn)將內(nèi)存單元40H60H的數(shù)逐個(gè)對(duì)應(yīng)傳到片外2540H2560H單元中?答:MOVR0,#40HMOVDPTR,#2540HMOVR2,#21HL1:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR2,L1SJMP$23、參考21題24、參考21題25、參考實(shí)驗(yàn)程序26、參考實(shí)驗(yàn)程序第五章 定時(shí)/計(jì)數(shù)器1、89S51單片機(jī)內(nèi)部有幾個(gè)定時(shí)/計(jì)數(shù)器,他們有哪些專用寄存器組成?答:89S51單片機(jī)內(nèi)部有兩個(gè)16位定時(shí)/計(jì)數(shù)器,為定時(shí)器0(T0)和定時(shí)器1(T1)。在定時(shí)器/計(jì)數(shù)器的16位的計(jì)數(shù)器是由兩個(gè)8位的專用寄存器TH0、

16、TL0,TH1、TL1組成。2、89S51單片機(jī)的定時(shí)/計(jì)數(shù)器有哪幾種工作方式,各有什么特點(diǎn)?答:定時(shí)器/計(jì)數(shù)器有四種工作方式:方式0,方式1,方式2,方式3。其中,方式3只適用于T0。以T0為例:方式0,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位組成一個(gè)13位計(jì)數(shù)器;方式1,和方式0的工作相同,唯一的差別是TH0和TL0組成一個(gè)16位計(jì)數(shù)器;方式2,把TL0配置成一個(gè)可以自動(dòng)恢復(fù)初值的8位計(jì)數(shù)器,TH0作為常數(shù)緩沖器。TH0由軟件預(yù)置值。當(dāng)TL0產(chǎn)生溢出時(shí),一方面使溢出標(biāo)志TF0置1,同時(shí)把TH0中的8位數(shù)據(jù)重新裝入TL0中;方式3,將使TL0和TH0成為兩

17、個(gè)相互獨(dú)立的8位計(jì)數(shù)器,TL0利用T0本身的一些控制,它的操作與方式0和方式1類似。而TH0被規(guī)定為只用作定時(shí)器功能,對(duì)機(jī)器周期計(jì)數(shù),并借用了T1的控制位TR1和TF1。在這種情況下TH0控制了T1的中斷。這時(shí)T1還可以設(shè)置為方式02,用于任何不需要中斷控制的場(chǎng)合,或者用作串行口的波特率發(fā)生器。3、定時(shí)/計(jì)數(shù)器用作定時(shí)方式時(shí),其定時(shí)時(shí)間與哪些因素有關(guān)?作為計(jì)數(shù)時(shí),對(duì)外界計(jì)數(shù)頻率有何限制?答:定時(shí)/計(jì)數(shù)器作定時(shí)時(shí),其計(jì)數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時(shí)鐘信號(hào)12分頻后提供。定時(shí)時(shí)間與時(shí)鐘頻率和定時(shí)初值有關(guān)。定時(shí)/計(jì)數(shù)器作計(jì)數(shù)時(shí),由于確認(rèn)1次負(fù)跳變要花2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)

18、脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。4、當(dāng)定時(shí)器T0用作方式3時(shí),由于TR1位已被T0占用,如何控制定時(shí)器T1的開啟和關(guān)閉?答:定時(shí)器T0用作方式3時(shí),由于TR1位已被T0占用,此時(shí)通過控制位C/T切換其定時(shí)或計(jì)數(shù)器工作方式。當(dāng)設(shè)置好工作方式時(shí),定時(shí)器T1自動(dòng)開始運(yùn)行,若要停止,只需送入一個(gè)置定時(shí)器T1為方式3的方式字。5、已知89S51單片機(jī)系統(tǒng)時(shí)鐘頻率為24MHz,請(qǐng)利用定時(shí)器T0和P1.2輸出矩形脈沖。矩形波高電平寬度50µs,低電平寬度350µs。答:ORG 1000HMOV TMOD,02H ;設(shè)置工作方式MOV TH0,09CH;設(shè)置定時(shí)器初值MOV TL

19、0,09CHSETB TR0;啟動(dòng)定時(shí)器LOOP:SETBP1.2;P1.0輸出高電平MOVR0,07HDEL:JBC TF0,REP;定時(shí)是否到?AJMP DELREP:SETBP1.2;P1.0輸出低電平DJNZR0,DELAJMP LOOPEND6、在89S51單片機(jī)中,已知時(shí)鐘頻率為12MHz,請(qǐng)編程使P1.0和P1.1分別輸出周期為2ms和500s的方波。答:選擇方式2,用定時(shí)器T1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBTR1L1:MOVR2,#04HL2:JNBTF1,$CLRTF1,CPLP1.1DJNZR2,L2CPLP1.0LJMPL17

20、、設(shè)系統(tǒng)時(shí)鐘為24MHz,試用定時(shí)器T0做外部計(jì)數(shù)器,編程實(shí)現(xiàn)每計(jì)到1000個(gè)脈沖,是T1開始2ms定時(shí),定時(shí)時(shí)間到后,T0又開始計(jì)數(shù),循環(huán)往復(fù)。答:MOVTMOD,#15H;T1定時(shí)方式1,T0計(jì)數(shù)方式1L1:MOVTH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,# HMOVTL1,# HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略第六章 80C51的串行接口1、什么是串行異步通信?他有哪些特點(diǎn)?有哪幾種幀格式?答:串行通信即所傳輸數(shù)據(jù)的各位按順序一位一位的發(fā)送或接收。串行通信分為同步和異步兩種方式。在異

21、步通信中數(shù)據(jù)或字符是一幀一幀地傳送的。幀定義為一個(gè)字符的完整的通信格式,通常也稱為幀格式。它的主要特點(diǎn):由于異步通信每傳送一幀有固定的格式,通信雙方只需按約定的幀格式來發(fā)送和接收數(shù)據(jù),所以硬件結(jié)構(gòu)比同步通信方式簡(jiǎn)單;此外它還能利用校驗(yàn)位檢測(cè)錯(cuò)誤。幀格式的一般形式是先用一個(gè)起始位“0”表示字符的開始,然后是數(shù)據(jù)位,其后是奇偶校驗(yàn)位,最后是停止位,用以表示字符結(jié)束。2、某異步通信接口按方式3傳送,已知其每分鐘傳送3600個(gè)字符,計(jì)算其傳送波特率。答:設(shè)每個(gè)字符由1個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)可編程位和1個(gè)結(jié)束位組成,其傳送波特率為: 11b×3600/60s=660bps3、80C51單片

22、機(jī)的串行口由哪些基本功能部件組成?答: 80C51單片機(jī)的串行口基本功能部件主要有:兩個(gè)數(shù)據(jù)緩沖寄存器SBUF,一個(gè)串行口控制寄存器SCON,一個(gè)輸入移位寄存器。4、80C51單片機(jī)的串行口有幾種工作方式?幾種幀格式?如何設(shè)置不同方式的波特率?答:80C51單片機(jī)的串行口有四種工作方式,由串行口控制寄存器中的SM0、SM1控制。80C51單片機(jī)的串行通信有8位、10位、11位三種幀格式。波特率設(shè)置:4種工作方式波特率的計(jì)算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可變的,均由定時(shí)器T1的溢出率控制。具體計(jì)算如下:方式0:波特率固定為時(shí)鐘頻率的1/12,不受SMOD的

23、影響。(SMOD為波特率倍增位)方式1的波特率=2SMOD/32×定時(shí)器T1的溢出率 方式2的波特率=2SMOD/64×fosc方式3的波特率=2SMOD/32×定時(shí)器T1的溢出率5、為什么定時(shí)器T1用作串行口波特率發(fā)生器時(shí),常采用工作方式2?答:在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收的數(shù)據(jù)速率(即波特率)要有一定的約定。串口有四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,有定時(shí)器T1的溢出率控制。定時(shí)器T1用作串行口波特率發(fā)生器時(shí),因?yàn)楣ぷ鞣绞?是自動(dòng)重裝載方式,因而定時(shí)器T1作波特率發(fā)生器常采用工作方式2.6、已知定時(shí)器T1設(shè)

24、置成方式2,用作波特率發(fā)生器,系統(tǒng)時(shí)鐘頻率為24MHz,求可能產(chǎn)生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFH,TL1=0FFH波特率最高=2/32×24M/(12×(256255)bps=0.125Mbps最低波特率:TH1=00H,TL1=00H波特率最低=1/32×24M/(12×(2560)bps=244bps7、略(參見教材相關(guān)例題)8、利用AT89S51串行口控制8個(gè)發(fā)光二極管工作,要求發(fā)光二極管每隔1S交替的亮滅,畫出電路并編寫程序。答:電路如下圖所示實(shí)驗(yàn)程序如下:CLRP1.0;清輸出SETBP1.0;允許串行移位MOVS

25、CON,#00HMOVA,#55H;顯示初值A(chǔ)GAIN:MOVSBUF,AJNBTI,$CLRTILCALLDLY_1SRRALJMPAGAINDLY_1S:MOVR1,#20L3:MOVR2,#200L2:MOVR3,#250L1:DJNZR3,L1DJNZR2,L2DJNZR1,L3RET9、串行口異步通信時(shí),ASCII碼“3”的字符格式(10位)如何?答:串行口異步通信時(shí),10位的數(shù)據(jù)幀結(jié)構(gòu)為:一個(gè)起始位(0),8個(gè)數(shù)據(jù)位(先低位后高位),一個(gè)停止位(1)。故ASCII碼“3” 的字符格式為:0110011001B。10、若選用定時(shí)器T1作波特率發(fā)生器,設(shè)fosc=6MHz,計(jì)數(shù)初值為0

26、FDH,SMOD=1,求波特率是多少?答:若選用定時(shí)器T1作波特率發(fā)生器,波特率由下式確定:波特率=(定時(shí)器T1溢出率)/n公式中:n為32或16,取決于特殊功能寄存器PCON中的SMOD位的狀態(tài)。若SMOD=0,則n=32。若SMOD=1,則n=16。定時(shí)器T1溢出率=定時(shí)器T1的溢出次數(shù)/秒。由題可知:fosc=6MHz,計(jì)數(shù)初值為0FDH,SMOD=1,故第七章 中斷系統(tǒng)1、什么是中斷?在單片機(jī)中中斷能實(shí)現(xiàn)哪些功能?答:中斷是通過硬件來改變CPU程序運(yùn)行方向。計(jì)算機(jī)在執(zhí)行程序過程中,由于CPU以外的原因,有必要盡快終止當(dāng)前程序的執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,在回來繼續(xù)執(zhí)行被

27、終止的原程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況成為“中斷”。中斷能實(shí)現(xiàn)的功能:(1)能實(shí)現(xiàn)中斷及返回。(2)能實(shí)現(xiàn)優(yōu)先權(quán)的排隊(duì)。(3)能實(shí)現(xiàn)中斷的嵌套。2、什么是中斷優(yōu)先級(jí)?中斷優(yōu)先級(jí)處理的原則是什么?答:通常,在系統(tǒng)中會(huì)有多個(gè)中斷源,有時(shí)會(huì)出現(xiàn)兩個(gè)或更多個(gè)中斷源同時(shí)提出中斷請(qǐng)求的情況,這就要求計(jì)算機(jī)能區(qū)分各個(gè)中斷源的請(qǐng)求,有能確定首先為哪一個(gè)中斷源服務(wù)。為了解決這一問題,通常給各中斷源規(guī)定了優(yōu)先級(jí)別,稱為優(yōu)先權(quán)或中斷優(yōu)先級(jí)。中斷優(yōu)先級(jí)處理原則:兩個(gè)或兩個(gè)以上的中斷源同時(shí)提出中斷申請(qǐng)時(shí),計(jì)算機(jī)首先為中斷優(yōu)先權(quán)最高的中斷服務(wù),服務(wù)結(jié)束以后,再響應(yīng)級(jí)別較低的中斷源。3、80C5

28、1有幾個(gè)中斷源,各中斷標(biāo)志如何產(chǎn)生的,又如何清“0”的?CPU響應(yīng)中斷時(shí),中斷入口地址各是多少?答:8051單片機(jī)有5個(gè)中斷源,分別是:外部中斷0、定時(shí)器T0中斷、外部中斷1、定時(shí)器T1中斷、串行口中斷。中斷標(biāo)志產(chǎn)生與清“0”:(1)外部中斷:外部中斷由外部原因引起,可以通過兩個(gè)固定的引腳()輸入信號(hào)。一旦輸入信號(hào)有效,則向CPU申請(qǐng)中斷并使IE0(或IE1)=1。硬件復(fù)位。(2)定時(shí)器中斷:定時(shí)器中斷是為了滿足定時(shí)或計(jì)數(shù)溢出處理的需要而設(shè)置的。當(dāng)定時(shí)/計(jì)數(shù)器的計(jì)數(shù)結(jié)構(gòu)發(fā)生計(jì)數(shù)溢出時(shí),即表明定時(shí)時(shí)間到或計(jì)數(shù)次數(shù)到,此時(shí)就以計(jì)數(shù)器溢出信號(hào)作為中斷請(qǐng)求,去置一個(gè)溢出標(biāo)志位(TF0或TF1=1)。使

29、用中斷時(shí)通過硬件復(fù)位,在查詢方式下可由軟件復(fù)位。(3)串口中斷:串行中斷請(qǐng)求是在單片機(jī)內(nèi)部產(chǎn)生的。當(dāng)發(fā)送完數(shù)據(jù)或接收完數(shù)據(jù)后,就會(huì)置相應(yīng)標(biāo)志位(TI或RI=1)。一旦響應(yīng)中斷,必須由軟件進(jìn)行復(fù)位。 中斷入口地址:外部中斷0、定時(shí)器T0中斷、外部中斷1、定時(shí)器T1中斷、串行口中斷的入口地址依次為:0003H,000BH,0013H,001BH,0023H。4、中斷響應(yīng)時(shí)間是否確定不變的?為什么?答:中斷響應(yīng)時(shí)間不是確定不變的。由于CPU不是在任何情況下都可以中斷請(qǐng)求予以響應(yīng),不同情況對(duì)中斷響應(yīng)的時(shí)間也是不一樣的。中斷信號(hào)會(huì)在每個(gè)機(jī)器周期的S5P2時(shí)刻對(duì)相應(yīng)中斷標(biāo)志位進(jìn)行置位,若CPU在下一個(gè)機(jī)器

30、周期才能查詢到中斷請(qǐng)求,如果滿足中斷響應(yīng)的條件,下一條指令將是一硬件長(zhǎng)調(diào)用指令,使程序轉(zhuǎn)入中斷矢量入口,調(diào)用本身需要2個(gè)機(jī)器周期,因此響應(yīng)中斷至少需要3個(gè)機(jī)器周期。如遇正在執(zhí)行的指令,或有同級(jí)、更高級(jí)的中斷服務(wù)正在進(jìn)行,則需更長(zhǎng)時(shí)間。若系統(tǒng)中只有一個(gè)中斷源,則響應(yīng)時(shí)間為38個(gè)機(jī)器周期。5、用定時(shí)器T1定時(shí),要求在P1.6口輸出一個(gè)方波,周期為1min,晶振為12MHz,請(qǐng)用中斷方式實(shí)現(xiàn),并分析采用中斷后的優(yōu)點(diǎn)。答:使用定時(shí)器T1,工作在方式1,定時(shí)50msORG0000HLJMPMAINORG001BHLJMPT1_SERORG0100HMAIN:MOVTMOD,#10HMOV R0,#20;

31、1s定時(shí)次數(shù)MOVR1,#30;定時(shí)30sMOVTH1,#3CHMOVTL1,#0B0HSETBET1SETBEASETBTR1SETBP1.6SJMP$0RG0200HT1_SER:MOVTH1,#3CHMOVTL1,#0B0HDJNZR0,L1MOVR0,#20DJNZR1,L1MOVR1,#30CPLP1.6L1:RETI6、中斷響應(yīng)過程中,為什么通常要保護(hù)現(xiàn)場(chǎng)?如何保護(hù)?答:因?yàn)橐话阒鞒绦蚝椭袛喾?wù)程序都可能會(huì)用到累加器、PSW及其他寄存器。CPU在進(jìn)入中斷服務(wù)程序后,用到上述寄存器時(shí),就會(huì)破壞原來存在寄存器中的內(nèi)容,一旦中斷返回,就會(huì)造成主程序的混亂。因此在進(jìn)入中斷服務(wù)程序后,一般要先保護(hù)現(xiàn)場(chǎng),然后在執(zhí)行中斷處理程序,在返回主程序之前再恢復(fù)現(xiàn)場(chǎng)。保護(hù)方法一般是把累加器、PSW或其他相關(guān)寄存器數(shù)據(jù)壓入堆棧。在保護(hù)現(xiàn)場(chǎng)時(shí),一般規(guī)定此時(shí)CPU不響應(yīng)新的和中斷請(qǐng)求,這就要求在編寫中斷服務(wù)程序時(shí),注意在保護(hù)現(xiàn)場(chǎng)或恢復(fù)現(xiàn)場(chǎng)時(shí)要關(guān)閉中斷。7、試用中斷法設(shè)計(jì)秒、分脈沖發(fā)生器。答:利用定時(shí)器T0定時(shí),P1.0作為秒發(fā)生器輸出端,P1.1作為分脈沖發(fā)生器的輸出端。設(shè)晶振為12MHz。片內(nèi)50H和51H單元分別用于秒、分計(jì)數(shù)。使用T0方式1定時(shí)50ms。ORG0000HLJMPMAINORG0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論