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

下載本文檔

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

文檔簡(jiǎn)介

第一章概論

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

答:?jiǎn)纹瑱C(jī):又名微控制器,是將微型計(jì)算機(jī)中的中央處理器(CPU)、隨機(jī)存儲(chǔ)器

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

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

單片機(jī)系統(tǒng):?jiǎn)纹瑱C(jī)本身只是一塊芯片,它并不能集成計(jì)算機(jī)的全部電路,因此需要加

上時(shí)鐘、復(fù)位電路等,才能構(gòu)成單片機(jī)最小應(yīng)用系統(tǒng);若最小系統(tǒng)資源不足時(shí),還需擴(kuò)展外

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

單片機(jī)應(yīng)用系統(tǒng):它是為實(shí)際的控制應(yīng)用而設(shè)計(jì)的,該系統(tǒng)與控制對(duì)象結(jié)合在一起,是

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

人機(jī)交互通道接口電路、串行通信接口等面向?qū)ο蟮慕涌陔娐贰?/p>

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

2.單片機(jī)有哪些特點(diǎn)?

答:?jiǎn)纹瑱C(jī)的特點(diǎn)很多,主要是體積小品種多,價(jià)格便宜,可靠性高,使用靈活,還有

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

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

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

答:AT89系列單片機(jī)是將FLASH存儲(chǔ)器技術(shù)和MCS-51系列單片機(jī)的基本內(nèi)核相結(jié)

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

機(jī)。AT89C51單片機(jī)是AT89系列機(jī)的標(biāo)準(zhǔn)型單片機(jī),它的優(yōu)點(diǎn)主要有:內(nèi)ROM是FLASH

存儲(chǔ)器,已獲得廣泛應(yīng)用的80C5I兼容,采用靜態(tài)邏輯設(shè)計(jì),操作頻率范圍寬,具有兩個(gè)

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

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

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

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

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

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

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

6.簡(jiǎn)述單片機(jī)應(yīng)用研發(fā)過程和研發(fā)工具。

答;任務(wù)分析一方案論證一硬件設(shè)計(jì)一軟件設(shè)計(jì)一仿真調(diào)試一實(shí)物制作與調(diào)試。

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

平臺(tái)、教學(xué)實(shí)驗(yàn)板等。

第二章AT89C51單片機(jī)內(nèi)部結(jié)構(gòu)基礎(chǔ)

1.AT89C51單片機(jī)內(nèi)部結(jié)構(gòu)主要有哪些部件組成?它們的主要功能是什么?

答:AT89C51單片機(jī)內(nèi)部結(jié)構(gòu)主要有:

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

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

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

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

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

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

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

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

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

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

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

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

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

時(shí)鐘(2):XTAL1,XTAL2

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

通信號(hào),(/ES)/VPP內(nèi)外ROM選擇/編程電源

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

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

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

ROM,當(dāng)不夠用時(shí)可在外擴(kuò)展ROMo當(dāng)/EA信號(hào)為低電平時(shí),指訪問外部ROM;當(dāng)/EA

為高電平時(shí),則先訪問內(nèi)部ROM,當(dāng)PC值超過4KB時(shí)自動(dòng)轉(zhuǎn)向外部ROM中執(zhí)行。

RST復(fù)位信號(hào),當(dāng)此引腳上的信號(hào)出現(xiàn)至少兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。

ALE地址鎖存控制信號(hào),當(dāng)系統(tǒng)擴(kuò)展時(shí),ALE用于控制把P0口輸出的低8位地址送入

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

/PSEN外部ROM的讀選通信號(hào),在訪問外部ROM時(shí),每個(gè)機(jī)器周期兩次PSEN有效

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

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

關(guān)系?

答:?jiǎn)纹瑱C(jī)是按一定的時(shí)序進(jìn)行工作的,而時(shí)序是通過XTAL1和XTAL2引腳跨接振

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

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

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

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

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

指令周期的值各為多少?

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

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

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

答;當(dāng)RST引腳上的復(fù)位信號(hào)保持至少兩個(gè)機(jī)器周期的高電平時(shí),即滿足復(fù)位條件。

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

