《單片機(jī)原理及接口技術(shù)》(第二版)余錫存著-課后習(xí)題答案_第1頁
《單片機(jī)原理及接口技術(shù)》(第二版)余錫存著-課后習(xí)題答案_第2頁
《單片機(jī)原理及接口技術(shù)》(第二版)余錫存著-課后習(xí)題答案_第3頁
《單片機(jī)原理及接口技術(shù)》(第二版)余錫存著-課后習(xí)題答案_第4頁
《單片機(jī)原理及接口技術(shù)》(第二版)余錫存著-課后習(xí)題答案_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

第二章

51、87c51、80c51和80c31單片機(jī)的主要區(qū)別在那里?

答:相同之處是:制造工藝都為CHMOS,都有128字節(jié)片內(nèi)RAM、兩個(gè)定時(shí)/計(jì)數(shù)器、4

個(gè)8位I/O并行口,一個(gè)串行口和5個(gè)中斷源。

主要區(qū)別:

①89C51片內(nèi)4K字節(jié)FLASHROM;

②87C51片內(nèi)4K字節(jié)EPROM;

③80C51片內(nèi)4K字節(jié)掩膜ROM;

④80C31片內(nèi)無程序存儲(chǔ)器。

2.MCS-51單片機(jī)引腳有多少I/O線?它們和單片機(jī)對外的地址總線和數(shù)據(jù)總線有何關(guān)系?

答:4個(gè)8位I/O并行口,一個(gè)串行口;

其中P0口為外接程存和數(shù)存的地址低8位和數(shù)據(jù)總線的時(shí)分復(fù)用接口;

其中P2口為外接程存和數(shù)存的地址高8位總線接口;

其中P1口為真正的用戶口線;

其中P3口有第2功能;

以上4個(gè)口線在沒有專用功能時(shí),也可以做通用I/O口線用。

3.簡述8031片內(nèi)RAM區(qū)地址空間的分配特點(diǎn)。

答:

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MCS-51單片機(jī)片內(nèi)RAM為256字節(jié),地址范圍為00H?FFH,分為兩大部分:低128

字節(jié)(00H?7FH)為真正的RAM區(qū);高128字節(jié)(80H-FFH)為特殊功能寄存器區(qū)SFR。

在低128字節(jié)RAM中,00H?1FH共32單元是4個(gè)通用工作寄存器區(qū)。每一個(gè)區(qū)有

8個(gè)通用寄存器R0?R7。

4.MCS-51單片機(jī)由哪幾個(gè)部分組成。

答:

①一個(gè)8位CPU;

②4KBROMorEPROM(8031無ROM);

③128字節(jié)RAM數(shù)據(jù)存儲(chǔ)器;

④21個(gè)特殊功能寄存器SFR;

⑤4個(gè)8位并行I/O口,其中PO、P2為地址/數(shù)據(jù)線,可尋址64KB程序存儲(chǔ)器和64KB

數(shù)據(jù)存儲(chǔ)器;

⑥一個(gè)可編程全雙工串行口;

⑦具有5個(gè)中斷源,兩個(gè)優(yōu)先級,嵌套中斷結(jié)構(gòu);

⑧兩個(gè)16位定時(shí)器/計(jì)數(shù)器;

⑨一個(gè)片內(nèi)振蕩器及時(shí)鐘電路。

5.MCS-51單片機(jī)的麗,這瓦示麗信號各自的功能是什么?

答:都是控制總線

①EA/VPP-.訪問內(nèi)部程序存儲(chǔ)器的控制信號/編程電壓輸入端。EA=1時(shí),CPU從

片內(nèi)讀取指令,拓=0CPU從片外讀取指令。

②ALE/PROG地址鎖存允許/編程信號線。

③PSEN:外部程序存儲(chǔ)器讀選通信號。

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

④RSEWPD:復(fù)位輸入信號/掉電保護(hù)后備電源引腳。

6.MCS-51單片機(jī)如何實(shí)現(xiàn)工作寄存器組的選擇?

RS1(PSW.4)、RS0(PSW.3)為工作寄存器組的選擇位;

①取值為00時(shí)選擇第0組工作寄存器,片內(nèi)RAM地址是00H?07H,名稱為R0?

R7;

②取值為01時(shí)選擇第1組工作寄存器,片內(nèi)RAM地址是08H?0FH,名稱為R0?R7;

③取值為10時(shí)選擇第2組工作寄存器,片內(nèi)RAM地址是10H?17H,名稱為R0?R7;

④取值為11時(shí)選擇第3組工作寄存器,片內(nèi)RAM地址是18H?1FH,名稱為R0?R7。

