單片機原理、應用與PROTEUS仿真章節(jié)答案_第1頁
單片機原理、應用與PROTEUS仿真章節(jié)答案_第2頁
單片機原理、應用與PROTEUS仿真章節(jié)答案_第3頁
單片機原理、應用與PROTEUS仿真章節(jié)答案_第4頁
單片機原理、應用與PROTEUS仿真章節(jié)答案_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章概論

1.什么是單片機、單片機系統(tǒng)、單片機應用系統(tǒng)?

答:單片機:又名微控制器,是將微型計算機中的中央處理器(CPU)、隨機存儲器

(RAM)、只讀存儲器(ROM)及I/O口電路等主要部件,結合連接它們的總線集成在一塊

芯片上,即它是一塊智能芯片。

單片機系統(tǒng):單片機本身只是一塊芯片,它并不能集成計算機的全部電路,因此需要加

上時鐘、復位電路等,才能構成單片機最小應用系統(tǒng);若最小系統(tǒng)資源不足時,還需擴展外

圍電路和外圍芯片等,從而構成能滿足應用要求的單片機系統(tǒng)。

單片機應用系統(tǒng):它是為實際的控制應用而設計的,該系統(tǒng)與控制對象結合在一起,是

滿足嵌入式對象要求的全部電路系統(tǒng)。它在單片機的基礎上配置了前/后向通道接口電路、

人機交互通道接口電路、串行通信接口等面向對象的接口電路。

另單片機系統(tǒng)和單片機應用系統(tǒng)都是軟硬件結合的系統(tǒng),缺一不可。

2.單片機有哪些特點?

答:單片機的特點很多,主要是體積小品種多,價格便宜,可靠性高,使用靈活,還有

(1)突出控制功能(2)ROM和RAM分開(3)單片機資源具有廣泛的通用性(4)易于

擴展ROM、RAM、定時/計數(shù)器、中斷源等資源。

3.為什么說AT89c51單片機是MCS-51系列的兼容機?AT89C51單片機有何優(yōu)點?

答:AT89系列單片機是將FLASH存儲器技術和MCS-51系列單片機的基本內核相結

合的單片機,且管腳也與之兼容,可以直接代換,所以說AT89c51是MCS-51系列的兼容

機。AT89C51單片機是AT89系列機的標準型單片機,它的優(yōu)點主要有:內ROM是FLASH

存儲器,已獲得廣泛應用的80C5I兼容,采用靜態(tài)邏輯設計,操作頻率范圍寬,具有兩個

軟件選擇的節(jié)電模式等。

4.AT89C51單片機由哪些主要功能部件組成?

答:CPU,RAM,ROM,I/O接口等。

5.面包板、電子電路實驗板、PCB板在產(chǎn)品開發(fā)過程中的作用?它們各有什么優(yōu)缺點?

答:它們都是單片機實際應用系統(tǒng)中的不可缺少的一部分,它們都是構成硬件系統(tǒng)連接

的載體介質。面包板可以多次利用,可是穩(wěn)定性不高;電子電路實驗板的穩(wěn)定性由焊接質量

來決定,不可多次利用;PCB板最為可靠,可是如果不是量產(chǎn),價格偏高,時間較長。

6.簡述單片機應用研發(fā)過程和研發(fā)工具。

答;任務分析一方案論證一硬件設計一軟件設計一仿真調試一實物制作與調試。

研發(fā)工具:調試仿真軟件KEIL、在線仿真器、編程器或ISP下或器、PROTEUS仿真

平臺、教學實驗板等。

第二章AT89C51單片機內部結構基礎

1.AT89C51單片機內部結構主要有哪些部件組成?它們的主要功能是什么?

答:AT89C51單片機內部結構主要有:

(1)中央處理器CPU,是單片機的核心,完成運算和控制功能;

(2)內部數(shù)據(jù)存儲器(256字節(jié)),前面128個單元0()H~7FH存儲內部數(shù)據(jù),后面128

個單元80H~FFH被專用寄存器占用,用來實現(xiàn)對片內各部件進行管理、控制、監(jiān)視;

(3)程序計數(shù)器PC,是一個16位專用寄存器,其內容為下一條執(zhí)行指令的地址;

(4)Flash內部程序存儲器(4K),用于存儲程序、原始數(shù)據(jù)、表格等;

(5)4個并行I/O口(8位),實現(xiàn)數(shù)據(jù)的并行輸入輸出;

(6)串行通信口,實現(xiàn)單片機和其他數(shù)據(jù)設備之間的串行數(shù)據(jù)傳送;

(7)2個定時器/計數(shù)器(16位),實現(xiàn)定時或計數(shù)功能:

(8)中斷控制系統(tǒng),共5個中斷源,分高低兩個優(yōu)先級;

(9)一個片內振蕩器和時鐘電路,為單片機產(chǎn)生時鐘脈沖序列;

(10)總線,用于連接各個部件和單片機系統(tǒng)的擴展。

2.請將AT89c51的40個引腳按4類(電源、時鐘、控制和I/O引腳)分類。

答:電源(2):Vss接地端,Vcc接DC正電源線;

時鐘(2):XTAL1,XTAL2

控制(4):RST復位輸入,ALE/(/PROG)地址鎖存允許/編程脈沖,/PSEN外ROM讀選

通信號,(/ES)/VPP內外ROM選擇/編程電源

I/O引腳(32):P0-P3并行8位I/O口

3.AT89c51單片機引腳/EA、RST、ALE、/PSEN的功能是什么?

答:/EA是片內外ROM選擇瑞,ROM的尋址范圍為64KB,而AT89C51內部只有4KB

ROM,當不夠用時可在外擴展ROMo當/EA信號為低電平時,指訪問外部ROM;當/EA

為高電平時,則先訪問內部ROM,當PC值超過4KB時自動轉向外部ROM中執(zhí)行。

RST復位信號,當此引腳上的信號出現(xiàn)至少兩個機器周期的高電平將使單片機復位。

ALE地址鎖存控制信號,當系統(tǒng)擴展時,ALE用于控制把P0口輸出的低8位地址送入

