單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用)_第1頁
單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用)_第2頁
單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用)_第3頁
單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用)_第4頁
單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用).單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用).單片機C51程序設(shè)計課后習(xí)題答案(復(fù)習(xí)專用).第一章1.給出以下有符號數(shù)的原碼、反碼和補碼(假定計算機字長為8位)。+45-89-6+112答:【+45】原=00101101,【+45】反=00101101,【+45】補=00101101-89】原=,【-89】反=,【-89】補=-6】原=,【-6】反=,【-6】補=【+112】原=01110000,【+45】反=01110000,【+45】補=01110000指明以下字符在計算機內(nèi)部的表示形式。AsENdfJFmdsv120答:41H73H45H4E

2、H64H66H4AH46H6DH64H73H76H31H32H30H什么是單片機答:單片機是把微型計算機中的微辦理器、儲蓄器、I/O接口、準時器/計數(shù)器、串行接口、中止系統(tǒng)等電路集成到一個集成電路芯片上形成的微型計算機。因此被稱為單片微型計算機,簡稱為單片機。單片機的主要特色是什么答:主要特色以下:在儲蓄器構(gòu)造上,單片機的儲蓄器采納哈佛(Harvard)構(gòu)造在芯片引腳上,大多數(shù)采納分時復(fù)用技術(shù)在內(nèi)部資源接見上,采納特別功能存放器(SFR)的形式在指令系統(tǒng)上,采納面向控制的指令系統(tǒng)內(nèi)部一般都集成一個全雙工的串行接口單片機有很強的外面擴展能力指明單片機的主要應(yīng)用領(lǐng)域。答:單機應(yīng)用:1)工業(yè)自動化控

3、制;2)智能儀器儀表;3)計算機外面設(shè)施和智能接口;4)家用電器多機應(yīng)用:功能彌散系統(tǒng)、并行多機辦理系統(tǒng)和局部網(wǎng)絡(luò)系統(tǒng)。第二章MCS-51單片機由哪幾個部分構(gòu)成答:MCS-51單片機主要由以下部分構(gòu)成的:時鐘電路、中央辦理器(CPU)、儲蓄器系統(tǒng)(RAM和ROM)、準時/計數(shù)器、并行接口、串行接口、中止系統(tǒng)及一些特別功能存放器(SFR)。MCS-51的標記存放器有多少位,各位的含義是什么答:MCS-51的標記存放器PSW有8位;DDDDDDDD76543210CAFRRO-PC0S1S0V含義以下:C:進位或借位標記位。AC:協(xié)助進位或借位可標記位。F0:用戶標記位。是系統(tǒng)預(yù)留給用戶自己定義的

4、標記位。RS1、RS0、:存放器組選擇位??捎密浖梦换蚯辶?,用于從四組工作寄存器中選定目前的工作存放器組。OV:溢出標記位。在加法或減法運算時,如運算的結(jié)果高出8位二進制數(shù)的范圍,則OV置1,標記溢出,不然OV清零。P:奇偶標記位。用于記錄指令履行后累加器A中1的個數(shù)的奇偶性。若累加器A中1的個數(shù)為奇數(shù),則P置位,若累加器A中1的個數(shù)為偶數(shù),則P清零。此中不決義,可供用戶使用。在8051的儲蓄器構(gòu)造中,內(nèi)部數(shù)據(jù)儲蓄器可分為幾個地區(qū)各有什么特點答:片內(nèi)數(shù)據(jù)儲蓄器按功能能夠分紅以下幾個部分:工作存放器組區(qū)、位尋址區(qū)、一般RAM區(qū)和特別功能存放器區(qū),此中還包含貨倉區(qū)。工作存放器組區(qū),00H1FH單

5、元,可用R0R7等8個存放器接見;位尋址區(qū),20H2FH單元,可按位方式接見;一般RAM區(qū),30H7FH單元;貨倉區(qū),可從08到7F單元;特別功能存放器區(qū)位于80HFFH單元。什么是貨倉說明MCS-51單片機的貨倉辦理過程。答:貨倉是按先入后出、后入先出的原則進行管理的一段儲蓄地區(qū)。CS-51單片機的貨倉是向上生長型的,存入數(shù)據(jù)是從地點低端向高端延長,拿出數(shù)據(jù)是從地點高端向低端延長。入棧和出棧數(shù)據(jù)是以字節(jié)為單位的。入棧時,SP指針的內(nèi)容先自動加1,此后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時,先把SP指針指向單元的數(shù)據(jù)拿出,此后再把SP指針的內(nèi)容自動減1。MCS-51單片機有多少根I/O線它們

6、和單片機的外面總線有什么關(guān)系答:MCS-51單片機有32根I/O線,由P0口經(jīng)地點鎖存器供給低8位(A7A0),P2口供給高8位(A15A8)而形成。數(shù)據(jù)總線寬度為8位,由P0口直接供給??刂瓶偩€由第二功能狀態(tài)下的P3口和4根獨立的控制線RST、EA、ALE和PSEN構(gòu)成。什么是機器周期MCS-51單片機的一個機器周期包含多少個時鐘周期答:機器周期:機器周期是單片機的基本操作周期,每個機器周期包含S1、S2、S66個狀態(tài),每個狀態(tài)包含兩拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機器周期包含12個時鐘周期。假如時鐘周期的頻次為12MHz,那么ALE信號的頻次為多少答:2MHZ第三

