AVR單片機課后習題答案_第1頁
AVR單片機課后習題答案_第2頁
AVR單片機課后習題答案_第3頁
AVR單片機課后習題答案_第4頁
AVR單片機課后習題答案_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄

第1章單片機概述..............................................2

第2章AT89s51單片機的硬件結(jié)構(gòu)...............................5

第3章AT89s51的指令系統(tǒng)......................................8

第4章AT89s51匯編語言程序的設(shè)計與調(diào)試.......................10

第5章AT89s51的中斷系統(tǒng).....................................15

第6章AT89S51的定時/計數(shù)器..................................18

第7章AT89s51的串行口......................................21

第8章AT89S51單片機擴展存儲器的設(shè)計........................23

第10章AT89s51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計.......26

第1章單片機概述

參考答案

1.答:微控制器,嵌入式控制器

2.答:CPU、存儲器、I/O口、總線

3.答:C

4.答:B

5.答:微處理器、微處理機和CPU它們都是中央處理器的不同稱謂,微處

理器芯片本身不是計算機。而微計算機、單片機它們都是一個完整的計算機系

統(tǒng),單片機是集成在一個芯片上的用于測控目的的單片微計算機。

嵌入式處理器一般意義上講,是指嵌入系統(tǒng)的單片機、DSP、嵌入式微處

理器。目前多把嵌入式處理器多指嵌入式微處理器,例如ARM7、ARM9等。

嵌入式微處理器相當于通用計算機中的CPU。與單片機相比,單片機本身(或

稍加擴展)就是一個小的計算機系統(tǒng),可獨立運行,具有完整的功能。而嵌入

式微處理器僅僅相當于單片機中的中央處理器。為了滿足嵌入式應(yīng)用的特殊要

求,嵌入式微處理器雖然在功能上和標準微處理器基本是一樣的,但在工作溫

度、抗電磁干擾、可靠性等方面一般都做了各種增強。

6.答:MCS-51系列單片機的基本型芯片分別:8031、8051和8071。它們

的差別是在片內(nèi)程序存儲器上。8031無片內(nèi)程序存儲器、8051片內(nèi)有4K字節(jié)的

程序存儲器ROM,而8751片內(nèi)有集成有4K字節(jié)的程序存儲器EPROM。

?2?

7.答:因為MCS-51系列單片機中的“MCS”是Intel公司生產(chǎn)的單片機的系

列符號,而51系列單片機是指世界各個廠家生產(chǎn)的所有與8051的內(nèi)核結(jié)構(gòu)、指

令系統(tǒng)兼容的單片機。

8.答:相當于MCS-51系列中的87c51,只不過是AT89s51芯片內(nèi)的4K

字節(jié)Flash存儲器取代了87C51片內(nèi)的4K字節(jié)的EPROMo

9.單片機體積小、價格低且易于掌握和普及,很容易嵌入到各種通用目的

的系統(tǒng)中,實現(xiàn)各種方式的檢測和控制。單片機在嵌入式處理器市場占有率最

高,最大特點是價格低,體積小。

DSP是一種非常擅長于高速實現(xiàn)各種數(shù)字信號處理運算(如數(shù)字濾波、

FFT、頻譜分析等)的嵌入式處理器。由于對其硬件結(jié)構(gòu)和指令進行了特殊設(shè)

計,使其能夠高速完成各種復(fù)雜的數(shù)字信號處理算法。廣泛地用于通訊、網(wǎng)絡(luò)

通信、數(shù)字圖像處理,電機控制系統(tǒng),生物信息識別終端,實時語音壓解系統(tǒng)

等。這類智能化算法一般都是運算量較大,特別是向量運算、指針線性尋址等

較多,而這些正是DSP的長處所在。與單片機相比,DSP具有的實現(xiàn)高速運

算的硬件結(jié)構(gòu)及指令和多總線,DSP處理的算法的復(fù)雜度和大的數(shù)據(jù)處理流量

以及片內(nèi)集成的多種功能部件更是單片機不可企及的。

嵌入式微處理器的基礎(chǔ)是通用計算機中的CPU,它的地址總線數(shù)目較多能

擴展較大的存儲器空間,所以可配置實時多任務(wù)操作系統(tǒng)(RTOS)。RTOS是嵌

入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。正由于嵌入式微處理器能運行實時多任務(wù)操

作系統(tǒng),所以能夠處理復(fù)雜的系統(tǒng)管理任務(wù)和處理工作。因此,廣泛地應(yīng)用在

