C51單片機習題及答案
第一章
1-1選擇
1.計算機中最常用的字符信息編碼是( A )
A ASCII B BCD碼 C 餘3碼 D 循環碼
2.要MCS-51系統中,若晶振頻率屢8MHz,一個機器周期等于(A ) μs
A 1.5 B 3 C 1 D 0.5
3.MCS-51的時鐘最高頻率是 ( A ).
A 12MHz B 6 MHz C 8 MHz D 10 MHz
4. 以下不是構成的控制器部件(D ):
A 程序計數器、 B指令寄存器、 C指令譯碼器、 D存儲器
5. 以下不是構成單片機的部件( D )
A 微處理器(CPU)、B存儲器 C接口适配器(I\O接口電路) D 打印機
6. 下列不是單片機總線是( D )
A 地址總線 B 控制總線 C 數據總線 D 輸出總線
7.-49D的二進制補碼為.( B )
A 11101111 B 11101101 C 0001000 D 11101100
8.十進制29的二進制表示為原碼( C )
A 11100010 B 10101111 C 00011101 D 00001111
9. 十進制0.625轉換成二進制數是( A )
A 0.101 B 0.111 C 0.110 D 0.100
10 選出不是計算機中常作的碼制是( D )
A 原碼 B 反碼 C補碼 D ASCII
1-2填空
1.計算機中常作的碼制有原碼、反碼和補碼
2.十進制29的二進制表示為00011101
3.十進制數-29的8位補碼表示為.11100011
4.單片微型機CPU、存儲器和I\O接口三部分組成.
5.若不使用MCS-51片内存器引腳EA必須接地.
6.輸入輸出設備是計算機與外部世界交換信息的載體.
7.十進制數-47用8位二進制補碼表示為.11010001
8.-49D的二進制補碼為.11101101
9.計算機中最常用的字符信息編碼是ASCII
10.計算機中的數稱為機器數,它的實際值叫真值。
1-3判斷
1.我們所說的計算機實質上是計算機的硬件系統與軟件系統的總稱。 ( √ )
2.MCS-51上電複位時,SBUF=00H。 ( × )。 SBUF不定。
3.使用可編程接口必須處始化。 ( √ )。
4.8155的複位引腳可與89C51的複位引腳直接相連。( √ )
5.MCS-51是微處理器。( × )不是。
6.MCS-51系統可以沒有複位電路。( × )不可以。複位是單片機的初始化操作。
7.要MCS-51系統中,一個機器周期等于1.5μs。( × )若晶振頻率屢8MHz,才可能為1.5μs
8.計算機中常作的碼制有原碼、反碼和補碼( √ )
9.若不使用MCS-51片内存器引腳EA必須接地. ( √ )
10.十進制數-29的8位補碼表示為.11100010( × )
1-4簡答
1.何謂單片機?單片機與一般微型計算機相比,具有哪些特點?
答:單片機是在一塊集成電路上把CPU、存儲器、定時器/計數器及多種形式的I/O接口集成在一起而構成的微型計算機。它與通用微型計算機相比,具有如下特點:
(1) 單片機的程序存儲器和數據存儲器是分工的,前者為ROM,後者為RAM;
(2) 采用面向控制的指令系統,控制功能強;
(3) 多樣化的I/O接口,多功能的I/O引腳;
(4) 産品系列齊全,功能擴展性強;
(5) 功能是通用的,像一般微處理機那樣可廣泛地應用在各個方面。
2 單片機主要應用在哪些領域?
答:單片機的應用範圍很廣泛,諸如智能化家用電器、儀器儀表、工業控制、計算機外部設備、智能機器人、電信及導航等方面。
3 在各種系列的單片機中,片内ROM的配置有幾種形式?用戶應根據什麼原則來選用?
答:各種類型的單片機片内程序存儲器的配置形式主要有以下幾種形式:
(1) (Msak)ROM型單片機:内部具有工廠 編程的ROM,ROM中的程序隻能由單片機制造廠家用 工藝固化,用戶不能修改ROM中的程序。例如:MCS—51系列的8051。
ROM單片機适合于大批量生産的産品。用戶可委托芯片生産廠家采用 方法将程序制作在芯片的ROM。
(2) EPROM型單片機:内部具有紫外線可擦除電可編程的隻讀存儲器,用戶可以自行将程序寫入到芯片内部的EPROM中,也可以将EPROM中的信息全部擦除。擦去信息的芯片還可以再次寫入新的程序,允許反複改寫。例如:MCS—51系列的8751。
EPROM型單片機使用比較方便,但價格較高,适合于研制産品或結構要求簡單的小批量産品。
(3) 無ROM型單片機:内部沒有程序存儲器,它必須連接程序存儲器才能組成完整的應用系統。例如:MCS—51系列的8031。
無ROM型單片機價格低廉,用戶可根據程序的大小來選擇外接程序存儲器的容量。這種單片機擴展靈活,但系統結構較複雜。
(4) E2ROM型單片機:内部具有電可擦除叫可編程的程序存儲器,使用更為方便。例如:MCS—51的派生型89C51單片機。
(5) OTP(One Time Programmable)ROM單片機:内部具有一次可編程的程序存儲器,用戶可以在編程器上将程序寫入片内程序存儲器中,程序寫入後不能再改寫。例如:NEC公司的μPD75P308GF—3B9。這種芯片的價格也較低。
4.控制器的組成和作用
答:控制器:由程序計數器、指令寄存器、指令譯碼器、時序發生器和操作控制器等組成。用來協調指揮計算機系統的操作。
5. 微型計算機組成
答:微型計算機組成由微處理器(CPU)、存儲器、接口适配器(I\O接口電路)及輸入/輸出設備組成。通過系統總線将它們連接起來,以完成某些特定的運算與控制。
6.什麼叫尋址方式
答:尋址方式:尋址方式就是尋找指令中操作數或操作數所在地址的方式。也就是如何找到存放操作數的地址,把操作數提取出來的方法。
7. 什麼叫堆棧:
答:堆棧是在片内RAM中專門開辟出來的一個區域,數據的存取是以"後進先出"的結構方式處理的。實質上,堆棧就是一個按照"後進先出"原則組織的一段内存區域。
8.什麼是彙編語言?什麼叫指令周期?
答:彙編:彙編語言源程序在交付計算機執行之前,需要先翻譯成目标程序,這個翻譯過程叫彙編。
指令周期:指執行一條指令所占用的全部時間。通常一個指令周期含1~4個機器周期。
9.什麼是進位和溢出
答:兩數運算的結果若沒有超出字長的表示範圍,則由此産生的進位是自然進位;若兩數的運算結果超出了字長的表示範圍(即結果不合理),則稱為溢出。例如将正數3FH和負數D0H相加,其結果不會超出8位字長的表示範圍,所以其結果10FH中的進位是正常進位(也就是模)。但是,若正數3FH與正數70H相加,其結果為AFH,最高位為"1",成了負數的含義,這就不合理了,這種情況稱為溢出。
第二章
2-1填空
1..微處器由寄存器、控制器、運算器三部分組成..
2.當MCS-51引腳ALE信号有效時,表示從Po口穩定地送出了低8位地址.
3.MCS-51的堆棧是軟件填寫堆棧指針臨時在_片内數據存儲器内開辟的區域.
4.MCS-51中凡字節地址能被_8整除的特殊功能寄存器均能尋址.
5.MCS-51有4組工作寄存器,它們的地址範圍是00H~1FH.
6.MCS-51片内20H~2FH範圍内的數據存儲器,既可以字節尋址又可以位尋址.
7.計算機的系統總線有地址總線、控制總線和數據總線。
8.80C51含4KB ROM。
9.80C51在物理有4個獨立的存儲空間。
10.一個機器周期等于6個狀态周期,振蕩脈沖2分頻後産生的時钏信号的周期定義為狀态 周期。
2-2判斷
1.我們所說的計算機實質上是計算機的硬件系統與軟件系統的總稱。 ( √ )
2.MCS-51的相對轉移指令最大負跳距是127B。 ( × )
3.MCS-51的程序存儲器隻是用來存放程序的。 ( × ) 存放程序和表格常數。
4.MCS-51的時鐘最高頻率是18MHz. ( × ). 12MHz。
5.使用可編程接口必須處始化。 ( √ )。
6.當MCS-51上電複位時,堆棧指針SP=00H。 ( × )。 SP=07H
7.MCS-51外擴I/O口與外RAM是統一編址的。 ( √ )。
8.使用8751且 =1時,仍可外擴64KB的程序存儲器。( × )60KB。
9.8155的複位引腳可與89C51的複位引腳直接相連。( √ )
10.MCS-51是微處理器。( × )不是。
11.MCS-51的串行接口是全雙工的。( √ )
12.PC存放的是當前執行的指令。( × )是将要執行的下一條指令的地址。
13.MCS-51的特殊功能寄存器分布在60H~80H地址範圍内。(×)80H~FFH。
14.MCS-51系統可以沒有複位電路。( × )不可以。複位是單片機的初始化操作。
15.要MCS-51系統中,一個機器周期等于1.5μs。( ×)若晶振頻率屢8MHz,才可能為1.5μs
2-3選擇
1.要想測理INT0引腳上的一個正脈沖寬度,那麼特殊功能寄存器TMOD的内容應為( B ).
(A)09H (B)87 H (C)00H (D)80H
2.PSW=18H時,則當前工作寄存器是( D )
(A)0組 (B)1組 (C)2組 (D)3組
3.控制串行口工作方式的寄存器是( C )
(A)TCON (B)PCON (C)SCON (D)TMOD
4.P1口的每一位能驅動( B )
(A)2個TTL低電平負載有 (B)4個TTL低電平負載
(C)8個TTL低電平負載有 (D)10個TTL低電平負載
5.MCS-51的中斷允許觸發器内容為83H,CPU将響應的中斷請求是( B )
(A) T1, (B)T0,T1 (C)T1,串行接口 (D) ,T0
2-4問答題
1 8051單片機内部包含哪些主要邏輯功能部件?
答:8051單片機是個完整的單片微型計算機。芯片内部包括下列硬件資源:
(1) 8位CPU;
(2) 4KB的片内程序存儲器ROM。可尋址64KB程序存儲器和64KB外部數據存儲器;
(3) 128B内部 RAM;
(4) 21個 SFR;
(5) 4個8位并行I/O口(共32位I/O線);
(6) 一個全雙工的異步串行口;
(7) 兩個16位定時器/計數器;
(8) 5個中斷源,兩個中斷優先級;
(9) 内部時鐘發生器。
2 EA/VPP引腳有何功用?8031的引腳應如何處理?為什麼?
答:EA/VPP是雙功能引腳,功能如下:
(1)
EA接低電平時,CPU隻能執行外部程序存儲器的指令。
(2)
EA接低電平時,CPU隻能執行外部程序存儲器的指令。
8031單片機内部無ROM,必須外接程序存儲器。因此,8031的EA引腳必須接低電平。
在對8751單片機内部的 EPROM編程時,此引腳VPP外接 12V電壓,用于固化EPROM程序。
3 8051單片機存儲器的組織結構是怎樣的?
答:8051存儲器包括程序存儲器和數據存儲器,從邏輯結構上看,可以分為三個不同的空間:
(1) 64KB的程序存儲器地址空間:0000H~FFFFH,其中0000H~0FFFH為片内4KB的ROM地址空間,1000H~FFFFH為外部ROM地址空間;
(2) 256B的内部數據存儲器地址空間,00H~FFH,分為兩大部分,其中00H~7FH(共128B單元)為内部靜态RAM的地址空間,80H~FFH為特殊功能寄存器的地址空間,21個特殊功能寄存器離散地分布在這個區域;
(3) 64KB的外部數據存儲器地址空間:0000H~FFFFH,包括擴展I/O地址空間。
4.片内數據存儲器分為哪幾個性質和用途不同的區域?
答:8051内部128B的數據RAM區,包括有工作寄存器組區、可直接位尋址區和數據緩沖區。各區域的特性如下:
(1) 00H~1FH為工作寄存器組區,共分4組,每組占用8個RAM字節單元,每個單元作為一個工作寄存器,每組的8個單元分别定義為8個工作寄存器R0~R7。當前工作寄存器組的選擇是由程序狀态字PSW的RS1、RS0兩位來确定。如果實際應用中并不需要使用工作寄存器或不需要使用4組工作寄存器,不使用的工作寄存器組的區域仍然可作為一般數據緩沖區使用,用直接尋址或用Ri的寄存器間接尋址來訪問。
(2) 20H~2FH為可位尋址區域,這16個字節的每一位都有一個地址,編址為00H~7FH。
當然,位尋址區也可以用作字節尋址的一般數據緩沖區使用。
(3)30H~7FH為堆棧、數據緩沖區。
5 單片機有哪幾個特殊功能寄存器?各在單片機的哪些功能部件中?
答:8051單片機内部有21個特殊功能寄存器,在物理上是分散在片内各功能部件中,在數學上把它們組織在内部數據存儲器地址空間80H~FFH中,以便能使用統一的直接尋址方式來訪問。這些特殊功能寄存器頒在以下各個功能部件中:
(1) CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH兩個8位寄存器組成);
(2) 中斷系統:IP、IE;
(3) 定時器/計數器:TMOD、TCOM、TL0、TH0、TL1、TH1;
(4) 并行I/O口:P0、P1、P2、P3;
(5) 串行口:SCON、SBUF、PCON。
6 PC是什麼寄存器?是否屬于特殊功能寄存器?它有什麼作用?
答:PC是16位程序計數器(Program Counter),它不屬于特殊功能寄存器範疇,程序員不以像訪問特殊功能寄存器那樣來訪問PC。PC是專門用于在CPU取指令期間尋址程序存儲器。PC總是保存着下一條要執行的指令的16位地址。通常程序是順序執行的,在一般情況下,當取出一個指令(更确切地說為一個指令字節)字節後,PC自動加1。如果在執行轉移指令、子程序調用/返回指令或中斷時,要把轉向的地址賦給PC。
7 DPTR是什麼寄存器?它由哪些特殊功能寄存器組成?它的主要作用是什麼?
答:DPTR是16位數據指針寄存器,它由兩個8位特殊功能寄存器DPL(數據指針低8位)和DPH(數據指針高8位)組成,DPTR用于保存16位地址,作間址寄存器用,可尋址外部數據存儲器,也可尋址程序存儲器。
第三章
3-1選擇題
1、MOVX A,@DPTR指令中源操作數的尋址方式是(B)
(A) 寄存器尋址 (B)寄存器間接尋址 (C)直接尋址 (D)立即尋址
1. ORG 0003H
LJMP 2000H
ORG 000BH
LJMP 3000H 當CPU響應外部中斷0後,PC的值是(B)
(A) 0003H (B)2000H (C)000BH (D)3000H
2. 執行PUSH ACC指令,MCS-51完成的操作是(A)
(A)
SP 1 SP (ACC) (SP) (B)(ACC) (SP)SP-1 SP
(B)
(C)SP-1 SP (ACC) (SP) (D)(ACC) (SP)SP 1 SP
4、 LCALL指令操作碼地址是2000H,執行完相子程序返回指令後,PC=(D)
(C) 2000H (B)2001H (C)2002H (D)2003H
5、51執行完MOV A,#08H後,PSW的一位被置位(D)
(A)(A)C (B)F0 (C)OV (D)P
6、下面條指令将MCS-51的工作寄存器置成3區(B)
(A)MOV PSW,#13H (B)MOV PSW,#18H
(B) SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.4
7、執行MOVX A,@DPTR指令時,MCS-51産生的控制信号是(C)
(D) /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當執行完左邊的程序後,PC的值是(C)
(A) 0040H (B)0041H (C)0042H (D)0043H
10、對程序存儲器的讀操作,隻能使用(D)
(A) MOV指令 (B)PUSH指令 (C)MOVX指令(D)MOVC指令
3-2判斷題。
3. MCS-51的相對轉移指令最大負跳距是127B。(錯)128B
4. 當MCS-51上電複位時,堆棧指針SP=00H。(SP=07H)( 錯 )
5. 調用子程序指令(如:CALL)及返回指令(如:RET)與堆棧有關但與PC無關。(錯)子序的轉返與PC也有關(PC入棧與出棧)
6. MOV @R1,#80H (對)
5、INC DPTR (對)
6、CLR R0 (錯)指令系統中沒有。
7、MOV @R1,#80H (對)
8、ANL R1,#0FH (錯)
9、ADDC A,C (錯)
10、XOR P1,#31H (對)
3-3簡答題
1 簡述MCS-51彙編語言指令格式。
答:MCS-51彙編語言格式如下:
[标号:]操作碼助記符[操作數1] [操作數2] [操作數3][注釋]标号是用戶定義的符号,其值代表這條指令的地址。操作碼助記符是指令系統規定的代表特定指令功能的英文縮寫符。每條指令都有操作碼記符。指令的操作數最多有3個,也有無操作數的指令。注釋字段是用戶對程序的說明,便于對程序的閱讀和理解。
簡答
2 MCS-51指令系統主要有哪幾種尋址方式?試舉例說明。
答:MCS-51指令操作數主要有以下7種尋址方式:
尋址方式 舉例
立即尋址 MOV A,#16
直接尋址 MOV 20H,P1
寄存器尋址 MOV A,R0
寄存器間接尋址 MOVX A, @DPTR
變址尋址 MOVC A, @A DPRT
相對尋址 SJMP LOOP
位尋址 ANL C,70H
3對訪問内部RAM和外部RAM,各應采用哪些尋址方式?
答:對内部RAM的尋址方式有直接尋址、寄存器間接尋址和可對位尋址的位尋址。對外部RAM的尋址方式隻能用寄存器R0/R1(8位地址)或DPTR(16位地址)間接尋址。
4設内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,問執行下列指令後,各有關存儲單元(即R0,R1,A,B,P1,30H,40H及5AH單元)的内容如何?
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
解:每一條指令執行後的結果如注釋字段所标。最後結果為:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
5 SJMP(短轉移)指令和AJMP(絕對轉移)指令的主要區别。
前者提供了以SJMP的下一條指令的起始地址為中心的256字節範圍的轉移(-128~ 127),後者的轉移目标地址必須在與AJMP的下一條指令的第一字節相同的2KB區的程序儲存器中。短轉移方便了可重定位編碼。SJMP方便了PC可重定位編碼,但轉移範圍小。而ASJMP轉移範圍大,但存在跳區的限制,AJMP指令隻能位于2KB區的最後2個字節處時,才可跳到下一個區去。因此用AJMP指令來代替SJMP指令是有條件的,也就是目标地址必須與它下面的指令存放地址在同一個2KB區域内。
3-4編程題
1 編程将片内RAM30H單元開始的15B的數據傳送到片外RAM3000H開始的單元中去。
解: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 片内RAM30H開始的單元中有10B的二進制數,請編程求它們之和(和<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 編一個程序,将累加器中的一個字符從串行接口發送出去.
解 SOUT:MOV SCON,#40H ;設置串行接口為工作方式
MOV TMOD,#20H ;定時器T1工作于模式2
MOV TL1,#0E8H; ;設置波特率為1200b/s
MOV TH1,#0E8H
SETB TR1
MOV SBUF,A
JNB T1,$
CLB T1
RET
4 用查表法編一子程序,将R3中的BCD碼轉換成ASCII碼.
解 MAIN: MOV A,R3 ;待轉換的數送A
MOV DPTR,#TAR ;表首地址送DPTR
MOVC A,@A DPTR ;查ASCII碼表
MOV R3,A ;查表結果送R3
RET
TAR DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
5 片内RAM40H開始的單元内有10B二進制數,編程找出其中最大值并存于50H單元中.
解 START: MOV R0,#40H ;數據塊首地址送R0
MOV R7,#09H ;比較次數送R7
MOV A,@R0 ;取數送A
LOOP: INC R0
MOV 30H,@R0 ;取數送30H
CJNE A,30H,NEHT ;(A)與(30H)相比
NEXT: JNC BIE1 (A)≥(30H)轉BIR1
MOV A,30H ;(A)<(30H),大數送A
BIE1: DJNZ R7,LOOP ;比較次數減1,不為0,繼續比較
MOV 50H,A ;比較結束,大數送50H
RET
6 編一子程序,從串行接口接受一個字符.
解: START: MOV TMOD,#20H ;定時器T1工作于模式2
MOV TH1,#0E8H ;設置波特率為1 200b/s
MOV TL1,#0E8H
SETB TR1 ;啟動T1
MOV SCON,#50H ;串行接口工作于方式1,充許接收
L1: JNB RI,L1 ;等待接收數據,末接收到數據,繼續等待
CLR RI ;接收到數據,清RI
MOV A,SBUF ;接收到數據送A
RET
7 利用調子程序的方法,進行兩個無符号數相加。請編主程序及子程序。
解 用R0和R1作數據指針,R0指向第一個加數,并兼作“和”的指針,R1指向另一個加數,字節存放到R2中作計數初值。
主程序:
JAFA: MOV R0,#20H ;指向加數最低字節
MOV R1,#29H ;指向另一加數最低字節
MOV R2,#04H ;字節數作計數值
ACALL JASUB ;調用加法子程序
AJMP $
RTE
多字節加法子程序:
JASUB: CLR C
JASUB1: MOV A,@R0 ;取出加數的一個字節(4B無符号數加數)
ADDC A,@R1 ;加上另一數的一個字節
MOV @R0,A ;保存和數
INC R0 ;指向加數的高位
INC R1 ;指向另一加數的高位
DJNZ R2,JASUB1 ;全部加完了嗎?
RET
8 若圖數據塊是有符号數,求正數個數,編程并注釋。
解 ORG 0030H
START: MOV 20H,#00H ;計正數個數計數器
MOV DPTR,#0000H ;
MOVX A,@DPTR ;數據塊長度→10H
MOV 10H,A
INC DPTR ;DPTR指向第一個數的地址
TWO: MOVX A,@DPTR ;取數→A
JB ACC.7,ONE ;是負數轉ONE,準備取下一個數
INC 20H ;是正數,正數計數器加1
ONE: INC DPTR ;地址指針加1
DJNZ 10H,TW ;數據塊長度減1不等于0,繼續尋找
RET
9 編制一個循環閃爍燈的程序。有8個發光二極管,每次其中某個燈閃爍點亮10次後,轉到下一個閃爍10次,循環不止。畫出電路圖。
解
P1.0 8013 P1.7 |
D0 Q0 74LS240 D7 Q7 | |
本程序的硬件連接如圖所示。當P1.0輸出高電平時,LED燈亮,否則不亮。
其程序如下:
MOV A,#01H ;燈亮初值
SHIFT: LCAIL FLASH ;調閃亮10次子程序
RR A ;右移一位
SJMP SHIFT ;循環
FLASH: MOV R2,#0AH 閃爍10次計數
FLASH1; MOV P1,A ;點亮
LCALL DELAY ;延時
MOV P1,#00H ;熄滅
LCALL DELAY ;延時
DJNZ R2,FLASH1 ;循環
RET
第四章
4-1填空
1.MCS-51的Po口作為輸出端口時,每位能驅動 8 個SL型TTL負載.
2.MCS-51有 4個并行I\O口,其中P0~P3是準雙向口,所以由輸出轉輸入時必須先寫入"1"
3.設計8031系統時,_P0、P2 口不能用作一般I\O口.
4.MCS-51串行接口有4種工作方式,這可在初始化程序中用軟件填寫特殊功能寄存器__SCON _加以選擇.
5.當使用慢速外設時,最佳的傳輸方式是 中 斷 .
6.當定時器To工作在方式3 時,要占定時器T1的TR1和TF1_兩個控制位.
7.MCS-51有 5 個中斷源,有2 個中斷優先級,優先級由軟件填寫特殊功能寄存器 IP 加以選擇..
8.用串口擴并口時,串行接口工作方式應選為方式 0 .
9.在串行通信中,有數據傳送方向單工、半雙工、全雙工三種方式.
10.外部中斷 入口地址為_ 0013H
4-2判斷
1.MCS-51的5個中斷源優先級相同。 ( × )
2.要進行多機通信,MCS-51串行接口的工作方式應為方式1。 ( × )
3.MCS-51上電複位時,SBUF=00H。 ( × )。
4.MCS-51有3個中斷源,優先級由軟件填寫特殊功能寄存器IP加以選擇.. ( × )
5.用串口擴并口時,串行接口工作方式應選為方式1. ( × )
6.外部中斷INTO 入口地址為_0013H( × )
7.MCS-51外部中斷0的入口地址是0003H。 (√ ).
8.TMOD中的GATE=1時,表示由兩個信号控制定時器的啟停。 ( √ )。
9.使用8751且 =1時,仍可外擴64KB的程序存儲器。( × )
10.PC存放的是當前執行的指令。( × )
11.MCS-51的特殊功能寄存器分布在60H~80H地址範圍内。(× )
12.MCS-51有4個并行I\O口,其中P0~P3是準雙向口,所以由輸出轉輸入時必須先寫入"0"( × )
4-3選擇
1.在中斷服務程序中,至少應有一條( D )
(A)傳送指令(B)轉移指令(C)加法指法(D)中斷返回指令
2.要使MCS-51能夠響應定時器T1中斷、串行接口中斷,它的中斷允許寄存器IE的内容應是( A )
(A)98H (B)84H (C)42 (D)22H
3.D MCS-51在響應中斷時,下列哪種操作不會發生( D ).
(A)保護現場 (B)保護PC (C)找到中斷入口 (D)保護PC轉入中斷入口
4.用MCS-51串行接口擴展并行I\O口時,串行接口工作方式應選擇( C )
(A)方式0 (B)方式1 (C)方式2 (D)方式3
5.MCS-51有中斷源( A )
(A)5個 (B)2個 (C)3個 (D)6個
6.MCS-51響應中斷時,下面哪一個條件不是必須的( )
(A)當前指令執行完畢 (B)中斷是開放的确
(C)沒有同級或高級中斷服務須 (D)必須有RET1指令
7.使用定時器T1時,有幾種工作模式( C )
(A)1種 (B)2種 (C)3種 (D)4種
8.計算機在使用中斷方式與外界交換信息時,保護現場的工作方式應該是 ( B )
(A)由CPU自動完成 (B)在中斷響應中完成
(C)應由中斷服務程序完成 (D)在主程序中完成
9.下面哪一種傳送方式适用于處理外部事件( C )
(A)DMA (B)無條件傳遞進 (C)中斷 (D)條件傳遞
1、2、4章的編程
1. 8225A控制字地址為300FH,請按:A口方式0輸入,B口方式1輸出,C口高位輸出,C口低位輸入,确定8225A控制字并編初始化程序.
解:控制字為 10010101=95H
初始化程序:MOV DPTR ,#300FH
MOV A, #95H
MOVX @DPTR, A
2. 編定一個軟件延時1S和1min的子程序.設fosc=6Hz,則一個機器周期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,調用上面1s子程序60次
ORG 0030H
MOV R0, #60
LOOP: LCALL TIME
DJNZ R0, LOOP
RET
3. 請編制串行通信的數據發送程序,發送片内RAM50H~5FH的16B數據,串行接口設定為方式2,采用偶校驗方式。設晶振頻率為6MHz。
解:查詢方式發送程序如下
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.應用單片機内部定時器T0工作在方式1下,從P1.0輸出周期為2ms的方波脈沖信号,已知單片機的晶振頻率為6MHZ。
請(1)計算時間常數X,應用公式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.應用單片機内部定時器T0工作在方式1下,從P1.0輸出周期為1ms的方波脈沖信号,已知單片機的晶振頻率為6MHZ。
請(1)計算時間常數X,應用公式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口,監測某一按鍵開關,使每按鍵一次,輸出一個正脈沖(脈寬随意)。編出彙編語言程序。
解: 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、設計一個4位數碼顯示電路,并用彙編語言編程使"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
8. 編制一個循環閃爍的程序。有8個發光二極管,每次其中某個燈閃爍點亮10次後,轉到下一個閃爍10次,循環不止。畫出電路圖。
解: 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單片機的INTO引腳外接脈沖信号,要求每送來一個脈沖,把30H單元值加1,若30H單元記滿則進位31H單元。試利用中斷結構,編制一個脈沖計數程序。
解: 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個發光俄二極管LED。相鄰的4個LED為一組,使2組每隔0。5S 交替發亮一次,周爾複始。試編寫程序。
解: 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.設計89C51和ADC0809的接口,采集2通道10個數據,存入内部RAM的50H~59H單元,畫出電路圖,編出:
(1)延時方式;
(2)查詢方式;
(3)中斷方式中的一種程序。
解:IN2的地址為7FFAH,P1.0查詢轉換結束信号,查詢程序如下:
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用串行擴展并行I/O口時,串行接口工作方式選擇(A)
(A) 方式0 (B)方式1 (C)方式2 (D)方式3
3、使用8255可以擴展出的I/O口線是(B)
(A) 16根 (B)24根 (C)22根 (D)32根
4、當8031外出擴程序存儲器8KB時,需使用EPROM 2716(C)
(A) 2片 (B)3片 (C)4片 (D)5片
5、某種存儲器芯片是8KB*4/片,那麼它的地址線根線是(C)
(A) 11根 (B)12根 (C)13根 (D)14根
6、MCS-51外擴ROM,RAM和I/O口時,它的數據總線是(A)
(A) P0 (B)P1 (C)P2 (D)P3
7、當使用快速外部設備時,最好使用的輸入/輸出方式是(C)
(A)中斷 (B)條件傳送 (C)DMA (D)無條件傳送
8、MCS-51的中斷源全部編程為同級時,優先級最高的是(D)
(A) INT1 (B)TI (C)串行接口 (D)INT0
9、MCS-51的并行I/O口信息有兩種讀取方法:一種是讀引腳,還有一種是(A)
(A)讀鎖存器具 (B)讀數據庫 (C)讀A累加器具 (D)讀CPU
10、MCS-51的并行I/O口讀-改-寫操作,是針對該口的(D)
(A)引腳 (B)片選信号 (C)地址線 (D)内部鎖存器
5-2判斷題1、MCS-51外擴I/O口與外RAM是統一編址的。(對)
2、使用8751且EA=1時,仍可外擴64KB的程序存儲器。(錯)60KB
3、8155的複位引腳可與89C51的複位引腳直接相連。(對)
4、片内RAM與外部設備統一編址時,需要專門的輸入/輸出指令。(錯)統一編址的
特點正是無需專門的輸入輸出指令。
5、8031片内有程序存儲器和數據存儲器。(錯)無程序存儲器
6、EPROM的地址線為11條時,能訪問的存儲空間有4K。(錯)2K.
7、8255A内部有3個8位并行口,即A口,B口,C口。(對)
8、8155芯片内具有256B的靜态RAM,2個8位和1個6位的可編程并行I/O口,1個14位定時期等常用部件及地址鎖存器。(對)
9、在單片機應用系統中,外部設備與外部數據存儲器傳送數據時,使用MOV指令。(錯)用MOVX指令。
10、為了消除按鍵的抖動,常用的方法有硬件和軟件兩種方法。(對)
5-3簡答題
1 8031的擴展儲存器系統中,為什麼P0口要接一個8位鎖存器,而P2口卻不接?
答:這是因為P0口是擴展儲存器系統的多路低8位地址和數據總線,在訪問外部存儲器時,P0口分時用作輸出外部儲存器低8位地址和傳送數據,為了在整個訪問外部存儲器期間,對外部存儲器存在着有效的低8位地址信号,所以P0口需要外接一個地址鎖存器。ALE信号就是用來把P0口輸出的地址字節鎖存在這個外接的鎖存器中,再從鎖存器輸出外部存儲器的低8位地址。而P2口隻用作擴展存儲器系統的高8位地址線,并在整個訪問外部存儲器期間不變,所以不必外接地址鎖存器。
2 在8031擴展系統中,外部程序存儲器和數據存儲器共用16位地址線和8位數據線,為什麼兩個存儲空間不會發生沖突?
答:這是因為外部程序存儲器和外部數據存儲器所使用的控制信号不同。對外部程序存儲器的選讀通是用PSEN控制線,而對外部數據存儲器的讀/寫控制是用RD和WR讀、寫控制線,所以不會發生地址沖突。
3 8031單片機需要外接程序存儲器,實際上它還有多少條I/O線可以用?當使用外部存儲器時,還剩下多少條I/O線可用?
答:8031系統必須外接程序促成器,原則上說,P0和P2口要用作數據和地址總線,所以隻有P1和P3口可用作I/O口,共16條I/O線。在使用外部存儲器時,除了占用P0和P2口外,還需要用P3口RD(P3.7)和WR(P3.6)兩條控制線,所以這種情況下就隻剩下14條I/O線可用了。
4 試将8031單片機外接一片2716 EPROM和一片6116 RAM組成一個應用系統,請畫出硬件連線圖,并指出擴展存儲器的地址範圍。
答:2716是2K×8位的EPROM,6116是2K×8位的靜态RAM,兩者都僅需要11根地址線。由于沒有規定地址範圍,故可按最簡單的方式來連接,即省去地址譯碼器,程序存儲器的地址必須從0開始,基本地址為0000H—07FFH。數據存儲器的地址為0000H—07FFH。控制線的連接為/PSEN控制EPROM的讀出,/RD和/WR控制RAM的讀寫,兩個芯片的片選端都固定接地,連線圖如圖所示。
5 簡述可編程并行接口8255 A的内部結構?
答:8255 A的内部結構由三部分組成:總線接口部分,内部邏輯部分,外部接口部分。
(1) 總線接口部分 其中有數據總線驅動器,讀/寫控制邏輯
(2) 内部邏輯部分 由A組和B組控制電路。
(3) 外部接口部分 該部分有3個8位并行I/O端口,即A口、B口和C口。
5-4編程題
1 試編程對8155進行初始化,設A口為選通輸出,B口為選通輸入,C口作為控制聯絡口,并啟動定時器/記數器按方式1工作,工作時間為10ms,定時器計數脈沖頻率為單片機的時鐘頻率24分頻,fosc=12MHz。
3 8031擴展8255A,将PA口設置成輸入方式,PB口設置成輸出方式,PC口設置成輸出方式,給出初始化程序。
解: 根據題目要求,A口輸入,B口輸出,二者均采用工作方式0,則控制字為98H。編程如下:
MOV A,#98H ;方式控制字 A
MOV DPTR,#7FFFH ;選通控制寄存器
MOVX @TPTR,A ;方式控制字送入8255A
MOV DPTR,#7FFCH
MOVX A,@DPTR ;讀PA口數據
MOV DPTR,#7FFDH ;
MOVX @DPTR,A ;送PB口數據
4 設計一個2×2行列式鍵盤電路并編寫鍵盤掃描子程序。
解: (1)2×2行列式鍵盤電路如圖所示。
(2)鍵盤掃描子程序:
KEY1: ACALL KS1 ;調用判斷有無鍵按下子程序
JNZ LK1 ;有鍵按下,轉LK1
AJMP KEY1 ;無鍵按下,返回
LK1: ACALL T12MS ;調延時12ms子程序
ACALL KS1 ;查有無鍵按下
JNZ LK2 ;若有,則為鍵确實按下,轉逐列掃描
AJMP KEY1 ;無鍵按下,返回
LK2: MOV R4,#00H ;首列号 R4
MOV R2,#FEH ;首列掃描字 R2
LK4: MOV A,R2 ;列掃描字 P1口
MOV P1,A ;使第一列線為0
MOV A,P1 ;讀入行狀态
JB ACC.0,LONE;第0行無鍵按下,轉查第一行
MOV A,#00H ;第0行有鍵按下,該行首鍵号#00H A
AJMP LKP ;轉求鍵号
LONE: JB ACC.1,NEXT ;第一行無鍵按下,轉查下一列
MOV A,#02 ;第一行有鍵按下,該行首鍵号#02 A
LKP: ADD A,R4 ;鍵号=首行号+列号
PUSH ACC ;鍵号進棧保護
LK3: ACALL KS1 ;等待鍵釋放
JNZ LK3 ;未釋放,等待
POP AC ;鍵釋放,鍵号 A
RET ;鍵掃描結束
NEXT: INC R4 ;列号加1,指向下一列
MOV A,R2 ;列掃描字 A
JNB ACC.1,KND ;判斷2列全掃描完?掃描完,轉KND
RL A ;沒掃描完,掃描字左移一位,形成下一列掃描字
MOV R2,A ;掃描字 R2
AJMP LK4 ;掃描下一列
AJMP KEY1 ;全掃描完,返回
CPL A ;取正邏輯,高電平表示有鍵按下
MOV P1,A ;全掃描字 所有行
MOV A,P1 ;讀取列值
CPL A ;取正邏輯,高電平表示有鍵按下
ANL A,#0C0H ;屏蔽低6位,取高2位
RET ;出口狀态(A)!=0,有鍵按下
5 要求将存放在8031單片機内部RAM中30H—33H單元的4字節數據,按十六進制(8位)從做到右顯示,試編制程序。
ORG 1000H ;指向顯示緩沖區
MOV R0,#30H ;顯示字節數
MOV R2,#04 ;初始顯示位置(最高位)
MOV P1,#08H ;取1B
SDLAY: MOV A,@R0 ;備份
MOV B,A ;截取字節高位
ANL A,#0F0H ;裝入P1.4—P1.7
ORL P1,A ;準備顯示右一位
INC P1 ;取備份
MOV A,B ;截取字節低位
SWAP A ;
ANL A,#0F0H
ORL P1,A ;裝入并顯示
INC P1 ;準備顯示下一字節
INC R0
DJNZ R2,SDLAY ;4B未顯示完循環
RET ;顯示完成
END
START:MOV DPTR,#7FFFH
MOV A,#00
LOOP :MOVX @DPTR,A
INC A
MOV R0,#data ;data為延時常數
DJNZ R0,$ ;延時,改變data可改變鋸齒波周期T值
SJMP LOOP
例2:産生矩形波
START: MOV DPTR, #7FFFH
STEP: MOV A , #dataH ;置矩形波上限
MOVX @DPTR , A ;D/A轉換
ACALL DELH ;調輸出“1”時延時
MOV A , #00H ;置矩形波下限
MOVX @DPTR, A
ACALL DELL ;調輸出“0”時延時
SJMP STEP ;重複執行
例3: 産生三角波
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
STEP3: DEC A
MOVX @DPTR , A
CJNE A , #01H , STEP3
AJMP STEP1
P1
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!