7、章1在MCS-51單片機中,尋址方式有幾種此中對片內(nèi)RAM能夠用哪幾種尋址方式對片外RAM能夠用哪幾種尋址方式答:尋址方式可分為數(shù)的尋址和指令尋址,數(shù)的尋址有:常數(shù)尋址(立刻尋址)、存放器數(shù)尋址(存放器尋址)、儲蓄器數(shù)尋址(直接尋址方式、存放器間接尋址方式、變址尋址方式)和位尋址,指令的尋址有絕對尋址和相對尋址。片內(nèi)RAM尋址有:存放器尋址、直接尋址方式和存放器間接尋址方式。片外RAM尋址有:存放器間接尋址方式。2在對片外RAM單元尋址中,用Ri間接尋址與用DPTR間接尋址有什么區(qū)別答:片外數(shù)據(jù)儲蓄器尋址中,用Ri間接尋址只好接見低端的256字節(jié)單元,而用DPTR作指針間接接見可接見整個64K

8、字節(jié)。3在位辦理中,位地點的表示方式有哪幾種答:1直接位地點(00H0FFH)。比方:20H2字節(jié)地點帶位號。比方:表示20H單元的3位。3特別功能存放器名帶位號。比方:表示P0口的1位。4位符號地點。比方:TR0是準時/計數(shù)器T0的啟動位。4寫出達成以下操作的指令。(1)R0的內(nèi)容送到R1中。MOVA,R0MOVR1,A(2)片內(nèi)RAM的20H單元內(nèi)容送到片內(nèi)RAM的40H單元中。MOV40H,20H(3)片內(nèi)RAM的30H單元內(nèi)容送到片外RAM的50H單元中。MOVA,30HMOVR0,#50HMOVXR0,A(4)片內(nèi)RAM的50H單元內(nèi)容送到片外RAM的3000H單元中。MOVA,50

9、HMOVDPTR,#3000HMOVXDPTR,A(5)片外RAM的2000H單元內(nèi)容送到片外RAM的20H單元中。MOVDPTR,#2000HMOVXA,DPTRMOV20H,A(6)片外RAM的1000H單元內(nèi)容送到片外RAM的4000H單元中。MOVDPTR,#1000HMOVXA,DPTRMOVDPTR,#4000HMOVDPTR,A(7)ROM的1000H單元內(nèi)容送到片內(nèi)RAM的50H單元中。MOVA,#0MOVDPTR,#1000HMOVCA,A+DPTRMOV20H,A(8)ROM的1000H單元內(nèi)容送到片外RAM的1000H單元中。MOVA,#0MOVDPTR,#1000HMO

10、VCA,A+DPTRMOVXDPTR,A5劃分以下指令有什么不同樣(1)MOVA,20H和MOVA,#20H答:前者源操作數(shù)是直接尋址,后者源操作數(shù)立刻尋址。(2)MOVA,R1和MOVXA,R1答:前者源操作數(shù)是接見片內(nèi)數(shù)據(jù)儲蓄器,后者源操作數(shù)接見片外數(shù)據(jù)儲蓄器低256字節(jié)。(3)MOVA,R1和MOVA,R1答:前者源操作數(shù)是存放器尋址,后者源操作數(shù)存放器間接尋址。(4)MOVXA,R1和MOVXA,DPTR答:前者源操作數(shù)是接見片外數(shù)據(jù)儲蓄器低256字節(jié),后者源操作數(shù)訪問片外數(shù)據(jù)儲蓄器整個64K字節(jié)。(5)MOVXA,DPTR和MOVCA,A+DPTR答:前者源操作數(shù)是接見片外數(shù)據(jù)儲蓄器

11、,后者源操作數(shù)接見程序數(shù)據(jù)儲蓄器。6設(shè)片內(nèi)RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析以下指令履行后片內(nèi)RAM的20H、40H、10H單元以及P1、P2中的內(nèi)容。MOVR0,#20HMOVA,R0;A=40HMOVR1,A;R1=40HMOVA,R1;A=10HMOVR0,P1;(40H)=0CAHMOVP2,P1P2=0CAHMOV10H,A(10H)=10HMOV20H,10H(20H)=10H結(jié)果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH7已知(A)=02H,(R1)=7FH,(DPTR)

12、=2FFCH,片內(nèi)RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,試分別寫出以下各條指令履行后目標單元的內(nèi)容。(1)MOVA,R1結(jié)果:累加器A等于70H(2)MOVXDPTR,A結(jié)果:片外RAM(2FFCH)單元等于02H(3)MOVCA,A+DPTR結(jié)果:累加器A等于64H(4)XCHDA,R1結(jié)果:累加器A等于00H,片內(nèi)RAM(7FH)單元等于72H8已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片內(nèi)RAM(78H)=0DDH,(80H)=6CH,試分別寫出以下指令履行后目標單元的結(jié)果和相應(yīng)標記位的值。(1)ADDA,R1;

