最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C51單片機(jī)習(xí)題及答案

2021-01-30 17:40 作者:朝顏晚扶桑  | 我要投稿

第一章

1-1選擇

1.計(jì)算機(jī)中最常用的字符信息編碼是( ?A ?)

A ??ASCII ?????

B ?BCD碼 ??

C ?余3碼 ????

D ?循環(huán)碼

2.要MCS-51系統(tǒng)中,若晶振頻率屢8MHz,一個(gè)機(jī)器周期等于(A ????) μs

A 1.5?????

B ?3 ???

C ?1 ????

D 0.5

3.MCS-51的時(shí)鐘最高頻率是 ???( A ). ???

A 12MHz ??

B 6 MHz ????

C 8 MHz ????

D ?10 MHz

4. 以下不是構(gòu)成的控制器部件(D ??):

A 程序計(jì)數(shù)器、 ?

B指令寄存器、 ?

C指令譯碼器、 ?

D存儲(chǔ)器

5. 以下不是構(gòu)成單片機(jī)的部件( D ??)

A ?微處理器(CPU)、

B存儲(chǔ)器 ??

C接口適配器(I\O接口電路) ?

D 打印機(jī)

6. 下列不是單片機(jī)總線是( D ??)

A 地址總線 ??

B 控制總線 ??

C 數(shù)據(jù)總線 ????

D 輸出總線

7.-49D的二進(jìn)制補(bǔ)碼為.( ?B ??)

A 11101111???

B 11101101??????

C 0001000 ??????

D ?11101100

8.十進(jìn)制29的二進(jìn)制表示為原碼( C ???)

A 11100010 ?????

B 10101111 ?????

C 00011101??????

D 00001111

9. 十進(jìn)制0.625轉(zhuǎn)換成二進(jìn)制數(shù)是( ?A )

A 0.101 ???

B 0.111???

C 0.110????

D 0.100

10 選出不是計(jì)算機(jī)中常作的碼制是( ?D ?)

A ?原碼 ???

B?反碼 ?

C補(bǔ)碼 ?

D ASCII

1-2填空

1.計(jì)算機(jī)中常作的碼制有原碼、反碼和補(bǔ)碼

2.十進(jìn)制29的二進(jìn)制表示為00011101

3.十進(jìn)制數(shù)-29的8位補(bǔ)碼表示為.11100011

4.單片微型機(jī)CPU、存儲(chǔ)器和I\O接口三部分組成.

5.若不使用MCS-51片內(nèi)存器引腳EA必須接地.

6.輸入輸出設(shè)備是計(jì)算機(jī)與外部世界交換信息的載體.

7.十進(jìn)制數(shù)-47用8位二進(jìn)制補(bǔ)碼表示為.11010001

8.-49D的二進(jìn)制補(bǔ)碼為.11101101

9.計(jì)算機(jī)中最常用的字符信息編碼是ASCII

10.計(jì)算機(jī)中的數(shù)稱為機(jī)器數(shù),它的實(shí)際值叫真值。

1-3判斷

1.我們所說(shuō)的計(jì)算機(jī)實(shí)質(zhì)上是計(jì)算機(jī)的硬件系統(tǒng)與軟件系統(tǒng)的總稱。 ????( ?√ )

2.MCS-51上電復(fù)位時(shí),SBUF=00H。 ?( ?× )。 ????SBUF不定。

3.使用可編程接口必須處始化。 ???( ?√ ?)。

4.8155的復(fù)位引腳可與89C51的復(fù)位引腳直接相連。( √ ????)

5.MCS-51是微處理器。( ??× ?)不是。

6.MCS-51系統(tǒng)可以沒(méi)有復(fù)位電路。( × )不可以。復(fù)位是單片機(jī)的初始化操作。

7.要MCS-51系統(tǒng)中,一個(gè)機(jī)器周期等于1.5μs。( × ???)若晶振頻率屢8MHz,才可能為1.5μs

8.計(jì)算機(jī)中常作的碼制有原碼、反碼和補(bǔ)碼( √ ?)

9.若不使用MCS-51片內(nèi)存器引腳EA必須接地. ( √ ?)

10.十進(jìn)制數(shù)-29的8位補(bǔ)碼表示為.11100010( × ?)

1-4簡(jiǎn)答

1.何謂單片機(jī)?單片機(jī)與一般微型計(jì)算機(jī)相比,具有哪些特點(diǎn)?

答:?jiǎn)纹瑱C(jī)是在一塊集成電路上把CPU、存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器及多種形式的I/O接口集成在一起而構(gòu)成的微型計(jì)算機(jī)。它與通用微型計(jì)算機(jī)相比,具有如下特點(diǎn):

(1)?單片機(jī)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是分工的,前者為ROM,后者為RAM;

(2)?采用面向控制的指令系統(tǒng),控制功能強(qiáng);

(3)?多樣化的I/O接口,多功能的I/O引腳;

(4)?產(chǎn)品系列齊全,功能擴(kuò)展性強(qiáng);

(5)?功能是通用的,像一般微處理機(jī)那樣可廣泛地應(yīng)用在各個(gè)方面。

2 單片機(jī)主要應(yīng)用在哪些領(lǐng)域?

答:?jiǎn)纹瑱C(jī)的應(yīng)用范圍很廣泛,諸如智能化家用電器、儀器儀表、工業(yè)控制、計(jì)算機(jī)外部設(shè)備、智能機(jī)器人、電信及導(dǎo)航等方面。

3 ?在各種系列的單片機(jī)中,片內(nèi)ROM的配置有幾種形式?用戶應(yīng)根據(jù)什么原則來(lái)選用?

答:各種類型的單片機(jī)片內(nèi)程序存儲(chǔ)器的配置形式主要有以下幾種形式:

(1)??(Msak)ROM型單片機(jī):內(nèi)部具有工廠 編程的ROM,ROM中的程序只能由單片機(jī)制造廠家用 工藝固化,用戶不能修改ROM中的程序。例如:MCS—51系列的8051。

?ROM單片機(jī)適合于大批量生產(chǎn)的產(chǎn)品。用戶可委托芯片生產(chǎn)廠家采用 方法將程序制作在芯片的ROM。

(2)?EPROM型單片機(jī):內(nèi)部具有紫外線可擦除電可編程的只讀存儲(chǔ)器,用戶可以自行將程序?qū)懭氲叫酒瑑?nèi)部的EPROM中,也可以將EPROM中的信息全部擦除。擦去信息的芯片還可以再次寫入新的程序,允許反復(fù)改寫。例如:MCS—51系列的8751。

EPROM型單片機(jī)使用比較方便,但價(jià)格較高,適合于研制產(chǎn)品或結(jié)構(gòu)要求簡(jiǎn)單的小批量產(chǎn)品。

(3)?無(wú)ROM型單片機(jī):內(nèi)部沒(méi)有程序存儲(chǔ)器,它必須連接程序存儲(chǔ)器才能組成完整的應(yīng)用系統(tǒng)。例如:MCS—51系列的8031。

無(wú)ROM型單片機(jī)價(jià)格低廉,用戶可根據(jù)程序的大小來(lái)選擇外接程序存儲(chǔ)器的容量。這種單片機(jī)擴(kuò)展靈活,但系統(tǒng)結(jié)構(gòu)較復(fù)雜。

(4)?E2ROM型單片機(jī):內(nèi)部具有電可擦除叫可編程的程序存儲(chǔ)器,使用更為方便。例如:MCS—51的派生型89C51單片機(jī)。

(5)?OTP(One Time Programmable)ROM單片機(jī):內(nèi)部具有一次可編程的程序存儲(chǔ)器,用戶可以在編程器上將程序?qū)懭肫瑑?nèi)程序存儲(chǔ)器中,程序?qū)懭牒蟛荒茉俑膶憽@纾篘EC公司的μPD75P308GF—3B9。這種芯片的價(jià)格也較低。

4.控制器的組成和作用

答:控制器:由程序計(jì)數(shù)器、指令寄存器、指令譯碼器、時(shí)序發(fā)生器和操作控制器等組成。用來(lái)協(xié)調(diào)指揮計(jì)算機(jī)系統(tǒng)的操作。

5.?微型計(jì)算機(jī)組成