7.什么是時(shí)鐘周期、機(jī)器周期、指令周期?當(dāng)單片機(jī)的時(shí)鐘頻率為12MHz時(shí),一個(gè)機(jī)器周

期是多少?ALE引腳的輸出頻率是多少?

(1)振蕩周期:也稱時(shí)鐘周期,是指為單片機(jī)提供時(shí)鐘脈沖信號的振蕩源的周期。

(2)狀態(tài)周期:每個(gè)狀態(tài)周期為時(shí)鐘周期的2倍,是振蕩周期經(jīng)二分頻后得到的。

(3)機(jī)器周期:一個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期S1?S6,也就是12個(gè)時(shí)鐘周期。

在一個(gè)機(jī)器周期內(nèi),CPU可以完成一個(gè)獨(dú)立的操作。

(4)指令周期:它是指CPU完成一條操作所需的全部時(shí)間。每條指令執(zhí)行時(shí)間都是有一

個(gè)或幾個(gè)機(jī)器周期組成。

MCS-51系統(tǒng)中,有單周期指令、雙周期指令和四周期指令。

當(dāng)單片機(jī)的時(shí)鐘頻率為12MHz時(shí),一個(gè)機(jī)器周期是多少1那(微秒);ALE引腳的輸出

頻率是多少2那(微秒)。

第三章

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

1.MCS-51指令系統(tǒng)按功能分為幾類?具有幾種尋址方式?他們的尋址范圍如何?答:

①按功能分為5類,分別是:數(shù)據(jù)傳送類、算術(shù)操作類、邏輯操作類、控制轉(zhuǎn)移類和位操

作類;

②具有7種尋址方式;

③立即尋址,尋址范圍是程序存儲(chǔ)器;

直接尋址,尋址范圍是內(nèi)部RAM低128字節(jié)和高128字節(jié);

寄存器尋址,尋址范圍是四組工作寄存器R0?R7;

寄存器間接尋址,尋址范圍是內(nèi)部RAM的低128和外部RAM低64K可尋址空間;

基址寄存器加變址寄存器間接尋址,尋址范圍是程序存儲(chǔ)器;

相對尋址,尋址范圍是以下一條指令為相對地址的-128?+127字節(jié)范圍內(nèi);

位尋址,尋址范圍是可位尋址空間,包括內(nèi)部RAM的可尋址位,特殊功能寄存器中的可

尋址位。

2.設(shè)內(nèi)部RAM中59H單元的內(nèi)容為50H,寫出當(dāng)執(zhí)行下列程序段后寄存器A,RO,和內(nèi)部RAM

中50H、51H單元的內(nèi)容為和值?

答:

MOVA,59H;(A)=(59H)=50H

MOVROA;(RO)=50H

MOVA,#00;(A)=00

MOV@R0A;((RO))=(50H)=00

MOVA,#25H;(A)=25H

MOV51HA;(51H)=25H

MOV52H,#70H;(52H)=70H

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