的0000H單元開始執(zhí)行程序。另外其他的寄存器內(nèi)容為: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,分析上電復(fù)位過程。

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

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

位逐漸下降,而其維持高電平的時(shí)間取決于電容的充電時(shí)間,應(yīng)大于兩個(gè)機(jī)器周期。B圖是

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

降為低電平,復(fù)位結(jié)束。

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

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

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

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

個(gè)中斷服務(wù)子程序的入口地址。相鄰中斷入口地址間隔8個(gè)單元。當(dāng)程序使用中斷時(shí),在入

口地址處安放一條跳轉(zhuǎn)指令,而相應(yīng)的中斷服務(wù)子程序從轉(zhuǎn)移地址開始安放,若中斷服務(wù)子

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

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

9.畫圖說明AT89C51單片機(jī)的存儲(chǔ)空間結(jié)構(gòu)。

答:

程序存儲(chǔ)器ROM結(jié)構(gòu)內(nèi)RAM存儲(chǔ)器結(jié)構(gòu)

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

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

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

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

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

使用情況由指令設(shè)定。

H.AT89C851單片機(jī)有多少專用寄存器?分布在何地址范圍?若對(duì)片內(nèi)84H讀/寫將會(huì)

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

答:AT89C51單片機(jī)有21個(gè)專用寄存器,零散分布在內(nèi)部RAM的高128單元

(80H-FFH)o

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

地址時(shí)因?yàn)樵搯纹瑱C(jī)本身未對(duì)84H定義專用寄存器,因此不能對(duì)84H字節(jié)地址進(jìn)行讀寫。

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

程序設(shè)計(jì)時(shí),有時(shí)為什么要對(duì)SP賦值?

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

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

行讀寫。堆棧指針SP的內(nèi)容就是堆棧棧頂?shù)拇鎯?chǔ)單元地址,向堆棧中每存一個(gè)數(shù),SP中的

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

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

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

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

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

和改變當(dāng)前工作寄存器?

答:開機(jī)復(fù)位后,CPU作用的時(shí)第0組工作寄存器,它們的地址是內(nèi)部RAM的00H~07H,

CPU若要確定當(dāng)前工作寄存器,則讀出專用寄存器PSW的RS1和RSO內(nèi)容;若要改變當(dāng)

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

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

答:字節(jié)地址3EH是內(nèi)RAM低128字節(jié)中的一個(gè)字節(jié)存儲(chǔ)單元。而位地址是針對(duì)可

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

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

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

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

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

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

機(jī)器語言即二進(jìn)制代碼語言,是計(jì)算機(jī)可以直接識(shí)別。

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

2.簡(jiǎn)述AT89s51單片機(jī)的指令格式

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

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

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

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

3.簡(jiǎn)述AT89s51的尋址方式和所能涉及的尋址空間

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

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

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

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

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

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

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

以PC的內(nèi)容為基值,加上指令機(jī)器代碼中'相對(duì)地址'形成新的PC值轉(zhuǎn)移;(7)位尋址:

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

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

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

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

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

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

答:

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

MOVA,40H將內(nèi)部RAM中40H內(nèi)容傳送到累加器A中

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

MOVRO,A再將A中內(nèi)容傳送給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中的內(nèi)容,傳放到以R0單元內(nèi)容為地址的單元中

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

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

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

MOV40H,38H將內(nèi)部RAM中38H內(nèi)容傳送到40H單元中

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

MOVRO,30H將30H中的內(nèi)容給R0寄存器

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

MOVP0,R0將RO的內(nèi)容傳送到P0

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

MOVA,@R0將RO內(nèi)容為地址的該單元內(nèi)容傳送給A

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

MOVP2,Pl將Pl的內(nèi)容傳送給P2

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

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

MOVA,65H直接尋址

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

MOVA,@R0寄存器間接尋址

MOVA,R2寄存器尋址

MOVCA,@A+PC變址尋知:

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

答:內(nèi)部RAM有寄存器尋址方式、直接尋址方式和間接尋址方式;