答:微型計(jì)算機(jī)組成由微處理器(CPU)、存儲(chǔ)器、接口適配器(I\O接口電路)及輸入/輸出設(shè)備組成。通過(guò)系統(tǒng)總線將它們連接起來(lái),以完成某些特定的運(yùn)算與控制。

6.什么叫尋址方式

答:尋址方式:尋址方式就是尋找指令中操作數(shù)或操作數(shù)所在地址的方式。也就是如何找到存放操作數(shù)的地址,把操作數(shù)提取出來(lái)的方法。

7.?什么叫堆棧:

答:堆棧是在片內(nèi)RAM中專門開(kāi)辟出來(lái)的一個(gè)區(qū)域,數(shù)據(jù)的存取是以"后進(jìn)先出"的結(jié)構(gòu)方式處理的。實(shí)質(zhì)上,堆棧就是一個(gè)按照"后進(jìn)先出"原則組織的一段內(nèi)存區(qū)域。

8.什么是匯編語(yǔ)言?什么叫指令周期?

答:匯編:匯編語(yǔ)言源程序在交付計(jì)算機(jī)執(zhí)行之前,需要先翻譯成目標(biāo)程序,這個(gè)翻譯過(guò)程叫匯編。

指令周期:指執(zhí)行一條指令所占用的全部時(shí)間。通常一個(gè)指令周期含1~4個(gè)機(jī)器周期。

9.什么是進(jìn)位和溢出

答:兩數(shù)運(yùn)算的結(jié)果若沒(méi)有超出字長(zhǎng)的表示范圍,則由此產(chǎn)生的進(jìn)位是自然進(jìn)位;若兩數(shù)的運(yùn)算結(jié)果超出了字長(zhǎng)的表示范圍(即結(jié)果不合理),則稱為溢出。例如將正數(shù)3FH和負(fù)數(shù)D0H相加,其結(jié)果不會(huì)超出8位字長(zhǎng)的表示范圍,所以其結(jié)果10FH中的進(jìn)位是正常進(jìn)位(也就是模)。但是,若正數(shù)3FH與正數(shù)70H相加,其結(jié)果為AFH,最高位為"1",成了負(fù)數(shù)的含義,這就不合理了,這種情況稱為溢出。

第二章

2-1填空

1..微處器由寄存器、控制器、運(yùn)算器三部分組成..

2.當(dāng)MCS-51引腳ALE信號(hào)有效時(shí),表示從Po口穩(wěn)定地送出了低8位地址.

3.MCS-51的堆棧是軟件填寫堆棧指針臨時(shí)在_片內(nèi)數(shù)據(jù)存儲(chǔ)器內(nèi)開(kāi)辟的區(qū)域.

4.MCS-51中凡字節(jié)地址能被_8整除的特殊功能寄存器均能尋址.

5.MCS-51有4組工作寄存器,它們的地址范圍是00H~1FH.

6.MCS-51片內(nèi)20H~2FH范圍內(nèi)的數(shù)據(jù)存儲(chǔ)器,既可以字節(jié)尋址又可以位尋址.

7.計(jì)算機(jī)的系統(tǒng)總線有地址總線、控制總線和數(shù)據(jù)總線。

8.80C51含4KB?ROM。

9.80C51在物理有4個(gè)獨(dú)立的存儲(chǔ)空間。

10.一個(gè)機(jī)器周期等于6個(gè)狀態(tài)周期,振蕩脈沖2分頻后產(chǎn)生的時(shí)釧信號(hào)的周期定義為狀態(tài) 周期。

2-2判斷

1.我們所說(shuō)的計(jì)算機(jī)實(shí)質(zhì)上是計(jì)算機(jī)的硬件系統(tǒng)與軟件系統(tǒng)的總稱。 ????( ?√ )

2.MCS-51的相對(duì)轉(zhuǎn)移指令最大負(fù)跳距是127B。 ??????????????????????( ?× )

3.MCS-51的程序存儲(chǔ)器只是用來(lái)存放程序的。 ( × ?) ?存放程序和表格常數(shù)。 ????

4.MCS-51的時(shí)鐘最高頻率是18MHz. ????( ?× ?). ???12MHz。

5.使用可編程接口必須處始化。 ???( ?√ ?)。

6.當(dāng)MCS-51上電復(fù)位時(shí),堆棧指針SP=00H。 ?( ?× ??)。 SP=07H

7.MCS-51外擴(kuò)I/O口與外RAM是統(tǒng)一編址的。 ?( √ ??)。

8.使用8751且 =1時(shí),仍可外擴(kuò)64KB的程序存儲(chǔ)器。( ??× ?)60KB。

9.8155的復(fù)位引腳可與89C51的復(fù)位引腳直接相連。( √ )

10.MCS-51是微處理器。( ??× ?)不是。

11.MCS-51的串行接口是全雙工的。( ?√ ??)

12.PC存放的是當(dāng)前執(zhí)行的指令。( ?× ??)是將要執(zhí)行的下一條指令的地址。

13.MCS-51的特殊功能寄存器分布在60H~80H地址范圍內(nèi)。(×)80H~FFH。

14.MCS-51系統(tǒng)可以沒(méi)有復(fù)位電路。( × )不可以。復(fù)位是單片機(jī)的初始化操作。

15.要MCS-51系統(tǒng)中,一個(gè)機(jī)器周期等于1.5μs。( ×)若晶振頻率屢8MHz,才可能為1.5μs

2-3選擇

1.要想測(cè)理INT0引腳上的一個(gè)正脈沖寬度,那么特殊功能寄存器TMOD的內(nèi)容應(yīng)為( ?B ).

(A)09H ?????

(B)87 H???

(C)00H ?????

(D)80H

2.PSW=18H時(shí),則當(dāng)前工作寄存器是( D ?)

(A)0組  

(B)1組  

(C)2組    

(D)3組

