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

下載本文檔

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

文檔簡介

1、第一章1.給出下列有符號數(shù)的原碼、反碼和補碼(假設計算機字長為8位)。+45 -89 -6 +112答:【+45】原=00101101,【+45】反=00101101,【+45】補=00101101【-89】原=,【-89】反=,【-89】補=【-6】原=,【-6】反=,【-6】補=【+112】原=01110000,【+45】反=01110000,【+45】補=011100002.指明下列字符在計算機內(nèi)部的表示形式。AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H3.什么是單片機答:單片機是

2、把微型計算機中的微處理器、存儲器、I/O接口、定時器/計數(shù)器、串行接口、中斷系統(tǒng)等電路集成到一個集成電路芯片上形成的微型計算機。因而被稱為單片微型計算機,簡稱為單片機。4.單片機的主要特點是什么答:主要特點如下:1)在存儲器結(jié)構(gòu)上,單片機的存儲器采用哈佛(Harvard)結(jié)構(gòu)2)在芯片引腳上,大部分采用分時復用技術(shù)3)在內(nèi)部資源訪問上,采用特殊功能寄存器(SFR)的形式4)在指令系統(tǒng)上,采用面向控制的指令系統(tǒng)5)內(nèi)部一般都集成一個全雙工的串行接口6)單片機有很強的外部擴展能力5.指明單片機的主要應用領(lǐng)域。答:單機應用:1)工業(yè)自動化控制;2)智能儀器儀表;3)計算機外部設備和智能接口;4)家用

3、電器多機應用:功能彌散系統(tǒng)、并行多機處理系統(tǒng)和局部網(wǎng)絡系統(tǒng)。第二章1.MCS-51單片機由哪幾個部分組成答:MCS-51單片機主要由以下部分組成的:時鐘電路、中央處理器(CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR)。2.MCS-51的標志寄存器有多少位,各位的含義是什么答:MCS-51的標志寄存器PSW有8位;D7D6D5D4D3D2D1D0CACF0RS1RS0OV-P含義如下:C:進位或借位標志位。AC:輔助進位或借位可標志位。F0:用戶標志位。是系統(tǒng)預留給用戶自己定義的標志位。RS1、RS0、:寄存器組選擇位??捎密浖?/p>

4、位或清零,用于從四組工作寄存器中選定當前的工作寄存器組。OV:溢出標志位。在加法或減法運算時,如運算的結(jié)果超出8位二進制數(shù)的范圍,則OV置1,標志溢出,否則OV清零。P:奇偶標志位。用于記錄指令執(zhí)行后累加器A中1的個數(shù)的奇偶性。若累加器A中1的個數(shù)為奇數(shù),則P置位,若累加器A中1的個數(shù)為偶數(shù),則P清零。其中未定義,可供用戶使用。3.在8051的存儲器結(jié)構(gòu)中,內(nèi)部數(shù)據(jù)存儲器可分為幾個區(qū)域各有什么特點答:片內(nèi)數(shù)據(jù)存儲器按功能可以分成以下幾個部分:工作寄存器組區(qū)、位尋址區(qū)、一般RAM區(qū)和特殊功能寄存器區(qū),其中還包含堆棧區(qū)。工作寄存器組區(qū),00H1FH單元,可用R0R7等8個寄存器訪問;位尋址區(qū),20

5、H2FH單元,可按位方式訪問;一般RAM區(qū),30H7FH單元;堆棧區(qū),可從08到7F單元;特殊功能寄存器區(qū)位于80HFFH單元。4.什么是堆棧說明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。5.MCS-51單片機有多少根I/O線它們和單片機的外部總線有什么關(guān)系答:MCS-

6、51單片機有32根I/O線,由P0口經(jīng)地址鎖存器提供低8位(A7A0),P2口提供高8位(A15A8)而形成。數(shù)據(jù)總線寬度為8位,由P0口直接提供。控制總線由第二功能狀態(tài)下的P3口和4根獨立的控制線RST、EA、ALE和PSEN組成。6.什么是機器周期 MCS-51單片機的一個機器周期包括多少個時鐘周期答:機器周期:機器周期是單片機的基本操作周期,每個機器周期包含S1、S2、S66個狀態(tài),每個狀態(tài)包含兩拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機器周期包含12個時鐘周期。7. 如果時鐘周期的頻率為12MHz,那么ALE信號的頻率為多少答:2MHZ第三章1在MCS-51單片機中,