特殊功能寄存器除A外只能進(jìn)行直接尋址。

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

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

進(jìn)行二進(jìn)制運(yùn)算驗(yàn)證)及標(biāo)志位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.對(duì)下面一段程序加上機(jī)器碼和注釋,并說明程序運(yùn)行后寄存器A、R0和內(nèi)部RAM

50H、51H、52H單元的內(nèi)容。

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

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

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

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

MOV45H,20H將內(nèi)部RAM中20H單元的內(nèi)容傳送到45H中

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

MOVC,20H將內(nèi)部RAM中20H位地址內(nèi)容傳送給C

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

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

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

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

將R2中的內(nèi)容送到P1:

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

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

將ROMIOOOH單元的內(nèi)容送到內(nèi)RAM30H單元;

使ACC.7置位;

使累加器的低4位清零;

使P1.2與CY相與,結(jié)果送CY;

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

兩立即數(shù)求和:1C0H+45H,結(jié)果按高低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í)行過程中堆棧的變化

設(shè)堆棧初值為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指令時(shí),

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

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

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

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

SP內(nèi)容再減1給SP,最后程序結(jié)束。

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

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

MOVA,21H

CLRC

RLCA

MOV21H.A

MOVA,20H

RLCA

MOV20H,A

(2)16位二進(jìn)制數(shù)由高位到低位放在30H和31H單元,將其內(nèi)容加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個(gè)位變量X,Y,Z,請(qǐng)編寫程序?qū)崿F(xiàn)Y=X+YZ的邏輯關(guān)系式。

XBIT30H

YBIT31H

ZBIT32H

MOVC,Y

ANLC,Z

MOV20H,C

MOVC,X

ORLC,20H

MOVY,C

笫四章AT89C51匯編語言程序設(shè)計(jì)

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

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

ORGO

STAR:CLRC

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

MOV21H.#OF3H;設(shè)高字節(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單元的內(nèi)容置為55H。

MOVP2,#10H

MOVRO,#00H

MOVA,#55H

MOVX@R0,A

MOVR0,#50H

L0:MOVX@R0,A

DJNZRO,LO

SJMP$

END

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

結(jié)束,統(tǒng)計(jì)結(jié)果放入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,試計(jì)算下面延時(shí)子程序的延時(shí)時(shí)間

DELAY:MOVR7,#0F6H:I個(gè)機(jī)器周期

LP:MOVR6,#0FAH:1個(gè)機(jī)器周期

DJNZR6,$;2個(gè)機(jī)器周期

DJNZR7,LP;2個(gè)機(jī)器周期

RET;2個(gè)機(jī)器周期

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

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

設(shè)晶振頻率為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.試編寫利用調(diào)用子程序的方法延時(shí)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中,查表結(jié)果存入片內(nèi)RAM

31H中。

ORGO

MOVA,#DATA

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV30H,A

SJMP$

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

END