13、累加器A等于55H,CY等于1(2)SUBBA,#77H;累加器A等于00H,CY等于0(3)MULAB;累加器A等于E0H,B存放器等于01H,CY等于1,OV等于0(4)DIVAB;累加器A等于1EH,B存放器等于00H,CY、OV等于0(5)ANL78H,#78H;片內(nèi)RAM(78H)單元等于58H(6)ORLA,#0FH;累加器A等于7FH(7)XRL80H,A;片內(nèi)RAM(80H)等于14H9設(shè)(A)=83H,(R0)=17H,(17H)=34H,分析當履行完下邊指令段后累加器A、R0、17H單元的內(nèi)容。ANLA,#17H;A=03HORL17H,A;(17H)=37HXRLA,R0

14、;A=34HCPLA;A=CBH結(jié)果:A=CBH,(R0)=17H,(17H)=37H10寫出達成以下要求的指令。(1)累加器A的低2位清零,其余位不變。ANLA,#B(2)累加器A的高2地點“1”,其余位不變。ORLA,#B(3)累加器的高4位取反,其余位不變。XRLA,#B(4)累加器第0位、2位、4位、6位取反,其余位不變。XRLA,#01010101B11說明LJMP指令與AJMP指令的差別答:LJMP指令后邊供給的是16位目標地點,因此能夠轉(zhuǎn)移到64KB程序儲蓄器的隨意地點,弊端是:履行時間長,字節(jié)數(shù)多。AJMP指令后帶的是11位直接地點,履行時,先將程序指針PC的值加2(該指令長度

15、為2字節(jié)),此后把指令中的11位地點addr11送給程序指針PC的低11位,而程序指針的高5位不變,只幸好目前2K范圍內(nèi)轉(zhuǎn)移。12設(shè)目前指令CJNEA,#12H,10H的地點是0FFEH,若累加器A的值為10H,則該指令履行后的PC值為多少若累加器A的值為12H呢答:指令履行后的PC值為1011H,若累加器A的值為12H,則指令履行后的PC值為1001H。13用位辦理指令實現(xiàn)=()/的邏輯功能。程序:MOVC,ORLC,ANLC,ORLC,/MOV,C14以下程序段匯編后,從1000H單元開始的單元內(nèi)容是什么ORG1000HTAB:DB12H,34HDS3DW5567H,87H答:(1000H

16、)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H15試編一段程序,將片內(nèi)RAM的20H、21H、22H單元的內(nèi)容挨次存入片外RAM的20H、21H、22H中。程序:MOVR0,#20HMOVR2,#03HLOOP:MOVA,R0MOVXR0,AINCR0DJNZR2,LOOPSJMP$16編程實現(xiàn)將片外RAM的2000H2030H單元的內(nèi)容,所有搬到片內(nèi)RAM的20H單元開始地點,并將源地點清零。程序:MOVR0,#20HMOVDPTR,#200

17、0HMOVR2,#30HLOOP:MOVXA,DPTRMOVR0,AMOVA,#00MOVXDPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP$17編程將片外RAM的1000H單元開始的100個字節(jié)數(shù)據(jù)相加,結(jié)果放于R7R6中。程序:MOVDPTR,#1000HMOVR2,#100MOVR7,#00MOVR6,#00LOOP:MOVXA,DPTRADDA,R6MOVR6,AMOVA,R7ADDCA,#0MOVR7,AINCDPTRDJNZR2,LOOPSJMP$18編程實現(xiàn)R4R3R2,結(jié)果放于R7R6R5中。程序:ORG0100HMUL1:MOVA,R2MOVB,R3MULA

18、B;R2R3,結(jié)果的低字節(jié)直接存入積的R5MOVR5,A;結(jié)果的高字節(jié)存入R6中暫存起來MOVR6,BMUL2:MOVA,R2MOVB,R4MULAB;R2R4,結(jié)果的低字節(jié)與R6相加后,再存入R6中ADDA,R6MOVR6,AMOVA,B;結(jié)果的高字節(jié)加進步位位后存入R7中ADDCA,#00MOVR7,ASJMP$19編程實現(xiàn)把片內(nèi)RAM的20H單元的0位、1位,21H單元的2位、3位,22H單元的4位、5位,23H單元的6位、7位,按原地點關(guān)系拼裝在一同放于R2中。程序:MOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,C

19、MOVC,MOV,CMOVC,MOV,CMOVR2,A20用查表的方法實現(xiàn)一位十六進制數(shù)變換成ASCII。程序:(設(shè)一位十六進制數(shù)放在R2中,輪換的ASCII也放于R2中)C16STASC:MOVDPTR,#TABMOVA,R2MOVCA,A+DPTRMOVR2,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,391H,41H,42H,43H,44H,45H,46H21編程統(tǒng)計從片外RAM2000H開始的100個單元中“0”的個數(shù)放于R2中。程序:MOVDPTR,#2000HMOVR3,#100MOVR2,#00LOOP:MOVXA,DPTRJNZ