7、尋址方式有幾種其中對片內(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字節(jié)。3在位處理中,位地址的

8、表示方式有哪幾種答:1直接位地址(00H0FFH)。例如:20H2字節(jié)地址帶位號。例如:表示20H單元的3位。3特殊功能寄存器名帶位號。例如:表示P0口的1位。4位符號地址。例如:TR0是定時/計數(shù)器T0的啟動位。4寫出完成下列操作的指令。(1)R0的內(nèi)容送到R1中。MOV A,R0MOV R1,A(2)片內(nèi)RAM的20H單元內(nèi)容送到片內(nèi)RAM的40H單元中。MOV 40H,20H(3)片內(nèi)RAM的30H單元內(nèi)容送到片外RAM的50H單元中。MOV A,30HMOV R0,#50HMOVX R0,A(4)片內(nèi)RAM的50H單元內(nèi)容送到片外RAM的3000H單元中。MOV A,50HMOV DP

9、TR,#3000HMOVX DPTR,A(5)片外RAM的2000H單元內(nèi)容送到片外RAM的20H單元中。MOV DPTR,#2000HMOVX A,DPTRMOV 20H,A(6)片外RAM的1000H單元內(nèi)容送到片外RAM的4000H單元中。MOV DPTR,#1000HMOVX A,DPTRMOV DPTR,#4000HMOV DPTR,A(7)ROM的1000H單元內(nèi)容送到片內(nèi)RAM的50H單元中。MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMOV 20H,A(8)ROM的1000H單元內(nèi)容送到片外RAM的1000H單元中。MOV A,#0MOV DPTR,

10、#1000HMOVC A,A+DPTRMOVX DPTR,A5區(qū)分下列指令有什么不同(1)MOV A,20H和MOV A,#20H答:前者源操作數(shù)是直接尋址,后者源操作數(shù)立即尋址。(2)MOV A,R1和MOVX A,R1答:前者源操作數(shù)是訪問片內(nèi)數(shù)據(jù)存儲器,后者源操作數(shù)訪問片外數(shù)據(jù)存儲器低256字節(jié)。(3)MOV A,R1和MOV A,R1答:前者源操作數(shù)是寄存器尋址,后者源操作數(shù)寄存器間接尋址。(4)MOVX A,R1和MOVX A,DPTR答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲器低256字節(jié),后者源操作數(shù)訪問片外數(shù)據(jù)存儲器整個64K字節(jié)。(5)MOVX A,DPTR和MOVC A,A+DPT

11、R答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲器,后者源操作數(shù)訪問程序數(shù)據(jù)存儲器。6設片內(nèi)RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令執(zhí)行后片內(nèi)RAM的20H、40H、10H單元以及P1、P2中的內(nèi)容。MOV R0,#20HMOV A,R0 ;A=40HMOV R1,A;R1=40HMOV A,R1;A=10HMOV R0,P1;(40H)=0CAHMOV P2,P1P2=0CAHMOV 10H,A(10H)=10HMOV 20H,10H(20H)=10H結(jié)果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0C

12、AH7已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片內(nèi)RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,試分別寫出以下各條指令執(zhí)行后目標單元的內(nèi)容。(1)MOV A,R1結(jié)果:累加器A等于70H(2)MOVX DPTR,A結(jié)果:片外RAM(2FFCH)單元等于02H(3)MOVC A,A+DPTR結(jié)果: 累加器A等于64H(4)XCHD A,R1結(jié)果:累加器A等于00H,片內(nèi)RAM(7FH)單元等于72H8已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片內(nèi)RAM(78H)=0DDH,(80H)=6CH,試分別寫出下

13、列指令執(zhí)行后目標單元的結(jié)果和相應標志位的值。(1)ADD A,R1;累加器A等于55H,CY等于1(2)SUBB A,#77H;累加器A等于00H,CY等于0(3)MUL AB;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0(4)DIV AB;累加器A等于1EH,B寄存器等于00H,CY、OV等于0(5)ANL 78H,#78H;片內(nèi)RAM(78H)單元等于58H(6)ORL A,#0FH;累加器A等于7FH(7)XRL 80H,A;片內(nèi)RAM(80H)等于14H9設(A)=83H,(R0)=17H,(17H)=34H,分析當執(zhí)行完下面指令段后累加器A、R0、17H單元的內(nèi)容。

14、ANL A,#17H;A=03HORL 17H,A;(17H)=37HXRL A,R0;A=34HCPL A;A=CBH結(jié)果:A=CBH,(R0)=17H,(17H)=37H10寫出完成下列要求的指令。(1)累加器A的低2位清零,其余位不變。ANL A,#B(2)累加器A的高2位置“1”,其余位不變。ORL A,#B(3)累加器的高4位取反,其余位不變。XRL A,#B(4)累加器第0位、2位、4位、6位取反,其余位不變。XRL A,#01010101B11說明LJMP指令與AJMP指令的區(qū)別答:LJMP指令后面提供的是16位目標地址,所以可以轉(zhuǎn)移到64KB程序存儲器的任意位置,缺點是:執(zhí)行時

15、間長,字節(jié)數(shù)多。AJMP指令后帶的是11位直接地址,執(zhí)行時,先將程序指針PC的值加2(該指令長度為2字節(jié)),然后把指令中的11位地址addr11送給程序指針PC的低11位,而程序指針的高5位不變,只能在當前2K范圍內(nèi)轉(zhuǎn)移。12設當前指令CJNE A,#12H,10H的地址是0FFEH,若累加器A的值為10H,則該指令執(zhí)行后的PC值為多少若累加器A的值為12H呢答:指令執(zhí)行后的PC值為1011H,若累加器A的值為12H,則指令執(zhí)行后的PC值為1001H。13用位處理指令實現(xiàn)=()/的邏輯功能。程序:MOVC,ORLC,ANLC,ORLC,/MOV,C14下列程序段匯編后,從1000H單元開始的單

16、元內(nèi)容是什么ORG 1000HTAB: DB 12H,34HDS 3DW 5567H,87H答:(1000H)=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:MOV A,R0MOVXR0,AINCR0DJNZR2,LOOPSJMP$16編程實現(xiàn)將片外RAM的2000H2030H單元的內(nèi)

17、容,全部搬到片內(nèi)RAM的20H單元開始位置,并將源位置清零。程序:MOVR0,#20HMOVDPTR,#2000HMOVR2,#30HLOOP:MOVXA,DPTRMOV R0,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編

18、程實現(xiàn)R4R3R2,結(jié)果放于R7R6R5中。程序:ORG0100HMUL1:MOV A,R2MOV B,R3MUL AB ;R2R3,結(jié)果的低字節(jié)直接存入積的R5MOV R5,A ;結(jié)果的高字節(jié)存入R6中暫存起來MOV R6,BMUL2:MOV A,R2MOV B,R4MUL AB ;R2R4,結(jié)果的低字節(jié)與R6相加后,再存入R6中ADD A,R6MOV R6,AMOV A,B ;結(jié)果的高字節(jié)加上進位位后存入R7中ADDC A,#00MOV R7,ASJMP$19編程實現(xiàn)把片內(nèi)RAM的20H單元的0位、1位,21H單元的2位、3位,22H單元的4位、5位,23H單元的6位、7位,按原位置關(guān)系拼

19、裝在一起放于R2中。程序:MOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVC,MOV,CMOVR2,A20用查表的方法實現(xiàn)一位十六進制數(shù)轉(zhuǎn)換成ASCII。程序:(設一位十六進制數(shù)放在R2中,輪換的ASCII也放于R2中)C16STASC:MOVDPTR,#TABMOVA,R2MOVCA,A+DPTRMOVR2,ARETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,391H,41H,42H,43H,44H,45H,46H21編程統(tǒng)計從片外RAM2000H開

20、始的100個單元中“0”的個數(shù)放于R2中。程序:MOVDPTR,#2000HMOVR3,#100MOVR2,#00LOOP:MOVXA,DPTRJNZNEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$第四章1.C語言有哪些特點答:C語言具有以下特點:1)語言簡潔、緊湊,使用方便、靈活2)運算符豐富3)數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu)4)可進行結(jié)構(gòu)化程序設計5)可以直接對計算機硬件進行操作6)生成的目標代碼質(zhì)量高,程序執(zhí)行效率高7)可移植性好2.有哪些數(shù)據(jù)類型是MCS-51單片機直接支持的答:MCS-51單片機直接支持的數(shù)據(jù)類型標準分為基本數(shù)據(jù)類型和組合數(shù)據(jù)類型

21、,基本數(shù)據(jù)類型有字符型char、短整型short、整型int、長整型long、浮點型float、雙精度型double、特殊功能寄存器型和位類型,其中char型與short型相同,float型與double型相同。組合數(shù)據(jù)類型有數(shù)組類型、結(jié)構(gòu)體類型、共同體類型和枚舉類型,另外還有指針類型和空類型。3.C51特有的數(shù)據(jù)類型有哪些答:C51特有的數(shù)據(jù)類型有特殊功能寄存器型和位類型。4.C51中的存儲器類型有幾種,它們分別表示的存儲器區(qū)域是什么答:C51中的存儲器類型有6種,分別如下:data:直接尋址的片內(nèi)RAM低128B,訪問速度快bdata:片內(nèi)RAM的可位尋址區(qū)(20H2FH),允許字節(jié)和位混

22、合訪問idata:間接尋址訪問的片內(nèi)RAM,允許訪問全部片內(nèi)RAMpdata:用Ri間接訪問的片外RAM低256Bxdata:用DPTR間接訪問的片外RAM,允許訪問全部64KB片外RAMcode:程序存儲器ROM64KB空間5.在C51中,bit位與sbit位有什么區(qū)別答:bit位類型符用于定義一般的位變量。存儲器類型只能是bdata、data、idata,只能是片內(nèi)RAM的可位尋址區(qū),嚴格來說只能是bdata。sbit位類型符用于定義在可位尋址字節(jié)或特殊功能寄存器中的位,定義時需指明其位地址,可以是位直接地址,可以是可位尋址變量帶位號,也可以是特殊功能寄存器名帶位號。6.在C51中,通過絕

23、對地址來訪問的存儲器有幾種答:通過絕對地址來訪問存儲器有三種方法:1. 使用C51運行庫中預定義宏。2. 通過指針訪問。3. 使用C51擴展關(guān)鍵字_at_7.在C51中,中斷函數(shù)與一般函數(shù)有什么不同答:中斷函數(shù)在定義時后面帶interrupt m修飾符,m的取值為031,對應的中斷情況如下:0外部中斷0,1定時/計數(shù)器T0,2外部中斷1,3定時/計數(shù)器T1,4串行口中斷,5定時/計數(shù)器T2,其他值預留。編寫MCS-51中斷函數(shù)需要注意如下幾點。(1)中斷函數(shù)不能進行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導致編譯出錯。(2)中斷函數(shù)沒有返回值。(3)在任何情況下都不能直接調(diào)用中斷函數(shù)(4)

24、如果在中斷函數(shù)中調(diào)用了其他函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同,否則會產(chǎn)生不正確的結(jié)果。(5)C51編譯器對中斷函數(shù)編譯時會自動在程序開始和結(jié)束處加上相應的內(nèi)容。(6)C51編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。(7)中斷函數(shù)最好寫在文件的尾部,并且禁止使用extern存儲類型說明。防止其他程序調(diào)用。8.按給定的存儲類型和數(shù)據(jù)類型,寫出下列變量的說明形式。(1)在data區(qū)定義字符變量val1。char data val1;(2)在idata區(qū)定義整型變量 idat

25、a val2;(3)在xdata區(qū)定義無符號字符型數(shù)組val34。unsigned char xdata val34;(4)在xdata區(qū)定義一個指向char類型的指針px。char xdata *px;(5)定義可尋址位變量flag。bit flag;(6)定義特殊功能寄存器變量P3。sfr P3=0xa0;(7)定義特殊功能寄存器變量SCON。sfr SCON=0x98;(8)定義16位的特殊功能寄存器T0。sfr16 T0=0x8a;9.寫出下列關(guān)系表達式或邏輯表達式的結(jié)果,設a=3,b=4,c=5。(1)a+bc&b= =c 結(jié)果:假(2)a|b+c&b-c 結(jié)果:真(3)!(ab)&

26、!c|1 結(jié)果:真(4)!(a+b)+c-1&b+c/2 結(jié)果:假10.寫出下列C51程序的執(zhí)行結(jié)果。(1)#include extern serial_initial();main()int x,y,z;serial_initial();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);x=y=8;z=x-;printf(n %d %d %d,y,z,x);printf(n);while(1);結(jié)果:8 9 98 8 98 7

27、78 8 7(2)#include extern serial_initial();main()int x,y,z;serial_initial();printf(input data x,yn);scanf(%d %d,&x,&y);printf(n x y xy xy x=y x!=y x=y);printf(n);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);執(zhí)行結(jié)果:input

28、data x,y1 2x y xy xy x=y x!=y x=y1 2 1 1 0 0 1 0(3)#include extern serial_initial();main()int x,y,z;serial_initial();printf(input data x, y n);scanf(%d %d,&x,&y);printf(n x y !x x|y x&y);printf(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(That

29、 is alln);while(1);執(zhí)行結(jié)果:input data x, y x y !x x|y x&y 1 2 0 1 1That is all(4)#include extern serial_initial();main()int a,b;unsigned int x,y;serial_initial();a=b=0xaa55;x=y=0xaa55;printf(n a=%4x b=%4x x=%4x y=%4x,a,b,x,y);a=a1;x=x1;printf(n a=%4x b=%4x x=%4x y=%4x,a,b,x,y);printf(n);printf(n);print