若立方數(shù)超過一個(gè)字節(jié),在兩個(gè)字節(jié)以內(nèi),由以下程序?qū)崿F(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.編寫程序,查找在內(nèi)部RAM的30H~50H單元中出現(xiàn)FFH的次數(shù),并將查找結(jié)果存

入51H單元。

MOVR1,#OOH

MOVR0,#30H

MOVR2,#21H

L0:MOVA,@RO

CJNEA,#OFFH,L1

INCRI

LI:INCRO

DJNZR2,L0

MOV51H,RI

SJMP$

END

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

XEQU30H;X代表A

YEQU31H;Y代表B

ZEQU32H;Z代表C

FEQU33H;F中存放計(jì)算結(jié)果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,試寫出程序的功能和運(yùn)行結(jié)果,

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

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

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

寫程序,求出這組無符號(hào)數(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.寫程序?qū)崿F(xiàn)散轉(zhuǎn)功能:

(R2)=0轉(zhuǎn)向RRO

(R2)=l轉(zhuǎn)向RR1

(R2)=2轉(zhuǎn)向RR2

ORGO

MOVR2,#2H;設(shè)(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é)二進(jìn)制數(shù)高4位、低4位分別轉(zhuǎn)換成兩個(gè)字節(jié)的

ASCII碼。

MOVA.RO;將R0中的內(nèi)容作為貝轉(zhuǎn)換對(duì)象

ANLA,#OFH;取低四位

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOV20H.A;低四位轉(zhuǎn)換后存放于20H中

MOVA,RO

ANLA,#OFOH;取高四位

SWAPA

MOVCA,@A+DPTR

MOV21H.A;高四位轉(zhuǎn)換后存放于21H中

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

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

第五章AT89C51輸入/輸出(I/O)口及其簡(jiǎn)單應(yīng)用

1.AT89C51四個(gè)I/O口使用時(shí)有哪些分工和特點(diǎn)?試作比較,并填寫下表。

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

P0都有鎖存器、輸入緩沖器和輸出驅(qū)動(dòng)器多路選擇開關(guān)輸入輸出數(shù)據(jù)線

/低8位地址線8OH8O~87H強(qiáng),8個(gè)LSTTL輸入,8個(gè)引腳最大吸收電流26mA

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

P2多路選擇開關(guān)輸入輸出高8位地址線A0HA0-A7H

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

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

答:AT89C51讀操作時(shí),為讀入正確的引腳信號(hào),必須先保證場(chǎng)效應(yīng)管截止。因?yàn)閳?chǎng)

效應(yīng)管導(dǎo)通,引腳電平為0,顯然,從引腳輸入的任何外部信號(hào)都被場(chǎng)效應(yīng)管強(qiáng)迫短路,嚴(yán)

重時(shí)可能因有大電流流過場(chǎng)效應(yīng)管,而將它燒壞。為保證場(chǎng)效應(yīng)管截止,必須先向鎖存器寫

“1”,使場(chǎng)效應(yīng)管截止。

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

答:因?yàn)楫?dāng)P0口作數(shù)據(jù)傳輸作用時(shí),輸出驅(qū)動(dòng)器是開漏電路,需要外加上拉電阻。

4.為什么當(dāng)P2口作為擴(kuò)展程序存儲(chǔ)器的高8位地址后,就不宜作I/O口用?

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

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

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

輸。

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

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

答:選擇共陽型數(shù)碼管,因?yàn)楣碴枖?shù)碼管是用低電平(“0”)點(diǎn)亮的,而單片機(jī)輸出低電

平的吸收電流大:而共陰數(shù)碼是用高電平(“1”)點(diǎn)亮的,而單片機(jī)輸出高電平的驅(qū)動(dòng)電流

小,所以采用共陽數(shù)碼管。其中圖5-9中的電阻可以選擇300歐姆的,因?yàn)槿コ龜?shù)碼管的

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

6.試依圖5-4簡(jiǎn)述P0口的工作原理。

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

輸出驅(qū)動(dòng)器和一個(gè)多路開關(guān)及輸驅(qū)動(dòng)的上拉電路。P0口可以作為通常的I/O口進(jìn)行數(shù)據(jù)

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

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

信號(hào)使得與門輸入端2為0,那么起輸出3端也就為0,使Q1截止,輸出驅(qū)動(dòng)器處在開漏

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

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

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

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

1.什么叫中斷?設(shè)置中斷有什么優(yōu)點(diǎn)?

答:?jiǎn)纹瑱C(jī)執(zhí)行程序的過程中,為響應(yīng)內(nèi)部和外部的隨機(jī)發(fā)生的事件,CPU暫時(shí)終止

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

一過程稱為中斷。設(shè)置中斷使單片機(jī)能夠及時(shí)的響應(yīng)并處理運(yùn)行過程中內(nèi)部和外部的突發(fā)事

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

2.寫出AT89c51單片機(jī)5個(gè)中斷源的入口地址、中斷請(qǐng)求標(biāo)志名稱、位地址和所在的

特殊功能寄存器。

中斷源入口地址中斷請(qǐng)求標(biāo)志名稱中斷請(qǐng)求標(biāo)志位地址所在特殊寄存器

INT00003HIE089HTCON