執(zhí)行下列程序段后:(A)=25H,(RO)=50H,(50同=00、(51H)=25H

3.PSW中Cy與OV有何不同?下列程序段執(zhí)行后(Cy)=?(OV)=?。

MOVA,#56H

ADDA,#74H

答:

Cy一進(jìn)位、借位標(biāo)志位;

OV一溢出標(biāo)志位。

MOVA,#56H;(A)=56H=01010110B

ADDA,#74H;(A)=56H+74H=0CAH=11001010B,

程序執(zhí)行后:(Cy)=0(OV)=1

4.MOVCA,@A+DPTR與MOVXA,@DPTR指令有何不同?

答:

①M(fèi)OVCA,@A+DPTR;尋找的操作數(shù)在程序存儲(chǔ)器中,地址是:(A)+(DPTR);

②MOVXA,@DPTR;尋找的操作數(shù)在外部數(shù)據(jù)存儲(chǔ)器中,地址是:(DPTR)。

5.AJMP、IJMP、SJMP指令功能上有何不同?

答:

相同之處,都是無條件轉(zhuǎn)移指令。

①AJMPaddrll;下調(diào)指令為基準(zhǔn)的2KB范圍內(nèi)的跳轉(zhuǎn)指令。

②LJMPaddrl6;轉(zhuǎn)移的目標(biāo)地址可以在64KB程序存儲(chǔ)器的任何地方。

③SJMPrel;下調(diào)指令為基準(zhǔn)的-128B?+127B范圍內(nèi)的短跳轉(zhuǎn)指令。

6.設(shè)堆棧指針SP中的內(nèi)容為60H,內(nèi)部RAM中30H和31H單元的內(nèi)容分別為24H和10H,

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?

PUSH30H

PUSH31H

POPDPL

POPDPH

MOV30H,#00H

MOV31H,#0FFH

答:

PUSH30H;(61H)=(30H)=24H

PUSH31H;(62H)=(31H)=10H

POPDPL;(DPL)=(62H)=10H

POPDPH;(DPH)=(61H)=24H

MOV30H,#00H;(30H)=OOH

MOV31H,#0FFH;(31H)=OFFH

程序執(zhí)行后:(61H)=24H,(62H)=10H,(30H)=OOH,(31坨=0FFH,(DPTR)=2410H

7.試分析下列程序段,當(dāng)程序執(zhí)行后,位地址00H和01H中的內(nèi)容將為何值?P1口的8條

I/O線為何狀態(tài)?

CLRC

MOVA,#66H

JCLOOP1

CPLC

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

SETB01H

JBACC.2J.OOP2

LOOP2:MOVP1A

CLRC;(Cy)=O

MOVA,#66H;(A)=66H=01100110B

JCLOOP1;因此時(shí)(Cy)=0,所以不跳轉(zhuǎn)

(Cy)=1

SETB01H;(01H)=1

LOOP1:ORLCACC.O;(Cy)=(Cy)V(ACC.O)=1

JBACC.2J.OOP2;因(ACC.2)=1

LOOP2:MOVP1?A;(Pl)=01100110B

8.要完成以下的數(shù)據(jù)傳送,應(yīng)如何用MCS-51指令實(shí)現(xiàn)?

(1)R1的內(nèi)容傳送到R0;

(2)片外RAM20H單元的內(nèi)容送R0;

(3)片外RAM20H單元的內(nèi)容送片內(nèi)RAM20H單元;

(4)片外RAM1000H單元的內(nèi)容送片內(nèi)RAM20H單元;

(5)ROM2000H單元的內(nèi)容送R0;

(6)ROM2000H單元的內(nèi)容送片內(nèi)RAM20H單元;

⑺ROM2000H單元的內(nèi)容送片外RAM20H單元。

(1)R1的內(nèi)容傳送到R0;

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOVA,R1

MOVROA

⑵片外RAM20H單元的內(nèi)容送RO;

MOVRl,#20H

MOVXA,@R1

MOVROA

⑶片外RAM20H單元的內(nèi)容送片內(nèi)RAM20H單元;

MOVRl,#20H

MOVXA,@R1

MOV20HA

(4)片外RAM1000H單元的內(nèi)容送片內(nèi)RAM20H單元;

MOVDPTR,#20H

MOVXA,@DPTR

MOV20HA.

⑸ROM2000H單元的內(nèi)容送R0;

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOVROA

(6)ROM2000H單元的內(nèi)容送片內(nèi)RAM20H單元;

MOVDPTR,#2000H

CLRA

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOVCA,@A+DPTR

MOV20HA.

(7)ROM2000H單元的內(nèi)容送片外RAM20H單元。

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOVR0,#20H

MOVX@R0A

9.分析以下程序每條指令執(zhí)行的結(jié)果:

MOVA,#25H;(A)=25H

MOVR1,#33H;(RI)=33H

MOV4OH,#1AH;(40H)=1AH

MOVR0,40H;(RO)=1AH

ADDA,RI;(A)=25H+33H=58H

ADDCA,@R0;(A)=58H+(1AH)+(Cy)=58H

ADDCA,40H;(A)=58H+1AH+(Cy)=72H

10.設(shè)A=83H,R0=17H,(17H)=34H,執(zhí)行下列程序后,(A)=?

ANLA,#17H;(A)=1000001IBA00010111B=0000001IB

ORL17H4;(17H)=00110100BV0000001IB=00110111B

XRLA,@R0;(A)=0000001IB?00110111=00110100B

CPLA;(A)=11001011B

11.兩個(gè)4位BCD碼數(shù)相加,被加數(shù)和加數(shù)分別存于30H、31H和40H、41H單元中(次

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

序?yàn)榍弧傥辉诘偷刂分?,十位、個(gè)位在高地址中),和數(shù)放在50H、51H、52H中(52H

用于存放最高位的進(jìn)位),試編寫加法程序。

解:ORG00H

MOV30H,#12H

MOV31H,#34H9

MOV40H,#56H9

MOV41H,#78H9

MOVA,31H;取被加數(shù)十個(gè)位

ADDA,41H;相加,(A)=(31H)+(41H)

DAA;十進(jìn)制調(diào)整

MOV51H4;存十位個(gè)位運(yùn)算結(jié)果

MOVA,30H;取被加數(shù)千百位

ADDCA,40H;相加,(A)=(30H)+(40同

DAA;十進(jìn)制調(diào)整

MOV50HA;存千位百位運(yùn)算結(jié)果

CLRA;清A

ADDCA,#0;將進(jìn)位加到A中

MOV52H,A;存進(jìn)位

SJMP$

12.試編寫一程序,查找內(nèi)部RAM單元的20H?50H中是否有OAAH這一數(shù)據(jù),若有,則

將51H單元置為01H,若沒有,則使51H單元置0。

解:ORG00H

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOV30H,#0AAH;

MOVRI,#31H;

MOVRO,#20H;

ByIAO:MOVA,@R0

CJNEA,#0AAH,LOOP;

MOV51H,#01H

SJMPJIESHU

LOOP:INCRO

DJNZR1,BgIAO

MOV51H,#00H

JIESHU:SJMP$

第四章

1、若有兩個(gè)符號數(shù)X,Y分別存放在內(nèi)部存儲(chǔ)器50H、51H單元中,試編寫一個(gè)程序?qū)崿F(xiàn)

X*10+Y,結(jié)果存入52H、53H中。

1ORG00H

000078502MOVR0,#50H

0002E63MOVA,@R0

000375F00A4MOVB,#0AH

0006A45MULAB

0007086INCR0

0008267ADDA,@R0

0009088INCR0

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

000AA6F09MOV@R0,B

000C0810INCRO

000DF611MOV@R0A

12END

2、在以3000H為首地址的外部RAM中,存放了14個(gè)以ASCII碼表示的0?9的數(shù),試編寫

程序?qū)⑺鼈冝D(zhuǎn)換成BCD碼,并以壓縮BCD形式存放在以2000H為首地址的外部RAM中。