鎖存器存起來,以實現(xiàn)低位地址和數(shù)據(jù)的分時傳送。

/PSEN外部ROM的讀選通信號,在訪問外部ROM時,每個機器周期兩次PSEN有效

(低電平),但在此期間內,每當訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN將不出現(xiàn)。

4.什么是單片機的振蕩周期、狀態(tài)時鐘周期、機器周期和指令周期?它們之間有什么

關系?

答:單片機是按一定的時序進行工作的,而時序是通過XTAL1和XTAL2引腳跨接振

蕩器與內部振蕩電路共同產(chǎn)生固定頻率的波形。我們把振蕩頻率的倒數(shù)稱振蕩周期。狀態(tài)時

鐘周期是指單片機時鐘信號的周期,是振蕩周期的兩倍,又稱狀態(tài)周期。一個機器周期由6

個狀態(tài)組成,即機器周期等于6個狀態(tài)時鐘周期或等于12個振蕩周期。指令周期是指單片

機執(zhí)行一條指令所占用的時間,根據(jù)指令的不同,可包含有1、2、4等機器周期的倍數(shù)。

5.當AT89c51單片機外接晶振為4MHz時,其振蕩周期、狀態(tài)時鐘周期、機器周期、

指令周期的值各為多少?

答:振蕩周期為0.25us,狀態(tài)時鐘周期為0.5us,機器周期為3us,指令周期根據(jù)指

令而不同可能是3us、6us、I2us等。

6.簡述AT89c51單片機復位條件,并說明復位后寄存器中的數(shù)值狀態(tài)。

答;當RST引腳上的復位信號保持至少兩個機器周期的高電平時,即滿足復位條件。

復位后程序計數(shù)器PC的值初始化為0000H,這樣單片機在復位后就從程序存儲器ROM

的0000H單元開始執(zhí)行程序。另外其他的寄存器內容為:ACC,B,PSW,TCON,TL0,

THO,TL1,THI,SCON,TMOD均為OOH,ffiDPTR=0000H,SP=07H,P0~P3=0FFH,

IP=XX000000B,IE=OXXOOOOOB,PCON=OXXXOOOOBo參考表2?1。

7.參閱圖2-5,分析上電復位過程。

答:圖2-5中A是通過外部復位電容充電實現(xiàn)復位的,單片機上電的瞬間,電容兩端

的電位不會突然變化,則RST的電位為Vcc(高電平),隨著充電電流的減小,RST引腳電

位逐漸下降,而其維持高電平的時間取決于電容的充電時間,應大于兩個機器周期。B圖是

在A的基礎上引入了按鍵復位,按下按鍵時RST為高(電阻分壓),按鍵松開后RST逐漸

降為低電平,復位結束。

8.AT89c51單片機的ROM空間中,這6個地址(0、03H、OBH、13H、1BH、23H)

有什么特殊的意義和用途?用戶應怎樣合理安排?

答:他們都是特殊的地址單元,其中0000H是單片機復位后,系統(tǒng)開始取指、執(zhí)行指

令的地址,即單片機復位后PC值為0000H;而03H、OBH、13H、1BH、23H是單片機5

個中斷服務子程序的入口地址。相鄰中斷入口地址間隔8個單元。當程序使用中斷時,在入

口地址處安放一條跳轉指令,而相應的中斷服務子程序從轉移地址開始安放,若中斷服務子

程序小于等于8個單元可直接存在入口地址開始的8個單元內。若沒有用到中斷功能,這些

單元就可以作為一般的程序存儲器用。

9.畫圖說明AT89C51單片機的存儲空間結構。

答:

程序存儲器ROM結構內RAM存儲器結構

10.AT89C51單片機的片內RAM是如何分區(qū)的,各有什么功能?

答:AT89C51單片機內RAM,最低32單元(00H-1FH)為工作寄存器區(qū);工作寄存

器上面的16個單元(20H~2FH)構成固定的可位尋址存儲區(qū);用戶RAM區(qū)(30H~7FH),

可作為數(shù)據(jù)緩沖區(qū),用于存放各種數(shù)據(jù)和中間結果,同時沒有使用的工作寄存器單元和可位

尋址單元都可作為數(shù)據(jù)緩沖區(qū),同時該區(qū)也可作為堆棧區(qū),棧底可以根據(jù)片內數(shù)據(jù)存儲器的

使用情況由指令設定。

H.AT89C851單片機有多少專用寄存器?分布在何地址范圍?若對片內84H讀/寫將會

產(chǎn)生什么結果?(提示:考慮84H為位地址、為字節(jié)地址兩種情況)

答:AT89C51單片機有21個專用寄存器,零散分布在內部RAM的高128單元

(80H-FFH)o

84H位地址為P0.4位,對其進行讀寫就是對P0口的第五位進行讀寫;而84H為字節(jié)

地址時因為該單片機本身未對84H定義專用寄存器,因此不能對84H字節(jié)地址進行讀寫。

12.分別說明程序計數(shù)器PC和堆棧指針SP的作用?復位后PC和SP中值各為何?在

程序設計時,有時為什么要對SP賦值?

答:程序計數(shù)器PC時一個16位的計數(shù)器,其內容為將要執(zhí)行的指令的首地址,尋址

范圍達64KB,PC具有自動加1功能,以實現(xiàn)程序的順序執(zhí)行。PC穴可尋址,無法對它進

行讀寫。堆棧指針SP的內容就是堆棧棧頂?shù)拇鎯卧刂?,向堆棧中每存一個數(shù),SP中的

值就自動加1,每取一個數(shù)就自動減1,SP始終指在棧頂?shù)刂贰?/p>

復位后,PC=0000H,使單片機從0000H單元開始執(zhí)行,SP=O7H,這樣堆棧就要從08H

開始,而08H屬于工作寄存器區(qū),若程序要用到這些寄存器組則要將SP設置大些,因此堆

棧最好在內部的RAM(30H-7FH)中開辟。

13.開機復位后,CPU作用的是哪組工作寄存器?它們的地址是什么?CPU如何確定

和改變當前工作寄存器?