T0000BHTF08DHTCON

INT10013HIE18BHTCON

TI001BHTF18FHTCON

串行口0023HTI、RI99H、98HSCON

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

答:SETBEA

SETBEX0

或MOVIE,#l000000IB

4.中斷處理過程包括哪4個(gè)步驟?簡(jiǎn)述中斷處理過程。

答:中斷過程可以分為四步,分別是中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)和中斷返回。當(dāng)中

斷源要CPU為其服務(wù)時(shí),先發(fā)出一個(gè)中斷請(qǐng)求信號(hào),CPU不斷查詢口斷請(qǐng)求標(biāo)志,一旦查

詢到某個(gè)中斷請(qǐng)求標(biāo)志置位,則根據(jù)中斷響應(yīng)條件去響應(yīng)請(qǐng)求,從而轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。

但轉(zhuǎn)去中斷程序時(shí),要求先保護(hù)現(xiàn)場(chǎng),將相關(guān)的在服務(wù)子程序可能改變的存儲(chǔ)單元內(nèi)容壓入

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

棧,即恢復(fù)現(xiàn)場(chǎng)。

5.中斷響應(yīng)需要哪些條件?

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

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

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

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

答:因?yàn)镽ETI牽涉到堆棧操作,中斷響應(yīng)也牽涉到堆棧,它們是同一堆棧,且要開放

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

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

7.在響應(yīng)中斷過程中,PC的值如何變化?

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

然后將中斷的入口地址給PC,進(jìn)入中斷服務(wù)程序;中斷返回時(shí),從堆棧取出斷點(diǎn)地址給PC。

8.在89c51單片機(jī)內(nèi)存中應(yīng)如何安排程序區(qū)?

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

一般3~30H留作中斷使用,其他程序在30H以后的存儲(chǔ)空間。因?yàn)?個(gè)中斷源入口地址間

隔只有8個(gè)單元,一般的中斷服務(wù)程序代碼長(zhǎng)度都超過8,所以在各中斷入口地址安排一條

無條件轉(zhuǎn)移指令,轉(zhuǎn)入中斷服務(wù)程序。

89c51片內(nèi)有4kB的程序存儲(chǔ)單元,其地址為OOOOH?OFFFH,單片機(jī)啟動(dòng)復(fù)位后,程

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

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

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

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

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

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

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

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

按中斷的類型,自動(dòng)轉(zhuǎn)到各自的中斷區(qū)去執(zhí)行程序。從上面可以看出,每個(gè)中斷服務(wù)程序只

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

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

應(yīng)的地址區(qū)安放一條無條件轉(zhuǎn)移指令,指向程序存儲(chǔ)器的其它真正存放中斷服務(wù)程序的空間

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

序。

9.為什么一般的中斷服務(wù)程序要在中斷入口地址處設(shè)一條轉(zhuǎn)移指令?

答:因?yàn)槊總€(gè)中斷的地址區(qū)只有8個(gè)單元,而一般的中斷服務(wù)程序都大于8個(gè)單元的內(nèi)

容,所以需要在另外的空間來存儲(chǔ)中斷服務(wù)程序,因此需要在中斷入口地址處設(shè)一條轉(zhuǎn)移指

令轉(zhuǎn)入別處的中斷服務(wù)程序空間。

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

答:兩級(jí)。

優(yōu)先級(jí)分為高優(yōu)先級(jí)和低優(yōu)先級(jí)。當(dāng)幾個(gè)中斷源同時(shí)請(qǐng)求時(shí),CPU先服務(wù)高優(yōu)先級(jí)的

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

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

11.試分析以下中斷源得到服務(wù)程序的先后順序的可行性。若能,應(yīng)如何設(shè)置中斷源的

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

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

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

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

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

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

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

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

不行,兩級(jí)優(yōu)先級(jí)+優(yōu)先權(quán)

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

不行,兩級(jí)優(yōu)先級(jí)+優(yōu)先權(quán)

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

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

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

不可行,兩級(jí)優(yōu)先級(jí)+優(yōu)先權(quán)

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