20、NEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$第四章C語言有哪些特色答:C語言擁有以下特色:語言簡短、緊湊,使用方便、靈巧運算符豐富數(shù)據(jù)構(gòu)造豐富,擁有現(xiàn)代化語言的各樣數(shù)據(jù)構(gòu)造可進行構(gòu)造化程序設(shè)計能夠直接對計算機硬件進行操作生成的目標代碼質(zhì)量高,程序履行效率高可移植性好有哪些數(shù)據(jù)種類是MCS-51單片機直接支持的答:MCS-51單片機直接支持的數(shù)據(jù)種類標準分為基本數(shù)據(jù)種類和組合數(shù)據(jù)種類,基本數(shù)據(jù)種類有字符型char、短整型short、整型int、長整型long、浮點型float、雙精度型double、特別功能存放器型和位種類,此中char型與short型同樣,floa

21、t型與double型同樣。組合數(shù)據(jù)種類有數(shù)組種類、構(gòu)造體種類、共同體種類和列舉種類,其余還有指針種類和空種類。C51獨有的數(shù)據(jù)種類有哪些答:C51獨有的數(shù)據(jù)種類有特別功能存放器型和位種類。C51中的儲蓄器種類有幾種,它們分別表示的儲蓄器地區(qū)是什么答:C51中的儲蓄器種類有6種,分別以下:data:直接尋址的片內(nèi)RAM低128B,接見速度快bdata:片內(nèi)RAM的可位尋址區(qū)(20H2FH),贊成字節(jié)和位混淆接見idata:間接尋址接見的片內(nèi)RAM,贊成接見所有片內(nèi)RAMpdata:用Ri間接接見的片外RAM低256Bxdata:用DPTR間接接見的片外RAM,贊成接見所有64KB片外RAMcod

22、e:程序儲蓄器ROM64KB空間在C51中,bit位與sbit位有什么差別答:bit位種類符用于定義一般的位變量。儲蓄器種類只好是bdata、data、idata,只好是片內(nèi)RAM的可位尋址區(qū),嚴格來說只好是bdata。sbit位種類符用于定義在可位尋址字節(jié)或特別功能存放器中的位,定義時需指明其位地點,能夠是位直接地點,能夠是可位尋址變量帶位號,也能夠是特別功能存放器名帶位號。在C51中,經(jīng)過絕對地點來接見的儲蓄器有幾種答:經(jīng)過絕對地點來接見儲蓄器有三種方法:1.使用C51運轉(zhuǎn)庫中預(yù)約義宏。2.經(jīng)過指針接見。3.使用C51擴展重點字_at_在C51中,中止函數(shù)與一般函數(shù)有什么不同樣答:中止函數(shù)

23、在定義時后邊帶interruptm修飾符,m的取值為031,對應(yīng)的中止狀況以下:0外面中止0,1準時/計數(shù)器T0,2外面中止1,3準時/計數(shù)器T1,4串行口中止,5準時/計數(shù)器T2,其余值預(yù)留。編寫MCS-51中止函數(shù)需要注意以下幾點。(1)中止函數(shù)不可以夠進行參數(shù)傳達,假如中止函數(shù)中包含任何參數(shù)聲明都將致使編譯犯錯。(2)中止函數(shù)沒有返回值。(3)在任何狀況下都不可以夠直接調(diào)用中止函數(shù)(4)假如在中止函數(shù)中調(diào)用了其余函數(shù),則被調(diào)用函數(shù)所使用的存放器必然與中止函數(shù)同樣,不然會產(chǎn)生不正確的結(jié)果。(5)C51編譯器對中止函數(shù)編譯時會自動在程序開始和結(jié)束處加上相應(yīng)的內(nèi)容。(6)C51編譯器從絕對地點

24、8m+3處產(chǎn)生一此中止向量,此中m為中止號,也即interrupt后邊的數(shù)字。該向量包含一個到中止函數(shù)進口地點的絕對跳轉(zhuǎn)。(7)中止函數(shù)最好寫在文件的尾部,而且嚴禁使用extern儲蓄種類說明。防備其余程序調(diào)用。按給定的儲蓄種類和數(shù)據(jù)種類,寫出以下變量的說明形式。(1)在data區(qū)定義字符變量val1。chardataval1;(2)在idata區(qū)定義整型變量idataval2;(3)在xdata區(qū)定義無符號字符型數(shù)組val34。unsignedcharxdataval34;(4)在xdata區(qū)定義一個指向char種類的指針px。charxdata*px;(5)定義可尋址位變量