30、f(That is all.n);while(1);執(zhí)行結(jié)果:a=aa55 b=aa55 x=aa55 y=aa55a=54aa b=d52a x=54aa y=552aThat is all.11.break和continue語句的區(qū)別是什么答:break語句可以跳出switch結(jié)構(gòu),使程序繼續(xù)執(zhí)行switch結(jié)構(gòu)后面的一個語句。break語句還可以從循環(huán)體中跳出循環(huán),提前結(jié)束循環(huán)而接著執(zhí)行循環(huán)結(jié)構(gòu)下面的語句。continue語句用在循環(huán)結(jié)構(gòu)中,用于結(jié)束本次循環(huán),跳過循環(huán)體中continue下面尚未執(zhí)行的語句,直接進行下一次是否執(zhí)行循環(huán)的判定。continue語句和break語句的區(qū)別在于:

31、continue語句只是結(jié)束本次循環(huán)而不是終止整個循環(huán);break語句則是結(jié)束循環(huán),不再進行條件判斷。12.用分支結(jié)構(gòu)編程實現(xiàn):輸入“1”顯示“A”,輸入“2”顯示“B”,輸入“3”顯示“C”,輸入“4”顯示“D”,輸入“5”結(jié)束。參考程序:#include #include void main(void) unsigned char x;SCON=0x52; 輸入3個無符號的字符數(shù)據(jù),要求按由大到小的順序輸出。參考程序:#include #include void main(void) unsigned char x,y,z,m;SCON=0x52; 用3種循環(huán)結(jié)構(gòu)編寫程序?qū)崿F(xiàn)輸出1到10的