1ORGOOH

00009030002MOVDPTR,#3000H;原始數(shù)據(jù)首地址

000378073MOVR0,#07;循環(huán)次數(shù)

000579304MOVRl,#30H;轉(zhuǎn)換結(jié)果暫存區(qū)指針

0007E05CHI:MOVXA,@DPTR

0008550F6ANLA,#0000111IB

000AC47SWAPA

000BF5F08MOVBA

000DA39INCDPTR

000EE010MOVXA,@DPTR

000F550F11ANLA,#0000111IB

001145F012ORLA,B

0013F713MOV@R13.

00140914INCRI

0015A315INCDPTR

0016D8EF16DJNZR0,CHI

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

001890200017MOVDPTR,#2000H;轉(zhuǎn)換結(jié)果存儲(chǔ)區(qū)

001B7A0718MOVR2,#07H;結(jié)果個(gè)數(shù)

001D793019MOVRI,#30H

001FE720CH2:MOVA,@R1;

3、采樣的5個(gè)值分別存放在RO、RI、R2、R3、R4中,求出它們的中間值,并存放在R2

中。

1ORG00H

>000078052MOVR0,#5

000279063MOVRI,#6

00047A074MOVR2,#7

00067B085MOVR3,#8

00087C096MOVR4,#9

000AE47CLRA;

000BC38CLRC;

000CE89MOVA,R0;

000D2910ADDA,RI

000E2A11ADDA,R2;

000F2B12ADDA,R3

00102C13ADDA,R4

001175F00514MOVB,#5

00148415DIVAB

0015FA16MOVR2rA

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

001617END

18END

4、以BUF1為起始地址的外部數(shù)據(jù)存儲(chǔ)區(qū)中存放著16個(gè)單字節(jié)的無符號數(shù),求其平均值并

送入R2中。

1ORGOOH

2BUF1EQU#1000H

00009010003MOVDPTRBUF1

0003AA004MOVR2,0

000578165MOVR0,#16H

0007E06SUM:MOVXA,@DPTR

00082A7ADDA,R2

0009FA8MOVR2A

000AA39INCDPTR

000BD8FA10DJNZR0,SUM

000D75F01011MOVB,#10H

00108412DIVAB

0011FA13MOVR2公

14END

5、試編寫程序,將內(nèi)部RAM單元中DATA1開始的20個(gè)單字節(jié)數(shù)依次與DATA2單元為起

始地址的20個(gè)單字節(jié)數(shù)據(jù)進(jìn)行交換。

>1DATA1EQU#30H

2DATA2EQU#50H

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

3LENEQU#16

4ORGOH

000078305MOVR0QATA1

000279506MOVR1QATA2

00047A107MOVR2J£N

0006E68EXC:MOVA,@R0

0007C79XCHA,@R1