移動計算平臺、媒體手機、工業(yè)控制和商業(yè)領(lǐng)域(例如,智能工控設(shè)備、ATM

機等)、電子商務(wù)平臺、信息家電(機頂盒、數(shù)字電視)以及軍事上的應(yīng)用。

10.廣義上講,凡是系統(tǒng)中嵌入了“嵌入式處理器”,如單片機、DSP、嵌

入式微處理器,都稱其為“嵌入式系統(tǒng)”。但多數(shù)人把“嵌入”嵌入式微處理器

的系統(tǒng),稱為“嵌入式系統(tǒng)”。目前“嵌入式系統(tǒng)”還沒有一個嚴格和權(quán)威的定

義。目前人們所說的“嵌入式系統(tǒng)”,多指后者。

?4?

第2章AT89s51單片機的硬件結(jié)構(gòu)

參考答案

1.答:AT89s51單片機的片內(nèi)都集成了如下功能部件:(1)1個微處理器

(CPU);(2)128個數(shù)據(jù)存儲器(RAM)單元;(3)4KFlash程序存儲器;(4)

4個8位可編程并行I/O口(P0口、P1口、P2口、P3口;(5)1個全雙工串行口;

(6)2個16位定時器/計數(shù)器;(7)1個看門狗定時器;(8)一個中斷系統(tǒng),5

個中斷源,2個優(yōu)先級;(9)25個特殊功能寄存器(SFR),(10)1個看門狗定

時器。

2.答:當正腳為高電平時,單片機讀片內(nèi)程序存儲器(4K字節(jié)Flash)中

的內(nèi)容,但在PC值超過0FFFH(即超出4K字節(jié)地址范圍)時,將自動轉(zhuǎn)向讀

外部程序存儲器內(nèi)的程序;當正腳為低電平時,單片機只對外部程序存儲器的

地址為0000H?FFFFH中的內(nèi)容進行讀操作,單片機不理會片內(nèi)的4K字節(jié)的

Flash程序存儲器。

3.答:2ps

4.答:1個機器周期等于12個時鐘振蕩周期。

5.答:64K程序存儲器空間中有5個特殊單元分別對應(yīng)于5個中斷源的中斷

服務(wù)程序入口地址,見下表:

表5個中斷源的中斷入口地址

入口地址中斷源

0003H外部中斷0

(INTO)

000BH定時器0(T0)

0013H外部中斷1

(INT1)

001BH定時器1(T1)

0023H串行口

6.答:28H;88Ho

7.答:50H;88Ho

8.答:P標志位的值為0。

9.答:(A)錯;(B)錯(C)對(D)對。

10.答:04H;00H;0組。

11.答:(A)對;(B)對;(C)錯;(D)對。

12.答:字節(jié)地址00H-1FH的單元可作為工作寄存器區(qū)。

13.答:(A)錯;(B)錯;(C)錯;(D)錯。

14.答:(C)o

15.答:PC;PCo

16.答:64K字節(jié)。

17.P0口每位可驅(qū)動8個LSTTL輸入,而Pl、P2、P3□的每一位的驅(qū)動

能力,只有P0口的一半。當P0口的某位為高電平時,可提供40011A的電流;

當P0口的某位為低電平(0.45V)時,可提供3.2mA的灌電流,如低電平允

許提高,灌電流可相應(yīng)加大。所以,任何一個口要想獲得較大的驅(qū)動能力,只

能用低電平輸出。

18.答:按下復(fù)位按鈕。

19.答:(A)對;(B)對;(C)錯;(D)錯。

,6,

20.答:(A)對;(B)對;(C)對;(D)錯。

第3章AT89s51的指令系統(tǒng)

參考答案

1.答:(1)錯(2)錯(3)對(4)錯(5)錯(6)錯(7)錯(8)對(9)

錯(10)對(11)對(12)錯。

2.答:(A)對(B)對(C)錯(D)錯。

3.答:A,PC,DPTRO

4.答:只能使用直接尋址方式。

5.答:操作碼,操作數(shù),操作碼。

6.答:1031Ho

7.答:程序,數(shù)據(jù)。

8.答:地址。

9.答:A的內(nèi)容與B的內(nèi)容互換。

10.答:(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(PC)=

5030H

11.答:(A)ANLA,#87H

(B)ANLA,#0C3H

(C)ORLA,#0CH

12.答:(A)=0CBHo

13.答:(A)=00H,(R3)=0AAHo

14.答:(DPH)=3CH,(DPL)=5FH,(SP)=50H

15.答:(SP)=62H,(61H)=30H,(62H)=70H。

?8?

16.答:MOVR7,A

PUSHAcc

MOVA,B

MOVX@DPTR,A

17.答:(D)o

18.答:(C)o

19.答:基本型的51子系列單片機,由于其片內(nèi)RAM的地址范圍為OOH—7FH,

而80H—FFH為特殊功能寄存器區(qū),而對特殊功能寄存器尋址,只能使用直接

尋址方式。對片內(nèi)RAM尋址,當使用寄存器間接尋址是采用R0或R1作為間

接尋址的,因此R0或R1的內(nèi)容不能超過7FH。

增強型的52子系列單片機,片內(nèi)RAM的地址范圍為00H—FFH,因此作

為間接尋址寄存器的R0或R1的內(nèi)容就不受限制。

第4章AT89S51匯編語言程序的設(shè)計與調(diào)試

參考答案

1.答:偽指令是程序員發(fā)給匯編程序的命令,只有在匯編前的源程序中才

有偽指令,即在匯編過程中的用來控制匯編過程的命令。所謂“偽”是體現(xiàn)在匯

編后,偽指令沒有相應(yīng)的機器代碼產(chǎn)生。常用偽指令及其功能如下:

ORG(ORiGin)匯編起始地址命令;END(ENDofassembly)匯編終止命令;EQU

(EQUate)標號賦值命令;DB(DefineByte)定義數(shù)據(jù)字節(jié)命令;DW(Define

Word)定義數(shù)據(jù)字命令;DS(DefineStorage)定義存儲區(qū)命令;BIT位定義

命令

2.答:

手工匯編:通過查指令的機器代碼表(表3-2),逐個把助記符指令“翻譯”

成機器代碼,再進行調(diào)試和運行。這種人工查表“翻譯”指令的方法稱為“手工

匯編”。

機器匯編:借助于微型計算機上的軟件(匯編程序)來代替手工匯編。通過在

微機上運行匯編程序,把匯編語言源程序翻譯成機器代碼。

反匯編:將二進制的機器碼程序翻譯成匯編語言源程序的過程稱為“反匯

編”。

3.答:從1000H開始的各有關(guān)存儲單元的內(nèi)容(16進制)如下:

4D41494E12343000

0070

4.在編寫子程序時應(yīng)注意以下問題:

?10?

(1)子程序的第一條指令前必須有標號。

(2)主程序調(diào)用子程序,有如下兩條子程序調(diào)用指令:

①絕對調(diào)用指令A(yù)CALLaddrll。被調(diào)用的子程序的首地址與絕對調(diào)用指

令的下一條指令的高5位地址相同,即只能在同一個2KB區(qū)內(nèi)。

②長調(diào)用指令LCALLaddrl6。addrl6為直接調(diào)用的目的地址,被調(diào)用的

子程序可放置在64KB程序存儲器區(qū)的任意位置。

(3)子程序結(jié)構(gòu)中必須用到堆棧,用來保護斷點和現(xiàn)場保護。

(4)子程序返回時,必須以RET指令結(jié)束。

(5)子程序可以嵌套,但要注意堆棧的沖突。

5.答:參考程序如下:

MOVA,45H

ANLA,#0FH

ORLA,#0FH

MOV45H,A

6.答:A=80H,SP=40H,(41H)=50H,(42H)=80H,PC=8050H

7.答:參考程序如下:

START:MOVR0,#30H

MOVR2,#20H

LOOP:MOVA,@R0

CJNEA,#OAAH,NEXT

MOV51H,#01H

LJMPEXIT

NEXT:INCRO

DJNZR2,LOOP

MOV51H,#00H

EXIT:RET

8.答:參考程序如下:

START:MOV41H,#0

MOVRO,#20H

MOVR2,#20H

LOOP:MOVA,@R0

JNZNEXT

INC41H

NEXT:INCRO

DJNZR2,LOOP

RET

9.答:參考程序如下:

ORG0100H

MOVR2,#20H要比較的數(shù)據(jù)字節(jié)數(shù)

MOVA,#21H

MOVRI,A

DECR2

MOVA,@R1

LOOP:MOVR3,A

DECRI

CLRC

?12?

SUBBA,@R1

JNCLOOP1

MOVA,@R1

SJMPLOOP2

LOOP1:MOVA,R3

LOOP2:DJNZR2,LOOP

MOV@R0,A

RET

10.答:

(1)SP=SP+1=61H(61H)=PC的低字節(jié)=03H

SP=SP+1=62H(62H)=PC的高字節(jié)=20H

(2)PC=3456H

(3)不可以

(4)2KB=2048Byte

11.答:可對程序做如下修改:

ORG0100H

DEL:MOVR7,#200

DELI:;將原來的立即數(shù)125改為123

DEL2:DJNZR6,DEL2

;增加的指令

DJNZR7,DELI

RET

程序修改后的延時時間為:l+(l+123*2+l+2)*200+2=50003us=50.003ms

?14?

第5章AT89S51的中斷系統(tǒng)

參考答案

1.答:0013H;001BH

2.答:外部中斷1,定時器T1

3.答:RETI指令在返回的同時清除相應(yīng)的優(yōu)先級觸發(fā)器,以允許下

次中斷,而RET指令則沒有這個操作。除了這一點兩條指令不同外,其它

操作都相同。

4.答:D

5.答:在一個單一中斷的系統(tǒng)里,AT89S51單片機對外部中斷請求的響

應(yīng)時間總是在3?8個機器周期之間。

在下述三種情況下,AT89S51將推遲對外部中斷請求的響應(yīng):

(1)AT89S51正在處理同級或更高優(yōu)先級的中斷。

(2)所查詢的機器周期不是當前正在執(zhí)行指令的最后一個機器周期。

(3)正在執(zhí)行的指令是RETI或是訪問IE或IP的指令。

如果存在上述三種情況之一,AT89s51將丟棄中斷查詢結(jié)果,將推遲對外

部中斷請求的響應(yīng)。

6.答:D

7.答:PC、PC、程序存儲器

8.答:參考程序段如下:

SETBIT1

SETBEXI

SETBEA

9.答:(A)

10.答:一個中斷源的中斷請求被響應(yīng),必須滿足以下必要條件:

(1)總中斷允許開關(guān)接通,即IE寄存器中的中斷總允許位EA=1。

(2)該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)的中斷請求標志為“1”。

(3)該中斷源的中斷允許位=1,即該中斷被允許。

(4)無同級或更高級中斷正在被服務(wù)。

11.答:(A)、(C)、(D)

12.答:參見電路如圖5-10,參考程序如下:

ORG0000H

LJMPMAIN

ORG0013H

LJMPINT_EX1

ORG0030H

MAIN:CLRITO;采用電平觸發(fā),低電平有效中斷

SETBEX1;允許外部中斷1

SETBEA

;插入一段用戶程序

WAIT:MOVPCON,#01H;單片機進入休眠方式等待中斷

NOP

LJMPWAIT

;以下為外部中斷1服務(wù)子程序

?16?

INT_EX1:JBPl.2,NEXT1;判斷是不是3號中斷

LJMPINT_IR3;跳轉(zhuǎn)到3號中斷處理程序

NEXT1:JBPl.l,NEXT2;判斷是不是2號中斷

LJMPINT_IR2;跳轉(zhuǎn)到2號中斷處理程序

NEXT2:LJMPINT_IR1;跳轉(zhuǎn)到1號中斷處理程序

ORG1000H

INT_IR3:相應(yīng)中斷處理程序

RETI;中斷返回

ORG11OOH

INT_IR2:相應(yīng)中斷處理程序

RETI;中斷返回

ORG1200H

INT_IR1:相應(yīng)中斷處理程序

RETI;中斷返回

第6章AT89s51的定時/計數(shù)器

參考答案

1.答:(A)對;(B)錯(C)錯(D)錯;

2.答:因為機器周期:

所以2m器/計數(shù)器工作方式0下,其最大定時時間為

TMAX=2"xTc=2"x4xl0"=8192(機s)

同樣可以求得方式1下的最大定時時間為262.144ms;方式2下的最大定

時時間為1024mso

3.答:定時/計數(shù)器作定時時,其計數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時鐘

信號12分頻后提供。定時時間與時鐘頻率和定時初值有關(guān)。

4.答:由于確認1次負跳變要花2個機器周期,即24個振蕩周期,因此

外部輸入的計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。

5.答:定時器/計數(shù)器TO在計數(shù)和定時工作完成后,均采用中斷方式工作。

除了第一次計數(shù)工作方式設(shè)置在主程序完成外,后面的定時或計數(shù)工作方式分

別在中斷程序完成,用一標志位識別下一輪定時器/計數(shù)器TO的工作方式。參

考程序如下:

ORG0000H

□MPMAIN

ORG000BH

UMPITOP

MAIN:MOVTMOD,#06H;定時器/計數(shù)器TO為計數(shù)方式2

MOVTL0,#156;計數(shù)100個脈沖的初值賦值

MOVTH0,#156

SETBGATE;打開計數(shù)門

SETBTRO;啟動T0,開始計數(shù)

SETBETO;允許T0中斷

SETBEA;CPU開中斷

CLRFO;設(shè)置下一輪為定時方式的標志位

WAITAJMPWAIT

ITOP:CLREA;CPU關(guān)中斷

JBFO,COUNT;F0=l,轉(zhuǎn)計數(shù)方式設(shè)置

MOVTMOD,#OOH;定時器/計數(shù)器T0為定時方式0

MOVTH0,#0FEH;定時1ms初值賦值

MOVTL0,#0CH

?18?

SETBEA

RETI

COUNT:MOVTMOD,#06H

MOVTL0,#156

SETBEA

RETI

6.答:定時器/計數(shù)器的工作方式2具有自動恢復(fù)初值的特點,適用于精確

定時,比如波特率的產(chǎn)生。

7.答:根據(jù)題意,從P1.0輸出的矩形脈沖的高低電平的時間為10:1,則

高低電平的時間分別為363.63即和36.372。如果系統(tǒng)采用6MHz晶振的話,

7by=2ps,因此高低電平輸出取整,則約為364Hs和36|is°參考程序如下:

ORG0000H

UMPMAIN

ORG000BH

UMPITOP

MAIN:MOVTMOD,#02H;定時器/計數(shù)器TO為定時方式2

MOVTL0,#4AH;定時364Ps初值賦值

SETBTRO;啟動TO,開始計數(shù)

SETBETO;允許TO中斷

SETBEA;CPU開中斷

SETBPl.O

WAIT:AJMPWAIT

ITOP:CLREA

CLRPl.O;關(guān)中斷

MOVRO,#9

DLY:DJNZR0,DLY;延時36Hs

MOVTL0,#4AH;定時364邯初值賦值

SETBPl.O

SETBEA

RETI

8.答:方法1,在第一個定時器的中斷程序里關(guān)閉本定時器的中斷程序,

設(shè)置和打開另一個定時器;在另一個定時器的中斷程序中關(guān)閉本定時中斷,設(shè)

置和打開另一個定時器。這種方式的定時時間為兩個定時器定時時間的和。

方法2,一個作為定時器,在定時中斷后產(chǎn)生一個外部計數(shù)脈沖(比如由

P1.0接而產(chǎn)生),另一個定時器工作在計數(shù)方式。這樣兩個定時器的定時時間

為一個定時器的定時時間乘以另一個定時器的計數(shù)值。

9.答:由TMOD寄存器的D6位“C/T*”來控制定時器T1的啟動和關(guān)閉。

10.答:采用方式1定時工作方式。最大脈沖寬度為131.072ms。

11.答:將Pl.1的輸入脈沖接入INTO,即使用TO計數(shù)器完成對P1.1口的

脈沖計數(shù)。參考程序如下:

ORG0000H

UMPMAIN

ORG000BH

UMPITOP

MAIN:JNBPl.0,MAIN

MOVTMOD,#05H;定時器/計數(shù)器TO為計數(shù)方式1

SETBTRO;啟動TO,開始計數(shù)

SETBETO;允許T0中斷

SETBEA;CPU開中斷

WAIT:JBPl.2,WAIT

CLREA

CLRTRO

MOVRl,TH0

MOVR0,TL0

AJMP$

ITOP:INCR2

RETI

12.答:THx與TLx(x=0,l)是由特殊功能寄存器構(gòu)成的計數(shù)器,其內(nèi)容可

以隨時用指令更改,更改后的新值是立即刷新。但在讀THx、TLx的值時,應(yīng)

該先讀THx值,后讀TLx,再讀THx。若兩次讀得THx相同,則可確定讀得

的內(nèi)容正確。若前后兩次讀得的THx有變化,再重復(fù)上述過程。

?20?

第7章AT89s51的串行口

參考答案

1.答:方式1。

2.答:相等的。

3.答:A.對;B.對;C.錯;D.對;E.對。

4.答:C

5.答:C

6.答:當接收方檢測到RXD端從1到0的跳變時就啟動檢測器,接收的

值是3次連續(xù)采樣,取其中2次相同的值,以確認是否是真正的起始位的開始,

這樣能較好地消除干擾引起的影響,以保證可靠無誤的開始接受數(shù)據(jù)。

7.答:串行□有4種工作方式:方式0、方式1、方式2、方式3;有3種

幀格式,方式2和3具有相同的幀格式;方式。的發(fā)送和接收都以fosc/12為

固定波特率,

方式1的波特率=2$MOD/32X定時器T1的溢出率

方式2的波特率=2SM0D/64xfosc

方式3的波特率=2SMOD/32X定時器T1的溢出率

8.答:字符“B”的ASCII碼為“42H”,幀格式如下:

起始位01000010校驗位停止位

9.答:因為定時器/計數(shù)器在方式2下,初值可以自動重裝,這樣在做串

□波特率發(fā)生器設(shè)置時,就避免了執(zhí)行重裝參數(shù)的指令所帶來的時間誤差。

設(shè)定時器T1方式2的初值為X,計算初值X可采用如下公式:

波特率=詈'』

10.答:經(jīng)計算,計數(shù)初值為FAH,初始化程序如下:

ANLTMOD,#OFOH;屏蔽高4位

ORLTMOD,#20H;控制字

MOVTH1,#OFAH;寫入計數(shù)初值

MOVTL1,#OFAH

MOVSCON,#40H

11.答:見7.3節(jié)的介紹。

12.答:見7.5.3小節(jié)的介紹

13.答:串口每秒鐘傳送的字符為:1800/60=30個字符/秒

所以波特率為:30個字符/秒X10位/個字符=300b/s

14.答:串行口的方式0為同步移位寄存器輸入輸出方式,常用于外接移

位寄存器,以擴展并行I/O口,一般不用于兩個MCS-51之間的串行通信。該

方式以fosc/12的固定波特率從低為位到高位發(fā)送或接受數(shù)據(jù)。

15.答:直接以TTL電平串行傳輸數(shù)據(jù)的方式的缺點是傳輸距離短,抗干

擾能力差。因此在串行傳輸距離較遠時,常采用RS-232C、RS-422A和RS-485

標準串行接口。主要是對傳輸?shù)碾娦盘柌粩喔倪M,如RS-232c傳輸距離只有兒