25、flag。bitflag;(6)定義特別功能存放器變量P3。sfrP3=0 xa0;(7)定義特別功能存放器變量SCON。sfrSCON=0 x98;(8)定義16位的特別功能存放器T0。sfr16T0=0 x8a;寫出以下關(guān)系表達式或邏輯表達式的結(jié)果,設(shè)a=3,b=4,c=5。(1)a+bc&b=c結(jié)果:假(2)a|b+c&b-c結(jié)果:真(3)!(ab)&!c|1結(jié)果:真(4)!(a+b)+c-1&b+c/2結(jié)果:假寫出以下C51程序的履行結(jié)果。(1)#includeexternserial_initial();main()intx,y,z;serial_initial();x=y=8;z=

26、+x;printf(n%d%d%d,y,z,x);x=y=8;z=x+;printf(n%d%d%d,y,z,x);x=y=8;z=-x;printf(n%d%d%d,y,z,x);x=y=8;z=x-;printf(n%d%d%d,y,z,x);printf(n);while(1);結(jié)果:899889877887(2)#includeexternserial_initial();main()intx,y,z;serial_initial();printf(inputdatax,yn);scanf(%d%d,&x,&y);printf(nxyxyxyx=yx!=yx=y);printf(n);

27、printf(n%3d%3d,x,y);z=xy;printf(%5d,z);z=xy;printf(%5d,z);z=x=y;printf(%5d,z);z=x!=y;printf(%5d,z);z=x=y;printf(%5d,z);while(1);履行結(jié)果:inputdatax,y12xyxyxyx=yx!=yx=y12110010(3)#includeexternserial_initial();main()intx,y,z;serial_initial();printf(inputdatax,yn);scanf(%d%d,&x,&y);printf(nxy!xx|yx&y);pri

28、ntf(n%3d%3d,x,y);z=!y;printf(%5d,z);z=x|y;printf(%5d,z);z=x&y;printf(%5d,z);printf(n);printf(n);printf(Thatisalln);while(1);履行結(jié)果:inputdatax,yxy!xx|yx&y12011Thatisall(4)#includeexternserial_initial();main()inta,b;unsignedintx,y;serial_initial();a=b=0 xaa55;x=y=0 xaa55;printf(na=%4xb=%4xx=%4xy=%4x,a,b

29、,x,y);a=a1;x=x1;printf(na=%4xb=%4xx=%4xy=%4x,a,b,x,y);printf(n);printf(n);printf(Thatisall.n);while(1);履行結(jié)果:a=aa55b=aa55x=aa55y=aa55a=54aab=d52ax=54aay=552aThatisall.break和continue語句的差別是什么答:break語句能夠跳出switch構(gòu)造,使程序連續(xù)履行switch構(gòu)造后邊的一個語句。break語句還能夠夠從循環(huán)體中跳出循環(huán),提早結(jié)束循環(huán)而接著履行循環(huán)構(gòu)造下邊的語句。continue語句用在循環(huán)構(gòu)造中,用于結(jié)束本次循

30、環(huán),跳過循環(huán)體中continue下邊還沒有履行的語句,直接進行下一次能否履行循環(huán)的判斷。continue語句和break語句的差別在于:continue語句但是結(jié)束本次循環(huán)而不是停止整個循環(huán);break語句則是結(jié)束循環(huán),不再進行條件判斷。用分支構(gòu)造編程實現(xiàn):輸入“1”顯示“A”,輸入“2”顯示“B”,輸入“3”顯示“C”,輸入“4”顯示“D”,輸入“5”結(jié)束。參照程序:#include#includevoidmain(void)unsignedcharx;SCON=0 x52;輸入3個無符號的字符數(shù)據(jù),要求按由大到小的次序輸出。參照程序:#include#includevoidmain(voi

31、d)unsignedcharx,y,z,m;SCON=0 x52;用3種循環(huán)構(gòu)造編寫程序?qū)崿F(xiàn)輸出1到10的平方之和。參照程序:(1)while循環(huán)#include對一個由5個元素構(gòu)成的無符號字符數(shù)組按由小到大的順序進行排序。參照程序:#include用指針實現(xiàn),輸入3個無符號字符數(shù)據(jù),按由大到小的次序輸出。參照程序:#include有3個學(xué)生,每個學(xué)生都包含學(xué)號、姓名和成績,要求找出成績最高的學(xué)生的姓名和成績。參照程序:#includenumber);printf(inputname:n);scanf(%s,);printf(inputgrade:n);scanf(%d,&p1

32、i.grade);for(i=1;ip1j.grade)j=i;printf(成績最高的學(xué)生是:%s,成績是:%d,,p1j.grade);printf(n);while(1);第五章1單片機C語言與匯編語言混淆編程有哪幾種方式平常采納什么方式答:單片機C語言和匯編語言混淆編程分為匯編中調(diào)用C51函數(shù)和C51程序中引用匯編,平常使用的是在C51程序中引用匯編。在C51程序中使用匯編語言有兩種狀況:一種是匯編程序部分和C51程序部分為不同樣的模塊,或不同樣的文件,平常由C51程序調(diào)用匯編程序模塊的變量和函數(shù)(也可稱為子程序或過程);另一種是嵌入式匯編,即在C51程序中嵌入一段匯編