0008F610MOV@R0A

00090811INCR0

000A0912INCRI

000BDAF913DJNZR2,EXC

14END

6、某場歌手賽,共有10個(gè)評委,試編寫一程序,輸入10個(gè)評分,去掉最高分和最低分,

求平均分(均為BCD碼)。

ORG0H

NEQU#5

BLOCKEQU#30H

ISELSORT:MOVR7N

DECR7

MOVRI,BLOCK

ISST1:MOVRO,BLOCK

MOVA,R7

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOVR6公

MOVA,@R0

MOVB^A

ISST2:INCRI

MOVA,@R1

CLRC

SUBBA,B

JCISST3

MOVA,@R1

MOVR2A

MOVB,@R1

ISST3:DJNZR6JSST2

MOVA,B

XCHA,@R1

MOVB,R2

MOV@R1,B

MOV@R13,

DJNZR7JSST1

MOVRO,BLOCK

MOV@R0,#0;去掉最低分

MOVA,BLOCK

ADDA,#9

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOVROA

MOV@R0,#0;去掉最高分

AD:MOVRO,BLOCK

INCRO

MOVRI,#8

CLRA

CLRC

MOVB,#0

ADL:ADDA,@RO

DAA

MOVR2A

ADDCA,#0

MOVB^A

MOVA,R2

DJNZRl^DL

MOVR5,0

MOVR4,B

MOVR3,A

MOVR2,#0

MOVRI,#8

R5R4R3/R2R1=R4R3

MOVRl,#00H

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

MOVR2,#0FH

MOVR3,#04H

MOVR4,#05H

MOVR5,#06H

LCALL_DIV

AJMP$

DIV:;{

CLRC

MOV30H,#0

MOV31H,#0

MOV32H,#0

DIV_LOOP:CLRC

MOVA,R3

SUBBA,RI

MOVR3A

MOVA,R4

SUBBA,R2

MOVR4公

MOVA,R5

SUBBA,#0

MOVR54

JC_DIV_END

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

_INC_SHANG:CLRC

MOVA,30H

ADDCA,#l

MOV30HA

MOVA,31H

ADDCA,#0

MOV31HA

MOVA,32H

ADDCA,#0

MOV32HA

IJMP_DIV_LOOP

_DIV_END:CLRC

MOVA,RI

ADDCA,R3

MOVA,R2

ADDCA,R4

MOVR3,30H

MOVR4,31H

END

7、編寫將一個(gè)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的子程序。

>000078FE2MOVR0,#FEH

000279303MOVRI,#30H

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

0004E84HEXBCD:MOVA,R0

000575F0645MOVB,#100

0008846DIVAB

0009F77MOV@R1,A

000A740A8MOVA,#10

000CC5F09XCHA,B

000E8410DIVAB

000F0911INCRI

0010F712MOV@R]jA

00110913INCRI

0012A7F014MOV@R1,B

15RET

8、在內(nèi)部RAM的BLOCK開始的單元中有一無符號數(shù)據(jù)塊,數(shù)據(jù)長度為LEN。試編程求

其中最大的數(shù)并存入MAX中。

MCS51

1ORG0H

2LENEQU#10;數(shù)據(jù)塊長度

3MAXEQU#40H

000078304MOVR0,#30H;BLOCK首地址

0002790A5MOVRl^LEN

0004196DECRI;循環(huán)次數(shù)

0005C37CLRC

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

0006E68LOOP:MOVA,@R0

0007089INCR0

00089610SUBBA,@R0

0009400211JCEXCHANG

000B800212SJMPNEXT

000D86F013EXCHANG:MOVB,@R0

000FC314NEXT:CLRC

0010D9F415DJNZRILOOP

001285F04016MOV40H,B;MAX單元17END

9、試編程將內(nèi)部RAM中41H?43H單元中的數(shù)左移4位,移出部分送50H。

題意不清。

10、在外部RAM中BLOCK開始的單元中有一數(shù)據(jù)塊,數(shù)據(jù)長度為LEN,試編程統(tǒng)計(jì)其中的

正數(shù)、負(fù)數(shù)和零的個(gè)數(shù)分別存入內(nèi)部RAM的Pcount、Mcoun和Zcount單元。

MCS51

>1ORGOH

2LENEQU#10;數(shù)據(jù)塊長度

3PCOUNTEQU#30H

4MCOUNTEQU#31H

5ZCOUNTEQU#32H

6BLOCKEQU#40H

000078407MOVR0,BLOCK;BLOCK首地址

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

0002790A8MOVR1J£N

0004E69LOOP:MOVA,@R0

0005C310CLRC