十米遠,與直接以TTL電平串行傳輸相比,采用了負邏輯,增大“0”、“1”信號

的電平差。而RS-422A和RS-485都采用了差分信號傳輸,抗干擾能力強,距

離可達1000多米。RS-422A為全雙工,RS-485為半雙工。

?22?

第8章AT89s51單片機擴展存儲器的設(shè)計

參考答案

1.答:程序、數(shù)據(jù)。

2.答:80Ho

3.答:片選。

4.答:16KBo

5.答:程序、數(shù)據(jù)。

6.答:2K,14o

7.答:OFFFHo

8.答:(D)

9.答:本題主要考察對外部存儲器的讀、寫操作,只要記住正確使用MOVX

指令就可以了。編程思路:首先讀取2001H的值,保存在寄存器A中,將寄

存器A的高四位和低四位互換,再屏蔽掉低四位然后將寄存器A的值保存到

30H中,然后再讀取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后

將寄存器A的值與30H進行或運算,將運算后的結(jié)果保存在2002H中。

ORG0000H

MAIN:MOVDPTR,#2001H;設(shè)置數(shù)據(jù)指針的初值

MOVXA,@DPTR;讀取2001H的值

SWAPA

ANLA,#0F0H;屏蔽掉低四位

MOV30H,A;保存A