答:開機復位后,CPU作用的時第0組工作寄存器,它們的地址是內部RAM的00H~07H,

CPU若要確定當前工作寄存器,則讀出專用寄存器PSW的RS1和RSO內容;若要改變當

前工作寄存器,則需要修改PSW的RS1和RSO的內容。

14.位地址3EH和字節(jié)地址3EH有何區(qū)別?位地址3EH具體在片內RAM中什么位?

答:字節(jié)地址3EH是內RAM低128字節(jié)中的一個字節(jié)存儲單元。而位地址是針對可

位尋址區(qū)域而言的,位尋址區(qū)占用了字節(jié)地址的20H-2FH共16個字節(jié),字節(jié)地址20H中

的20H.0?20H.7位地址是00H~08H,因此位地址3EH是字節(jié)地址27H中的第7位。

第三章AT89C51指令系統(tǒng)

1.簡述下列基本概念:指令,指令系統(tǒng),機器語言,匯編語言。

答:指令是單片機CPU執(zhí)行某種操作的命令。

指令系統(tǒng)是一臺計算機所能執(zhí)行的指令集合。

機器語言即二進制代碼語言,是計算機可以直接識別。

匯編語言是用助記符、字符串和數(shù)字等來表示指令的程序語。

2.簡述AT89s51單片機的指令格式

答:該單片機的指令由兩部分組成,即操作碼和操作數(shù)。操作碼用來規(guī)定指令進行什么

操作,而操作數(shù)則是指令操作的充象,操作數(shù)可能是一個具體的數(shù)據(jù),也可能是指出到哪里

取得數(shù)據(jù)的地址或符號。指令格式一般為:

[標號:]操作碼[操作數(shù)1][,操作數(shù)2][,操作數(shù)3][;注釋]

3.簡述AT89s51的尋址方式和所能涉及的尋址空間

答:共有7種尋址方式,見表3-2。

分別是:(1)寄存器尋址:尋址范圍為通用寄存器組,共4組32人,但只能使用當前寄

存器組,因此使用前需要通過對PSW種的RSI、RSO位的狀態(tài)進行設置;(2)直接尋址:尋

址范圍為內部RAM,包括低128位用戶RAM區(qū)和高128位專用寄存器;(3)寄存器間接尋

址:尋址范圍為內部RAM低128位,外部RAM64KB(低256單元可以使用DPTR和R0、

R1作為間接尋址寄存器,而其他單元只能用DPTR作為間接尋址寄存器);(4)立即尋址:

直接給出立即數(shù),不涉及尋址空間;(5)變址尋址:只對程序寄存器進行尋址;(6)相對尋址:

以PC的內容為基值,加上指令機器代碼中'相對地址'形成新的PC值轉移;(7)位尋址:

尋址空間包括內部RAM位尋址區(qū)(20?2FH)和專用寄存器的可尋址位。

4.要訪問片外程序存儲器和片外數(shù)據(jù)存儲器,應采用哪些尋址方式?

答:訪問片外程序存儲器采用變址尋址方式,片外數(shù)據(jù)存儲器采用寄存器間接尋址方式,

且用DPTR可以訪問64KB,而用R0或者R1只可訪問低256字節(jié)。

5.在AT89s51片內RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90Ho

請分析下面各是什么指令,說明源操作數(shù)的尋址方式及按順序執(zhí)行每條指令后的結果。

答:

指令指令說明源操作數(shù)尋址方式結果

MOVA,40H將內部RAM中40H內容傳送到累加器A中

(A)一(40H)直接尋址(A)=48H

MOVRO,A再將A中內容傳送給R0

(R0)-(A)寄存器尋址(R0)=48H

MOVPI,#OFOH將立即數(shù)OFOH送到P1口,即PI.4~PI.7位1,其余為0

(P1)-0F0H立即數(shù)尋址(P1)=OFOH

MOV@R0,30H將30H中的內容,傳放到以R0單元內容為地址的單元中

((R0))-(30H)直接尋址((R0))=(48H)=38H

MOVDPTR,#3848H將立即數(shù)3848傳送給DPTR數(shù)據(jù)指針

(dptr)-3848H立即數(shù)尋址(DPTR)=3848H

MOV40H,38H將內部RAM中38H內容傳送到40H單元中

(40H)-(38H)直接尋址(40H)=40H

MOVRO,30H將30H中的內容給R0寄存器

(R0)-(30H)直接尋址(R0)=38H

MOVP0,R0將RO的內容傳送到P0

(P0)-(RO)寄存器尋址(P0)=38H

MOVA,@R0將RO內容為地址的該單元內容傳送給A

(A)一((R0))寄存器間接尋址(A)=40H

MOVP2,Pl將Pl的內容傳送給P2

(P2)-(Pl)直接尋址(P2)=0F0H

6.指出下列指令的源操作數(shù)的尋址方式

MOVA,65H直接尋址

MOVA,#65H立即數(shù)尋址

MOVA,@R0寄存器間接尋址

MOVA,R2寄存器尋址

MOVCA,@A+PC變址尋知:

7.內部RAM和特殊功能寄存器各用什么尋址方式?

答:內部RAM有寄存器尋址方式、直接尋址方式和間接尋址方式;

特殊功能寄存器除A外只能進行直接尋址。

8.已知:(A)=5BH,(RI)=30H,(30H)=0CEH,(Pl)=71H,(PSW)=80H,(PC)

=2000H,(205CH)=46H,(SP)=30H,(B)=78Ho分別求各條指令執(zhí)行后的結果(要求

進行二進制運算驗證)及標志位Cy、P的影響。

(1)MOVA,@R1(A)=0CEHP=1,C不變

(2)MOV40H,30H(40H)=OCEHP和C不變

(3)MOVP1,R1(P1)=3OHP和C不變

(4)MOVCA,@A+PC(A)=46HP=1,C不變

(5)PUSHB(3IH)=78H,(SP)=31HP和C不變

(6)POPDPH(DPH)=0CEH,(SP)=29HP和C不變

(7)XCHDA,@R1(A)=05EH,(30H)二CBHP=1,C不變