0006B4000411CJNEA,#OH,SULT1

0009053212INC32H

000B800913SJMPSULT2

000D3314SULT1:RLCA;移出符號位以判斷正負(fù)!

000E400415JCNEG

0010053016INC30H

0012800217SJMPSULT2

0014053118NEG:INC31H

00160819SULT2:INCRO

0017D9EB20DJNZRILOOP

11、試編寫一查表求平方的子程序SQR(設(shè)X在累加器A中,A小于15,平方數(shù)存入工作寄

存器R7中)。

00009000082MOVDPTR,#TAB

000378303MOVR0,#30H

0005E64MOVA,@R0

0006935MOVCA,@A+DPTR

0007FF6MOVR7八

0008010104097TAB:DB1,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225

000C10192431

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

001040516479

001490A9C4E1

8END

12、試編寫一程序,將外部數(shù)據(jù)區(qū)DATA1單元開始的50個(gè)單節(jié)數(shù)逐一依次移動(dòng)到內(nèi)部RAM

中DATA2單元開始的數(shù)據(jù)區(qū)中。

>MCS51

1ORG0H

2DATA1EQU#1000H

3DATA2EQU#30H

4LENEQU#10H

00009010005MOVDPTR,DATA1

000378306MOVR0QATA2

000579107MOVR1J£N

0007E08LOOP:MOVXA,@DPTR

0008F69MOV@R0jA

0009A310INCDPTR

000A0811INCR0

000BD9FA12DJNZRILOOP

13END

13、14,略

第五章

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

1、簡述中斷、中斷源、中斷源優(yōu)先級及中斷嵌套的含義。

中斷是單片機(jī)實(shí)時(shí)地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事件發(fā)生

時(shí),單片機(jī)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理,中

斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去、。

中斷的意義在于資源共享和應(yīng)急處理。

中斷的功能有四:一、調(diào)整CPU與外設(shè)的速度配合;二、實(shí)時(shí)控制的實(shí)現(xiàn);三、故障

檢測;四、實(shí)現(xiàn)人機(jī)交流

引起中斷的原因,或者能夠發(fā)出中斷請求信號的來源統(tǒng)稱為中斷源。

通常中斷源有以下幾種:

(1)外部設(shè)備請求中斷。一般的外部設(shè)備(如鍵盤、打印機(jī)和A/D轉(zhuǎn)換器等)在完成

自身的操作后,向CPU發(fā)出中斷請求,要求CPU為他服務(wù)。由計(jì)算機(jī)硬件異?;蚬收弦?/p>

起的中斷,也稱為內(nèi)部異常中斷。

(2)故障強(qiáng)迫中斷。計(jì)算機(jī)在一些關(guān)鍵部位都設(shè)有故障自動(dòng)檢測裝置。如運(yùn)算溢出、存

儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及其他報(bào)警信號等,這些裝置的報(bào)警信號都能使

CPU中斷,進(jìn)行相應(yīng)的中斷處理。

(3)實(shí)時(shí)時(shí)鐘請求中斷。在控制中遇到定時(shí)檢測和控制,為此常采用一個(gè)外部時(shí)鐘電路

(可編程)控制其時(shí)間間隔。需要定時(shí)時(shí),CPU發(fā)出命令使時(shí)鐘電路開始工作,一旦到達(dá)

規(guī)定時(shí)間,時(shí)鐘電路發(fā)出中斷請求,由CPU轉(zhuǎn)去完成檢測和控制工作。

(4)數(shù)據(jù)通道中斷。數(shù)據(jù)通道中斷也稱直接存儲(chǔ)器存取(DMA)操作中斷,如磁盤、磁

帶機(jī)或CRT等直接與存儲(chǔ)器交換數(shù)據(jù)所要求的中斷。

為了使得系統(tǒng)能及時(shí)響應(yīng)并處理發(fā)生的所有中斷,系統(tǒng)根據(jù)引起中斷事件的重要性和緊

迫程度,硬件將中斷源分為若干個(gè)級別,稱作中斷優(yōu)先級。

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

中斷系統(tǒng)正在執(zhí)行一個(gè)中斷服務(wù)時(shí),有另一個(gè)優(yōu)先級更高的中斷提出中斷請求,這時(shí)

會(huì)暫時(shí)終止當(dāng)前正在執(zhí)行的級別較低的中斷源的服務(wù)程序,去處理級別更高的中斷源,

待處理完畢,再返回到被中斷了的中斷服務(wù)程序繼續(xù)執(zhí)行,這個(gè)過程稱為是中斷嵌套。