答:采用電平觸發(fā)方式時(shí),應(yīng)該在硬件電路上和中斷服務(wù)程序中采取撤除中斷請(qǐng)求信號(hào)

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

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

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

應(yīng)中斷后,在該中斷服務(wù)程序中安排兩條指令:

ANLP1,#OFEH

ORLP1,#01H

使P1.0輸出一個(gè)負(fù)脈沖信號(hào),其延時(shí)時(shí)間為2個(gè)機(jī)器周期,加到鎖存器Sp端(強(qiáng)迫置

1端),足以使鎖存器置位,撤銷引起重復(fù)中斷的INTO低電平信號(hào),從而撤除中斷請(qǐng)求。

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

答:先優(yōu)先級(jí)從高到低,同優(yōu)先級(jí)的再按優(yōu)先權(quán)從高到低的響應(yīng)原則。

14.什么叫保護(hù)現(xiàn)場(chǎng)?需要俁護(hù)哪些內(nèi)容?什么叫恢復(fù)現(xiàn)場(chǎng)?恢復(fù)現(xiàn)場(chǎng)與保護(hù)現(xiàn)場(chǎng)有

什么關(guān)系?需遵循什么原則?

答:一旦進(jìn)入中斷服務(wù)程序,將與斷點(diǎn)處有關(guān)且在中斷服務(wù)程序中可能改變的存儲(chǔ)單元

內(nèi)容通過PUSHdireci指令壓入堆棧保護(hù),以便中斷返回時(shí)恢復(fù),稱之為保護(hù)現(xiàn)場(chǎng);與保護(hù)

相對(duì)應(yīng)的,在返回前通過POPdirect指令恢復(fù)現(xiàn)場(chǎng),再將保護(hù)現(xiàn)場(chǎng)壓入堆棧的內(nèi)容彈出送到

原來相關(guān)的存儲(chǔ)單元后再中斷返回。使用堆棧保護(hù)現(xiàn)場(chǎng)、恢復(fù)現(xiàn)場(chǎng)要遵循堆棧先進(jìn)后出的操

作規(guī)則。

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

余下的合用INT1,且用P1.0-PL4查詢,試畫出連接電路,并編制程序,當(dāng)5臺(tái)外設(shè)請(qǐng)求

中斷(中斷信號(hào)為低電平)時(shí),分別執(zhí)行相應(yīng)的中斷服務(wù)子程序SEVER1~SEVER5。

答:

連接電路如上圖,外圍設(shè)備有中斷信號(hào)時(shí),對(duì)應(yīng)的P1.0?P1.4口為高電平信號(hào)輸出。

通過或門判斷是否有中斷,又因單片機(jī)的外部中斷信號(hào)是低電平有效,所以需要再添加一個(gè)

反相器使得中斷信號(hào)有效。

程序如下:

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.如何理解加法計(jì)數(shù)器和減法計(jì)數(shù)器?

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

反,當(dāng)溢出時(shí)產(chǎn)生中斷。

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

答:當(dāng)TMOD寄存器中的C,(T)位內(nèi)容為1時(shí),為計(jì)數(shù)器工作方式使用;當(dāng)其內(nèi)容

為0時(shí)為定時(shí)器工作方式使用。

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

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

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

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

時(shí)方式選擇位;GATE是門控位,用于定時(shí)器啟動(dòng)信號(hào)源的選擇。另外還有一個(gè)控制寄存器

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

定時(shí)器/計(jì)數(shù)器1啟動(dòng)標(biāo)志;TR0定時(shí)器/計(jì)數(shù)器0啟動(dòng)標(biāo)志。

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

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

式使用;內(nèi)容為0時(shí)為定時(shí)器工作方式使用。在定時(shí)工作方式下,又由Ml和M0兩位來選

擇定時(shí)器工作方式。

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

及使用方法。

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

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

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

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

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

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

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

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

容量和初值的差。

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

連續(xù)矩形脈沖。

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

初值計(jì)算過程:根據(jù)晶振得機(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定時(shí)

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

溫馨提示

  • 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)論