INCDPTR;指針指向下一個

MOVXA,@DPTR;讀取2002H的值

ANLA,#0FH;屏蔽掉高四位

ORLA,30H;進行拼裝

MOVX@DPTR,A;保存到2002H

END

10.答:本題主要考察對外部數(shù)據(jù)塊的寫操作;編程時只要注意循環(huán)次數(shù)

和MOVX指令的使用就可以了。

ORG0000H

MAIN:MOVA,#0;送預(yù)置數(shù)給A

MOVRO,#0FFH;設(shè)置循環(huán)次數(shù)

MOVDPTR,#4000H;設(shè)置數(shù)據(jù)指針的初值

LOOP:MOVX@DPTR,A;當前單元清零

INCDPTR;指向下一個單元

DJNZRO,LOOP;是否結(jié)束

END

11.答:因為控制信號線的不同:

外擴的RAM芯片既能讀出又能寫入,所以通常都有讀寫控制引腳,記為

OE*和WE*。外擴RAM的讀、寫控制引腳分別與AT89S51的RD*和WR*引

腳相連。

外擴的EPROM在正常使用中只能讀出,不能寫入,故EPROM芯片沒有

寫入控制引腳,只有讀出引腳,記為OE*,該引腳與AT89S51單片機的PSEN*

相連。