32、平方之和。參考程序:(1)while循環(huán)#include 對一個由5個元素組成的無符號字符數(shù)組按由小到大的順序進行排序。參考程序:#include 用指針實現(xiàn),輸入3個無符號字符數(shù)據(jù),按由大到小的順序輸出。參考程序:#include 有3個學生,每個學生都包括學號、姓名和成績,要求找出成績最高的學生的姓名和成績。參考程序:#include number);printf(input name:n);scanf(%s,);printf(input grade:n);scanf(%d,&p1i.grade);for (i=1;ip1j.grade) j=i;printf(成績最高的學

33、生是:%s,成績是:%d,,p1j.grade);printf(n);while(1);第五章1單片機C語言與匯編語言混合編程有哪幾種方式通常采用什么方式答:單片機C語言和匯編語言混合編程分為匯編中調(diào)用C51函數(shù)和C51程序中引用匯編,通常使用的是在C51程序中引用匯編。在C51程序中使用匯編語言有兩種情況:一種是匯編程序部分和C51程序部分為不同的模塊,或不同的文件,通常由C51程序調(diào)用匯編程序模塊的變量和函數(shù)(也可稱為子程序或過程);另一種是嵌入式匯編,即在C51程序中嵌入一段匯編語言程序。2簡述C51程序調(diào)用匯編程序時如何實現(xiàn)參數(shù)傳遞。答:C51中調(diào)用匯編程序進行參數(shù)傳遞