3.控制串行口工作方式的寄存器是( C ?。?/p>

(A)TCON ??

(B)PCON??

(C)SCON ???

(D)TMOD

4.P1口的每一位能驅(qū)動(dòng)(  B?。?/p>

(A)2個(gè)TTL低電平負(fù)載有   

(B)4個(gè)TTL低電平負(fù)載

(C)8?jìng)€(gè)TTL低電平負(fù)載有  

(D)10個(gè)TTL低電平負(fù)載

5.MCS-51的中斷允許觸發(fā)器內(nèi)容為83H,CPU將響應(yīng)的中斷請(qǐng)求是( ?B ??)

(A) T1, ?????

(B)T0,T1????

(C)T1,串行接口 ???

(D) ?,T0

2-4問(wèn)答題

1 ??8051單片機(jī)內(nèi)部包含哪些主要邏輯功能部件?

答:8051單片機(jī)是個(gè)完整的單片微型計(jì)算機(jī)。芯片內(nèi)部包括下列硬件資源:

(1)?8位CPU;

(2)?4KB的片內(nèi)程序存儲(chǔ)器ROM。可尋址64KB程序存儲(chǔ)器和64KB外部數(shù)據(jù)存儲(chǔ)器;

(3)?128B內(nèi)部 RAM;

(4)?21個(gè) SFR;

(5)?4個(gè)8位并行I/O口(共32位I/O線);

(6)?一個(gè)全雙工的異步串行口;

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

(8)?5個(gè)中斷源,兩個(gè)中斷優(yōu)先級(jí);

(9)?內(nèi)部時(shí)鐘發(fā)生器。

2 ?EA/VPP引腳有何功用?8031的引腳應(yīng)如何處理?為什么?

答:EA/VPP是雙功能引腳,功能如下:

(1)?EA接高電平時(shí),在低4KB程序地址空間(0000H~0FFFH),CPU執(zhí)行片內(nèi)程序存儲(chǔ)器的指令,當(dāng)程序地址超出低4KB空間(1000H~FFFFH)時(shí),CPU將自動(dòng)執(zhí)行片外程序存儲(chǔ)器的指令。

(2)?EA接低電平時(shí),CPU只能執(zhí)行外部程序存儲(chǔ)器的指令。

8031單片機(jī)內(nèi)部無(wú)ROM,必須外接程序存儲(chǔ)器。因此,8031的EA引腳必須接低電平。

在對(duì)8751單片機(jī)內(nèi)部的 EPROM編程時(shí),此引腳VPP外接+12V電壓,用于固化EPROM程序。

3?8051單片機(jī)存儲(chǔ)器的組織結(jié)構(gòu)是怎樣的?

答:8051存儲(chǔ)器包括程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,從邏輯結(jié)構(gòu)上看,可以分為三個(gè)不同的空間:

(1)?64KB的程序存儲(chǔ)器地址空間:0000H~FFFFH,其中0000H~0FFFH為片內(nèi)4KB的ROM地址空間,1000H~FFFFH為外部ROM地址空間;

(2)?256B的內(nèi)部數(shù)據(jù)存儲(chǔ)器地址空間,00H~FFH,分為兩大部分,其中00H~7FH(共128B單元)為內(nèi)部靜態(tài)RAM的地址空間,80H~FFH為特殊功能寄存器的地址空間,21個(gè)特殊功能寄存器離散地分布在這個(gè)區(qū)域;

(3)?64KB的外部數(shù)據(jù)存儲(chǔ)器地址空間:0000H~FFFFH,包括擴(kuò)展I/O地址空間。

4.片內(nèi)數(shù)據(jù)存儲(chǔ)器分為哪幾個(gè)性質(zhì)和用途不同的區(qū)域?

答:8051內(nèi)部128B的數(shù)據(jù)RAM區(qū),包括有工作寄存器組區(qū)、可直接位尋址區(qū)和數(shù)據(jù)緩沖區(qū)。各區(qū)域的特性如下:

(1)?00H~1FH為工作寄存器組區(qū),共分4組,每組占用8個(gè)RAM字節(jié)單元,每個(gè)單元作為一個(gè)工作寄存器,每組的8個(gè)單元分別定義為8個(gè)工作寄存器R0~R7。當(dāng)前工作寄存器組的選擇是由程序狀態(tài)字PSW的RS1、RS0兩位來(lái)確定。如果實(shí)際應(yīng)用中并不需要使用工作寄存器或不需要使用4組工作寄存器,不使用的工作寄存器組的區(qū)域仍然可作為一般數(shù)據(jù)緩沖區(qū)使用,用直接尋址或用Ri的寄存器間接尋址來(lái)訪問(wèn)。

(2)?20H~2FH為可位尋址區(qū)域,這16個(gè)字節(jié)的每一位都有一個(gè)地址,編址為00H~7FH。

當(dāng)然,位尋址區(qū)也可以用作字節(jié)尋址的一般數(shù)據(jù)緩沖區(qū)使用。

(3)30H~7FH為堆棧、數(shù)據(jù)緩沖區(qū)。

5 ?單片機(jī)有哪幾個(gè)特殊功能寄存器?各在單片機(jī)的哪些功能部件中?

答:8051單片機(jī)內(nèi)部有21個(gè)特殊功能寄存器,在物理上是分散在片內(nèi)各功能部件中,在數(shù)學(xué)上把它們組織在內(nèi)部數(shù)據(jù)存儲(chǔ)器地址空間80H~FFH中,以便能使用統(tǒng)一的直接尋址方式來(lái)訪問(wèn)。這些特殊功能寄存器頒在以下各個(gè)功能部件中:

(1)?CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH兩個(gè)8位寄存器組成);

(2)?中斷系統(tǒng):IP、IE;

(3)?定時(shí)器/計(jì)數(shù)器:TMOD、TCOM、TL0、TH0、TL1、TH1;

(4)?并行I/O口:P0、P1、P2、P3;

(5)?串行口:SCON、SBUF、PCON。

6 ?PC是什么寄存器?是否屬于特殊功能寄存器?它有什么作用?

答:PC是16位程序計(jì)數(shù)器(Program Counter),它不屬于特殊功能寄存器范疇,程序員不以像訪問(wèn)特殊功能寄存器那樣來(lái)訪問(wèn)PC。PC是專門用于在CPU取指令期間尋址程序存儲(chǔ)器。PC總是保存著下一條要執(zhí)行的指令的16位地址。通常程序是順序執(zhí)行的,在一般情況下,當(dāng)取出一個(gè)指令(更確切地說(shuō)為一個(gè)指令字節(jié))字節(jié)后,PC自動(dòng)加1。如果在執(zhí)行轉(zhuǎn)移指令、子程序調(diào)用/返回指令或中斷時(shí),要把轉(zhuǎn)向的地址賦給PC。

7 ?DPTR是什么寄存器?它由哪些特殊功能寄存器組成?它的主要作用是什么?

答:DPTR是16位數(shù)據(jù)指針寄存器,它由兩個(gè)8位特殊功能寄存器DPL(數(shù)據(jù)指針低8位)和DPH(數(shù)據(jù)指針高8位)組成,DPTR用于保存16位地址,作間址寄存器用,可尋址外部數(shù)據(jù)存儲(chǔ)器,也可尋址程序存儲(chǔ)器。

第三章

3-1選擇題

1、MOVX ?A,@DPTR指令中源操作數(shù)的尋址方式是(B)

(A)?寄存器尋址?

(B)寄存器間接尋址?

(C)直接尋址?

(D)立即尋址

1.?ORG ?0003H

LJMP 2000H

ORG 000BH

LJMP 3000H 當(dāng)CPU響應(yīng)外部中斷0后,PC的值是(B)

(A)?0003H?

(B)2000H?

(C)000BH?

(D)3000H

2.?執(zhí)行PUSH ?ACC指令,MCS-51完成的操作是(A)

(A)?SP+1 ????SP (ACC)???(SP)?

(B)(ACC)???(SP)SP-1?????SP

(C)SP-1 ???SP (ACC)???(SP)?

(D)(ACC)???(SP)SP+1 ????SP

4、?LCALL指令操作碼地址是2000H,執(zhí)行完相子程序返回指令后,PC=(D)

()?2000H?

(B)2001H?

(C)2002H?

(D)2003H

5、51執(zhí)行完MOV ?A,#08H后,PSW的一位被置位(D)

(A)C?

(B)F0?

(C)OV?

(D)P

6、下面條指令將MCS-51的工作寄存器置成3區(qū)(B)

(A)MOV ?PSW,#13H?

(B)MOV ?PSW,#18H

(C)?SETB ?PSW.4 ?CLR PSW.3?

?(D)?SETB PSW.3??CLR PSW.4

????7、執(zhí)行MOVX ?A,@DPTR指令時(shí),MCS-51產(chǎn)生的控制信號(hào)是(C)

(A)?/PSEN?

(B)ALE?

(C)/RD?

(D)/WR

????8、MOV C,#00H的尋址方式是(A)

(A)?位尋址?

(B)直接尋址?

(C)立即尋址?

(D)寄存器尋址

9、ORG 0000H

???AJMP 0040H

???ORG 0040H

???MOV SP,#00H當(dāng)執(zhí)行完左邊的程序后,PC的值是(C)

(A)?0040H?

(B)0041H?

(C)0042H?

(D)0043H

???10、對(duì)程序存儲(chǔ)器的讀操作,只能使用(D)

(A)?MOV指令?

(B)PUSH指令?

(C)MOVX指令

(D)MOVC指令

3-2判斷題

3.?MCS-51的相對(duì)轉(zhuǎn)移指令最大負(fù)跳距是127B。(錯(cuò))128B

4.?當(dāng)MCS-51上電復(fù)位時(shí),堆棧指針SP=00H。(SP=07H)( ?錯(cuò) ?)

5.?調(diào)用子程序指令(如:CALL)及返回指令(如:RET)與堆棧有關(guān)但與PC無(wú)關(guān)。(錯(cuò))子序的轉(zhuǎn)返與PC也有關(guān)(PC入棧與出棧)

6.?MOV??@R1,#80H ?(對(duì))

5、INC ?DPTR ?(對(duì))

6、CLR ?R0 ?(錯(cuò))指令系統(tǒng)中沒(méi)有。

7、MOV ?@R1,#80H?(對(duì))

8、ANL ?R1,#0FH????(錯(cuò))

9、ADDC ?A,C???????(錯(cuò))

10、XOR ?P1,#31H ??(對(duì))

3-3簡(jiǎn)答題