?24?

12.答:圖中采用了譯碼法。4片地址分別為0000H-3FFFH、4000H-7FFFH、

8000H-BFFFH、COOOH-FFFFHo

13.答:

(1)參見圖〉20或圖8-21,去掉一片2764。

(2)指出該應(yīng)用系統(tǒng)程序存儲器空間和數(shù)據(jù)存儲器空間各自的地址范圍。

14.答:

(1)A組跨接端子的內(nèi)部正確連線圖

A15———?5

A14———?6

A13———?7

(2)B組跨接端子的內(nèi)部正確連線圖

注意:答案不唯一,還有其他連接方法,也可滿足題目要求。

第10章AT89s51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計

參考答案

1.答:A.MAX7219是專用顯示器芯片,不用于鍵盤;B.錯:CH451

芯片也可用于控制鍵盤;C.對:BUSY信號可作為查詢信號或中斷請求信號

使用,但此時信號/不用;E.錯:LED數(shù)碼管的字型碼是可以變的,例如

表10-1中的“a”段對應(yīng)段碼字節(jié)的最高位。“dp”段對應(yīng)段碼字節(jié)的最低位,字

型碼就改變了。

2.答:在按鍵的閉合和斷開過程中,由于開關(guān)的機械特性,導(dǎo)致了按鍵抖