34、時都必須嚴格遵守C51函數(shù)的參數(shù)和返回值的相關(guān)約定。行參數(shù)傳遞的方式有兩種,一種是通過寄存器傳遞參數(shù),C51中不同類型的實參會存入相應的寄存器,在匯編中只需對相應寄存器進行操作,即可達到傳遞參數(shù)的目的;第二種是通過固定存儲區(qū)傳遞。3簡述嵌入式匯編的實現(xiàn)方法。答:在C51程序中嵌入?yún)R編程序通常的處理方法如下。第一步:在C文件中以如下方式嵌入?yún)R編程序。第二步:在Keil C51軟件的Project 窗口右擊嵌入?yún)R編程序的C文件,在彈出的快捷菜單中選擇Options for .命令,選中右邊的Generate Assembler SRC File和Assemble SRC File復選框,使檢查框由

35、灰色變成黑色(有效)狀態(tài)。第三步:根據(jù)選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 KeilC51Lib加入到工程中,該文件必須作為工程的最后文件。4簡述C51中調(diào)用匯編程序的實現(xiàn)方法。答:編寫為C51調(diào)用的匯編程序,參數(shù)須按規(guī)定的寄存器或存儲器傳送,程序格式有相應的規(guī)則,這些規(guī)則比較繁瑣,為了便于處理,在實際中我們往往先用C51寫出這個程序的主體,然后用SRC控制指令編譯產(chǎn)生asm文件,修改這個asm文件得到我們所要的匯編函數(shù)。處理過程具體如下。第一步:先用C語言程序編寫出程序框架,如文件名為(注意參數(shù))。第二步:在Keil C51的Project窗口中右擊該C語言文件,在彈出