1 簡(jiǎn)述MCS-51匯編語(yǔ)言指令格式。

答:MCS-51匯編語(yǔ)言格式如下:

[標(biāo)號(hào):]操作碼助記符[操作數(shù)1] [操作數(shù)2] [操作數(shù)3][注釋]標(biāo)號(hào)是用戶定義的符號(hào),其值代表這條指令的地址。操作碼助記符是指令系統(tǒng)規(guī)定的代表特定指令功能的英文縮寫符。每條指令都有操作碼記符。指令的操作數(shù)最多有3個(gè),也有無(wú)操作數(shù)的指令。注釋字段是用戶對(duì)程序的說(shuō)明,便于對(duì)程序的閱讀和理解。

簡(jiǎn)答

2 MCS-51指令系統(tǒng)主要有哪幾種尋址方式?試舉例說(shuō)明。

答:MCS-51指令操作數(shù)主要有以下7種尋址方式:

尋址方式 ???????????????????????舉例

立即尋址 ??????????????????MOV ???????A,#16

直接尋址 ??????????????????MOV ???????20H,P1

寄存器尋址 ????????????????MOV ???????A,R0

寄存器間接尋址 ????????????MOVX ??????A, @DPTR

變址尋址 ??????????????????MOVC ??????A, @A+DPRT

相對(duì)尋址 ??????????????????SJMP ???????LOOP

位尋址 ????????????????????ANL ???????C,70H

3對(duì)訪問(wèn)內(nèi)部RAM和外部RAM,各應(yīng)采用哪些尋址方式?

答:對(duì)內(nèi)部RAM的尋址方式有直接尋址、寄存器間接尋址和可對(duì)位尋址的位尋址。對(duì)外部RAM的尋址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)間接尋址。

4設(shè)內(nèi)部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,問(wèn)執(zhí)行下列指令后,各有關(guān)存儲(chǔ)單元(即R0,R1,A,B,P1,30H,40H及5AH單元)的內(nèi)容如何?

???MOV ???R0,#30H ?????????????;R0=30H

???MOV ???A,@R0 ??????????????;A=5AH

???MOV ???R1,A ????????????????;R1=5AH

???MOV ???B,R1 ????????????????;B=5AH

???MOV ???@R1,P1 ?????????????;(5AH)=7FH

???MOV ???A,P1 ????????????????;A=7FH

???MOV ???40H,#20H ????????????;(40H)=20H

???MOV ???30H,40H ?????????????;(30H)=20H

解:每一條指令執(zhí)行后的結(jié)果如注釋字段所標(biāo)。最后結(jié)果為:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。

5 ?SJMP(短轉(zhuǎn)移)指令和AJMP(絕對(duì)轉(zhuǎn)移)指令的主要區(qū)別。

前者提供了以SJMP的下一條指令的起始地址為中心的256字節(jié)范圍的轉(zhuǎn)移(-128~+127),后者的轉(zhuǎn)移目標(biāo)地址必須在與AJMP的下一條指令的第一字節(jié)相同的2KB區(qū)的程序儲(chǔ)存器中。短轉(zhuǎn)移方便了可重定位編碼。SJMP方便了PC可重定位編碼,但轉(zhuǎn)移范圍小。而ASJMP轉(zhuǎn)移范圍大,但存在跳區(qū)的限制,AJMP指令只能位于2KB區(qū)的最后2個(gè)字節(jié)處時(shí),才可跳到下一個(gè)區(qū)去。因此用AJMP指令來(lái)代替SJMP指令是有條件的,也就是目標(biāo)地址必須與它下面的指令存放地址在同一個(gè)2KB區(qū)域內(nèi)。

3-4編程題

1?編程將片內(nèi)RAM30H單元開(kāi)始的15B的數(shù)據(jù)傳送到片外RAM3000H開(kāi)始的單元中去。

 解:STRAT:MOV ????R0,#30H

??????????????MOV ????R7,#0FH

??????????????MOV ????DPTR,#3000H

??????LOOP: MOV ????A,@R0

??????????????MOVX ???@DPTR,A

??????????????INC ??????R0

??????????????INC ??????DPTR

??????????????DJNZ ?????R7,LOOP

??????????????RET

2 片內(nèi)RAM30H開(kāi)始的單元中有10B的二進(jìn)制數(shù),請(qǐng)編程求它們之和(和<256 ).

   解 ADDIO:MOV ????R0,30H

??????????????????MOV ?????R7,#9

??????????????????MOV ?????A,@R0

??????????LOOP: INC ??????R0

??????????????????ADD ??????A,@R0

??????????????????DJNZ ?????R7,LOOP

??????????????????MOV ?????30H,A

??????????????????RET

3 ?編一個(gè)程序,將累加器中的一個(gè)字符從串行接口發(fā)送出去.

   解 ??SOUT:MOV ???SCON,#40H ????;設(shè)置串行接口為工作方式

       ?????MOV ???TMOD,#20H ????;定時(shí)器T1工作于模式2

??????????????????MOV ???TL1,#0E8H; ?????;設(shè)置波特率為1200b/s

??????????????????MOV ???TH1,#0E8H

??????????????????SETB ????TR1

??????????????????MOV ????SBUF,A

??????????????????JNB ?????T1,$

??????????????????CLB ?????T1

??????????????????RET

4?用查表法編一子程序,將R3中的BCD碼轉(zhuǎn)換成ASCII碼.

??????解  MAIN: ?MOV ?????A,R3 ?????????;待轉(zhuǎn)換的數(shù)送A

????????????????????MOV ?????DPTR,#TAR ???;表首地址送DPTR

????????????????????MOVC ????A,@A+DPTR ??;查ASCII碼表

????????????????????MOV ?????R3,A ??????????;查表結(jié)果送R3

????????????????????RET

????????????TAR ???DB ???????30H,31H,32H,33H,34H

????????????????????DB ???????35H,36H,37H,38H,39H

5?片內(nèi)RAM40H開(kāi)始的單元內(nèi)有10B二進(jìn)制數(shù),編程找出其中最大值并存于50H單元中.

???解 ??START: ?MOV ???R0,#40H ??????;數(shù)據(jù)塊首地址送R0

?????????????????MOV ????R7,#09H ??????;比較次數(shù)送R7

         MOV ????A,@R0 ???????;取數(shù)送A

   ?LOOP: ????INC ?????R0 ?

?????????????????MOV ????30H,@R0 ?????;取數(shù)送30H

?????????????????CJNE ????A,30H,NEHT ??;(A)與(30H)相比

??????NEXT: ????JNC ?????BIE1 ?????????(A)≥(30H)轉(zhuǎn)BIR1

?????????????????MOV ????A,30H ???????;(A)<(30H),大數(shù)送A

   BIE1: ?????DJNZ ????R7,LOOP ?????;比較次數(shù)減1,不為0,繼續(xù)比較

         MOV ????50H,A ????????;比較結(jié)束,大數(shù)送50H

         RET? ? ??

6?編一子程序,從串行接口接受一個(gè)字符.

解: START: ??MOV ????TMOD,#20H ???;定時(shí)器T1工作于模式2

???????????????MOV ????TH1,#0E8H ????;設(shè)置波特率為1 200b/s

???????????????MOV ????TL1,#0E8H ?

???????????????SETB ????TR1 ???????????;啟動(dòng)T1

???????????????MOV ?????SCON,#50H ????;串行接口工作于方式1,充許接收

??????L1: ?????JNB ???????RI,L1 ???????;等待接收數(shù)據(jù),末接收到數(shù)據(jù),繼續(xù)等待

???????????????CLR ??????RI ????????????;接收到數(shù)據(jù),清RI

???????????????MOV ?????A,SBUF ??????;接收到數(shù)據(jù)送A

???????????????RET

7?利用調(diào)子程序的方法,進(jìn)行兩個(gè)無(wú)符號(hào)數(shù)相加。請(qǐng)編主程序及子程序。

解 ?用R0和R1作數(shù)據(jù)指針,R0指向第一個(gè)加數(shù),并兼作“和”的指針,R1指向另一個(gè)加數(shù),字節(jié)存放到R2中作計(jì)數(shù)初值。

  主程序:

    JAFA: ?MOV ???R0,#20H ???????;指向加數(shù)最低字節(jié)

        MOV ??R1,#29H ????????;指向另一加數(shù)最低字節(jié)

        MOV ??R2,#04H ????????;字節(jié)數(shù)作計(jì)數(shù)值

        ACALL ??JASUB ????????;調(diào)用加法子程序

        AJMP ?????$