動的產(chǎn)生。如果不消除按鍵的機械抖動,按鍵的狀態(tài)讀取將有可能出現(xiàn)錯誤。

消除按鍵抖動一般是采用軟件或硬件去抖。軟件去抖的原理:在第一次檢測到

有鍵按下時,該鍵所對應(yīng)的行線是為低電平,執(zhí)行一端延時10ms的子程序后,

確認該行線電平是否仍然為低電平,如果仍為低電平,則確認為該行確實有鍵

按下。

3.答:靜態(tài)顯示時,數(shù)據(jù)是分開送到每一位LED上的。而動態(tài)顯示則是

數(shù)據(jù)是同時送到每一個LED上,再根據(jù)位選線來確定是哪一位LED被顯示。

靜態(tài)顯示亮度很高,但口線占用較多。動態(tài)顯示口線占用較少,適合用在顯示

位數(shù)較多的場合。

4.答:80H(共陰極);7FH(共陽極)。

5.答:按鍵設(shè)置在行、列線交點上,行、列線分別連接到按鍵開關(guān)的兩端。

行線通過上拉電阻接到+5V上,無按鍵按下時,行線處于高電平狀態(tài),而當有

?26?

按鍵按下時,行線電平狀態(tài)將由與此行線相連的列線的電平?jīng)Q定。列線的電平