33、語言程序。2簡述C51程序調(diào)用匯編程序時如何實現(xiàn)參數(shù)傳達。答:C51中調(diào)用匯編程序進行參數(shù)傳達時都必然嚴格恪守C51函數(shù)的參數(shù)和返回值的有關(guān)商定。行參數(shù)傳達的方式有兩種,一種是經(jīng)過存放器傳達參數(shù),C51中不同樣種類的實參會存入相應(yīng)的存放器,在匯編中只需對相應(yīng)存放器進行操作,即可達到傳達參數(shù)的目的;第二種是經(jīng)過固定儲蓄區(qū)傳達。3簡述嵌入式匯編的實現(xiàn)方法。答:在C51程序中嵌入?yún)R編程序平常的辦理方法以下。第一步:在C文件中以以下方式嵌入?yún)R編程序。第二步:在KeilC51軟件的Project窗口右擊嵌入?yún)R編程序的C文件,在彈出的快捷菜單中選擇Optionsfor.命令,選中右側(cè)的GenerateAs

34、semblerSRCFile和AssembleSRCFile復(fù)選框,使檢查框由灰色變?yōu)楹谏?有效)狀態(tài)。第三步:依據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如Small模式時,是加入到工程中,該文件必然作為工程的最后文件。4簡述C51中調(diào)用匯編程序的實現(xiàn)方法。答:編寫為C51調(diào)用的匯編程序,參數(shù)須按規(guī)定的存放器或儲蓄器傳達,程序格式有相應(yīng)的規(guī)則,這些規(guī)則比較繁瑣,為了便于辦理,在實質(zhì)中我們往往先用C51寫出這個程序的主體,此后用SRC控制指令編譯產(chǎn)生asm文件,改正這個asm文件獲得我們所要的匯編函數(shù)。辦理過程詳細以下。第一步:先用C語言程序編寫出程序框架,如文件名為(注意參數(shù))。第二步:在KeilC

35、51的Project窗口中右擊該C語言文件,在彈出的快捷菜單中選擇Optionsfor.,右側(cè)的GenerateAssemblerSRCFile和AssembleSRCFile,使檢查框由灰色變?yōu)楹谏?有效)狀態(tài);第三步:依據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如Small模式時,是KeilC51Lib加入工程中,該文件必然作為工程的最后文件。庫文件與編譯模式的關(guān)系如前面。第四步:編譯后將會產(chǎn)生一個SRC的文件,將這個文件擴展名改為ASM。這樣就形成了可供C51程序調(diào)用的匯編程序。隨后可在該文件的代碼段中加入所需的指令代碼。第五步:將該匯編程序與調(diào)用它的主程序一同加到工程文件中,這時工程文件中不再

36、需要本來的C語言文件和庫文件,主程序只需要在程序開始處用EXTERN對所調(diào)用的匯編程序中的函數(shù)作申明,在主程序中即可調(diào)用匯編程序中的函數(shù)了。第六章何為“準雙向I/O接口”在MCS-51單片機的四個并口中,哪些是“準雙向I/O接口”答:準雙向I/O接口是能實現(xiàn)輸入輸出功能,但在使用時只好從輸入和輸出中選擇一個。MCS-51單片機的四個并口中P1、P2、P3是準雙向I/O接口。80C51單片機內(nèi)部有幾個準時/計數(shù)器它們由哪些功能存放器構(gòu)成如何實現(xiàn)準時功能和計數(shù)功能答:80C51單片機內(nèi)部有兩個16位的可編程準時/計數(shù)器,由TH0,TL0,TH1,TL1,TMOD和TCON功能存放器構(gòu)成。經(jīng)過TMO

37、D中的C/T位選擇對機器周期計數(shù)實現(xiàn)計數(shù)功能,選擇對外面脈沖計數(shù)實現(xiàn)計數(shù)功能。準時/計數(shù)器T0有幾種工作方式各自的特色是什么答:有四種工作方式,特色見下表:M1M0工作方式方式說明00013位準時/計數(shù)器01116位準時/計數(shù)器1028位自動重置準時/計數(shù)器113兩個8位準時/計數(shù)器(只有T0有)4.準時/計數(shù)器的四種工作方式各自的計數(shù)范圍是多少假如要計10個單位,不同樣的方式初值應(yīng)為多少答:有四種方式。方式0計數(shù)范圍:18192;方式1計數(shù)范圍:165536;方式2計數(shù)范圍:1256;方式3計數(shù)范圍:1256。假如計10個單位,方式0初值為:8192-10=8182;方式1初值為:65536