????????????????RTE

?多字節(jié)加法子程序:

JASUB: ?CLR ???C

JASUB1: MOV ???A,@R0 ???;取出加數(shù)的一個(gè)字節(jié)(4B無(wú)符號(hào)數(shù)加數(shù))

    ADDC ???A,@R1 ????;加上另一數(shù)的一個(gè)字節(jié) 

    MOV ????@R0,A ????;保存和數(shù)

    INC ?????R0 ????????;指向加數(shù)的高位

    INC ?????R1 ????????;指向另一加數(shù)的高位

    DJNZ ???R2,JASUB1 ?;全部加完了嗎?

    RET

8?若圖數(shù)據(jù)塊是有符號(hào)數(shù),求正數(shù)個(gè)數(shù),編程并注釋。

解 ??????????ORG ????0030H

????START: ??MOV ????20H,#00H ?????;計(jì)正數(shù)個(gè)數(shù)計(jì)數(shù)器

       ?MOV ???DPTR,#0000H ??;

??????????????MOVX ??A,@DPTR ?????;數(shù)據(jù)塊長(zhǎng)度→10H

??????????????MOV ????10H,A

??????????????INC ??????DPTR ??????;DPTR指向第一個(gè)數(shù)的地址

   TWO: ???MOVX ???A,@DPTR ???;取數(shù)→A

??????????????JB ???????ACC.7,ONE ??;是負(fù)數(shù)轉(zhuǎn)ONE,準(zhǔn)備取下一個(gè)數(shù)

??????????????INC ???????20H ?????????;是正數(shù),正數(shù)計(jì)數(shù)器加1

   ONE: ??INC ??????DPTR ???????;地址指針加1

      ??DJNZ ????10H,TW ???;數(shù)據(jù)塊長(zhǎng)度減1不等于0,繼續(xù)尋找

       RET

9 編制一個(gè)循環(huán)閃爍燈的程序。有8個(gè)發(fā)光二極管,每次其中某個(gè)燈閃爍點(diǎn)亮10次后,轉(zhuǎn)到下一個(gè)閃爍10次,循環(huán)不止。畫出電路圖。

??本程序的硬件連接如圖所示。當(dāng)P1.0輸出高電平時(shí),LED燈亮,否則不亮。

??其程序如下:

???????????????????????????MOV ????A,#01H ?????;燈亮初值

?????????????????SHIFT: ???LCAIL ???FLASH ????;調(diào)閃亮10次子程序

???????????????????????????RR ??????A ???????????;右移一位

???????????????????????????SJMP ????SHIFT ???????;循環(huán)

?????????????????FLASH: ???MOV ????R2,#0AH ????閃爍10次計(jì)數(shù)

?????????????????FLASH1; ??MOV ????P1,A ????????;點(diǎn)亮

????????????????????????????LCALL ??DELAY ??????;延時(shí)

????????????????????????????MOV ????P1,#00H ??????;熄滅

????????????????????????????LCALL ???DELAY ??????;延時(shí)

????????????????????????????DJNZ ?????R2,FLASH1 ???;循環(huán)

RET? ? ?

第四章

4-1填空

1.MCS-51的Po口作為輸出端口時(shí),每位能驅(qū)動(dòng)????????8 ??個(gè)SL型TTL負(fù)載.

2.MCS-51有 ??????4個(gè)并行I\O口,其中P0~P3是準(zhǔn)雙向口,所以由輸出轉(zhuǎn)輸入時(shí)必須先寫入"1"???????

3.設(shè)計(jì)8031系統(tǒng)時(shí),_P0、P2 ??????口不能用作一般I\O口.

4.MCS-51串行接口有4種工作方式,這可在初始化程序中用軟件填寫特殊功能寄存器__SCON ??_加以選擇.

5.當(dāng)使用慢速外設(shè)時(shí),最佳的傳輸方式是 ???中 ?斷 ?.

6.當(dāng)定時(shí)器To工作在方式3 ???時(shí),要占定時(shí)器T1的TR1和TF1_兩個(gè)控制位.

7.MCS-51有?5 ?個(gè)中斷源,有2 個(gè)中斷優(yōu)先級(jí),優(yōu)先級(jí)由軟件填寫特殊功能寄存器??IP ?加以選擇..

8.用串口擴(kuò)并口時(shí),串行接口工作方式應(yīng)選為方式???0 ????.

9.在串行通信中,有數(shù)據(jù)傳送方向單工、半雙工、全雙工三種方式.

10.外部中斷 入口地址為_(kāi) ?0013H ??

4-2判斷

1.MCS-51的5個(gè)中斷源優(yōu)先級(jí)相同。 ??????????( ?× )

2.要進(jìn)行多機(jī)通信,MCS-51串行接口的工作方式應(yīng)為方式1。 ??( ?× )

3.MCS-51上電復(fù)位時(shí),SBUF=00H。 ?( ?× )。 ??

4.MCS-51有3個(gè)中斷源,優(yōu)先級(jí)由軟件填寫特殊功能寄存器IP加以選擇.. ( ?× )

5.用串口擴(kuò)并口時(shí),串行接口工作方式應(yīng)選為方式1. ( ?× )

6.外部中斷INTO 入口地址為_(kāi)0013H( ?× )

7.MCS-51外部中斷0的入口地址是0003H。 ??(√ ??).

8.TMOD中的GATE=1時(shí),表示由兩個(gè)信號(hào)控制定時(shí)器的啟停。 ?( √ ??)。

9.使用8751且 =1時(shí),仍可外擴(kuò)64KB的程序存儲(chǔ)器。( ??× ?)

10.PC存放的是當(dāng)前執(zhí)行的指令。( ?× ??)

11.MCS-51的特殊功能寄存器分布在60H~80H地址范圍內(nèi)。(× ???)

12.MCS-51有4個(gè)并行I\O口,其中P0~P3是準(zhǔn)雙向口,所以由輸出轉(zhuǎn)輸入時(shí)必須先寫入"0"( ?× ??)

4-3選擇

1.在中斷服務(wù)程序中,至少應(yīng)有一條( ?D ???)

(A)傳送指令

(B)轉(zhuǎn)移指令

(C)加法指法

(D)中斷返回指令

2.要使MCS-51能夠響應(yīng)定時(shí)器T1中斷、串行接口中斷,它的中斷允許寄存器IE的內(nèi)容應(yīng)是( ??A ???)

(A)98H ????

(B)84H ????????????

(C)42 ??????????????????

(D)22H

3.D MCS-51在響應(yīng)中斷時(shí),下列哪種操作不會(huì)發(fā)生( ?D ??).

(A)保護(hù)現(xiàn)場(chǎng) ??

(B)保護(hù)PC ?????

(C)找到中斷入口 ????

(D)保護(hù)PC轉(zhuǎn)入中斷入口

4.用MCS-51串行接口擴(kuò)展并行I\O口時(shí),串行接口工作方式應(yīng)選擇( ??C ??)

(A)方式0 ?????

(B)方式1 ??

(C)方式2 ?????

(D)方式3