2、MCS-51單片機(jī)提供了幾個(gè)中斷源?幾個(gè)中斷優(yōu)先級?

MCS-51單片機(jī)的中斷源共有三類,分別是外部中斷、定時(shí)計(jì)數(shù)器中斷和串行通信口

中斷,第一類有IEO和IE1,第二類有TFO和TF1,第三類的RI、TI合二為一。

MCS-51單片機(jī)分兩個(gè)優(yōu)先級,每個(gè)中斷源的優(yōu)先級都可以通過中斷優(yōu)先級寄存器IP

中的相應(yīng)位進(jìn)行設(shè)定。在同級優(yōu)先級中,五個(gè)中斷源的優(yōu)先級次序由高到低分別是:IEO、

TFO、IE1、TF1、RI或TI。

3、簡述TCON、SCON、IE、IP四個(gè)特殊功能寄存器各位的定義及功能。

TCON(TimerControlRegister)定時(shí)器/計(jì)數(shù)器控制寄存器

TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H-8FH,

由于有位地址,所以可以于進(jìn)行位操作。TCON的作用是控制定時(shí)器的啟、停,標(biāo)

志定時(shí)器溢出和中斷情況。

其中,TF1,TRI,TF0和TR0位用于定時(shí)器/計(jì)數(shù)器;IE1,IT1,IE0和IT0位用于中

斷系統(tǒng)。如圖所示:

TF1TR1TF0TR0IE1IT1IE0IT0

其中,TF1:定時(shí)器1溢出標(biāo)志位。當(dāng)定時(shí)器1計(jì)滿溢出時(shí),由硬件使TF1置“1”,

并且申請中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清“0”,在查詢方式下用軟件清“0”。

TR1:定時(shí)器1運(yùn)行控制位。由軟件清“0”關(guān)閉定時(shí)器1。當(dāng)GATE=1,且INTI為高電

平時(shí),TR1置“1”啟動(dòng)定時(shí)器1;當(dāng)GATE=0,TR1置“1”啟動(dòng)定時(shí)器1。TF0:

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

定時(shí)器0溢出標(biāo)志。其功能及操作情況同TF1。TRO:定時(shí)器0運(yùn)行控制位。其功

能及操作情況同TRI。IE1:外部中斷1請求標(biāo)志位。IT1:外部中斷1觸發(fā)方

式選擇位。當(dāng)m=0,為低電平觸發(fā)方式;當(dāng)IT1=1,為下降沿觸發(fā)方式。IEO:外

部中斷0請求標(biāo)志位。ITO:外部中斷0觸發(fā)方式選擇位。當(dāng)ITO=O,為低電平觸

發(fā)方式;當(dāng)ITO=1,為下降沿觸發(fā)方式。

TCON中低4位與中斷有關(guān)。由于TCON是可以位尋址的,因而如果只清溢出或啟

動(dòng)定時(shí)器工作,可以用位操作命令。例如:執(zhí)行“CLRTFO”后則清定時(shí)器0的溢出;執(zhí)

行“SETBTR1”后可啟動(dòng)定時(shí)器1開始工作。

SCON(SerialPortControlRegister)串行口控制寄存器

寄存器地址98H,位尋址9FH?98H。

位地址9F9E9D9C9B9A9998

位符號SM0SM1SM2RENTB8RB8TIRI

SMO、SM1:串行口工作方式選擇位

SM2:多機(jī)通信控制位

REN:允許/禁止串行口接收的控制位

TB8:在方式2和方式3中,是被發(fā)送的第9位數(shù)據(jù),可根據(jù)需要由軟件置1或清零,也可

以作為奇偶校驗(yàn)位,在方式1中是停止位。

RB8:在方式2和方式3中,是被接收的第9位數(shù)據(jù)(來自第TB8位);在方式1中,RB8

收到的是停止位,在方式0中不用。

TI——串行口發(fā)送中斷請求標(biāo)志位

當(dāng)發(fā)送完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

RI——串行口接收中斷請求標(biāo)志位

當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。

此處的“軟件清零”,意指需要用戶用指令清零。

IE(interruptEnableRegister):中斷允許控制寄存器

寄存器地址A8H,位尋址AFH?A8H。

位地AFAEADACABAAA9A8

位符EA/ET2ESET1EXIETOEXO

EA:中斷允許總控制位

當(dāng)EA=0時(shí),中斷總禁止。

當(dāng)EA=1時(shí),中斷總允許后中斷的禁止與允許由各中斷源的中斷允許控制位進(jìn)行

設(shè)置。

EXO(EX1):外部中斷允許控制位

當(dāng)EXO(EX1)=0禁止外中斷