如果為低,則行線電平為低;列線的電平如果為高,則行線的電平亦為高。將

行、列線信號配合起來并做適當?shù)奶幚?,才能確定閉合鍵的位置。

6.答:先對P1口高四位送低電平,讀取P1口低四位的值;再對P1口低

四位送低電平,讀取P1口高四位的值,將兩次讀到的值組合在一起就得到了

按鍵的特征碼,在根據(jù)特征碼查找鍵值。

KEYIN:MOVP1,#OFH;反轉(zhuǎn)讀鍵

MOVA,Pl

ANLA,#0FH

MOVB,A

MOVPl,#0F0H

MOVA,Pl

ANLA,#0F0H

ORLA,B

CJNEA,#OFFH,KEYIN1

RET;未按鍵

KEYIN1:MOVB,A;暫存特征碼

MOVDPTR,#KEYCOD;指向特征碼表

MOVR3,#0FFH;順序碼初始化

KEYIN2:INCR3

MOVA,R3

MOVCA,@A+DPTR

CJNEA,B,KEYIN3

MOVA,R3;找到,取順序碼

RET

KEYIN3:CJNEA,#0FFH,KEYIN2;未完,再查

RET;已查完,未找到,以未按鍵

處理

KEYCOD:DB0E7H,0EBH,0EDH,0EEH;特征碼表

DB0D7H,0DBH,0DDH,0DEH

DB0B7H,0BBH,0BDH,0BEH

DB77H,7BH,7DH,7EH