5.MCS-51有中斷源( A?。?/p>

(A)5個(gè)   

(B)2個(gè)   

(C)3個(gè)   

(D)6個(gè)

6.MCS-51響應(yīng)中斷時(shí),下面哪一個(gè)條件不是必須的( ???)

(A)當(dāng)前指令執(zhí)行完畢 ????

(B)中斷是開(kāi)放的確 ??

(C)沒(méi)有同級(jí)或高級(jí)中斷服務(wù)須 ??

(D)必須有RET1指令

7.使用定時(shí)器T1時(shí),有幾種工作模式( C?。?/p>

(A)1種   

(B)2種   

(C)3種     

(D)4種

8.計(jì)算機(jī)在使用中斷方式與外界交換信息時(shí),保護(hù)現(xiàn)場(chǎng)的工作方式應(yīng)該是 ( ?B ??)

(A)由CPU自動(dòng)完成 ????

(B)在中斷響應(yīng)中完成???

(C)應(yīng)由中斷服務(wù)程序完成 ??

(D)在主程序中完成

9.下面哪一種傳送方式適用于處理外部事件( ???C ????)

(A)DMA ???

(B)無(wú)條件傳遞進(jìn) ??

(C)中斷???????

(D)條件傳遞

1、2、4章的編程

1.?8225A控制字地址為300FH,請(qǐng)按:A口方式0輸入,B口方式1輸出,C口高位輸出,C口低位輸入,確定8225A控制字并編初始化程序.

解:控制字為 ??10010101=95H

初始化程序:MOV ?DPTR ,#300FH

???????????MOV A, #95H

???????????MOVX ??@DPTR, A

2.?編定一個(gè)軟件延時(shí)1S和1min的子程序.設(shè)fosc=6Hz,則一個(gè)機(jī)器周期1μs。

解:(1)1S=2US*5*100000

5*100000=250*200*10

(2)?ORG ?1000H

?TIME: MOV R7, #10

?T3: ??MOV R6, #200

?T2: ??MOV R6, #250

?T1: ??DJNZ R5, T1

DJNZ R6, T2

DJNZ R7, T3

RET

??(2)1min=60,調(diào)用上面1s子程序60次

??????????ORG ??0030H

??????????MOV ??R0, #60

LOOP: LCALL TIME

?????DJNZ ????R0, LOOP

?????RET

3.?請(qǐng)編制串行通信的數(shù)據(jù)發(fā)送程序,發(fā)送片內(nèi)RAM50H~5FH的16B數(shù)據(jù),串行接口設(shè)定為方式2,采用偶校驗(yàn)方式。設(shè)晶振頻率為6MHz。

解:查詢方式發(fā)送程序如下

???MOV SCON, #8OH

???M OV PCON, #80H

???MOV ??R0, #50H

???MOV ??R7, #16H

LOOP: MOV ??A,@R0

???MOV C, P

???MOV TB8, C

???MOV ??SBUF, A

???JNB ??T1, $

???CLR ??T1

???INC ??R0

???DJNZ R7, LOOP

???RET

4.應(yīng)用單片機(jī)內(nèi)部定時(shí)器T0工作在方式1下,從P1.0輸出周期為2ms的方波脈沖信號(hào),已知單片機(jī)的晶振頻率為6MHZ。

請(qǐng)(1)計(jì)算時(shí)間常數(shù)X,應(yīng)用公式X=216-t(f/12)

(2)寫出程序清單

解:X=216-t(F/12)

=216-1*10-3*6*106/12

=OFEOCH

ORG ??3000H

START: MOV TMOD, #01H

MOV TL0, #OCH

MOV THO, #OFEH

SETB ??TR0

LOOP: ?JBC TFO, DONE

SJMP LOOP

DONE: MOV TL0, #OCH

MOV THO, #OFEH

CPL P1.0

SJMP LOOP

5.應(yīng)用單片機(jī)內(nèi)部定時(shí)器T0工作在方式1下,從P1.0輸出周期為1ms的方波脈沖信號(hào),已知單片機(jī)的晶振頻率為6MHZ。

請(qǐng)(1)計(jì)算時(shí)間常數(shù)X,應(yīng)用公式X=216-t(f/12)

(2)寫出程序清單

解:解:X=216-t(F/12)

=216-0.5*10-3*6*106/12

=FF06H

ORG ??3000H

START: MOV TMOD, #01H

MOV TL0, #06H

MOV THO, #FFH

SETB ??TR0

LOOP: ?JBC TFO, DONE

SJMP LOOP

DONE: MOV TL0, #06H

MOV THO, #FFH

CPL P1.0

SJMP LOOP

6、?用89C51的P1口,監(jiān)測(cè)某一按鍵開(kāi)關(guān),使每按鍵一次,輸出一個(gè)正脈沖(脈寬隨意)。編出匯編語(yǔ)言程序。

解: ??ORG ??0100H

???ABC: SETB???P1.0

SETB ??P1.7

JB ?????PI.7, $

JNB ???P1.7, $

CLR P1.0

MOV R2, #0

??DAY: NOP

NOP

DJNZ R2, DAY

SJMP ABC

7、設(shè)計(jì)一個(gè)4位數(shù)碼顯示電路,并用匯編語(yǔ)言編程使"8"從右到左顯示一遍。

解: ?ORG ?0100H

MOV A, #08H

MOV R2, #01H

MOV DPTR, #TAB

MOVC A,@A+DPTR

MOV P1, A

NEXT: MOV A, R2

MOV ??P3, A

ACALL DAY

JB ???ACC.4, LPD

RL ??A

MOV R2, A

AJMP NEXT

LPD: ?RET

TAB: ?DB

??????END

7.?編制一個(gè)循環(huán)閃爍的程序。有8個(gè)發(fā)光二極管,每次其中某個(gè)燈閃爍點(diǎn)亮10次后,轉(zhuǎn)到下一個(gè)閃爍10次,循環(huán)不止。畫出電路圖。

解: ????????MOV ?A,#01H

???SHIFT: ??LCALL ??FLASH

RR

SJMP SHIFT

??FLAH: ???MOV ??R2, #0AH

??FLAH1: ??MOV P1, A

???????????LCALL ??DELAY

???????????MOV ??P, #00H

???????????LCALL DELAY

???????????DJNZ ???R2, FLASH1

RET

9.在8051單片機(jī)的INTO引腳外接脈沖信號(hào),要求每送來(lái)一個(gè)脈沖,把30H單元值加1,若30H單元記滿則進(jìn)位31H單元。試?yán)弥袛嘟Y(jié)構(gòu),編制一個(gè)脈沖計(jì)數(shù)程序。

解: ?????ORG ?0000H

?????????AJMP MAIN

????????ORG ??0003H

????????AJMP ??SUBG

???MAIN: MOV A, #OOH

?????????MOV 30H, A

?????????MOV ??31H, A

?????????MOV ??SP, #70H

SETB INT0

SETB ??EA

SETB EX0

AJMP $

ORG ???0200H

?SUBG: PUSH ACC

INC ??30H

MOV A, 30H

JNZ BACK

INC 31H

??BACK: POP

????????RET1

10.利用89C51的P1口控制8個(gè)發(fā)光俄二極管LED。相鄰的4個(gè)LED為一組,使2組每隔0。5S 交替發(fā)亮一次,周爾復(fù)始。試編寫程序。

解: ???????ORG ?0100H

???????????MOV ??A, #0FH

ABC: MOV ??P1, A

?????ACALL D05

?????SWAP ??A

?????SJMP ??ABC

D05: MOV R6, 250

DY: MOV R7, 250

DAY: NOP

????NOP

????DJNZ ??R6, DAY

????DJNZ ??R7, DAY

????RET

????END? ? ?

11.設(shè)計(jì)89C51和ADC0809的接口,采集2通道10個(gè)數(shù)據(jù),存入內(nèi)部RAM的50H~59H單元,畫出電路圖,編出:

(1)延時(shí)方式;

(2)查詢方式;

(3)中斷方式中的一種程序。

解:IN2的地址為7FFAH,P1.0查詢轉(zhuǎn)換結(jié)束信號(hào),查詢程序如下:

???????????ORG ??0100H

???????????MOV R7, #0AH

??????????MOV R0, #50H

??????????MOV DPTR, #7FFAH

???NEXT: MOVX @DPTR, A

??????????JB ??P1.0, $

????????MOVX A,@DPTR

?????????MOV @R0, A

?????????INC R0

??????????DJNZ NEXT

????????SJMP $

第五章

5-1選擇題

???1、6264芯片是(B)

(A)?EEPROM?

(B)RAM

(C)FLASH??ROM?

(D)EPROM

2、用MCS-51用串行擴(kuò)展并行I/O口時(shí),串行接口工作方式選擇(A)

(A)?方式0?

(B)方式1?

(C)方式2?

(D)方式3

???3、使用8255可以擴(kuò)展出的I/O口線是(B)

(A)?16根?

(B)24根?

(C)22根?

(D)32根

???4、當(dāng)8031外出擴(kuò)程序存儲(chǔ)器8KB時(shí),需使用EPROM 2716(C)

(A)?2片?

(B)3片?

(C)4片??

(D)5片

???5、某種存儲(chǔ)器芯片是8KB*4/片,那么它的地址線根線是(C)

(A)?11根?

(B)12根?

(C)13根?

(D)14根

???6、MCS-51外擴(kuò)ROM,RAM和I/O口時(shí),它的數(shù)據(jù)總線是(A)

(A)?P0?

(B)P1?

(C)P2?

(D)P3

??7、當(dāng)使用快速外部設(shè)備時(shí),最好使用的輸入/輸出方式是(C)

(A)中斷?

(B)條件傳送?

(C)DMA?

(D)無(wú)條件傳送

??8、MCS-51的中斷源全部編程為同級(jí)時(shí),優(yōu)先級(jí)最高的是(D)

(A)?INT1?

(B)TI?

(C)串行接口?

(D)INT0

??9、MCS-51的并行I/O口信息有兩種讀取方法:一種是讀引腳,還有一種是(A)

(A)讀鎖存器具?

(B)讀數(shù)據(jù)庫(kù)?

(C)讀A累加器具?

(D)讀CPU

10、MCS-51的并行I/O口讀-改-寫操作,是針對(duì)該口的(D)

(A)引腳 ?

(B)片選信號(hào)?

(C)地址線?

(D)內(nèi)部鎖存器

5-2判斷題1、MCS-51外擴(kuò)I/O口與外RAM是統(tǒng)一編址的。(對(duì))

2、使用8751且EA=1時(shí),仍可外擴(kuò)64KB的程序存儲(chǔ)器。(錯(cuò))60KB

3、8155的復(fù)位引腳可與89C51的復(fù)位引腳直接相連。(對(duì))

4、片內(nèi)RAM與外部設(shè)備統(tǒng)一編址時(shí),需要專門的輸入/輸出指令。(錯(cuò))統(tǒng)一編址的

特點(diǎn)正是無(wú)需專門的輸入輸出指令。

5、8031片內(nèi)有程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。(錯(cuò))無(wú)程序存儲(chǔ)器

6、EPROM的地址線為11條時(shí),能訪問(wèn)的存儲(chǔ)空間有4K。(錯(cuò))2K.

7、8255A內(nèi)部有3個(gè)8位并行口,即A口,B口,C口。(對(duì))

8、8155芯片內(nèi)具有256B的靜態(tài)RAM,2個(gè)8位和1個(gè)6位的可編程并行I/O口,1個(gè)14位定時(shí)期等常用部件及地址鎖存器。(對(duì))

9、在單片機(jī)應(yīng)用系統(tǒng)中,外部設(shè)備與外部數(shù)據(jù)存儲(chǔ)器傳送數(shù)據(jù)時(shí),使用MOV指令。(錯(cuò))用MOVX指令。

10、為了消除按鍵的抖動(dòng),常用的方法有硬件和軟件兩種方法。(對(duì))

5-3簡(jiǎn)答題

1??8031的擴(kuò)展儲(chǔ)存器系統(tǒng)中,為什么P0口要接一個(gè)8位鎖存器,而P2口卻不接?

答:這是因?yàn)镻0口是擴(kuò)展儲(chǔ)存器系統(tǒng)的多路低8位地址和數(shù)據(jù)總線,在訪問(wèn)外部存儲(chǔ)器時(shí),P0口分時(shí)用作輸出外部?jī)?chǔ)存器低8位地址和傳送數(shù)據(jù),為了在整個(gè)訪問(wèn)外部存儲(chǔ)器期間,對(duì)外部存儲(chǔ)器存在著有效的低8位地址信號(hào),所以P0口需要外接一個(gè)地址鎖存器。ALE信號(hào)就是用來(lái)把P0口輸出的地址字節(jié)鎖存在這個(gè)外接的鎖存器中,再?gòu)逆i存器輸出外部存儲(chǔ)器的低8位地址。而P2口只用作擴(kuò)展存儲(chǔ)器系統(tǒng)的高8位地址線,并在整個(gè)訪問(wèn)外部存儲(chǔ)器期間不變,所以不必外接地址鎖存器。

