




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5、6、7、8章習(xí)題一、問答題1說明51單片機(jī)讀端口鎖存器的必要性,為什么?答:MCS-51系列單片機(jī)有不少指令可以直接進(jìn)行端口操作,例如:ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOV PX.x,C、CLR PX.x、SETB PX.x。這些指令的執(zhí)行過程分成“讀-修改-寫”三步,即先將端口的數(shù)據(jù)讀入CPU,在ALU中進(jìn)行運(yùn)算,運(yùn)算結(jié)果再送回端口。執(zhí)行“讀-修改-寫”類指令時(shí),CPU實(shí)際上是通過三態(tài)門讀回鎖存器Q端的數(shù)據(jù)。這種讀鎖存器的方式是為了避免可能出現(xiàn)的一種錯(cuò)誤。例如,用一根口線直接去驅(qū)動(dòng)端口外的一個(gè)NPN晶體管基極,當(dāng)向口線寫“1”時(shí),該晶體管導(dǎo)通,導(dǎo)通了
2、的三極管集極與發(fā)射極間只有0.7V,會(huì)把端口引腳的高電平拉低,這樣直接讀引腳就會(huì)把本來的“1”誤讀為“0”。但若從鎖存器Q端讀,就能避免這樣的錯(cuò)誤,得到正確的數(shù)據(jù)。也就是說,如果某位輸出為1時(shí),有外接器件拉低電平, 讀端口引腳與讀鎖存器就有區(qū)別了,讀鎖存器狀態(tài)是1,讀引腳狀態(tài)是0,鎖存器狀態(tài)取決于單片機(jī)企圖輸出什么電平,引腳狀態(tài)則是引腳的實(shí)際電平。因此,當(dāng)作為讀引腳方式使用時(shí),應(yīng)先對(duì)該口寫“1”,使場(chǎng)效應(yīng)管截止,再進(jìn)行讀操作,以防止場(chǎng)效應(yīng)管處于導(dǎo)通狀態(tài),使引腳為“0”,而引起誤讀。2請(qǐng)說明為什么使用LED需要接限流電阻,當(dāng)高電平為+5V時(shí),正常點(diǎn)亮一個(gè)LED需要多大阻值的限流電阻(設(shè)LED的正
3、常工作電流為8mA,導(dǎo)通壓降為0.6V),為什么?答:因?yàn)長ED導(dǎo)通時(shí),電壓降是基本固定的(如0.6V)。為了使LED既能正常工作(電流為820mA),又不至于被過大的電流損壞,所以必須加一個(gè)限流電阻,電阻值為100500。3簡(jiǎn)述在使用普通按鍵的時(shí)候,為什么要進(jìn)行去抖動(dòng)處理,如何處理。答:鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次。為了確保CPU對(duì)鍵的一次閉合僅做一次處理,有必要去除鍵抖動(dòng)。在鍵閉合穩(wěn)定時(shí),讀取鍵的狀態(tài);在鍵釋放穩(wěn)定后,再作處理。按鍵的抖動(dòng),可用硬件或軟件兩種方法消除。4簡(jiǎn)述LED數(shù)碼管動(dòng)態(tài)掃描的原理及其實(shí)現(xiàn)方式。答:動(dòng)態(tài)掃描的原理是利用人的視覺暫留,讓人覺得各位LED同時(shí)點(diǎn)亮一樣。逐位輪
4、流點(diǎn)亮各個(gè)LED,每一位保持一定時(shí)間,在510ms之內(nèi)再一次點(diǎn)亮,重復(fù)不止,就可以實(shí)現(xiàn)動(dòng)態(tài)掃描。5為什么51單片機(jī)在讀口的引腳狀態(tài)時(shí),許先向端口寫“1”,請(qǐng)用圖5-1 P1結(jié)構(gòu)圖加以說明。鎖存器DCPQQP1.x讀鎖存器寫鎖存器內(nèi)部總線讀引腳內(nèi)部上拉電阻圖5-1 P1口結(jié)構(gòu)圖21V1VCC答:在單片機(jī)執(zhí)行讀引腳操作時(shí),如果鎖存器原來寄存的數(shù)據(jù)Q=0,那么由于=1,將使V1導(dǎo)通,引腳被始終鉗位在低電平上,不可能輸入高電平。為此,使用讀引腳指令前,必須先用輸出指令置Q=1,使V1截止。5簡(jiǎn)述89c51各IO口的驅(qū)動(dòng)能力。答:各IO口單個(gè)引腳,允許灌入的最大電流為 10 mA; 每個(gè) 8 位的接口(
5、P1、P2 以及 P3),允許向引腳灌入的總電流最大為 15 mA; P0 的驅(qū)動(dòng)能力最強(qiáng),允許灌入的最大總電流為 26 mA; 全部的四個(gè)接口所允許的灌電流之和,最大為 71 mA。 但引腳“輸出高電平”的時(shí)候,輸出電流不到 1 mA。6什么是中斷?中斷與子程序最本質(zhì)的區(qū)別?答:中斷是指計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或特殊請(qǐng)求時(shí),計(jì)算機(jī)停止現(xiàn)行程序的運(yùn)行,自動(dòng)轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序的過程。 中斷是單片機(jī)實(shí)時(shí)地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而
6、去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。中斷與子程序的最本質(zhì)的區(qū)別:子程序是預(yù)先安排好的;中斷是隨機(jī)發(fā)生的。7編制中斷服務(wù)程序時(shí),為什么在主程序的初始化程序中,必須設(shè)置EA1 這條指令(或達(dá)到同樣功能的對(duì)IE賦值的指令),以及在中斷服務(wù)程序中為什么通常需要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)?答:中斷允許寄存器IE中有1個(gè)總的開關(guān)中斷控制位EA,當(dāng)EA=0時(shí),所有的中斷請(qǐng)求被屏蔽,CPU不接受任何中斷;只有當(dāng)EA=1時(shí),CPU才開放中斷。所以主程序的初始化程序中,必須設(shè)置EA1(或者用IE1xxxxxxxB,x表示1或0) 這條指令。現(xiàn)場(chǎng)是指中斷時(shí)刻單片機(jī)中某些寄存器和儲(chǔ)存器單
7、元中的數(shù)據(jù)或狀態(tài),為了使中斷服務(wù)程序的執(zhí)行不破壞這些數(shù)據(jù)和狀態(tài),以免在中斷返回后影響主程序的運(yùn)行,因此要這些數(shù)據(jù)和狀態(tài)送入堆棧保存,這就是現(xiàn)場(chǎng)保護(hù)。中斷結(jié)束后,在返回主程序前,則需要把保存的現(xiàn)場(chǎng)數(shù)據(jù)和狀態(tài)從堆棧中彈出,以恢復(fù)那些寄存器和存儲(chǔ)器單元中的原有內(nèi)容,這就是現(xiàn)場(chǎng)恢復(fù)。8單片機(jī)89C51有哪些中斷源,CPU對(duì)其中斷如何請(qǐng)求?答:89C51中斷系統(tǒng)有5個(gè)中斷源:INT0:外部中斷0請(qǐng)求,低電平有效。通過P3.2引腳輸入。INT1:外部中斷1請(qǐng)求,低電平有效。通過P3.3引腳輸入。T0:定時(shí)器/計(jì)數(shù)器0溢出中斷請(qǐng)求。T1:定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求。TXD/RXD:串行口中斷請(qǐng)求。當(dāng)串行口
8、完成一幀數(shù)據(jù)的發(fā)送或接收時(shí),便可請(qǐng)求中斷。9簡(jiǎn)述單片機(jī)89C51中斷的自然優(yōu)先級(jí)順序,如何提高某一中斷源的優(yōu)先級(jí)別。答:中斷源,其自然優(yōu)先級(jí)的順序如下:外部中斷0(PX0) 最 高定時(shí)器/計(jì)數(shù)器0溢出中斷(PT0)外部中斷1(PX1)定時(shí)器/計(jì)數(shù)器1溢出中斷(PT1)串行口中斷(PS) 最 低SFR中的IP寄存器中有對(duì)應(yīng)的控制位,若某幾個(gè)控制位為1,則相應(yīng)的中斷源就規(guī)定為高優(yōu)先級(jí)中斷;反之,若某幾個(gè)控制位為0,則相應(yīng)
9、的中斷源就規(guī)定為低優(yōu)先級(jí)中斷。當(dāng)同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí),響應(yīng)哪個(gè)中斷源則取決于內(nèi)部自然優(yōu)先級(jí)的順序。10簡(jiǎn)述51系列單片機(jī)中斷響應(yīng)的條件。答:有中斷源發(fā)出中斷請(qǐng)求;中斷總允許位EA=1,即CPU開中斷;申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒有屏蔽;無同級(jí)或更高級(jí)中斷正在被服務(wù);當(dāng)前的指令周期已經(jīng)結(jié)束;若現(xiàn)在指令為RETI或者是訪問IE或IP指令,則該指令以及緊接著的另一條指令已執(zhí)行完。11用匯編語言編程時(shí),在51系列單片機(jī)執(zhí)行中斷服務(wù)程序的指令較多時(shí),為什么一般都要在入口地址(又稱中斷矢量地址)開始的地方放一條跳轉(zhuǎn)指令?答:因?yàn)?1系列單片機(jī)的兩個(gè)相鄰中斷源中斷服務(wù)程序入口地
10、址相距只有8個(gè)單元,當(dāng)中斷服務(wù)程序較長容納不下的,一般都要在相應(yīng)的中斷服務(wù)程序入口地址中放一條跳轉(zhuǎn)指令。12為什么一般都把主程序的起始地址放在0030H之后?答:因?yàn)?000H0030H中有中斷的矢量地址,為了避免沖突,一般都把主程序的起始地址放在0030H之后。13中斷服務(wù)子程序返回指令RETI和普通子程序返回指令RET的區(qū)別?答:RETI指令在返回的同時(shí)清除相應(yīng)的優(yōu)先級(jí)觸發(fā)器,以便允許下次中斷。14簡(jiǎn)述51單片機(jī)定時(shí)/計(jì)數(shù)器4種工作模式的特點(diǎn)。答:模式1:是16位的定時(shí)器/計(jì)數(shù)器;模式2:把TL0(或TL1)配置成一個(gè)可以自動(dòng)重裝載的8位定時(shí)器/計(jì)數(shù)器;模式3:對(duì)T0和T1大不相同。若將T
11、0設(shè)置為模式3,則TL0和TH0被分為兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器。定時(shí)器T1無工作模式3狀態(tài)。模式0:與模式1幾乎完全相同,唯一的差別是模式0中,寄存器TL0用5位,TH0用8位。這種方式是為了與48系列兼容的,目前一般不使用。15定時(shí)/計(jì)數(shù)器用作定時(shí)器時(shí),其計(jì)數(shù)脈沖由誰提供?定時(shí)時(shí)間與哪些因素有關(guān)?答:定時(shí)/計(jì)數(shù)器作定時(shí)時(shí),其計(jì)數(shù)脈沖由系統(tǒng)振蕩器產(chǎn)生的內(nèi)部時(shí)鐘信號(hào)12分頻后提供。定時(shí)時(shí)間與時(shí)鐘頻率和定時(shí)初值有關(guān)。16畫出51單片機(jī)計(jì)數(shù)/定時(shí)器方式1的邏輯結(jié)構(gòu)框圖,說明它們的工作原理,如何使用門控和非門控啟動(dòng)計(jì)數(shù)的方法。答:方式1的邏輯結(jié)構(gòu)振蕩器÷12控制TxTRxGATE&1
12、INTx中斷TFxTHx(8位)C/T=0C/T=1TLx(8位)如圖所示,當(dāng)GATE = 0時(shí),經(jīng)非門后,或門輸出1,這樣TRx將直接控制定時(shí)器的啟動(dòng)和關(guān)閉。這時(shí)如果TRx=1,則接通控制開關(guān),定時(shí)器從初值開始計(jì)數(shù)直至溢出。溢出時(shí),16位加計(jì)數(shù)器為0,TFx置位,并申請(qǐng)中斷。如要循環(huán)計(jì)數(shù),則定時(shí)器需重置初值,且需用軟件將TFx復(fù)位。TRx = 0,則與門被封鎖,控制開關(guān)被關(guān)斷,停止計(jì)數(shù)。當(dāng)GATE = 1時(shí),與門的輸出由輸入INTx的電平和TRx位的狀態(tài)來確定。這時(shí)若TRx=1,則引腳INTx可直接開啟或關(guān)斷計(jì)數(shù)器:當(dāng)INTx為高電平時(shí),允許計(jì)數(shù);低電平時(shí)則停止計(jì)數(shù)。若TRx=0,則與門被封
13、鎖(即輸出為0),控制開關(guān)被關(guān)斷,不能計(jì)數(shù)。控制啟動(dòng)、停止計(jì)數(shù)方式如下: 非門控方式當(dāng)GATE0,控制權(quán)由 TRx 決定,TRx1計(jì)數(shù)啟動(dòng),TRx0計(jì)數(shù)停止。這種方式實(shí)際上是用軟件控制啟動(dòng)、停止計(jì)數(shù)。 門控方式當(dāng)GATE1、TRx1,控制權(quán)由INTx 決定INTx1計(jì)數(shù)啟動(dòng),INTx0計(jì)數(shù)停止。這種方式實(shí)際上是用外部硬件INTx引腳控制啟動(dòng)、停止計(jì)數(shù)。17在使用8051的定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行初始化,其步驟是什么?答: (1)確定T/C的工作方式編程TMOD寄存器; (2)計(jì)算T/C中的計(jì)數(shù)初值,并裝載到TH和TL; (3)T/C在中斷方式工作時(shí),須開CPU中斷和源中斷編程IE寄存器;
14、(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器編程TCON中TR1或TR0位。18在有串行通信時(shí),定時(shí)器/計(jì)數(shù)器1的作用是什么,怎樣確定串行口的波特率?答:在有串行通信時(shí),定時(shí)器/計(jì)數(shù)器1的作用是串行口發(fā)生器。 串行口的波特率根據(jù)串行口的工作方式具有不同的計(jì)算方式: 方式0的波特率固定為晶體振蕩器的十二分之一; 方式1的波特率=2SMOD.(定時(shí)器1的溢出率)/32; 方式2波特率=2SMOD.(fosc/64); 方式3波特率同方式1(定時(shí)器l作波特率發(fā)生器)。19簡(jiǎn)述89C51串口通信的四種方式及其特點(diǎn)。答:方式0:同步移位寄存器輸入/輸出方式,常用于擴(kuò)展I/O口。波特率固定為振蕩頻率的1/12,并不受PCON
15、寄存器中SMOD位的影響。方式1:用于串行發(fā)送或接收,為10位通用異步接口。TXD與RXD分別用于發(fā)送與接收數(shù)據(jù)。收發(fā)一幀數(shù)據(jù)的格式為1位起始位、8位數(shù)據(jù)位(低位在前)、1位停止位,共10位。波特率由定時(shí)器T1的溢出率與SMOD值同時(shí)決定。方式2:用于串行發(fā)送或接收,為11位通用異步接口。TXD與RXD分別用于發(fā)送與接收數(shù)據(jù)。收發(fā)一幀數(shù)據(jù)的格式為1位起始位、8位數(shù)據(jù)位(低位在前)、1位可編程的第9數(shù)據(jù)位和1位停止位,共11位。波特率取決于PCON中SMOD位的值:當(dāng)SMOD0時(shí),波特率為晶振的1/64;當(dāng)SMOD1時(shí),波特率為晶振的1/32。方式3:用于串行發(fā)送或接收,為11位通用異步接口。T
16、XD與RXD分別用于發(fā)送與接收數(shù)據(jù)。幀格式與方式2相同,波特率與方式1相同。20單片機(jī)的串口可以與PC的串口直接連接進(jìn)行通訊嗎?為什么?應(yīng)如何連接?單片機(jī)與PC的串行接口圖答:MCS-51系列單片機(jī)串行口與PC機(jī)的RS-232C接口不能直接對(duì)接,PC機(jī)RS232采用負(fù)邏輯電平,即邏輯“0”:+3V+15V;邏輯“1”:-3V-15V,單片機(jī)采用的是TTL電平,即電壓小于0.4V 為低電平,大于2.4V為高電平;因此二者不能直接相連,使用時(shí)必須進(jìn)行電平轉(zhuǎn)換,否則將使TTL電路燒壞!必須進(jìn)行電平轉(zhuǎn)換。常用的轉(zhuǎn)換芯片有MAX232等。連接圖如上。21試敘述利用SM2控制位進(jìn)行多級(jí)通訊的過程?答:見8
17、.7及8.7.1節(jié)。22RS485總線有何特點(diǎn)?答:RS-232C是利用傳輸信號(hào)線與公共地之間的電壓差,RS-485是利用信號(hào)導(dǎo)線之間的信號(hào)電壓差。它通過傳輸線驅(qū)動(dòng)器,把邏輯電平變換成電位差,完成始端的信號(hào)傳送;通過傳輸線接收器,把電位差轉(zhuǎn)換成邏輯電平,完成終端的信息接收。RS-485比-232C傳輸距離長、速度快,傳輸速率最大可達(dá)10 Mb/s,最大距離可達(dá)1200 m。RS-485是一點(diǎn)對(duì)多點(diǎn)的通訊接口,一般采用雙絞線的結(jié)構(gòu)。普通的PC機(jī)一般不帶RS-485接口,因此要使用RS-232/RS-485轉(zhuǎn)換器。在計(jì)算機(jī)和單片機(jī)組成的RS-485通信系統(tǒng)中,通常下位機(jī)由單片機(jī)系統(tǒng)組成,主要完成工
18、業(yè)現(xiàn)場(chǎng)信號(hào)的采集和控制。上位機(jī)為工業(yè)PC機(jī),負(fù)責(zé)監(jiān)視下位機(jī)的運(yùn)行狀態(tài),并對(duì)其狀態(tài)信息進(jìn)行集中處理,以圖文方式顯示下位機(jī)的工作狀態(tài)和工業(yè)現(xiàn)場(chǎng)被控設(shè)備的工作狀態(tài)。系統(tǒng)中的各節(jié)點(diǎn)(包括上位機(jī))的識(shí)別是通過設(shè)置不同的站地址來實(shí)現(xiàn)的。單片機(jī)可以通過MAX1487等來完成TTL/ RS-485的電平轉(zhuǎn)換。23. 簡(jiǎn)述LCM1602的主要顯示性能。答:LCM1602可顯示192個(gè)5x7點(diǎn)陣字符,主要是數(shù)字和英文大小寫字母(1602顯示的數(shù)字和字母的碼值,與ASCII碼表中的數(shù)字和字母的碼值相同)。另外,它具有64B的自定義字符RAM,可自行定義8個(gè)5x7點(diǎn)陣字符用于顯示。24.如何用軟件消除鍵盤的抖動(dòng)?答:
19、由于按鍵是機(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ì)引起對(duì)閉合鍵的多次讀入。對(duì)于鍵抖動(dòng)最方便的解決方法就是當(dāng)發(fā)現(xiàn)有鍵按下后,不是立即進(jìn)行掃描,而是延時(shí)大約10ms后再進(jìn)行。由于一個(gè)鍵按下的時(shí)間一般會(huì)持續(xù)上百毫秒,所以延遲10ms后再掃描處理并不遲。25如何確定LED數(shù)碼顯示器的段碼?答:根據(jù)所選用的LED數(shù)碼管的極性(共陽極還是共陰極)以及數(shù)碼中每一個(gè)筆段的引腳與CPU(或其它控制芯片) IO口的引
20、腳的連接來定(稱自定的段碼表)。一般資料上提供的段碼表是標(biāo)準(zhǔn)接法的段碼,即數(shù)碼管的a、b、c、d、e、f、g、dp的引腳要依次接在CPU的Px.0Px.7上,這種接法有時(shí)會(huì)使在PCB布線的時(shí)候不大方便,不如自定的段碼表靈活。26段碼表數(shù)組變量一定要放在CODE存儲(chǔ)區(qū)嗎?放在其它存儲(chǔ)區(qū)會(huì)減少程序的代碼嗎?答:最好放在Code存儲(chǔ)區(qū),當(dāng)然也可以放在內(nèi)部RAM或外部RAM區(qū),但這樣作會(huì)占用本來就非常稀少的內(nèi)部RAM資源和不多的外部RAM資源。由于放在其它區(qū)域仍然要采用程序中的段碼表,所以不僅不能減少程序的代碼量還會(huì)增加把段碼表傳送的程序指令,增加程序的代碼數(shù)量。二、選擇題1. 89c51單片機(jī)在晶振
21、12MHz時(shí),計(jì)數(shù)器對(duì)外部脈沖最大計(jì)數(shù)頻率為_C_。 A. 12MHz B. 1MHz C. 0.5MHz D. 6MHz2. 89c51外接晶振頻率為6MHz,其計(jì)數(shù)器允許輸入外部脈沖的最高頻為 A 。 A. 0.25MHz B. 1MHz C. 6MHz D. 12MHz 3. 下列幾種中斷優(yōu)先級(jí)的次序中, C 為可實(shí)現(xiàn)的次序。 A. ,T1, ,T0,串口 B. 串口,T0,,T1, C. ,T0,T1,串口 D. 串口,,T1,T04. 各中斷源發(fā)出的中斷請(qǐng)求信號(hào),都會(huì)標(biāo)記在MCS-51中的 B 中。 (A)TMOD (B) TCON、SCON (C) IE (D) IP6下面哪一種僅
22、適用于定時(shí)器T0(D)。A.方式0 B.方式1 C.方式2 D.方式37下列說法正確的是 C A、 各中斷發(fā)出的中斷請(qǐng)求信號(hào),都會(huì)標(biāo)記在MCS51系統(tǒng)的IE寄存器中。B、 各中斷發(fā)出的中斷請(qǐng)求信號(hào),都會(huì)標(biāo)記在MCS51系統(tǒng)的IP寄存器中。C、 各中斷發(fā)出的中斷請(qǐng)求信號(hào),都會(huì)標(biāo)記在MCS51系統(tǒng)的TCON與SCON寄存器中。D、 各中斷發(fā)出的中斷請(qǐng)求信號(hào),都會(huì)標(biāo)記在MCS51系統(tǒng)的TMOD寄存器中。8在MCS51中,需要外加電路實(shí)現(xiàn)中斷撤除的是: A A、電平方式的外部中斷 &
23、#160;B、定時(shí)中斷 C、外部串行中斷 D、跳變方式的外部中斷9下列說法正確的是 A A、 特殊功能寄存器PCON,與定時(shí)器/計(jì)數(shù)器的控制無關(guān)。B、 特殊功能寄存器TMOD,與定時(shí)器/計(jì)數(shù)器的控制無關(guān)。C、 特殊功能寄存器IE, 與定時(shí)器/計(jì)數(shù)器的控制無關(guān)。D、 特殊功能寄存器TCON,與定時(shí)器/計(jì)數(shù)器的控制無關(guān)。10下列說法中不正確的是 D A、 同一
24、級(jí)別的中斷請(qǐng)求按時(shí)間的先后順序響應(yīng)。B、 同級(jí)中斷不能嵌套。C、 低優(yōu)先級(jí)中斷請(qǐng)求不能中斷高優(yōu)先級(jí)中斷請(qǐng)求,但是高優(yōu)先級(jí)中斷請(qǐng)求能中斷低優(yōu)先級(jí)中斷請(qǐng)求。D、 同一時(shí)間同一級(jí)別的多中斷請(qǐng)求,將形成阻塞,系統(tǒng)無法響應(yīng)。三、填空題1. 89c51有 5 個(gè)中斷源,可分為 2 個(gè)優(yōu)先級(jí)。上電復(fù)位時(shí) INT0 中斷源的優(yōu)先級(jí)別最高。2當(dāng)單片機(jī)接到外設(shè)的中斷申請(qǐng)時(shí),單片機(jī)響應(yīng)中斷,單片機(jī)將暫停主程序的執(zhí)行,轉(zhuǎn)去執(zhí)行 中斷服務(wù) 程序,執(zhí)行完 中斷服務(wù) ,再執(zhí)行 主 程序。389c51
25、單片機(jī)的中斷源有:外部0中斷,定時(shí)器T0中斷,外部1中斷,定時(shí)器T1中斷,串行口通訊中斷。4閱讀以下程序后填空#include <reg51.h>unsigned char a;void main(void) TMOD=0x02; TL0 =0xd8; TH0 =0xd8; EA=1; ET0=1; TR0=1; while(1); void Timer0() interrupt 1 a+;1)本程序把定時(shí)器/計(jì)數(shù)器 T0 設(shè)置成方式 。2)本程序執(zhí)行時(shí),變量a的內(nèi)容將 。3)程序在 語句處發(fā)生中斷,執(zhí)行完中斷服務(wù)程序后,返回到 語句處。4)本程序中斷服務(wù)程序的入口地址為 。5)是
26、否可將interrupt 1改為interrupt 3? 。答案:1)T0; 2;2)+1;3)while(1); while(1);4)000BH;5)不能。四、是非題1. MCS-51中的基本型89c51共有五個(gè)中斷源,這五個(gè)中斷請(qǐng)求源全部來自外部引腳。F2. 對(duì)MCS-51系列芯片中,當(dāng)使用內(nèi)部RAM時(shí),EA引線端應(yīng)接高電平;而不使用內(nèi)部RAM時(shí),EA引線端則應(yīng)接低電平。F3. MCS-51中的89c51單片機(jī)P3口的各口線,必須作為第二功能使用。F五、編程題1. 在P3.2-P3.4三個(gè)引腳上分別接有三個(gè)發(fā)光二極管,用C51編程實(shí)現(xiàn)三個(gè)發(fā)光二極管依次閃亮,循環(huán)不止。電路原理圖如圖5-2
27、所示。圖5-3 LED循環(huán)閃爍程序框圖圖5-2 LED循環(huán)閃爍原理圖圖解:程序框圖如圖5-3。其C51程序如下:#include <reg51.h>/LED數(shù)碼管位連接定義sbit LED1=P32; /定義SFR中引腳的“位” sbit LED2=P33;sbit LED3=P34;/*- 功能:毫秒延時(shí)函數(shù) 參數(shù):當(dāng)晶振為11.0592MHz時(shí),x為ms數(shù),誤差都為16us;x1000為1秒-*/void delayms(unsigned int x) unsigned char j;while(x-) for(j=0;j<113;j+); void main(void)
28、 /主程序 while(1) LED1=0;LED2=1;LED3=1; delayms(1000);圖5-5 兩位數(shù)碼管動(dòng)態(tài)顯示程序框圖 LED1=1;LED2=0;LED3=1; delayms(1000); LED1=1;LED2=1;LED3=0; delayms(1000); 2電路原理圖如圖5-4。編寫程序LED顯示00,每秒鐘加1,至99,如此循環(huán)不止。圖5-4 兩位LED數(shù)碼管靜態(tài)顯示解:程序框圖如圖5-5,程序如下:#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar
29、 code dispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/*- 功能:毫秒延時(shí)函數(shù) 參數(shù):當(dāng)晶振為11.0592MHz時(shí),x為ms數(shù),誤差都為17us;x1000為1秒-*/void delayms(unsigned int x) unsigned char j;while(x-) for(j=0;j<113;j+); void main(void) /主程序 uchar num=0; while(1) P1=dispcodenum/10; P3= dispcodenum%10;delayms(1000)
30、; num+; if (num>99) num=0; 3設(shè)計(jì)一動(dòng)態(tài)顯示4位8段LED數(shù)碼管的電路原理圖,并編寫程序顯示“5678”。圖5-6 4位LED動(dòng)態(tài)顯示解:電路原理圖如圖5-6。程序如下:#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*-LED數(shù)碼管位選線連接定義注:LED數(shù)碼管段碼線連接在P0口 -*/sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;sbit LED4=P23;uchar code dispcode= /LED顯示09、
31、黑的段碼定義0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;uchar ledbuf4; /4LED顯示緩沖區(qū),ledbuf0為高位,ledbuf4為低位/*-功能:延時(shí)子程序參數(shù):x需延時(shí)的毫秒數(shù) 當(dāng)晶振為11.0592MHz時(shí),延時(shí)為xms-*/void delayms(uint x) uchar j; while(x-) for(j=0;j<113;j+); /*-功能:顯示4位LED函數(shù)(ledbuf0為高位,ledbuf4為低位)說明:P00xff;在Proteus仿真中才用,實(shí)際應(yīng)用時(shí)可去掉-*/void Dis_
32、4LED(uchar *ledbuf) P0=dispcodeledbuf0;LED1=1;LED2=0;LED3=0;LED4=0; delayms(1); P0=dispcodeledbuf1;LED1=0;LED2=1;LED3=0;LED4=0; delayms(1); P0=dispcodeledbuf2;LED1=0;LED2=0;LED3=1;LED4=0; delayms(1); P0=dispcodeledbuf3;LED1=0;LED2=0;LED3=0;LED4=1; delayms(1); void main(void) ledbuf0=5; ledbuf1=6; le
33、dbuf2=7; ledbuf3=8; while(1) Dis_4LED(ledbuf); 7根據(jù)圖5-7的電路原理,設(shè)計(jì)一個(gè)獨(dú)立式鍵盤管理程序,在檢測(cè)到鍵按下時(shí),點(diǎn)亮對(duì)應(yīng)的LED。鍵閉合時(shí),采用軟件延時(shí)消抖的處理,鍵釋放時(shí)不加消抖動(dòng)處理。圖5-7解: 45首先設(shè)計(jì)一個(gè)頭文件(文件名key.h),內(nèi)容如下:/*-文件名:key.h頭文件功能:三獨(dú)立鍵處理函數(shù) -*/#ifndef _KEY_H_#define _KEY_H_#include <reg51.h>#define uchar unsigned char#define UP 0x01 /定義鍵號(hào)#define DOWN
34、0x02#define ENTER 0x03 sbit UP_key =P10; /定義鍵與51單片機(jī)的引腳sbit DOWN_key =P11;sbit ENTER_key=P12;/*- 功能:毫秒延時(shí)函數(shù) 參數(shù):當(dāng)晶振為11.0592MHz時(shí),x為ms數(shù);誤差都為16us;x1000為1秒 引用舉例:delayms(500); 表示延時(shí)500毫秒。-*/void delayms(unsigned int x) unsigned char j;while(x-) for(j=0;j<113;j+); /*- 功能: 獲取鍵號(hào) 返回: key=鍵號(hào)1-3; key=0無鍵按下。引用舉例
35、:如之前定義了一個(gè)uchar的變量 Key_NUM,則可以 Key_NUM=KeycanNUM(); Key_NUM將被賦予按鍵后的鍵號(hào)值。-*/ uchar KeyscanNUM(void) uchar key=0; / 無鍵按下,key=0 UP_key=1;DOWN_key=1;ENTER_key=1; if (UP_key=0 )delayms(10); if(UP_key=0) key=UP; else key=0; if (DOWN_key=0 )delayms(10); if(DOWN_key=0)key=DOWN; else key=0; if (ENTER_key=0)del
36、ayms(10); if(ENTER_key=0)key=ENTER;else key=0; return key; #endif程序(文件名3keydemo.c)如下:/*-文件名:3keydemo.c功能:獨(dú)立鍵處理演示程序-*/#include "key.h"sbit LED_RED = P32; /定義LED引腳sbit LED_YELLOW= P33;sbit LED_GREEN = P34;/*-鍵處理子函數(shù)功能:按UP鍵紅燈亮,按ENTER鍵黃燈亮,按DOWN鍵綠燈亮,-*/void KeyProc(uchar key) switch(key) case UP
37、: LED_RED=0;LED_YELLOW=1;LED_GREEN=1;break; case DOWN: LED_RED=1;LED_YELLOW=0;LED_GREEN=1;break; case ENTER:LED_RED=1;LED_YELLOW=1;LED_GREEN=0;break; /*主程序void main (void) uchar key;while(1) key=KeyscanNUM(); if(key=UP | key=DOWN | key=ENTER) KeyProc(key); key=0; 8根據(jù)圖5-8所示電路,(1)編寫LED(09)的段碼;(2)設(shè)計(jì)一個(gè)程
38、序,開機(jī)后LED顯示0,以后每按一次鍵,顯示的數(shù)字加1,顯示9后,再回到0,并照此循環(huán)。圖5-8解:#include <reg51.h>#define uchar unsigned charsbit key=P34; /鍵引腳uchar keycounter=0;uchar code dispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff; / LED(09)的段碼void main(void) /主程序 P2=dispcode0; while(1) if(key=0) /如鍵按下 if(key=1) / 檢測(cè)
39、鍵是否松開 keycounter+; if(keycounter>9)keycounter=0; P2=dispcodekeycounter; 9用Proteus設(shè)計(jì)一個(gè)4x4的鍵盤,一位7段LED數(shù)碼管顯示的電路,編寫程序?qū)存I的編碼顯示出來(0F)。圖5-9解:電路原理圖如圖5-9。#include "4x4KEY.H" /4x4KEY.H見教材5.2.4, 但要把無鍵按下的返回值改為16#define uchar unsigned charuchar code dispcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x
40、80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf; / LED(0F,)的段碼void main(void) uchar keynum=16; P2=dispcode16; /顯示“” while(1) Keynum=Get_Key();if(keynum !=16) /有鍵按下 P2=dispcodekeynum;/P2顯示按鍵值 10利用51單片機(jī)的定時(shí)器和中斷方式,在共陽極的兩個(gè)LED上顯示0099(每次增加1秒)反復(fù)循環(huán)的秒鐘。請(qǐng)?jiān)O(shè)計(jì)電路原理圖和程序。解:電路原理圖如圖5-10,程序如下:#include <reg51.h>#define
41、 uchar unsigned char#define uint unsigned intuchar code DispCode= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;uchar num;uchar timecounter=100;sbit LED1=P36;sbit LED0=P37;void delayms(unsigned int x)圖5-10 動(dòng)態(tài)LED顯示原理圖 兩位LED數(shù)碼管動(dòng)態(tài)顯示 unsigned char j; while(x-) for(j=0;j<113;j+);void main(voi
42、d) /主程序 TMOD=0x01; TL0=0xf0; TH0=0xd8; EA=1; /開總允許中斷 ET0=1; TR0=1; while(1) P1=DispCodenum/10;LED1=1;LED0=0;delayms(5); P1=DispCodenum%10;LED1=0;LED0=1;delayms(5); void timer0(void) interrupt 1 TL0=0xf0; TH0=0xd8; timecounter-; if(timecounter=0) timecounter=100; num+; if(num>99)num=0; 11如圖5-11,編寫
43、程序,每次按鍵使外部中斷0產(chǎn)生中斷,在中斷服務(wù)程序中使外接發(fā)光二極管LED改變一次亮滅狀態(tài)。解:程序如下:#include <reg51.h> 5V INT0 P1.05V圖5.11 原理圖sbit P1_0=P10;void main(void) /主程序 IT0=1; /負(fù)跳變觸發(fā)中斷 EA=1; /開總允許中斷 EX0=1; /開INT0中斷while(1); /無限循環(huán),等待下一次中斷void Int0(void) interrupt 0 /中斷服務(wù)程序,工作寄存器采用0組(省略了using 0) P1_0=P10; /P1.0取反,改變LED亮滅的狀態(tài)12如圖5.12,已
44、知MCS-51單片機(jī)系統(tǒng)晶振頻率為12MHz,試編寫程序,用定時(shí)器T0,工作方式2,使P1.0引腳輸出如下周期方波。0.1ms 0.1ms 圖5.12 方波圖解:每隔0.1ms改變一次P1.0的輸出狀態(tài),即形成周期方波,用T0方式2,定時(shí)實(shí)現(xiàn)。計(jì)算初值:C=28-t/T=256(0.0001)/10-6=256-100=156=9CH程序如下:#include <reg51.h>sbit P1_0=P10;void main(void) /主程序 TMOD=0x02; /置定時(shí)器T0為方式2TL0 =0x9c; /置定時(shí)器初值 TH0 =0x9c; EA=1; /開總中斷 ET0=
45、1; /開T0中斷 TR0=1; /啟動(dòng)定時(shí)while(1); /無限循環(huán),等待下一次定時(shí)中斷void Timer0() interrupt 1 /T0中斷服務(wù)程序 P1_0=P10; /P1.0取反,產(chǎn)生方波13如圖5.13,用P1.0驅(qū)動(dòng)LED亮1秒、滅1秒地閃爍,設(shè)晶振頻率為12MHz。解: MCS-51定時(shí)器最長的定時(shí)時(shí)間達(dá)不到1秒,這里采用了一種長定時(shí)方法:先做一個(gè)10ms即0.01秒的定時(shí),增加一個(gè)軟件計(jì)數(shù)器(如TimeCouter),記錄0.01秒定時(shí)中斷次數(shù),計(jì)滿100個(gè)中斷為1秒。程序框圖見圖5.14。計(jì)數(shù)初值=65536 - 0.01/10-6=D8F0HS為TimeCou
46、nterP1.089C51+5V200圖5.13 原理圖圖5.14 定時(shí)器例2程序框圖#include <reg51.h>#define uchar unsigned charsbit Led=P10;uchar TimeCouter100;void main(void) /主程序 TMOD=0x10; /置定時(shí)器T1為方式1TL1 =0xf0; /置定時(shí)器初值 TH1 =0xd8; EA=1; /開總中斷 ET1=1; /開T1中斷 TR1=1; /啟動(dòng)定時(shí) Led=0;while(1); /無限循環(huán),等待下一次定時(shí)中斷 void Timer1() interrupt 3 /T1
47、中斷服務(wù)程序 TL1 =0xf0; /重置定時(shí)器初值 TH1 =0xd8; TimeCounter-; if(TimeCounter=0) TimeCounter=100; Led=Led;15 引腳輸入被檢測(cè)信號(hào),用門控方式測(cè)量正脈沖寬度(設(shè)脈寬小于65.5ms)。分析:采用T1的門控制方式,使T1的啟動(dòng)受的控制,當(dāng)GATA=1,TR1=1時(shí),一旦引腳輸入高電平時(shí),T1才啟動(dòng)計(jì)時(shí),直至出現(xiàn)低電平,停止計(jì)時(shí)。為了測(cè)量確保真正從高電平上升沿開始計(jì)時(shí),T1的計(jì)數(shù)要先等到出現(xiàn)一個(gè)高電平后,下一個(gè)高電平到來才開始進(jìn)行,見圖5.15。程序主要部分如下:#include <reg51.h>#defined uint unsigned intsbit InputPulse=P33;void main(void) /主程序 uchar PulseWide; TMOD=0x90; /置T1,門控方式、定時(shí)器,工作方式1TL1 =0x00; /置定時(shí)器初值 TH1 =0x00; while(InputPulse=0) TR1=1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 方案:辦公腳手架施工規(guī)范
- 現(xiàn)代化進(jìn)程中的職業(yè)教育:路徑優(yōu)化與實(shí)證分析
- 小學(xué)語文教師專業(yè)發(fā)展:學(xué)科知識(shí)復(fù)習(xí)資料匯編
- 5G技術(shù)對(duì)農(nóng)業(yè)新質(zhì)生產(chǎn)力影響的研究與實(shí)踐探索
- 物理知識(shí)精粹
- 村級(jí)扶貧電站管理辦法
- 大型集團(tuán)采購決策中的比價(jià)機(jī)制設(shè)計(jì)與風(fēng)險(xiǎn)控制
- 語文雙基教學(xué)中的多感官協(xié)同訓(xùn)練模式研究
- 家庭安全自查表
- 起重機(jī)事故鑒定
- 2025中國系統(tǒng)性紅斑狼瘡診療指南解讀課件
- 成人重癥患者顱內(nèi)壓增高防控護(hù)理專家共識(shí)
- 2025至2030中國家用血壓計(jì)行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 吉林省長春市2023?2024學(xué)年高二下冊(cè)期末考試數(shù)學(xué)科試卷附解析
- 主管護(hù)師《相關(guān)專業(yè)知識(shí)》考試真題及答案(2025年)
- 綠化所倉庫管理制度
- 聘請(qǐng)美容學(xué)徒合同協(xié)議
- 2025年全國保密教育線上培訓(xùn)考試試題庫(含答案)含答案詳解
- 2025年江蘇省南京市鼓樓區(qū)中考一模英語試卷(含答案)
- 機(jī)場(chǎng)旅客醫(yī)療救援應(yīng)急預(yù)案
- 非計(jì)劃再次手術(shù)知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論