(8)ADDA,30H(A)=29HP=1,C=1

(9)ADDCA,Pl(A)=CDHP=l,C=0

(10)SUBBA,P1(A)=E9HP=LC=1

(11)ANLP1,#OFH(P1)=O1HP和C不變

(12)CLRPSW.7C=0

(13)RLCA(A)=B7HP=0,C=0

(14)ORLC,90HC=1,P不變

9.對下面一段程序加上機器碼和注釋,并說明程序運行后寄存器A、R0和內部RAM

50H、51H、52H單元的內容。

MOV50H,#50H755050;(50H)-50H

MOVA,50HE550;(A)-(50H)

MOVRO,AF8;(R0)—(A)

MOVA,#30H7430:(A)70H

MOV@R0,AF6;((R0))一(A)

MOVA,#50H7450;(A)TOH

MOV51H,AF551;(51H)-(A)

MOV52H,OOH755200;(52H)-OOH

答:運行后寄存器(A)=50H,(R0)=50H,(50H)=30H,(51)=50H,(52H)=00H

10.區(qū)別下列各指令中20H的含義,在每條指令后加上注釋。

MOVA,#20H將20H立即數(shù)傳送給A

MOV45H,20H將內部RAM中20H單元的內容傳送到45H中

MOVC,20H.0將內部RAM中20H單元內容的第0位(最低位〕傳送給C

MOVC,20H將內部RAM中20H位地址內容傳送給C

11.寫出完成以下功能的指令

將立即數(shù)30H送到R1;

將內RAM30H中的數(shù)據(jù)送到內RAM78H單元;

將立即數(shù)30H送到以R0中內容為地址的存儲器中;

將R2中的內容送到P1:

將內RAM60H單元的數(shù)據(jù)送到外RAM60H單元;

將內RAM60H單元的數(shù)據(jù)送到外RAM1060H單元;

將ROMIOOOH單元的內容送到內RAM30H單元;

使ACC.7置位;

使累加器的低4位清零;

使P1.2與CY相與,結果送CY;

立即數(shù)45H、93H進行邏輯與、或、異或操作;

兩立即數(shù)求和:1C0H+45H,結果按高低8位存在30H、31H中。

答案:(l)MOVRl,#30H(2)MOV78H,30H

(3)MOV@R0,#30H(4)MOVP1,R2

(5)MOVA,60H;;

movp2,#0;

movr0,#60h;

movx@rO,a

(6)MOVA,60H;;

movdptr,#1060;

movx@dptr,a

(7)MOVA,#00H

MOVDPTR,#IOOOH

MOVCA,@A+DPTR

MOV30H,A

(8)SETBACC.7

(9)ANLA,#OFOH

(10)ANLC,pl.2

(11)與:MOVA,#45H

ANLA,#59H

或:MOVA,#45H

ORLA,#59H

異或:PMOVA,#45H

XRLA,#59H

CLRC

MOVR2,#I

MOVA,#0C0H

ADDA,#45H

MOV31H,A

MOVA,R2

ADDCA,#0

MOV30H,A

12.寫出下列指令執(zhí)行過程中堆棧的變化

設堆棧初值為X:

MOVR6,#11H(SP)=X(堆棧不變)

MOVR7,#23H(SP)=X(堆棧不變)

ACALL200H(SP)=X+2

;(X+l)=第4條指令的首址PC低8位(X+2)=第4條指令的首址PC高8位

POP50H(SP)=X-1

POP51H(SP)=X-2

SJMP$

ORG200H

RET

答:執(zhí)行過程中,前面兩條為立即尋址指令,堆棧不變;執(zhí)行第三條ACALL指令時,

首先將程序寄存器PC的當前值加2,接著先后將PC的低八位和高八位分別進棧,(SP尸

(SP)+2;然后再將PC內容中的低11位用200H來替代,同時程序跳到第七條ORG200H中,

接著RET表示子程序返回,將原先壓入堆棧的PC值彈出,(SP)=(SP)-2;最后兩條POP指

令執(zhí)行后將SP所指地址中的內容賦給50FLSP減1后再將SP所指地址中的內容賦給51H,

SP內容再減1給SP,最后程序結束。

13.請寫出能實現(xiàn)下列功能的程序段:

(1)一個16位數(shù)據(jù),高低字節(jié)分別放在20H和21H中,試將該數(shù)乘以2

MOVA,21H

CLRC

RLCA

MOV21H.A

MOVA,20H

RLCA

MOV20H,A

(2)16位二進制數(shù)由高位到低位放在30H和31H單元,將其內容加1;

MOVA,31H

ADDA,#()1H

MOV31H,A

MOVA,30H

ADDCA,#00H

MOV30H,A

(3)將DPTR中的數(shù)據(jù)減5;

CLRC

MOVA,DPL

SUBBA,#05H

MOVDPL,A

MOVA,DPH

SUBBA,#00H

MOVDPh,A

(4)有3個位變量X,Y,Z,請編寫程序實現(xiàn)Y=X+YZ的邏輯關系式。

XBIT30H

YBIT31H

ZBIT32H

MOVC,Y

ANLC,Z

MOV20H,C

MOVC,X

ORLC,20H

MOVY,C

笫四章AT89C51匯編語言程序設計

1.將一個按高低字節(jié)存放在21H、20H中的一個雙字節(jié)乘以2后,再按高低次序將結

果存放到22H、21H、20H單元

ORGO

STAR:CLRC

MOV20H,#0E2H:設低字節(jié)的數(shù)據(jù)是E2H

MOV21H.#OF3H;設高字節(jié)的數(shù)據(jù)是F3H

MOVA,20H

MOVB.#2H

MULAB

MOV20H,A

MOV23H,B

MOVA,21H

MOVB.#2H

MULAB

ADDCA,23H

MOV21H,A

MOV22H,B

SJMP$

END

2.試編程,將片外RAM1000H-1050H單元的內容置為55H。

MOVP2,#10H

MOVRO,#00H

MOVA,#55H

MOVX@R0,A

MOVR0,#50H

L0:MOVX@R0,A

DJNZRO,LO

SJMP$

END

3.試編程統(tǒng)計數(shù)據(jù)區(qū)長度的程序,設數(shù)據(jù)區(qū)從片內RAM30H單元開始,該數(shù)據(jù)區(qū)以0

結束,統(tǒng)計結果放入2FH中。

MOVR0,#30H

L0:MOVA,@R0

JZL1

INCRI

INCRO

SJMPLO

LI:MOV2FH,R1

4.試編寫程序,將片外RAM2000H~200FH數(shù)據(jù)區(qū)中的數(shù)據(jù)由大到小排列起來。

ORGO

L0:MOVP2,#20H

MOVR0,#00H

MOVR7,#OFH

CLRFO

LOOP:MOVXA,@R0

MOV31H,A

INCRO

MOVXA,@R0

CLRC

CJNEA,31H,L1

LI:JCL2

DECRO

MOVX@R0,A

MOVA,31H

INCRO

MOVX@R0,A

SETBFO

L2;DJNZR7,LOOP

JBFO,LO

SJMP$

END

5.若晶振頻率位6MHZ,試計算下面延時子程序的延時時間

DELAY:MOVR7,#0F6H:I個機器周期

LP:MOVR6,#0FAH:1個機器周期

DJNZR6,$;2個機器周期

DJNZR7,LP;2個機器周期

RET;2個機器周期

答:機器周期為2us,則有:[1+(1+2X250+2)X246+2]X2us=247482us

6.試分別編寫延時20ms和1s的程序

設晶振頻率為12M

20ms:

ORGO

MOVR1,#102

LI:MOVRO,#48

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

NOP

NOP

NOP

NOP

NOP

NOP

NOP

END

Is:

ORGO

MOVR2,#50

LO:MOVRI,#100

LI:MOVRO,#49

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

DJNZR2,L0

SJMP$

END

7.試編寫利用調用子程序的方法延時Imin的程序。

ORG0H

MOVR2,#60

AO:LCALLDLY

DJNZR2,A0

SJMP$

DLY:MOVR2,#50

L0:MOVRI,#100

LI:MOVR0,#49

L2:NOP

NOP

DJNZR0,L2

NOP

DJNZRI,LI

DJNZR2,L0

RET

END

8.用查表程序求0?6之間的整數(shù)的立方。已知整數(shù)存在A中,查表結果存入片內RAM

31H中。

ORGO

MOVA,#DATA

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV30H,A

SJMP$

TAB:DB0,1,8,27,64,125,216

END

若立方數(shù)超過一個字節(jié),在兩個字節(jié)以內,由以下程序實現(xiàn)。

ORG0000H

MOVA,#5

RLA

MOVRO,A

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV31H.A;高位

MOVA,R0

INCA

MOVCA,@A+DPTR

MOV30H,A;低位

SJMP$

TAB:DW0,1,8,27,64,125,216

END

9.編寫程序,查找在內部RAM的30H~50H單元中出現(xiàn)FFH的次數(shù),并將查找結果存

入51H單元。

MOVR1,#OOH

MOVR0,#30H

MOVR2,#21H

L0:MOVA,@RO

CJNEA,#OFFH,L1

INCRI

LI:INCRO

DJNZR2,L0

MOV51H,RI

SJMP$

END

10.試用子程序求多項式:Y=(A+B)2+(B+C)2(要求:兩數(shù)之和不能超過16)

XEQU30H;X代表A

YEQU31H;Y代表B

ZEQU32H;Z代表C

FEQU33H;F中存放計算結果Y

MOVR1,X

MOVR2,Y

LCALLLO

MOVR3,A

MOVRI,Y

MOVR2,Z

LCALLL0

ADDA,R3

MOVF,A

Sjmp$

L0:MOVA,RI

ADDA,R2

MOVB,A

MULAB

RET

end

11.已知(60H)=33H,(61H)=43H,試寫出程序的功能和運行結果,

ORGOOOOh

SS:MOVR0,#61H

MOVR1,#70H

ACALLCRR

SWAPA

MOV@R1,A

DECRO

ACALLCRR

XCHDA,@RI

SJMP$

CRR:MOVA,@R0

CLRC

SUBBA,#30h

CJNEA,#OAH,NEQ

AJMPBIG

NEQ:JCCEN

BIG:SUBBA,#07H

CEN:RET

該程序的運行結果是:(60H)=33H,(61H)=43H,(70H)=C3H

12.內部RAM的30H單元開始存放著一組無符號數(shù),其數(shù)目存放在21H單元中。試編

寫程序,求出這組無符號數(shù)中的最小的數(shù),并將其存入20H單元中。

MOVR0,#30H

MOVA,@R0

MOV20H,A

DEC21H

LOOP:INCRO

MOVA,@R0

CJNEA,2OH,L1

LI:JNCL2

MOV20H,A

L2:DJNZ21H,LOOP

SJMP$

END

13.寫程序實現(xiàn)散轉功能:

(R2)=0轉向RRO

(R2)=l轉向RR1

(R2)=2轉向RR2

ORGO

MOVR2,#2H;設(R2)=2

MOVDPTR,#TAB

MOVA,R2

MOVCA,@A+DPTR

JMP@A+DPTR

TAB:DBRRO-TAB

DBRR1-TAB

DBRR2-TAB

RRO:MOVA,#1;RRO:將立即數(shù)1賦給A

SJMPENDF

RR1:MOVA,#2;RR1:將立即數(shù)2賦給A

SJMPENDF

RR2:MOVA,#3;RR2:將立即數(shù)3賦給A

SJMPENDF

ENDF:SJMP$

14.試按子程序形式編程,招單字節(jié)二進制數(shù)高4位、低4位分別轉換成兩個字節(jié)的

ASCII碼。

MOVA.RO;將R0中的內容作為貝轉換對象

ANLA,#OFH;取低四位

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV20H.A;低四位轉換后存放于20H中

MOVA,RO

ANLA,#OFOH;取高四位

SWAPA

MOVCA,@A+DPTR

MOV21H.A;高四位轉換后存放于21H中

TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

DB4IH,42H,43H,44H,45H,46H

第五章AT89C51輸入/輸出(I/O)口及其簡單應用

1.AT89C51四個I/O口使用時有哪些分工和特點?試作比較,并填寫下表。

I/O口相同的結構不同的結構基本功能第二功能SFR字節(jié)地址位地址范圍驅動能力

P0都有鎖存器、輸入緩沖器和輸出驅動器多路選擇開關輸入輸出數(shù)據(jù)線

/低8位地址線8OH8O~87H強,8個LSTTL輸入,8個引腳最大吸收電流26mA

Pl輸入輸出90H90~97H4個LSTTL輸入,8個引腳最大吸收流15mA

P2多路選擇開關輸入輸出高8位地址線A0HA0-A7H

P3選擇輸出功能輸入輸出第二功能BOHBO?B7H

2.AT89C51的4個I/O口作為輸入口時,為什么要先寫“1”?

答:AT89C51讀操作時,為讀入正確的引腳信號,必須先保證場效應管截止。因為場

效應管導通,引腳電平為0,顯然,從引腳輸入的任何外部信號都被場效應管強迫短路,嚴

重時可能因有大電流流過場效應管,而將它燒壞。為保證場效應管截止,必須先向鎖存器寫

“1”,使場效應管截止。

3.P0口作輸出口時,為什么要外加上拉電阻?

答:因為當P0口作數(shù)據(jù)傳輸作用時,輸出驅動器是開漏電路,需要外加上拉電阻。

4.為什么當P2口作為擴展程序存儲器的高8位地址后,就不宜作I/O口用?

答:P2口雖然有地址/數(shù)據(jù)的雙重作用,可是在同一時間只能在一個狀態(tài)下工作,如

果有外部ROM,訪問的操作連續(xù)不斷,P2口作為高8位要不斷的傳送地址,因此不宜再作

為數(shù)據(jù)傳輸用,如果是外RAM,則根據(jù)對其讀寫的頻繁度來決定是否將P2口作為數(shù)據(jù)傳

輸。

5.I/O口直接驅動數(shù)碼管顯示時,選擇共陰型數(shù)碼管還是共陽型數(shù)碼管?為什么?試根

據(jù)I/O口的驅動能力及發(fā)光二極管的額定電流參數(shù),確定圖5-9中限流電阻的阻值。

答:選擇共陽型數(shù)碼管,因為共陽數(shù)碼管是用低電平(“0”)點亮的,而單片機輸出低電

平的吸收電流大:而共陰數(shù)碼是用高電平(“1”)點亮的,而單片機輸出高電平的驅動電流

小,所以采用共陽數(shù)碼管。其中圖5-9中的電阻可以選擇300歐姆的,因為去除數(shù)碼管的

2V左右的壓降,要保證10mA的電流,限流電阻的阻值約是300歐姆。

6.試依圖5-4簡述P0口的工作原理。

答:從P0口的位結構圖中(圖5-4),可以知道它包含輸出鎖存器,輸入緩沖器(2個),

輸出驅動器和一個多路開關及輸驅動的上拉電路。P0口可以作為通常的I/O口進行數(shù)據(jù)

的讀操作和輸出操作,同時還可以作為地址/數(shù)據(jù)線來復用,它的工作原理如下:

輸入/輸出操作:多路開關連接C端,和鎖存器連接,起輸出/Q與Q0就接通,且內部

信號使得與門輸入端2為0,那么起輸出3端也就為0,使Q1截止,輸出驅動器處在開漏

狀態(tài),這時只要外接一個上拉電阻,就能夠有效的進行輸出/讀操作;

地址(低8位)/數(shù)據(jù)線品用:將多路開關和B端連接,則Q1的輸入就是地址/數(shù)據(jù)信

號,Q0位其取反的信號,此時A點的信號就是引腳輸出的地址/數(shù)據(jù)信號。

第六章AT89C51中斷系統(tǒng)與定時器/計數(shù)器

1.什么叫中斷?設置中斷有什么優(yōu)點?

答:單片機執(zhí)行程序的過程中,為響應內部和外部的隨機發(fā)生的事件,CPU暫時終止

執(zhí)行當前程序,轉去處理突發(fā)事件,處理完畢后,再返回來繼續(xù)執(zhí)行原來終止了的程序,這

一過程稱為中斷。設置中斷使單片機能夠及時的響應并處理運行過程中內部和外部的突發(fā)事

件,解決單片機快速CPU與慢速外設間的矛盾,提高單片機工作效率及其可靠性。

2.寫出AT89c51單片機5個中斷源的入口地址、中斷請求標志名稱、位地址和所在的

特殊功能寄存器。

中斷源入口地址中斷請求標志名稱中斷請求標志位地址所在特殊寄存器

INT00003HIE089HTCON

T0000BHTF08DHTCON

INT10013HIE18BHTCON

TI001BHTF18FHTCON

串行口0023HTI、RI99H、98HSCON

3.開AT89c51單片機的外中斷0,如何操作?寫出操作指令。

答:SETBEA

SETBEX0

或MOVIE,#l000000IB

4.中斷處理過程包括哪4個步驟?簡述中斷處理過程。

答:中斷過程可以分為四步,分別是中斷請求、中斷響應、中斷服務和中斷返回。當中

斷源要CPU為其服務時,先發(fā)出一個中斷請求信號,CPU不斷查詢口斷請求標志,一旦查

詢到某個中斷請求標志置位,則根據(jù)中斷響應條件去響應請求,從而轉去執(zhí)行中斷服務程序。

但轉去中斷程序時,要求先保護現(xiàn)場,將相關的在服務子程序可能改變的存儲單元內容壓入

堆棧保護,然后再去執(zhí)行中斷服務程序主體,最后中斷返回,再返回前將原先的堆棧內容出

棧,即恢復現(xiàn)場。

5.中斷響應需要哪些條件?

答:條件:(1)已經(jīng)開總中斷(EA=1)和相應中斷源的中斷;(2)未執(zhí)行同級或更高

級的中斷;(3)當前執(zhí)行指令的指令周期已經(jīng)結束;(4)正在執(zhí)行的不是RET1指令和訪問

IE、IP的指令,否則要再執(zhí)行一條指令后才能響應。

6.為什么在執(zhí)行RETI或訪問IE、IP指令時,不能立即響應中斷?

答:因為RETI牽涉到堆棧操作,中斷響應也牽涉到堆棧,它們是同一堆棧,且要開放

同級中斷,中斷系統(tǒng)狀態(tài)正在發(fā)生變化;IE和IP指令是中斷控制相關存儲器,修改后還需

要一段穩(wěn)定的時間。所以不能立即響應中斷。這也是中斷響應的限制條件。

7.在響應中斷過程中,PC的值如何變化?

答:響應中斷的過程中,PC值隨程序改變,在保護現(xiàn)場時將下條指令首地址壓入堆棧,

然后將中斷的入口地址給PC,進入中斷服務程序;中斷返回時,從堆棧取出斷點地址給PC。

8.在89c51單片機內存中應如何安排程序區(qū)?

答:(1)從。號地址開始存放程序,按地址號從小到大安排;(2)在使用中斷功能時,

一般3~30H留作中斷使用,其他程序在30H以后的存儲空間。因為5個中斷源入口地址間

隔只有8個單元,一般的中斷服務程序代碼長度都超過8,所以在各中斷入口地址安排一條

無條件轉移指令,轉入中斷服務程序。

89c51片內有4kB的程序存儲單元,其地址為OOOOH?OFFFH,單片機啟動復位后,程

序計數(shù)器的內容為0000H,所以系統(tǒng)將從0000H單元開始執(zhí)行程序。

但在程序存儲中有些特殊的單元:其中一組是0000H?0002H單元,系統(tǒng)復位后,PC

為OOOOH,單片機從0000H單元開始執(zhí)行程序,如果程序不是從0000H單元開始,則應在

這三個單元中存放一條無條件轉移指令,讓CPU直接去執(zhí)行用戶指定的程序;另一組是

0003H?002AH,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:0003H

—000AH外部中斷0中斷地址區(qū),(JOOBH—0012H定時/計數(shù)器0中斷地址區(qū),001SH-

OO1AH外部中斷1中斷地址區(qū),OD1BH—OO22H定時,計數(shù)器1中斷地址區(qū),0023H—002AH

串行中斷地址區(qū)。這40個單元是專門用于存放中斷處理程序的入口地址單元,中斷響應后,

按中斷的類型,自動轉到各自的中斷區(qū)去執(zhí)行程序。從上面可以看出,每個中斷服務程序只

有8個字節(jié)單元,用8個字節(jié)來存放一個中斷服務程序顯然是不可能的。因此以上地址單元

不能用于存放程序的其他內容,只能存放中斷服務程序。但是通常情況下,我們是在中斷響

應的地址區(qū)安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間

去執(zhí)行,這樣中斷響應后,CPU讀到這條轉移指令,便轉向其他地方去繼續(xù)執(zhí)行中斷服務程

序。

9.為什么一般的中斷服務程序要在中斷入口地址處設一條轉移指令?

答:因為每個中斷的地址區(qū)只有8個單元,而一般的中斷服務程序都大于8個單元的內

容,所以需要在另外的空間來存儲中斷服務程序,因此需要在中斷入口地址處設一條轉移指

令轉入別處的中斷服務程序空間。

10.AT89C51單片機中斷優(yōu)先級有幾級?優(yōu)先級和優(yōu)先權如何區(qū)別?

答:兩級。

優(yōu)先級分為高優(yōu)先級和低優(yōu)先級。當幾個中斷源同時請求時,CPU先服務高優(yōu)先級的

中斷,可由程序編程決定。優(yōu)先權是將同一優(yōu)先級的所有中斷源按先后進行排序,其中外部

中斷0最高,串行口中斷最低,車編程決定。

11.試分析以下中斷源得到服務程序的先后順序的可行性。若能,應如何設置中斷源的

中斷優(yōu)先級?若不行,請講出理由。

(1)TO、Tk/INTO、/INTk串行口

可行,將TO和T1設置為高優(yōu)先級,其他為低優(yōu)先級

(2)串行口、/INTO、TO、/INTI、T1

可行,將串行口中斷設置為高優(yōu)先級,其他為低優(yōu)先級

(3)/INTO、Tl>/INTI、TO、串行口

不行,囚為該單片機的優(yōu)先級只有兩級,然后綜合考慮優(yōu)先權該排列順序不可行

(4)/INTO、/INTI、串行口、Tl、TO

不行,兩級優(yōu)先級+優(yōu)先權

(5)串行口、Tl、ZINTK/INTO、TO

不行,兩級優(yōu)先級+優(yōu)先權

(6)TO、/INTI、Tl、/INTO、串行口

可行,將TO、INTI和T1設置為高優(yōu)先級,其他為低優(yōu)先級

(7)/INTO、串行口、TO、Tl、/INTI

不可行,兩級優(yōu)先級+優(yōu)先權

12.AT89C51單片機外中斷采用電平觸發(fā)方式時,如何防止CPU重復響應外中斷?

答:采用電平觸發(fā)方式時,應該在硬件電路上和中斷服務程序中采取撤除中斷請求信號

的措施。其中硬件電路如圖所示:

當外部設備有低電平觸發(fā)方式的外中斷請求時,中斷信號經(jīng)反相器,加到鎖存器CP端,

作為CP脈沖。由于D端直接接地為0,Q端輸出低電平,觸發(fā)/INTO產(chǎn)生中斷。當CPU相

應中斷后,在該中斷服務程序中安排兩條指令:

ANLP1,#OFEH

ORLP1,#01H

使P1.0輸出一個負脈沖信號,其延時時間為2個機器周期,加到鎖存器Sp端(強迫置

1端),足以使鎖存器置位,撤銷引起重復中斷的INTO低電平信號,從而撤除中斷請求。

13.AT89C5I單片機響應中斷的優(yōu)先順序應依什么原則?

答:先優(yōu)先級從高到低,同優(yōu)先級的再按優(yōu)先權從高到低的響應原則。

14.什么叫保護現(xiàn)場?需要俁護哪些內容?什么叫恢復現(xiàn)場?恢復現(xiàn)場與保護現(xiàn)場有

什么關系?需遵循什么原則?

答:一旦進入中斷服務程序,將與斷點處有關且在中斷服務程序中可能改變的存儲單元

內容通過PUSHdireci指令壓入堆棧保護,以便中斷返回時恢復,稱之為保護現(xiàn)場;與保護

相對應的,在返回前通過POPdirect指令恢復現(xiàn)場,再將保護現(xiàn)場壓入堆棧的內容彈出送到

原來相關的存儲單元后再中斷返回。使用堆棧保護現(xiàn)場、恢復現(xiàn)場要遵循堆棧先進后出的操

作規(guī)則。

15.已知有5臺外圍設備,分別為EXI-EX5,均需要中斷?,F(xiàn)要求EXI-EX3合用INTO,

余下的合用INT1,且用P1.0-PL4查詢,試畫出連接電路,并編制程序,當5臺外設請求

中斷(中斷信號為低電平)時,分別執(zhí)行相應的中斷服務子程序SEVER1~SEVER5。

答:

連接電路如上圖,外圍設備有中斷信號時,對應的P1.0?P1.4口為高電平信號輸出。

通過或門判斷是否有中斷,又因單片機的外部中斷信號是低電平有效,所以需要再添加一個

反相器使得中斷信號有效。

程序如下:

ORG0000H

SJMPSTAR

ORG03H

SJMPINTOS

ORGI3H

SJMPINT1S

ORG30H

STAR:MOVIE,#85H;開總中斷,外部中斷0和1

MOVTCON,#OOH;低電平觸發(fā)

SJMP$

INTOS:MOVC,P1.0

JCSEVERI

MOVC,P1.1

JCSEVER2

MOVC,P1.2

JCSEVER3

RETI

INTIS:MOVC,P1.3

JCSEVER4

MOVC,P1.4

JCSEVER5

RETI

SEVER1:.......

SEVER2:.......

SEVER3:.......

SEVER4:.......

SEVER5:……

END

16.如何理解加法計數(shù)器和減法計數(shù)器?

答:加法計數(shù)器是指一個指令周期或外部脈沖時將加法計數(shù)器內容加1,而減法剛好相

反,當溢出時產(chǎn)生中斷。

17.定時器/計數(shù)器在什么情況下是定時器?在什么情況下是計數(shù)器?

答:當TMOD寄存器中的C,(T)位內容為1時,為計數(shù)器工作方式使用;當其內容

為0時為定時器工作方式使用。

18.定時器/計數(shù)器有哪些控制位?各控制位的含義和功能是什么?

答:定時器/計數(shù)器的工作由兩個特殊寄存器來控制,各有8位。其中TMOD是工作方

式寄存器,高四位和低四位分別用于控制TO和TI,作用相同,因此這里就介紹低四位,它

們分別是:MO,Ml這兩位用于工作方式選擇,對應于定時器狀態(tài)而言:C/(T)位是計數(shù)/定

時方式選擇位;GATE是門控位,用于定時器啟動信號源的選擇。另外還有一個控制寄存器

TCON,其中低四位用于外部中斷信號控制,高四位用于定時器/計數(shù)器控制,其中:TR1

定時器/計數(shù)器1啟動標志;TR0定時器/計數(shù)器0啟動標志。

19.定時器/計數(shù)器的工作方式如何設定?

答:其工作方式由TMOD寄存器中的C/(T)位來確定,內容為1時為計數(shù)器工作方

式使用;內容為0時為定時器工作方式使用。在定時工作方式下,又由Ml和M0兩位來選

擇定時器工作方式。

20.試歸納89c51單片機的延時器/計數(shù)器0、1、2三種工作方式的特點、初始化設置

及使用方法。

答:MlM0=00,工作方式0,為13位計數(shù)器,由TL低5位和TH的8位組成,13位

計滿溢出;MIM0=01,工作方式1,為16位計數(shù)器,由TL為低8位,TH為高8位組成;

MlM0=10,工作方式2,為8位i-數(shù)器,其中TL作為計數(shù)器,TH作為預置寄存器,當TL

的計數(shù)溢出時自動將TH的預置值裝入TL計數(shù)器中;M1MO=11,工作方式3。

21.定時器/計數(shù)器的最大定時容量、定時容量、初值之間的關系如何?

答:定時器/計數(shù)器的最大定時容量是指從。開始到最終溢出的容量,在方式0和方式2

下最大定時容量分別為213=8192和28=256,而定時容量是根據(jù)當前初值到最終溢出的容

量;而初值就是指當前定時器/計數(shù)器在定時/計數(shù)開始之前賦予的數(shù)值,定時容量就是最大

容量和初值的差。

22.已知FOSC=6MHZ,試編寫程序,使P1.7輸出高電平寬40us,低電平寬360us的

連續(xù)矩形脈沖。

答:利用TO分別定時器40us和360us來控制P1.7

初值計算過程:根據(jù)晶振得機器周期為2us,初值(T0)=28-40/2=ECH(40us)初值(TO)

=28-360/2=4CH(360us)

程序如下:

ORG0000H

SJMPMAIN

ORGOBH

SJMPTOS

ORG30H

MAIN:CLRP1.7

MOVTMOD,#22H

MOVTH0,#0ECH

MOVTL0,#0ECH

SETBEA

SETBETO

SETBTRO

HERE:SJMP$

T0S:CPLP1.7

MOVC,P1.7

JCL1

MOVTHO,#OECH

MOVTL0,#0ECH

SJMPL2

LI:MOVTH0,#04CH

MOVTL0,#04CH

L2:RETI

END

23.已知FOSC=6MHZ,試編寫程序,利用TO工作在方式2,使PI.0和Pl.1分別輸

出周期為1ms和400us的方波。

答:程序如下:采用200us定時

初值計算過程:根據(jù)晶振得機器周期為2us,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論