2??在8031擴(kuò)展系統(tǒng)中,外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共用16位地址線和8位數(shù)據(jù)線,為什么兩個(gè)存儲(chǔ)空間不會(huì)發(fā)生沖突?

答:這是因?yàn)橥獠砍绦虼鎯?chǔ)器和外部數(shù)據(jù)存儲(chǔ)器所使用的控制信號(hào)不同。對(duì)外部程序存儲(chǔ)器的選讀通是用PSEN控制線,而對(duì)外部數(shù)據(jù)存儲(chǔ)器的讀/寫控制是用RD和WR讀、寫控制線,所以不會(huì)發(fā)生地址沖突。

3 ??8031單片機(jī)需要外接程序存儲(chǔ)器,實(shí)際上它還有多少條I/O線可以用?當(dāng)使用外部存儲(chǔ)器時(shí),還剩下多少條I/O線可用?

答:8031系統(tǒng)必須外接程序促成器,原則上說(shuō),P0和P2口要用作數(shù)據(jù)和地址總線,所以只有P1和P3口可用作I/O口,共16條I/O線。在使用外部存儲(chǔ)器時(shí),除了占用P0和P2口外,還需要用P3口RD(P3.7)和WR(P3.6)兩條控制線,所以這種情況下就只剩下14條I/O線可用了。

4 ?試將8031單片機(jī)外接一片2716?EPROM和一片6116 RAM組成一個(gè)應(yīng)用系統(tǒng),請(qǐng)畫出硬件連線圖,并指出擴(kuò)展存儲(chǔ)器的地址范圍。

答:2716是2K×8位的EPROM,6116是2K×8位的靜態(tài)RAM,兩者都僅需要11根地址線。由于沒(méi)有規(guī)定地址范圍,故可按最簡(jiǎn)單的方式來(lái)連接,即省去地址譯碼器,程序存儲(chǔ)器的地址必須從0開(kāi)始,基本地址為0000H—07FFH。數(shù)據(jù)存儲(chǔ)器的地址為0000H—07FFH??刂凭€的連接為/PSEN控制EPROM的讀出,/RD和/WR控制RAM的讀寫,兩個(gè)芯片的片選端都固定接地,連線圖如圖所示。

5 簡(jiǎn)述可編程并行接口8255 A的內(nèi)部結(jié)構(gòu)?

答:8255 A的內(nèi)部結(jié)構(gòu)由三部分組成:總線接口部分,內(nèi)部邏輯部分,外部接口部分。

(1)?總線接口部分 ?其中有數(shù)據(jù)總線驅(qū)動(dòng)器,讀/寫控制邏輯

(2)?內(nèi)部邏輯部分 ?由A組和B組控制電路。

(3)?外部接口部分 ?該部分有3個(gè)8位并行I/O端口,即A口、B口和C口。

5-4編程題

1 ?試編程對(duì)8155進(jìn)行初始化,設(shè)A口為選通輸出,B口為選通輸入,C口作為控制聯(lián)絡(luò)口,并啟動(dòng)定時(shí)器/記數(shù)器按方式1工作,工作時(shí)間為10ms,定時(shí)器計(jì)數(shù)脈沖頻率為單片機(jī)的時(shí)鐘頻率24分頻,fosc=12MHz。

解:算得初值=5000?=1388H

MOV ??DPTR,#7F04 ???;定時(shí)器低八位寄存器地址 ????DPTR

MOV ??A,#88H ???????;低8位初值 ??A

MOVX ?@DPTR,A ????;?低8位初值????低8位寄存器

INC ????DPTR?????????;DPTR指向定時(shí)器高8位

MOV ???A,#13H????????;高8位初值 ???A

MOVX ??@DPTR,A ????;高8位初值 ??????高8位寄存器

MOV ???DPTR,#7F00H??;8155命令寄存器地址 ????DPTR

MOV ???A,0C5H????????;命令字 ??A

MOVX ??@DPTR,A ????;命令字 ????命令寄存器

2 ?設(shè)單片機(jī)采用8051,未擴(kuò)展片外ROM,片外RAM采用一片6116,編程將其片內(nèi)ROM從0100H單元開(kāi)始的10B得內(nèi)容依次外接到片外RAM從100H單元開(kāi)始得10B中去。

