2018年單片機考試復習資料


北京吉利學院2017  —2018  學年第   學期期末考試試卷

學院            專業           班級          

成績          

姓名            學號           考場          

《單片機原理及接口技術》B卷

 

(滿分:100分,考試時間:120   分鍾) 

                                         

題號

總分

分數

 

 

 

 

 

 

 

本題得分

 

一、選擇題(本大題共20小題,每小題1.5分,共 30分)

1、MCS-51系列的單片機中片內RAM的字節大小可能的是(     B    )

A128M       B128K          C128           D64

2、C51語言提供的合法的數據類型關鍵字是( A    )。

Asfr          BBIT          CChar           Dinteger r

3、片內RAM的位尋址區,位於地址(    B   )處。

   A、00H1FH    B20H2FH     C30H7FH     D 80H~FFH

4、間接尋址片內數據存儲區(256字節),所用的存儲類型是(   C   

   Adata           Bbdata         Cidata          Dxdata

5MCS-51單片機上電復位的信號是( D  

   A、下降沿        B、上升沿       C、低電平        D、高電平

6、可以將P1口的低4位全部置高電平的表達式是(   B  

   AP1&=0x0f      BP1|=0x0f      CP1^=0x0f      DP1=~P1

7、一般單片機C51程序中,為了使程序執行的效率最高,函數參數傳遞時,函數參數的個數不能夠超過(  C  

   A1             B2             C3            D4

8、需要擴展一片外部RAM,大小32K字節,需要的地址線是( A     

   A15            B14            C13           D12

9、如果將中斷優先級寄存器IP中,將IP設置為0x0A,則優先級最高的是(  D  

   A、外部中斷1                 B、外部中斷0           

C、定時/計數器1               D、定時/計數器0

10、單片機C51中用關鍵字(  C  )來改變寄存器組

    Ainterrupt       Bunsigned      Cusing        Dreentrant

11、紅外線遙控碼由發射電路經(   A   Hz的載頻調制后發射。

A38K         B、 12M           C6M          D、 32768K

12、紅外線遙控碼的邏輯“0”與邏輯“1”是以脈沖的( B )決定的。

   A、電平         B、寬度          C、頻率          D、形狀          

13DS1302內的時鍾寄存器是以( C )的數據格式定義的。

    A、十進制      B、十六進制      CBCD碼        D、壓縮BCD

14、設MCS-51單片機晶振頻率為12MHz,定時器作計數器使用時,其最高的輸入計數頻率應為(  )

     A2MHz        B1MHz        C500kHz        D250kHz

15、使用_nop_()函數時,必須包含的庫文件是(  C   

    Areg52.h       Babsacc.h       Cintrins.h        Dstdio.h

16ADC0809的啟動轉換的信號是(  D   

    AALE          BEOC         CCLOCK         DSTART

17、線反轉法識別有效按鍵時,如果讀入的列線值不全為1,則說明(  A   

A、有鍵被按下            B、一定只有一個鍵被按下 

C、一定有多個鍵被按下    D、沒有鍵被按下

18、在單片機應用系統中,LED數碼管顯示電路通常有( )顯示方式。

 A、靜態   B、動態   C、靜態和動態  D、查詢

19、共陽極LED數碼管加反相器驅動時顯示字符“6”的段碼是(

 A0x06   B0x7D   C0x82  D0xFA

20串行口每一次傳送( A  字符。

A1個          B1串          C1波特         D1

本題得分

 

二、填空題(共11小題,每空1分,共20 分)

1、單片機中,常用作串入並出的芯片是          ,常用作232串口電平轉換芯片是_________

2、在單片機硬件設計時,31腳一般要接  EA , 晶振在PCB設計中應盡量__靠近單片機。

3、單片機程序的入口地址是_____0000H_________,外部中斷0的入口地址是___0003H_____

4、非編碼式鍵盤識別有效鍵盤的方法通常有兩種:一種是___逐列掃描法__另一種是 反轉法

5、若采用12MHz的晶體振盪器,則MCS-51單片機的振盪周期為_______1/12us______,機器周期為       1us   

6LCD1602常用的寫子函數有 ______________           兩種。

7KeiL C51軟件中,工程文件的擴展名是    .UV2      ,編譯連接后生成可燒寫的文件擴展名是  .hex    

8、字符型LCD標准西文字庫采用是 ASCii    編碼方式。

9、若只需要開串行口中斷,則IE的值應設置為     90H         ,若需要將外部中斷0設置為下降沿觸發,則執行的語句為___IT0=1____

10一個函數由兩部分組成,____函數頭____函數體___ 

11、DS1302是雙電源工作方式,第二電源的作用是____________________________。

 

本題得分

 

三、程序分析與填空題(每空3分,共15分)

1下面的while循環執行了  無限    次空語句。

       i = 3;

       while(i! = 0);

2、//該程序功能為點亮第一個發光二極管

      #include <reg51.h>   //51系列單片機頭文件

      sbit     led1=P1^0;        //聲明單片機P1口的第一位為led1

      void main()    //主函數

     {

     led1=0;       /*點亮第一個發光二極管*/

      }

3、將下面的程序補充完整:

   #include<reg51.h>

   _void delay(unsigned int i)_________;

   void main()

   {

          while(1)

          {

              P1 = 0xFF;

              ________delay__(1200);

              P1 = 0x00;

              ______delay____(1200);

          }

}

//函數名:delay

//函數功能:實現軟件延時

//形式參數:整型變量i,控制循環次數

    //返回值:無

    void delay(unsigned int i)

    {

     unsigned int k;

     for(k = 0;k < i;k ++);

     }

四.簡答題(前兩題各8分,第3小題9分,第4小題10分,共35分)

  1. 中斷響應過程中,為什么通常要保護現場?需要保護哪些內容?如何保護?

因為一般主程序和中斷服務程序都可能會用到累加器,PSW寄存器及其他一些寄存器。CPU在進入中斷服務程序后,用到上述寄存器時,就會破壞它原來存在寄存器中的內容;一旦中斷返回,將會造成主程序的混亂。因而在進入中斷服務程序后,一般要先保護現場,然后再執行中斷處理程序,在返回主程序以前再恢復現場。

保護方法一般是把累加器、PSW寄存器及其他一些與主程序有關的寄存器壓入堆棧。在保護現場和恢復現場時,為了不使現場受到破壞或者造成混亂,一般規定此時CPU不響應新的中斷請求。這就要求在編寫中斷服務程序時,注意在保護現場之前要關中斷,在恢復現場之后開中斷。如果在中斷處理時允許有更高級的中斷打斷它,則在保護現場之后再開中斷,恢復現場之前關中斷。

 

 

 

 

 

 

  1. 51單片機外擴的程序存儲器和數據存儲器地址空間相同,但不會發生數據沖突,為什么?

 

 

51的指令系統設計了不同的數據傳送指令以區別這4個不同的邏輯空間:CPU訪問內、片外ROM指令用MOVC,訪問片外RAM指令用MOVX,訪問片內RAM指令用MOV。 程序存儲器用於存放編好的程序和表格常數。程序通過16位程序計數器尋址,尋址能力為64KB。這使得指令能在64KB的地址空間內任意跳轉,但不能使程序從程序存儲器空間轉移到數據存儲器空間。 實際上,當引腳EA接高電平時,8051的程序計數器PC執行片內ROM中的程序,當指令地址超過片內ROM地址時,就自動轉向片外ROM中去取指令。當引腳EA接低電平(接地)時,8051片內ROM不起作用,CPU只能從片外ROM中取指令,地址可以從0000H開始編址。8051從片內程序存儲器和片外程序存儲器取指時的執行速度相同。 用P0口作地址/數據復用總線,用P2口的口線作高位地址線,最多可以擴展64KB的存儲器。控制信號線包括:使用ALE作為地址鎖存的選通信號,以實現低8位地址的鎖存;以PSEN信號作為擴展程序存儲器的讀選通信號;以EA信號作為內、外程序存儲器的選擇信號;以EA和作為擴展數據存儲器和I/O端口的讀、寫選通信號。執行MOVX指令時,RD和WR信號分別自動有效。片外數據存儲器RAM的讀和寫由8051的RD (P3.7)和WR(P3.6)信號控制,而片外程序存儲器的輸出允許(OE)由讀選通PSEN信號控制。盡管片外數據存儲器和片外程序存儲器共處同一地址空間,但由於控制信號及使用的數據傳送指令不同,故不會發生總線沖突。

 

 

 

 

 

 

 

 

 

 

  1. 在有串行通信時,定時器/計數器1的作用是什么,怎樣確定串行口的波特率?

用來實現控制串行通信速率的,也就是方式1,方式3時的波特率是由T1的溢出率來實現控制的。

 

 

 

 

 

 

4.已知單片機系統晶振頻率為6MHz,若要求定時值為10ms時,定時器T0工作在方式1時,定時器T0對應的初值是多少?TMOD的值是多少?TH0=?TL0=?(寫出步驟)

 

1)T0:定時方式工作在方式 1。方式字 TMOD=01H

2) fosc=6MHz16 位計數器10ms 定時設計數初值為 a5 t=12/ fosc*(216 - a)  10*103=12/6 *(216 - a) a=60536=EC78H  即 TH0=ECH TL0=78H 所以:TMOD=01H TH0=ECH TL0=78H


 

一、選擇題(本大題共20小題,每小題1.5分,共 30分)

  1. 51單片機的CPU主要由( A  )組成。

A、運算器、控制器             B、加法器、寄存器

 C、運算器、加法器             D、運算器、譯碼器

  1. 程序是以(C )形式存放在程序存儲器中。

AC語言源程序             B、匯編程序

C、二進制編碼             DBCD

  1. 單片機8031EA(——)引腳( A )。

A、必須接地              B、必須接+5V電源

C、可懸空                D、以上三種視需要而定

  1. 單片機上電復位后,PC的內容為(A )。

A0x0000      B0x0003      C0x000B    D0x0800

  1. 外部擴展存儲器時,分時復用做數據線和低8位地址線的是( A

AP0口      BP1口       CP2口      DP3

  1. 單片機的ALE引腳是以晶振振盪頻率的(C )固定頻率輸出正脈沖,因此它可作為外部時鍾或外部定時脈沖使用。

A1/2       B1/4         C1/6        D1/12

  1. 下面敘述不正確的是(  C )。

A、一個C源程序可以由一個或多個函數組成。

B、一個C源程序必須包含一個主函數main( )

C、在C程序中,注釋說明只能位於一條語句的后面。

 DC程序的基本組成部分單位是函數。

8、在C語言中,當do-while語句中的條件為( A)時,循環結束。

A、0       Bfalse          Ctrue         D、非0

9、下面的while循環執行了(A )次空語句。

        Whilei=3);

A、無限次       B0次        C1        D2

10C程序總是從()開始執行的。

A、主函數      B、主程序      C、子程序       D、主過程

11在C51程序中常常把( D)作為循環體,用於消耗CPU運行時間,產生延時效果。

A賦值語句   B表達式語句   C循環語句  D空語句

12在單片機應用系統中,LED數碼管顯示電路通常有(C )顯示方式。

 A靜態   B動態   C靜態和動態  D查詢

13、共陽極LED數碼管加反相器驅動時顯示字符“6”的段碼是( B  

 A0x06   B0x7D   C0x82  D0xFA

1451單片機的定時器T1用做定時方式時,采用工作方式1,則工作方式控制字為( A

       A0x01   B0x05   C0x10  D0x50

15、啟動T0開始計數是使TCON的(B )。

       ATF0位置1   BTR0位置1   CTR0位清0  DTR1位清0

16、在定時/計數器的計數初值計算中,若設最大計數值為M,對於工作方式1下的M值為(D)。

A、M=213 = 8192              BM=28 = 256

      CM=24 = 16               DM=216 = 65536

1751單片機的串行口是( B  )。

      A單工       B全雙工       C半雙工      D並行口

18、表示串行數據傳輸速率的指標為(  D )。

AUSART     BUART       C字符幀      D波特率

19、單片機輸出信號為( B )電平。

ARS-232C    BTTL         CRS-449      DRS-232

20、串行口的發送數據和接收數據端為( A )。

A、TXDRXD   BTIRI   CTB8RB8  DREN

二、填空題(共7小題,每空1 分,共20 分)

1除了單片機和電源外,單片機最小系統包括_時鍾_電路和__復位 _電路。

2MCS-51系列單片機的存儲器主要有4個物理存儲空間,即____片內數據存儲器_________數據存儲器___________片內程序存儲_____片外程序存儲器。

3、當振盪脈沖頻率為12MHz時,一個機器周期為______1微秒______;當振盪脈沖頻率為6MHz時,一個機器周期為_____2微秒____

4while語句和do-while語句的區別在於:__do-while__語句是先執行、后判斷;而__while____語句是先判斷、后執行。

5、結構化程序設計的三種基本結構是____順序_____選擇_________循環____

651單片機的定時器的內部結構由以下四部分組成:______TMON_______TCON________T1___________T0_____

7A/D轉換器的作用是將__模擬__量轉為__數字_量;D/A轉換器的作用是將___數字___量轉為___模擬____量。

 

  

三、簡答題(本大題共4小題,1、2小題各8分,3小題9分,第4小題10分, 35分)

1、在使用8051的定時器/計數器前,應對它進行初始化,其步驟是什么 

在書上

 

 

2、在有串行通信時,定時器/計數器1的作用是什么,怎樣確定串行口的波特率?

 

 

 

3、如何消除鍵盤的抖動? 

 

 

 

 

 

 

4、8051引腳有多少I/O線?他們和單片機對外的地址總線和數據總線有什么關系?地址總線和數據總線各是幾位? 

 


#include "reg52.h"			 
#include<intrins.h>		
void delay(int i)
{
	while(i--);	
}
void main()
{
	char i;
	P2=0xfe;
	delay(50000); 	
	while(1)
	{	
		for(i=0;i<7;i++)	 
		{
			P2=_crol_(P2,1);
			delay(50000); 	
		}
		for(i=0;i<7;i++)			
		{
			P2=_cror_(P2,1);
			delay(50000); 	
		}	
	}		
}

  


#include "reg52.h"             
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
int code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
void delay(int i)
{
    while(i--);    
}
void DigDisplay()
{
    char i;
    for(i=0;i<8;i++)
    {
        switch(i)     //位選,選擇點亮的數碼管,
        {
            case(0):
                LSA=0;LSB=0;LSC=0; break;//顯示第0位
            case(1):
                LSA=1;LSB=0;LSC=0; break;//顯示第1位
            case(2):
                LSA=0;LSB=1;LSC=0; break;//顯示第2位
            case(3):
                LSA=1;LSB=1;LSC=0; break;//顯示第3位
            case(4):
                LSA=0;LSB=0;LSC=1; break;//顯示第4位
            case(5):
                LSA=1;LSB=0;LSC=1; break;//顯示第5位
            case(6):
                LSA=0;LSB=1;LSC=1; break;//顯示第6位
            case(7):
                LSA=1;LSB=1;LSC=1; break;//顯示第7位    
        }
        P0=smgduan[i];//發送段碼
        delay(100); //間隔一段時間掃描    
        P0=0x00;//消隱
    }
}

void main()
{    
    while(1)
    {    
        DigDisplay();  //數碼管顯示函數    
    }        
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM