




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、單項(xiàng)選擇題1.利用下列(
D
)關(guān)鍵字可以改變工作寄存器組A、interruptB、sfrC、while
D、using2.C51中一般指針變量占用(
C
)字節(jié)存儲(chǔ)。A、一個(gè)
B、兩個(gè)
C、三個(gè)
D、四個(gè)3.使用宏來訪問絕對地址時(shí),一般需包含的庫文件是(B)A、reg51.h
B、absacc.h
C、intrins.h
D、startup.h4.執(zhí)行#definePA8255
XBYTE[0x3FFC];PA8255=0x7e;后存儲(chǔ)單元0x3FFC的值是(A
)A、Ox7e
B、8255H
C、未定
D、7e5.設(shè)有inti;則表達(dá)式i=1,++i,++i||++i,i的值為(C)A、1B、2C、3D、46.設(shè)有inta[]={10,11,12},*p=&a[0];則執(zhí)行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是(C)A、10,11,12B、11,12,12C、10,12,12D、11,11,127.設(shè)有inti;則表達(dá)式i=1,++i,i||++i,i的值為(B)A、1B、2C、3D、48、單片機(jī)8051的XTAL1和XTAL2引腳是(D)引腳
。
A、外接定時(shí)器
B、外接串行口
C、外接中斷
D、外接晶振9、單片機(jī)的定時(shí)器/計(jì)數(shù)器設(shè)定為工作方式1時(shí),是(D)。
A、8位計(jì)數(shù)器結(jié)構(gòu)
B、2個(gè)8位計(jì)數(shù)器結(jié)構(gòu)C、13位計(jì)數(shù)器結(jié)構(gòu)
D、16位計(jì)數(shù)器結(jié)構(gòu)10、串行口每一次傳送(C)字符。A、1個(gè)字節(jié)
B、1bit
C、1幀
D、1串11、計(jì)算機(jī)能直接識(shí)別的語言是(C)。A、匯編語言B、自然語言C、機(jī)器語言D、C語言12、MCS—51單片機(jī)的CPU主要的組成部分為
(A)。A、運(yùn)算器、控制器
B、加法器、寄存器
C、運(yùn)算器、加法器
D、運(yùn)算器、譯碼器13、MCS-51系列單片機(jī)芯片是雙列直插式封裝的,有(C)個(gè)引腳。A、24B、30C、40D、5014、MCS-51的中斷允許觸發(fā)器內(nèi)容為83H,CPU將響應(yīng)的中斷請求是(A)。A、T0B、INT1C、串行接口D、INT015、P0口作數(shù)據(jù)線和低8位地址線時(shí)
(C)。A、應(yīng)外接上拉電阻
B、不能作I/O口
C、能作I/O口
D、應(yīng)外接高電平二、判斷題:(每小題1分,共10分。正確的在括號內(nèi)打“√”,錯(cuò)誤的打“×”。判對得分,不判、判錯(cuò)均不得分。)1.若一個(gè)函數(shù)的返回類型為void,則表示其沒有返回值。(Y
)2.特殊功能寄存器的名字,在C51程序中,全部大寫。(Y)3.“sfr”后面的地址可以用帶有運(yùn)算的表達(dá)式來表示。(
N
)4.#include
<reg51.h>與#include
“reg51.h”是等價(jià)的。(Y)5.sbit不可以用于定義內(nèi)部RAM的可位尋址區(qū),只能用在可位尋址的SFR上。(N)6.Continue和break都可用來實(shí)現(xiàn)循環(huán)體的中止。(
N
)7.若一個(gè)函數(shù)的返回類型為void,則表示其沒有返回值。(Y)8.所有定義在主函數(shù)之前的函數(shù)無需進(jìn)行聲明。(
N
)9.inti,*p=&i;是正確的C說明。(Y
)10.7&3+12的值是15。(
Y
)11.一個(gè)函數(shù)利用return不可能同時(shí)返回多個(gè)值。(Y)12、51單片機(jī)只能做控制用,不能完成算術(shù)運(yùn)算。(N)13、MCS-51的中斷源全部編程為同級時(shí),優(yōu)先級最高的是INT1。(N)14、MCS-51單片機(jī)的CPU能同時(shí)處理8位二進(jìn)制數(shù)據(jù)。(Y)15、單片機(jī)的主頻越高,其運(yùn)算速度越快。(N)16、為了消除按鍵的抖動(dòng),常用的方法有硬件和軟件兩種方法。(Y)三、填空(每空1分,共20分。在空白處填上正確的內(nèi)容)1.KeiLC51軟件中,工程文件的擴(kuò)展名是__UV2______,編譯連接后生成可燒寫的文件擴(kuò)展名是____hex_______。2.C51支持的指針有一般指針和存儲(chǔ)器指針。3.C51中,沒有專門的循環(huán)語句,我們可以用函數(shù)___crol_________完成一個(gè)字節(jié)的循環(huán)左移,用___irol___完成二個(gè)字節(jié)的循環(huán)左移。4.
是C語言的基本單位。5.C語言中輸入和輸出操作是由庫函數(shù)scanf
和
printf
等函數(shù)來完成。6.若有說明inti,j,k;則表達(dá)式i=10,j=20,k=30,k*=i+j的值為__900______。7.?dāng)?shù)組是一組有固定數(shù)目和相同類型成分分量的有序集合。8.變量的指針就是變量的地址;指針變量的值是指針。9.在C語言中,把多個(gè)不同類型的變量結(jié)合在一起形成的一個(gè)組合型變量,稱為結(jié)構(gòu)變量,簡稱結(jié)構(gòu)。10.C51的數(shù)據(jù)類型有基本類型、結(jié)構(gòu)類型、指針類型、空類型。11.C51的基本數(shù)據(jù)類型有位型、字符型、整形、長整形、浮點(diǎn)型、雙精度浮點(diǎn)型。12.C51的構(gòu)造數(shù)據(jù)類型有數(shù)組類型、結(jié)構(gòu)類型、共用體型、梅舉型。13.C51的存儲(chǔ)類型有data、bdata、idata、pdata、xdata、code。14.C51的存儲(chǔ)模式有small、compact和large。15.C51程序與其他語言程序一樣,程序結(jié)構(gòu)也分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種。16.?dāng)?shù)組的一個(gè)很重要的用途就是查表。17.在單片機(jī)擴(kuò)展時(shí),P0口和P2口為地址線,P0口又分時(shí)作為數(shù)每個(gè)變量可以明確地分配到指定的存儲(chǔ)空間,對內(nèi)部數(shù)據(jù)存儲(chǔ)器的訪問比對外部數(shù)據(jù)存儲(chǔ)器的訪問快許多,因此應(yīng)當(dāng)將頻繁使用的變量放在內(nèi)部存儲(chǔ)器中,而把較少使用的變量放在外部存儲(chǔ)器中。各存儲(chǔ)區(qū)的簡單描述如表1-2所示。表1-2C51存儲(chǔ)類型與存儲(chǔ)區(qū)描述DATA片內(nèi)RAM的低128字節(jié),可在一個(gè)周期內(nèi)直接尋址BDATA片內(nèi)RAM的位尋址區(qū),16字節(jié)IDATA片內(nèi)RAM的256字節(jié),必須采用間接尋址XDATA外部數(shù)據(jù)存儲(chǔ)區(qū),使用DPTR間接尋址PDATA外部存儲(chǔ)區(qū)的256個(gè)字節(jié),通過P0口的地址對其尋址。使用MOVX@Ri,需要兩個(gè)指令周期CODE程序存儲(chǔ)區(qū),使用DPTR尋址。以上介紹的是C51的數(shù)據(jù)存儲(chǔ)類型,C51存儲(chǔ)類型及其大小和值域如表1-3所示。表1-3存儲(chǔ)類型長度/bit長度/byte值域data810~255idata810~255pdata810~255code1620~65535xdata1620~655355.簡述C51對51單片機(jī)特殊功能寄存器的定義方法(5分)答:MCS-51通過其特殊功能寄存器(SFR)實(shí)現(xiàn)對其內(nèi)部主要資源的控制。MCS-51單片機(jī)有21個(gè)SFR,有的單片機(jī)還有更多的SFR,它們分布在片內(nèi)RAM的高128字節(jié)中,其地址能夠被8整除的SFR一般可以進(jìn)行位尋址。關(guān)于MCS-51單片機(jī)的特殊功能寄存器參看附錄A。對SFR只能用直接尋址方式訪問。C51允許通過使用關(guān)鍵字sfr、sbit或直接引用編譯器提供的頭文件來實(shí)現(xiàn)對SFR的訪問。(1)使用關(guān)鍵字定義sfr為了能直接訪問特殊功能寄存器SFR,C51提供了一種自主形式的定義方法。這種定義方法與標(biāo)準(zhǔn)的C語言不兼容,只適用于對8051系列單片機(jī)進(jìn)行C編程。這種定義的方法是引入關(guān)鍵字“sfr”,語法如下:sfr特殊功能寄存器名字=特殊功能寄存器地址;如:sfrSCON=0x98; /*串口控制寄存器地址98H*/sfrTMOD=0X89; /*定時(shí)器/計(jì)數(shù)器方式控制寄存器地址89H*/(2)通過頭文件訪問SFR8051系列單片機(jī)的寄存器數(shù)量與類型是極不相同的,因此對單片機(jī)特殊功能寄存器的訪問可以通過對頭文件的訪問來進(jìn)行。為了用戶處理方便,C51編譯器把MCS-51單片機(jī)的常用的特殊功能寄存器和特殊位進(jìn)行了定義,放在一個(gè)“reg51.h”或“reg52.h”的頭文件中。當(dāng)用戶要使用時(shí),只需要在使用之前用一條預(yù)處理命令“#include<reg51.h>”把這個(gè)頭文件包含到程序中,然后就可以使用特殊功能寄存器名和特殊位名稱了。用戶可以通過文本編輯器對頭文件進(jìn)行增減。(3)SFR中位定義在8051單片機(jī)的應(yīng)用問題中,經(jīng)常需要單獨(dú)訪問SFR中的位,C51的擴(kuò)充功能使之成為可能,使用關(guān)鍵字“sbit”可以訪問位尋址對象。特殊位(sbit)的定義,像SFR一樣不與標(biāo)準(zhǔn)C兼容。與SFR定義一樣,用關(guān)鍵字“sbit”定義某些特殊位,并接受任何符號名,“=”號后將絕對地址賦給變量名。這種地址分配有三種方法:第一種方法:sbit位名=特殊功能寄存器名^位置;當(dāng)特殊功能寄存器的地址為字節(jié)(8位)時(shí),可使用這種方法。特殊功能寄存器名必須是已定義的SFR的名字?!癪”后的“位置”語句定義了基地址上的特殊位的位置。該位置必須是0~7的數(shù)。如:第二種方法:sbit位名=字節(jié)地址^位置;這種方法是以一個(gè)整常數(shù)為基地址,該值必須在0x80~0xFF之間,并能被8整除,確定位置的方法同上。第三種方法:sbit位名=位地址;這種方法將位的絕對地址賦給變量,地址必須在0x80~0xFF之間。6.C51的data、bdata、idata有什么區(qū)別?(6分)答:data、bdata、idata是表明數(shù)據(jù)的存儲(chǔ)類型,data是指片內(nèi)RAM的低128字節(jié),可在一個(gè)周期內(nèi)直接尋址;bdata是指片內(nèi)RAM的位尋址區(qū),16字節(jié);idata是指片內(nèi)RAM的256字節(jié),必須采用間接尋址。7.C51中的中斷函數(shù)和一般的函數(shù)有什么不同?(6分)答:C51編譯器允許用C51創(chuàng)建中斷服務(wù)函數(shù),中斷函數(shù)是由中斷系統(tǒng)自動(dòng)調(diào)用的。中斷函數(shù)的定義格式為: 函數(shù)類型函數(shù)名interruptnusingn 其中:interrupt和using為關(guān)鍵字;interrupt后面的n為中斷源的編號,即中斷號;using后面的n所選擇的寄存器組,取值范圍為0~3。定義中斷函數(shù)時(shí),using是一個(gè)選項(xiàng),可以省略不用。如果不用using選項(xiàng),則由編譯器選擇一個(gè)寄存器組作為絕對寄存器組。8051的中斷過程通過使用interrupt關(guān)鍵字和中斷號(0~31)來實(shí)現(xiàn),中斷號告訴編譯器中斷函數(shù)的入口地址。8.按照給定的數(shù)據(jù)類型和存儲(chǔ)類型,寫出下列變量的說明形式(6分)(1)在data區(qū)定義字符變量val1答:chardatavall;(2)在idata區(qū)定義整型變量val2答:intidataval2;(3)在xdata區(qū)定義無符號字符型數(shù)組val3[4]。 答:unsignedxdataval3[4];(4)在xdata區(qū)定義一個(gè)指向char類型的指針px。答:charxdata*px;(5)定義可位尋址變量flag。答:bitflag;(6)定義特殊功能寄存器變量P3。答:SfrP3=0xB0;9.什么是重入函數(shù)?重入函數(shù)一般什么情況下使用,使用時(shí)有哪些需要注意的地方?答:多個(gè)函數(shù)可以同時(shí)使用的函數(shù),稱為重入函數(shù)。(6分)通常情況下,C51函數(shù)不能被遞歸調(diào)用,也不能應(yīng)用導(dǎo)致遞歸調(diào)用的結(jié)構(gòu)。有此限制是由于函數(shù)參數(shù)和局部變量是存儲(chǔ)在固定的地址單元中。重入函數(shù)特性允許你聲明一個(gè)重入函數(shù)。即可以被遞歸調(diào)用的函數(shù)。重入函數(shù)可以被遞歸調(diào)用,也可以同時(shí)被兩個(gè)或更多的進(jìn)程調(diào)用。重入函數(shù)在實(shí)時(shí)應(yīng)用中及中斷服務(wù)程序代碼和非中斷程序代碼必須共用一個(gè)函數(shù)的場合中經(jīng)常用到。10.如何消除鍵盤的抖動(dòng)?(5分)答:由于按鍵是機(jī)械開關(guān)結(jié)構(gòu),所以當(dāng)用手按下其中一個(gè)鍵時(shí),往往會(huì)出現(xiàn)所按鍵在閉合位置和斷開位置之間發(fā)生跳幾下后才會(huì)穩(wěn)定到閉合狀態(tài)的情況。在釋放一個(gè)鍵時(shí),也會(huì)出現(xiàn)類似的情況,這就是鍵的抖動(dòng),抖動(dòng)的持續(xù)時(shí)間不一,但通常不會(huì)大于10ms。若抖動(dòng)問題不解決,就會(huì)引起對閉合鍵的多次讀入。對于鍵抖動(dòng)最方便的解決方法就是當(dāng)發(fā)現(xiàn)有鍵按下后,不是立即進(jìn)行掃描,而是延時(shí)大約10ms后再進(jìn)行。由于一個(gè)鍵按下的時(shí)間一般會(huì)持續(xù)上百毫秒,所以延遲10ms后再掃描處理并不遲。11.在使用8051的定時(shí)器/計(jì)數(shù)器前,應(yīng)對它進(jìn)行初始化,其步驟是什么?(4分)課本P198答:
(1)確定T/C的工作方式——編程TMOD寄存器;
(2)計(jì)算T/C中的計(jì)數(shù)初值,并裝載到TH和TL;
(3)T/C在中斷方式工作時(shí),須開CPU中斷和源中斷——編程IE寄存器;
(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器——編程TCON中TR1或TR0位。12.什么叫中斷?設(shè)置中斷有什么優(yōu)點(diǎn)?五、程序分析題(10分)1.設(shè)單片機(jī)時(shí)鐘頻率為6MHz,分析下面程序?qū)崿F(xiàn)什么功能?#include"reg51.h"sbitP10=P1^0;voidmain(){TMOD=0x01;TH0=(65536-12500)/256;TL0=(65536-12500)%256;ET0=1;EA=1;TR0=1;while(1);}voidT0_srv(void)interrupt1using1{TH0=(65536-12500)/256;TL0=(65536-12500)%256;P10=!P10;}解:P1.0引腳輸出50ms周期的方波。2.分析下面程序?qū)崿F(xiàn)什么功能?#include"reg51.h"#include"stdio.h"voidinit_ser(){ SCON=0x50;/*SCON:工作模式1,8-bitUART,允許接收*/ TMOD|=0x20;/*TMOD:定時(shí)器T1,工作模式2,8位自動(dòng)重載方式*/ TH1=0xf3;/*當(dāng)波特率為2400時(shí),定時(shí)器初值*/ TR1=1;/*定時(shí)器T1開始運(yùn)行*/ TI=1;/*允許發(fā)送數(shù)據(jù)*/}longfactorial(intn)reentrant{ longresult; if(n==0) result=1; else result=n*factorial(n-1); returnresult;}voidmain(){ intj; longtmp; long(*p)(intn); /*函數(shù)指針變量定義*/ init_ser(); p=(void*)factorial; /*函數(shù)指針變量p指向factorial()函數(shù)*/ for(j=0;j<11;++j) { tmp=(*p)(j); /*用指針變量p調(diào)用factorial()函數(shù)*/ printf("%d!=%ld\n",j,tmp); } for(;;){;}}解:輸出0~10的階乘。六、編程題(30分)1.在8051系統(tǒng)中,已知振蕩頻率是12MHz,用定時(shí)器/計(jì)數(shù)器T0實(shí)現(xiàn)從P1.1產(chǎn)生周期是2s的方波,試編程。(10分)解:#include<reg51.h>sbitP1_1=P1^1; //定義位變量unsignedchari; //定時(shí)次數(shù)voidtimer0over(void); //函數(shù)聲明(定時(shí)50ms函數(shù))voidmain()//主函數(shù){ i=0; TMOD=0x01; //定時(shí)器T0定時(shí)50ms,方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; //開T0 for(;;) { if(TF0) timer0over(); }}voidtimer0over(void){ TH0=(65536-50000)/256; TL0=(65536-50000)%256; TF0=0; i++; if(i==20) //20次到了嗎? { i=0; P1_1=!P1_1; }}2.在8051系統(tǒng)中,已知振蕩頻率是12MHz,用定時(shí)器/計(jì)數(shù)器T1實(shí)現(xiàn)從P1.1產(chǎn)生高電平寬度是10ms,低電平寬度是20ms的矩形波,試編程。(10分)解:#include<reg51.h>unsignedchari;sbitP1_1=P1^1;voidmain() //主函數(shù){ i=0; TMOD=0x10; //T1定時(shí)方式1,定時(shí)時(shí)間10ms TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1);}voidtimer1_int(void)interrupt3{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; i++; if(i==1)P1_1=0; elseif(i==3){ i=0; P1_1=1;}}3.用單片機(jī)和內(nèi)部定時(shí)器來產(chǎn)生矩形波,要求頻率為100Hz,占空比為2:1,設(shè)單片機(jī)的時(shí)鐘頻率為12MHz,寫出有關(guān)程序。(10分)解:#include<reg51.h>unsignedchari;sbitP1_1=P1^1;voidmain(){ i=0; TMOD=0x10; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1);}voidtimer1_int(void)interrupt3{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; i++; if(i==2)P1_1=0; elseif(i==3){ i=0; P1_1=1;}}4.如圖1-1所示,單片機(jī)P1口的P1.0和P1.1各接一個(gè)開關(guān)S1、S2,P1.4、P1.5、P1.6和P1.7各接一只發(fā)光二極管。由S1和S2的不同狀態(tài)來確定哪個(gè)發(fā)光二極管被點(diǎn)亮,如表1-4所示。(10分)表1-表1-4S1、S2與二極管的關(guān)系S2S1被點(diǎn)亮的二極管00VD101VD210VD311VD4解:(一)程序如下:#include<reg51.h>voidmain(){chara;a=P1 /*讀P1口*/a=a&0x03; /*屏蔽高6位*/if(a==0)P1=0x83;elseifa==1P1=0x43;elseifa==2P1=0x23; elseP1=0x13;}(二)程序如下: #include“reg51.h” voidmain() { chara; a=P1; /*讀P1口*/ a=a&0x03; /*屏蔽高6位*/ switch(a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } }(三)程序如下:#include“reg51.h” voidmain() { chara; loop: a=P1; a=a&0x03; /*屏蔽高6位*/ switch(a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } gotoloop; }(四)程序如下:#include“reg51.h” voidmain() { chara; while(1) { a=P1; a=a&0x03; /*屏蔽高6位*/ switch(a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; }} }(五)程序如下:#include“reg51.h” voidmain() { chara; do{ a=P1; a=a&0x03; /*屏蔽高6位*/ switch(a) { case0:P1=0x83;break; case1:P1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠房 改造 豪宅合同范本
- 合同范本 付款方式
- 農(nóng)家花椒出售合同范本
- 中外貿(mào)易買方信貸合同范本
- 單位變更合同范例
- 主播獨(dú)家簽約合同范本
- 區(qū)塊鏈技術(shù)合同范本
- 合伙買汽車合同范本
- 2025年人造板類家具合作協(xié)議書
- 廠房用電合同范本
- 第六章質(zhì)量和密度-基礎(chǔ)練(原卷版)
- 《稅收負(fù)擔(dān)對我國制造業(yè)資本金融化的影響研究》
- 中學(xué)美術(shù)《剪紙藝術(shù)》完整課件
- 現(xiàn)代家政導(dǎo)論-課件 5.1.3家庭管家
- 適用的法律法規(guī)和其他要求的符合性評價(jià)
- 中國古典園林史復(fù)習(xí)
- 東湖高新區(qū)調(diào)研報(bào)告
- 腎包膜下血腫護(hù)理
- 丁善德藝術(shù)歌曲《愛人送我向日葵》創(chuàng)作特征及演唱技巧研究
- 2024華中區(qū)域電力并網(wǎng)運(yùn)行管理實(shí)施細(xì)則
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
評論
0/150
提交評論