解: ??MOV ???R2,#00H ????????;源數(shù)據(jù)緩沖器地址偏移量00H????A

MOV ???R3,#0AH ????????;字節(jié)長(zhǎng)度 ????R3

MOV ???DPTR,#0100H ????;源數(shù)據(jù)緩沖區(qū)首地址 ????DPTR

MOV ???A,R2 ????????????;源地址偏移量 ????A

MOVC ??A,@A+DPTR??????;傳送一個(gè)數(shù)據(jù)

MOVX ??@DPTR,A

INC ?????DPTR????????????;源地址(目的地址)加1

DJNZ ????R3,L1????????????;數(shù)據(jù)全部傳送完?沒(méi)傳送完,轉(zhuǎn)L1繼續(xù)傳送

SJMP ????$????????????????;結(jié)束

3 ?8031擴(kuò)展8255A,將PA口設(shè)置成輸入方式,PB口設(shè)置成輸出方式,PC口設(shè)置成輸出方式,給出初始化程序。

解: ???根據(jù)題目要求,A口輸入,B口輸出,二者均采用工作方式0,則控制字為98H。編程如下:

MOV ????A,#98H ?????????;方式控制字 ????A

MOV ????DPTR,#7FFFH ???;選通控制寄存器

MOVX ???@TPTR,A????????;方式控制字送入8255A

MOV ?????DPTR,#7FFCH

MOVX ????A,@DPTR ??????;讀PA口數(shù)據(jù)

MOV ?????DPTR,#7FFDH????;

MOVX ????@DPTR,A????????;送PB口數(shù)據(jù)

4 ??設(shè)計(jì)一個(gè)2×2行列式鍵盤電路并編寫鍵盤掃描子程序。

解: ?(1)2×2行列式鍵盤電路如圖所示。

(2)鍵盤掃描子程序:

KEY1: ?ACALL ???KS1 ?????;調(diào)用判斷有無(wú)鍵按下子程序

?????????JNZ ??????LK1??????;有鍵按下,轉(zhuǎn)LK1

?????????AJMP ????KEY1 ????;無(wú)鍵按下,返回

LK1: ????ACALL ??T12MS????;調(diào)延時(shí)12ms子程序

?????????ACALL ??KS1???????;查有無(wú)鍵按下

?????????JNZ ?????LK2???????;若有,則為鍵確實(shí)按下,轉(zhuǎn)逐列掃描

?????????AJMP ???KEY1??????;無(wú)鍵按下,返回

LK2: ??????MOV ???R4,#00H????;首列號(hào) ???R4

???????????MOV ???R2,#FEH ???;首列掃描字 ???R2

LK4: ??????MOV ???A,R2???????;列掃描字????P1口

???????????MOV ???P1,A ???????;使第一列線為0

MOV ??A,P1 ??????;讀入行狀態(tài)

???????????JB ??????ACC.0,LONE;第0行無(wú)鍵按下,轉(zhuǎn)查第一行

???????????MOV ???A,#00H???;第0行有鍵按下,該行首鍵號(hào)#00H ???A

???????????AJMP ???LKP ???????;轉(zhuǎn)求鍵號(hào)

LONE: ????JB ??????ACC.1,NEXT?;第一行無(wú)鍵按下,轉(zhuǎn)查下一列

??????????MOV ???A,#02???????;第一行有鍵按下,該行首鍵號(hào)#02 ??A

LKP: ?????ADD ???A,R4????????;鍵號(hào)=首行號(hào)+列號(hào)

??????????PUSH ???ACC????????;鍵號(hào)進(jìn)棧保護(hù)

LK3: ?????ACALL ??KS1????????;等待鍵釋放

??????????JNZ ?????LK3????????;未釋放,等待

??????????POP ?????AC?????????;鍵釋放,鍵號(hào) ???A

??????????RET ?????????????????;鍵掃描結(jié)束

NEXT: ???INC ?????R4??????????;列號(hào)加1,指向下一列

??????????MOV ????A,R2????????;列掃描字 ???A

??????????JNB ?????ACC.1,KND ?;判斷2列全掃描完?掃描完,轉(zhuǎn)KND

??????????RL ??????A ??????????;沒(méi)掃描完,掃描字左移一位,形成下一列掃描字

??????????MOV ????R2,A????????;掃描字 ????R2

??????????AJMP ????LK4 ???????;掃描下一列

??????????AJMP ????KEY1???????;全掃描完,返回

??????????MOV ????A,#FCH??????;全掃描字11111100B ????A

??????????MOV ????P1,A ????????;全掃描字 ???所有行

??????????MOV ????A,P1?????????;讀取列值

??????????CPL ?????A????????????;取正邏輯,高電平表示有鍵按下

??????????ANL ?????A,#0C0H?????;屏蔽低6位,取高2位

??????????RET???????????????????;出口狀態(tài)(A)!=0,有鍵按下

5 ?要求將存放在8031單片機(jī)內(nèi)部RAM中30H—33H單元的4字節(jié)數(shù)據(jù),按十六進(jìn)制(8位)從做到右顯示,試編制程序。

ORG ??1000H ?????;指向顯示緩沖區(qū)

MOV ??R0,#30H????;顯示字節(jié)數(shù)

MOV ??R2,#04??????;初始顯示位置(最高位)

MOV ??P1,#08H?????;取1B

??SDLAY: ????MOV ??A,@R0 ?????;備份

MOV ??B,A?????????;截取字節(jié)高位

ANL ??A,#0F0H??????;裝入P1.4—P1.7

ORL ??P1,A ?????????;準(zhǔn)備顯示右一位

INC ??P1????????????;取備份

MOV ?A,B???????????;截取字節(jié)低位

SWAP ?A????????????;

ANL ??A,#0F0H

ORL ??P1,A??????????;裝入并顯示

INC ??P1?????????????;準(zhǔn)備顯示下一字節(jié)

INC ?R0

DJNZ ??R2,SDLAY?????;4B未顯示完循環(huán)

RET???????????????????;顯示完成

END

?START:MOV ?DPTR,#7FFFH

????????? ????MOV ?A,#00

???LOOP :MOVX ?@DPTR,A

?????????? ????INC ?A

????????? ????MOV ?R0,#data ????????? ?;data為延時(shí)常數(shù)

???????????DJNZ ?R0,$ ????????????? ;延時(shí),改變data可改變鋸齒波周期T值

???????????SJMP LOOP??

例2:產(chǎn)生矩形波

START: ????MOV DPTR,?#7FFFH

STEP: ???????MOV A , #dataH ???????;置矩形波上限

?????????????????MOVX @DPTR , A ??????;D/A轉(zhuǎn)換

?????????????????ACALL DELH ????????????;調(diào)輸出“1”時(shí)延時(shí)

?????????????????MOV A , #00H ???????????;置矩形波下限

?????????????????MOVX @DPTR,?A

?????????????????ACALL DELL ?????????????;調(diào)輸出“0”時(shí)延時(shí)

?????????????????SJMP STEP ??????????????;重復(fù)執(zhí)行

例3: 產(chǎn)生三角波

START: ????MOV DPTR,?#7FFFH

STEP1: ?????MOV A,?#00H

STEP2: ?????MOVX @DPTR,?A

??????????????????INC A

??????????????????CJNE A , #data , STEP2

STEP3: ?????DEC A

??????????????????MOVX @DPTR , A

??????????????????CJNE A , #01H , STEP3

??????????????????AJMP STEP1


C51單片機(jī)習(xí)題及答案的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
潞西市| 比如县| 武川县| 天台县| 和龙市| 稷山县| 宁强县| 涡阳县| 屏山县| 营口市| 昭平县| 监利县| 锡林浩特市| 衡南县| 海伦市| 同德县| 台东县| 乌恰县| 江孜县| 嘉峪关市| 合阳县| 类乌齐县| 赞皇县| 岚皋县| 道孚县| 丹江口市| 苗栗县| 波密县| 灵台县| 钟山县| 双辽市| 扎赉特旗| 专栏| 鹤庆县| 富宁县| 焦作市| 永福县| 商南县| 丰城市| 揭东县| 宜宾县|