38、-10=65526;方式2初值為:256-10=246;方式2初值為:256-10=246。設(shè)振蕩頻次為12MHz,假如用準時/計數(shù)器T0產(chǎn)生周期為100ms的方波,能夠選擇哪幾種方式,其初值分別設(shè)為多少答:只好選擇方式1,初值為65536-50000=15536。何為同步通訊何為異步通訊各自的特色是什么答:異步通訊方式的特色是數(shù)據(jù)在線路上傳達時是以一個字符(字節(jié))為單位,未傳達時線路處于安閑狀態(tài),安閑線路商定為高電平“1”。特色是對發(fā)送時鐘和接收時鐘的要求相對不高,線路簡單,但傳達速度較慢。同步通訊方式的特色是數(shù)據(jù)在線路上傳達時以字符塊為單位,一次傳達多個字符,傳達時須在前面加上一個或兩個同

39、步字符,后邊加上校驗字符。特色是對發(fā)送時鐘和接收時鐘要求較高,常常用同一個時鐘源控制,控制線路復(fù)雜,傳達速度快。單工、半雙工和全雙工有什么差別答:單工方式只有一根數(shù)據(jù)線,信息只好單向傳達;半雙工方式也只有一根數(shù)據(jù)線,但信息能夠分時雙向傳達;全雙工方式有兩根數(shù)據(jù)線,在同一個時刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳達。設(shè)某異步通訊接口,每幀信息格式為10位,當接口每秒傳達1000個字符時,其波特率為多少答:10000波特串行口數(shù)據(jù)存放器SBUF有什么特色答:發(fā)送數(shù)據(jù)存放器和接收數(shù)據(jù)存放器合起用一個特別功能存放器SBUF(串行口數(shù)據(jù)存放器),履行MOVSBUF,A發(fā)送時為發(fā)送數(shù)據(jù)存放器,履行MOVA,SBUF接收時為

40、接收數(shù)據(jù)存放器。MCS-51單片機串行口有幾種工作方式各自特色是什么答:有四種工作方式,分別是方式0、方式1、方式2和方式3。此中:方式0,稱為同步移位存放器方式,一般用于外接移位存放器芯片擴展I/O接口。方式1,稱為8位的異步通訊方式,平常用于雙機通訊。方式2和方式3,稱為9位的異步通訊方式,平常用于多機通訊。說明SM2在方式2和方式3對數(shù)據(jù)接收有何影響。答:經(jīng)過SM2對方式2和方式3數(shù)據(jù)接收進行控制,SM2=1,那么只有接收的第9位為“1”才接收有效。如SM2=0,接收的第9位不論為1仍是0都接收有效。如何來實現(xiàn)利用串行口擴展并行輸入/輸出口答:利用串行口在方式0時,當外接一個串入并出的移

41、位存放器,就能夠擴展并行輸出口;當外接一個并入串出的移位存放器時,就能夠擴展并行輸入口。什么是中止、中止贊成和中止障蔽答:在計算機中,因為計算機內(nèi)外面的原由或軟硬件的原由,使CPU從當前正在履行的程序中暫停下來,而自動轉(zhuǎn)去履行開初安排好的為辦理該原由所對應(yīng)的服務(wù)程序。履行完服務(wù)程序后,再返回被暫停的地點連續(xù)履行本來的程序,這個過程稱為中止,實現(xiàn)中止的硬件系統(tǒng)和軟件系統(tǒng)稱為中止系統(tǒng)。中止贊成是贊成中止懇求送CPU產(chǎn)生中止,中止障蔽是嚴禁中止懇求信號送CPU產(chǎn)生中止。8051有幾此中止源中止懇求如何提出答:MCS-51單片機供給5個硬件中止源:兩個外面中止源INT0和INT1,兩個準時/計數(shù)器T0

42、和T1中止;1個串行口中止。外面中止源INT0和INT1的中止懇求信號從外面引腳和輸入;兩個準時/計數(shù)器T0和T1的溢出中止TF0和TF1準時/計數(shù)器T0(或T1)溢出時提出;串行口中止由發(fā)送中止標記T1和接收中止標記R1產(chǎn)生。8051的中止源中,哪些中止懇求信號在中止響應(yīng)時能夠自動除掉哪些不可以夠自動除掉應(yīng)如何辦理答:工作在邊緣觸發(fā)方式下的兩個外面中止源和兩個準時/計數(shù)器中止中止懇求信號在中止響應(yīng)時能夠自動除掉,工作在電平觸發(fā)方式下的兩個外面中止源和串行口中止不可以夠自動除掉。工作在電平觸發(fā)方式下的兩個外面中止源的中斷懇求信號經(jīng)過外加硬件和加軟件的方式除掉,串行口中止標記T1和標記R1完滿由

43、軟件除掉。8051的中止優(yōu)先級有幾級在形成中止嵌套時各級有何規(guī)定答:8051的中止優(yōu)先級有兩級;形成中止嵌套時規(guī)定(1)正在進行的中止過程不可以夠被新的同級或低優(yōu)先級的中止懇求所中止,直到該中止服務(wù)程序結(jié)束,返回了主程序且履行了主程序中的一條指令后,CPU才響應(yīng)新的中止請求。(2)正在進行的低優(yōu)先級中止服務(wù)程序能被高優(yōu)先級中止懇求所中斷,實現(xiàn)兩級中止嵌套。(3)CPU同時接收到幾此中止懇求時,第一響應(yīng)優(yōu)先級最高的中止請求。17.設(shè)8051的P1中各位接發(fā)光二極管,分別用匯編語言和C語言編程實現(xiàn)逐一輪番點亮二極管,并循環(huán)顯示。參照程序:ORG0000HLJMPMAINORG0100H;主程序MA