7.答(1)編程掃描方式:當單片機空閑時,才調(diào)用鍵盤掃描子程序,反

復(fù)的掃描鍵盤,等待用戶從鍵盤上輸入命令或數(shù)據(jù),來響應(yīng)鍵盤的輸入請求。

(2)定時掃描工作方式:單片機對鍵盤的掃描也可用定時掃描方式,即每隔

一定的時間對鍵盤掃描一次。(3)中斷工作方式:只有在鍵盤有鍵按下時,才

執(zhí)行鍵盤掃描程序并執(zhí)行該按鍵功能程序,如果無鍵按下,單片機將不理睬鍵

盤。

8.答:DB0-DB7:數(shù)據(jù)線,單向傳輸,由單片機輸入給打印機。STB

(STROBE):數(shù)據(jù)選通信號。在該信號的上升沿,數(shù)據(jù)線上的8位并行數(shù)據(jù)

被打印機讀入機內(nèi)鎖存。BUSY:打印機忙狀態(tài)信號。當該信號有效(高電平)

時,表示打印機正忙于處理數(shù)據(jù)。此時,單片機不得使STB信號有效,向打

印機送入新的數(shù)據(jù)。ACK:打印機的應(yīng)答信號。低電平有效,表明打印機已取

走數(shù)據(jù)線上的數(shù)據(jù)。ERR:出錯信號。當送入打印機的命令格式出錯時,打印

機立即打印1行出錯信息,提示出錯。在打印出錯信息之前。該信號線出現(xiàn)一

個負脈沖,脈沖寬度為30us。

?28?

單片機與打印機相連時,分為直接相連(圖10-27)和通過擴展的并行I/O

口82C55連接(圖10-28)。直接相連時(圖10-27),打印機在輸入電路中有

鎖存器,在輸出電路中有三態(tài)門控制,。沒有讀、寫信號,只有握手線、BUSY

(或而E),用一根地址線來控制寫選通信號STB和讀取BUSY引腳狀態(tài)。圖

10-28所示為通過擴展的并行I/O口82C55連接的打印機接口電路。采用查詢

法,即通過讀與82c55的PC0腳的相連的BUSY狀態(tài),來判斷送給打印機的

一個字節(jié)的數(shù)據(jù)是否處理完畢。也可用中斷法(BUSY直接與單片機的而引

腳相連)。

9.答:本程序采用外部中斷來進行數(shù)據(jù)打印,先打印一個數(shù)據(jù),當BUSY

線從高電平變成低電平時,在打印下一個數(shù)據(jù)

ORG0000H

LJMPMAIN

ORG0003H

LJMPIN

ORG0030H

MAIN:SETBEXO;允許外部中斷

SETBITO

SETBEA

MOVR0,#7FH;控制口地址

MOVA,#81H;控制字

MOVX@R0,A

MOVRl,#20H;數(shù)據(jù)區(qū)首地址

MOVR2,#19;計數(shù)器

MOVA,@R1;打印內(nèi)容

MOVR0,#7CH;A口地址

MOVX@R0,A

MOVR0,#7FH

MOVA,#0EH

MOVX@RO,A;PC7=0

MOVA,#0FH

MOVX@R0,A;PC7=1

SJMP$

DJNZR2,EX;20個數(shù)據(jù)都結(jié)束了嗎?

INCRI;指向下一個數(shù)據(jù)

MOVA,@R1

MOVR0,#7CH

MOVX@R0,A

MOVR0,#7FH

MOVA,#0EH

MOVX@RO,A

MOVA,#0FH

MOVX@R0,A

EX:RETI

按鍵輸入:

OUTBITequOelOlh;位控制口

?30?

CLK164equ0el02h;段控制口(接164時鐘位)

DAT164equ0el02h;段控制□(接164數(shù)據(jù)位)

INequ0el03h;鍵盤讀入口

LEDBufequ60h;顯示緩沖

Numequ70h;顯示的數(shù)據(jù)

DelayTequ75h

IjmpStart

LEDMAP:;八段管顯示碼

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

DEL:MOVR7,#0H;延時子程序

DEL2:DJNZR7,DEL2

DJNZR6,DEL2

RET

DisplayLED:;初始化程序

MOVRO,#LEDBuf

MOVRI,#6;共6個八段管

MOVR2,#00100000b;從左邊開始顯示

Loop:

MOVDPTR,#OUTBIT

MOVA,#00H

MOVX@DPTR,A

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論