36、的快捷菜單中選擇Options for .,右邊的Generate Assembler SRCFile和Assemble SRC File,使檢查框由灰色變成黑色(有效)狀態(tài);第三步:根據(jù)選擇的編譯模式,把相應的庫文件(如Small模式時,是KeilC51Lib 加入工程中,該文件必須作為工程的最后文件。庫文件與編譯模式的關(guān)系如前面。第四步:編譯后將會產(chǎn)生一個SRC的文件,將這個文件擴展名改為ASM。這樣就形成了可供C51程序調(diào)用的匯編程序。隨后可在該文件的代碼段中加入所需的指令代碼。第五步:將該匯編程序與調(diào)用它的主程序一起加到工程文件中,這時工程文件中不再需要原來的C語言文件和庫文件,主程序

37、只需要在程序開始處用EXTERN對所調(diào)用的匯編程序中的函數(shù)作聲明,在主程序中就可調(diào)用匯編程序中的函數(shù)了。第六章1.何為“準雙向I/O接口”在MCS-51單片機的四個并口中,哪些是“準雙向I/O接口”答:準雙向I/O接口是能實現(xiàn)輸入輸出功能,但在使用時只能從輸入和輸出中選擇一個。MCS-51單片機的四個并口中P1、P2、P3是準雙向I/O接口。2.80C51單片機內(nèi)部有幾個定時/計數(shù)器它們由哪些功能寄存器組成怎樣實現(xiàn)定時功能和計數(shù)功能答:80C51單片機內(nèi)部有兩個16位的可編程定時/計數(shù)器,由TH0,TL0,TH1,TL1,TMOD和TCON功能寄存器組成。通過TMOD中的C/T位選擇對機器周期

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

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

40、驗字符。特點是對發(fā)送時鐘和接收時鐘要求較高,往往用同一個時鐘源控制,控制線路復雜,傳送速度快。7.單工、半雙工和全雙工有什么區(qū)別答:單工方式只有一根數(shù)據(jù)線,信息只能單向傳送;半雙工方式也只有一根數(shù)據(jù)線,但信息可以分時雙向傳送;全雙工方式有兩根數(shù)據(jù)線,在同一個時刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳送。8.設某異步通信接口,每幀信息格式為10位,當接口每秒傳送1000個字符時,其波特率為多少答:10000波特9.串行口數(shù)據(jù)寄存器SBUF有什么特點答:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器合起用一個特殊功能寄存器SBUF(串行口數(shù)據(jù)寄存器),執(zhí)行MOV SBUF,A發(fā)送時為發(fā)送數(shù)據(jù)寄存器,執(zhí)行MOV A, SBUF接收時為

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

42、外接一個串入并出的移位寄存器,就可以擴展并行輸出口;當外接一個并入串出的移位寄存器時,就可以擴展并行輸入口。13.什么是中斷、中斷允許和中斷屏蔽答:在計算機中,由于計算機內(nèi)外部的原因或軟硬件的原因,使CPU從當前正在執(zhí)行的程序中暫停下來,而自動轉(zhuǎn)去執(zhí)行預先安排好的為處理該原因所對應的服務程序。執(zhí)行完服務程序后,再返回被暫停的位置繼續(xù)執(zhí)行原來的程序,這個過程稱為中斷,實現(xiàn)中斷的硬件系統(tǒng)和軟件系統(tǒng)稱為中斷系統(tǒng)。中斷允許是允許中斷請求送CPU產(chǎn)生中斷,中斷屏蔽是禁止中斷請求信號送CPU產(chǎn)生中斷。14.8051有幾個中斷源中斷請求如何提出答:MCS-51單片機提供5個硬件中斷源:兩個外部中斷源和,兩個

43、定時/計數(shù)器T0和T1中斷;1個串行口中斷。外部中斷源和的中斷請求信號從外部引腳和輸入;兩個定時/計數(shù)器T0和T1的溢出中斷TF0和TF1定時/計數(shù)器T0(或T1)溢出時提出;串行口中斷由發(fā)送中斷標志T1和接收中斷標志R1產(chǎn)生。15.8051的中斷源中,哪些中斷請求信號在中斷響應時可以自動清除哪些不能自動清除應如何處理答:工作在邊沿觸發(fā)方式下的兩個外部中斷源和兩個定時/計數(shù)器中斷中斷請求信號在中斷響應時可以自動清除,工作在電平觸發(fā)方式下的兩個外部中斷源和串行口中斷不能自動清除。工作在電平觸發(fā)方式下的兩個外部中斷源的中斷請求信號通過外加硬件和加軟件的方式清除,串行口中斷標志T1和標志R1完全由軟

44、件清除。16.8051的中斷優(yōu)先級有幾級在形成中斷嵌套時各級有何規(guī)定答:8051的中斷優(yōu)先級有兩級;形成中斷嵌套時規(guī)定(1)正在進行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷,直到該中斷服務程序結(jié)束,返回了主程序且執(zhí)行了主程序中的一條指令后,CPU才響應新的中斷請求。(2)正在進行的低優(yōu)先級中斷服務程序能被高優(yōu)先級中斷請求所中斷,實現(xiàn)兩級中斷嵌套。(3)CPU同時接收到幾個中斷請求時,首先響應優(yōu)先級最高的中斷請求。17.設8051的P1中各位接發(fā)光二極管,分別用匯編語言和C語言編程實現(xiàn)逐個輪流點亮二極管,并循環(huán)顯示。參考程序:ORG 0000HLJMP MAINORG 0100H ;主

45、程序MAIN:MOV A,#01HLOOP:MOV P1,ACALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R7,#0FFHDJNZ R7,$RETENDC語言程序:#include 8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時/計數(shù)器T0,實現(xiàn)從產(chǎn)生周期為2ms的方波。要求分別用匯編語言和C語言進行編程。解:分析:從輸出周期為2ms的方波,只須每1ms取反一次則可。當系統(tǒng)時鐘為12MHZ,定時/計數(shù)器T0工作于方式1時,最大的定時時間為,滿足1ms的定時要求,方式控制字應設定為00000001B(01H)。定時1ms,計數(shù)值N為1000,初值X=65536-

46、1000=64536,則TH0=FCH,TL0=18H。采用中斷處理方式:程序如下:ORG 0000HLJMP MAINORG 000BH ;中斷處理程序MOV TH0,#0FCHMOV TL0,#18HCPL RETIORG 0100H ;主程序MAIN:MOV TMOD,#01HMOV TH0,#0FCHMOV TL0,#18HSETB EASETB ET0SETB TR0SJMP $ENDC語言程序:#include 8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時/計數(shù)器T1,實現(xiàn)從產(chǎn)生周期為2s的方波。要求分別用匯編語言和C語言進行編程。解:從產(chǎn)生2s的方波,應產(chǎn)生500ms的周期性

47、的定時,定時到對取反就可實現(xiàn)。由于定時時間較長,一個定時/計數(shù)器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采用中斷處理方式。匯編程序:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#0

48、D8HMOV TL1,#0F0HMOV R2,#00HSETB EASETB ET1SETB TR1SJMP $INTT1:MOV TH1,#0D8HMOV TL1,#0F0HINC R2CJNE R2,#64H,NEXTCPL MOV R2,#00HNEXT:RETIENDC語言程序:#include 8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時/計數(shù)器T1,實現(xiàn)從產(chǎn)生高電平寬度為10ms,低電平寬度為20ms的矩形波。要求分別用匯編語言和C語言進行編程。解:本題處理方式有多種,這里采用對定時/計數(shù)器T1形成10ms周期定時,用R2對10ms計數(shù),當計到1,則對置1,當計到2和3,則對置

49、0來實現(xiàn)。用定時/計數(shù)器T1形成10ms周期定時見上題。程序如下:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#0D8HMOV TL1,#0F0HMOV R2,#00HSETB EASETB ET1SETB TR1SJMP $INTT1:MOV TH1,#0D8HMOV TL1,#0F0HINC R2CJNE R2,#01H,NEXTSETB SJMP EXITNEXT:CJNE R2,#02H,NEXT1CLR SJMP EXITNEXT1:CJNE R2,#03H,NEXTSETB MOV

50、R2,#00EXIT:RETIENDC語言程序:#include 用8051單片機的串行口擴展并行I/O接口,控制16個發(fā)光二極管依次發(fā)光,畫出電路圖,用匯編語言和C語言分別編寫相應的程序。解:采用在串口連接兩個CD4094來實現(xiàn),電路圖如下: 8051 RXD TXD DATA CLK STB DATA CLK STB程序如下;ORG 0000HLJMP MAINORG 0100HMAIN:MOV SCON,#00HMOV R4,#10HMOV R3,#00HMOV R2,#01HCLR START:MOV A,R3MOV SBUF,ALOOP:JNB TI,LOOPMOV A,R2MOV

51、SBUF,ALOOP1:JNB TI,LOOP1SETB ACALL DELAYCLR TICLR CMOV A,R2RLC AMOV R2,AMOV A,R3RLC AMOV R3,ACLR DJNZ R4,START1SJMP MAINDELAY:MOV R7,#05HLOOP2:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1DJNZ R7,LOOP2RETENDC語言程序:#include void delay(unsigned int x);unionunsigned int word;structunsigned char high;unsigned char low;bytes;number;void main()int i;SCON=0x00;whil

溫馨提示

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

評論

0/150

提交評論