當(dāng)EXO(EX1)=1允許外中斷

ETO(EX1):定時(shí)/計(jì)數(shù)中斷允許控制位

當(dāng)ETO(ET1)=0禁止定時(shí)(或計(jì)數(shù))中斷

當(dāng)ETO(ET1)=1允許定時(shí)(或計(jì)數(shù))中斷

ET2:定時(shí)器2中斷允許控制位,在AT89s52、AT89c52中

ES:串行中斷允許控制位

當(dāng)ES=0禁止串行中斷

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

當(dāng)ES=1允許串行中斷

IP(InterruptPriorityRegister):中斷優(yōu)先級控制寄存器

寄存器地址B8H,位尋址BFH?B8H。

位地BFBEBDBCBBBAB9B8

位符//PT2PSPTlPX1PTOPXO

PX0——外部中斷0優(yōu)先級設(shè)定位;PT0——定時(shí)中斷。優(yōu)先級設(shè)定位;PX1——

外部中斷1優(yōu)先級設(shè)定位;PT1——定時(shí)中斷1優(yōu)先級設(shè)定位;PS——串口中斷

優(yōu)先級設(shè)定位;PT2一定時(shí)器2優(yōu)先級設(shè)定位(8052才有)。

4、簡述MCS-51單片機(jī)的中斷響應(yīng)過程。

MCS-51單片機(jī)的中斷響應(yīng)過程可簡單歸納為5步:

(1)中斷源檢測:在每條指令結(jié)束后,系統(tǒng)都自動(dòng)檢測中斷請求信號,如果有中斷請求,且

CPU處于開中斷狀態(tài)下,則響應(yīng)中斷。

⑵保護(hù)現(xiàn)場:在保護(hù)現(xiàn)場前,CPU自動(dòng)將當(dāng)前PC壓入堆棧。此時(shí),一般要關(guān)中斷,以

防止現(xiàn)場被破壞。保護(hù)現(xiàn)場一般是用堆棧指令將原程序中用到的寄存器推入堆棧。

⑶中斷服務(wù):即為相應(yīng)的中斷源服務(wù)。

(4)恢復(fù)現(xiàn)場:用堆棧指令將保護(hù)在堆棧中的數(shù)據(jù)彈出來,在恢復(fù)現(xiàn)場前要關(guān)中斷,

以防止現(xiàn)場被破壞。在恢復(fù)現(xiàn)場后應(yīng)及時(shí)開中斷。

⑸返回:CPU將推入到堆棧的斷點(diǎn)地址彈回到程序計(jì)數(shù)器,從而使CPU繼續(xù)執(zhí)行

剛才被中斷的程序。

--完整版學(xué)習(xí)資料分享--

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

5、說明MCS-51單片機(jī)響應(yīng)中斷后,中斷服務(wù)程序的入口地址。

MCS-51單片機(jī)響應(yīng)中斷后,其中斷矢量是由硬件自動(dòng)生成的。各中斷源的中斷服務(wù)程序的

入口地址如下表。

中斷源中斷矢量

外部中斷00003H

定時(shí)器TO中斷000BH

外部中斷10013H

定時(shí)器T1中斷001BH

串行口中斷0023H

定時(shí)器T2中斷(僅8052有)002BH

6、指出哪幾個(gè)中斷申請標(biāo)志在CPU響應(yīng)中斷響應(yīng)后能被硬件自動(dòng)清零。

除了串行通信中斷申請標(biāo)志在CPU響應(yīng)中斷后需要用戶用軟件指令清零中斷申請

標(biāo)志外,其余的中斷源的申請標(biāo)志都是在CPU響應(yīng)后由硬件自動(dòng)清零的。它們分別是:

外部中斷0申請標(biāo)志(IEO)、外部中斷1申請標(biāo)志(IE1)、定時(shí)計(jì)數(shù)器0溢出標(biāo)志(ITO)

和定時(shí)計(jì)數(shù)器1溢出標(biāo)志(IT1)o

7、在MCS-51單片機(jī)的應(yīng)用系統(tǒng)中,如果有多個(gè)外部中斷源,怎樣進(jìn)行處理?

在多中斷源的系統(tǒng)中,假如各中斷源之間很少發(fā)生競爭,那么采用“線或非”連接,用

軟件查詢的方式進(jìn)行控制如圖。

--完整版學(xué)習(xí)資料分享一-

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除

+5V

40200

1

XTAL1VccP1.

P1.2

P1.3

P1.4

P1.5

XTAL2P1.6

P1.7

RESET/VP1,0

PDP2.1

溫馨提示

  • 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

提交評論