44、IN:MOVA,#01HLOOP:MOVP1,ACALLDELAYRLASJMPLOOPSJMP$DELAY:MOVR7,#0FFHDJNZR7,$RETEND語言程序:#include8051系統(tǒng)中,已知振蕩頻次為12MHz,用準時/計數(shù)器T0,實現(xiàn)從產(chǎn)生周期為2ms的方波。要求分別用匯編語言和C語言進行編程。解:分析:從輸出周期為2ms的方波,只須每1ms取反一次則可。當系統(tǒng)時鐘為12MHZ,準時/計數(shù)器T0工作于方式1時,最大的準不時間為,知足1ms的準時要求,方式控制字應(yīng)設(shè)定為00000001B(01H)。準時1ms,計數(shù)值N為1000,初值X=65536-1000=64536,則TH

45、0=FCH,TL0=18H。采納中止辦理方式:程序以下:ORG0000HLJMPMAINORG000BH;中止辦理程序MOVTH0,#0FCHMOVTL0,#18HCPLRETIORG0100H;主程序MAIN:MOVTMOD,#01HMOVTH0,#0FCHMOVTL0,#18HSETBEASETBET0SETBTR0SJMP$END語言程序:#include8051系統(tǒng)中,已知振蕩頻次為12MHz,用準時/計數(shù)器T1,實現(xiàn)從產(chǎn)生周期為2s的方波。要求分別用匯編語言和C語言進行編程。解:從產(chǎn)生2s的方波,應(yīng)產(chǎn)生500ms的周期性的準時,準時到對取反即可實現(xiàn)。因為準不時間較長,一個準時/計數(shù)器

46、T1不可以夠直接實現(xiàn),采納準時/計數(shù)器T1產(chǎn)生周期性為10ms的準時,此后用一個存放器R2對10ms計數(shù)100次來實現(xiàn)。系統(tǒng)時鐘為12MHZ,準時/計數(shù)器T1準時10ms,計數(shù)值N為10000,只好選方式1,方式控制字為00010000B(10H),初值X:X=65536-10000=55536=000B則TH1=B=D8H,TL1=B=F0H。準時/計數(shù)器T1采納中止辦理方式。匯編程序:ORG0000HLJMPMAINORG001BHLJMPINTT1ORG0100HMAIN:MOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASETBET

47、1SETBTR1SJMP$INTT1:MOVTH1,#0D8HMOVTL1,#0F0HINCR2CJNER2,#64H,NEXTCPLMOVR2,#00HNEXT:RETIEND語言程序:#include8051系統(tǒng)中,已知振蕩頻次為12MHz,用準時/計數(shù)器T1,實現(xiàn)從產(chǎn)生高電平寬度為10ms,低電平寬度為20ms的矩形波。要求分別用匯編語言和C語言進行編程。解:此題辦理方式有多種,這里采納對準時/計數(shù)器T1形成10ms周期準時,用R2對10ms計數(shù),當計到1,則對置1,當計到2和3,則對置0來實現(xiàn)。用定時/計數(shù)器T1形成10ms周期準時見上題。程序以下:ORG0000HLJMPMAINOR

48、G001BHLJMPINTT1ORG0100HMAIN:MOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASETBET1SETBTR1SJMP$INTT1:MOVTH1,#0D8HMOVTL1,#0F0HINCR2CJNER2,#01H,NEXTSETBSJMPEXITNEXT:CJNER2,#02H,NEXT1CLRSJMPEXITNEXT1:CJNER2,#03H,NEXTSETBMOVR2,#00EXIT:RETIEND語言程序:#include用8051單片機的串行口擴展并行I/O接口,控制16個發(fā)光二極管挨次發(fā)光,畫出電路圖,用匯

49、編語言和C語言分別編寫相應(yīng)的程序。解:采納在串口連結(jié)兩個CD4094來實現(xiàn),電路圖以下:RXDTXDCLKSTBCLKSTB程序以下;ORG0000HLJMPMAINORG0100HMAIN:MOVSCON,#00HMOVR4,#10HMOVR3,#00HMOVR2,#01HCLRSTART:MOVA,R3MOVSBUF,ALOOP:JNBTI,LOOPMOVA,R2MOVSBUF,ALOOP1:JNBTI,LOOP1SETBACALLDELAYCLRTICLRCMOVA,R2RLCAMOVR2,AMOVA,R3RLCAMOVR3,ACLRDJNZR4,START1SJMPMAINDELAY:MOVR7,#05HLOOP2:MOVR6,#0FFHLOOP1:DJNZR6,LOOP1DJNZR7,LOOP2RETEND語言程序:#includevoiddelay(unsignedintx);unionunsignedi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論