




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機原理與應(yīng)用及C51程序設(shè)計(第三版)課后答案第一章1.給出下列有符號數(shù)的原碼、反碼和補碼(假設(shè)計算機字長為8位)。 +45 -89 -6 +112 答:【+45】原=,【+45】反=,【+45】補= 【-89】原=,【-89】反=,【-89】補= 【-6】原=,【-6】反=,【-6】補= 【+112】原=,【+45】反=,【+45】補= 2. 指明下列字符在計算機內(nèi)部的表示形式。 AsENdfJFmdsv120 答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H 3. 什么是單片機, 答:單片機是把微型計算機中的微處
2、理器、存儲器、I/O接口、定時器/計數(shù)器、串行接口、中斷系統(tǒng)等電路集成到一個集成電路芯片上形成的微型計算機。因而被稱為單片微型計算機,簡稱為單片機。 4. 單片機的主要特點是什么, 答:主要特點如下: 1) 在存儲器結(jié)構(gòu)上,單片機的存儲器采用哈佛(Harvard)結(jié)構(gòu) 2) 在芯片引腳上,大部分采用分時復(fù)用技術(shù) 3) 在內(nèi)部資源訪問上,采用特殊功能寄存器(SFR)的形式 4) 在指令系統(tǒng)上,采用面向控制的指令系統(tǒng) 5) 內(nèi)部一般都集成一個全雙工的串行接口6) 單片機有很強的外部擴展能力 5. 指明單片機的主要應(yīng)用領(lǐng)域。 答:單機應(yīng)用:1) 工業(yè)自動化控制;2) 智能儀器儀表;3) 計算機外部設(shè)
3、備和智能接口;4) 家用電器 多機應(yīng)用:功能彌散系統(tǒng)、并行多機處理系統(tǒng)和局部網(wǎng)絡(luò)系統(tǒng)。 第二章 1. MCS-51單片機由哪幾個部分組成, 答:MCS-51單片機主要由以下部分組成的:時鐘電路、中央處理器(CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR)。 2. MCS-51的標志寄存器有多少位,各位的含義是什么, 答:MCS-51的標志寄存器PSW有8位; DDDDDDDD7 6 5 4 3 2 1 0 AFRROC - P C 0 S1 S0 V 含義如下: C(PSW.7):進位或借位標志位。 AC(PSW.6):輔助進位或
4、借位可標志位。 F0(PSW.5):用戶標志位。是系統(tǒng)預(yù)留給用戶自己定義的標志位。 RS1、RS0(PSW.4、PSW.3):寄存器組選擇位。可用軟件置位或清零,用于從四組工作寄存器中選定當(dāng)前的工作寄存器組。 OV(PSW.2):溢出標志位。在加法或減法運算時,如運算的結(jié)果超出8位二進制數(shù)的范圍,則OV置1,標志溢出,否則OV清零。 P(PSW.0):奇偶標志位。用于記錄指令執(zhí)行后累加器A中1的個數(shù)的奇偶性。若累加器A中1的個數(shù)為奇數(shù),則P置位,若累加器A中1的個數(shù)為偶數(shù),則P清零。 其中PSW.1未定義,可供用戶使用。 3. 在8051的存儲器結(jié)構(gòu)中,內(nèi)部數(shù)據(jù)存儲器可分為幾個區(qū)域,各有什么特
5、點, 答:片內(nèi)數(shù)據(jù)存儲器按功能可以分成以下幾個部分:工作寄存器組區(qū)、位尋址區(qū)、一般RAM區(qū)和特殊功能寄存器區(qū),其中還包含堆棧區(qū)。工作寄存器組區(qū),00H,1FH單元,可用R0,R7等8個寄存器訪問;位尋址區(qū),20H,2FH單元,可按位方式訪問;一般RAM區(qū),30H,7FH單元;堆棧區(qū),可從08到7F單元;特殊功能寄存器區(qū)位于80H,FFH單元。 4. 什么是堆棧,說明MCS-51單片機的堆棧處理過程。 答:堆棧是按先入后出、后入先出的原則進行管理的一段存儲區(qū)域。CS-51單片機的堆棧是向上生長型的,存入數(shù)據(jù)是從地址低端向高端延伸,取出數(shù)據(jù)是從地址高端向低端延伸。入棧和出棧數(shù)據(jù)是以字節(jié)為單位的。入
6、棧時,SP指針的內(nèi)容先自動加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時,先把SP指針指向單元的數(shù)據(jù)取出,然后再把SP指針的內(nèi)容自動減1。 5. MCS-51單片機有多少根I/O線,它們和單片機的外部總線有什么關(guān)系, 答:MCS-51單片機有32根I/O線,由P0口經(jīng)地址鎖存器提供低8位(A7,A0),P2口提供高8位(A15,A8)而形成。數(shù)據(jù)總線寬度為8位,由P0口直接提供。控制總線由第二功能狀態(tài)下的P3口和4根獨立的控制線RST、EA、ALE和PSEN組成。 6. 什么是機器周期, MCS-51單片機的一個機器周期包括多少個時鐘周期, 答:機器周期:機器周期是單片機的基本操作周期,每
7、個機器周期包含S1、S2、 、S66個狀態(tài),每個狀態(tài)包含兩拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機器周期包含12個時鐘周期。 7. 如果時鐘周期的頻率為12MHz,那么ALE信號的頻率為多少, 答:2MHZ 第三章 1(在MCS-51單片機中,尋址方式有幾種,其中對片內(nèi)RAM可以用哪幾種尋址方式,對片外RAM可以用哪幾種尋址方式, 答:尋址方式可分為數(shù)的尋址和指令尋址,數(shù)的尋址有:常數(shù)尋址(立即尋址)、寄存器數(shù)尋址(寄存器尋址)、存儲器數(shù)尋址(直接尋址方式、寄存器間接尋址方式、變址尋址方式)和位尋址,指令的尋址有絕對尋址和相對尋址。片內(nèi)RAM尋址有:寄存器尋址、直接尋址方式
8、和寄存器間接尋址方式。片外RAM尋址有:寄存器間接尋址方式。 2(在對片外RAM單元尋址中,用Ri間接尋址與用DPTR間接尋址有什么區(qū)別, 答:片外數(shù)據(jù)存儲器尋址中,用Ri間接尋址只能訪問低端的256字節(jié)單元,而用DPTR作指針間接訪問可訪問整個64K字節(jié)。 3(在位處理中,位地址的表示方式有哪幾種, 答:1(直接位地址(00H0FFH)。例如:20H 2(字節(jié)地址帶位號。例如:20H.3表示20H單元的3位。 3(特殊功能寄存器名帶位號。例如:P0.1表示P0口的1位。 4(位符號地址。例如:TR0是定時/計數(shù)器T0的啟動位 4(寫出完成下列操作的指令。 (1)R0的內(nèi)容送到R1中。 MOV
9、 A,R0 MOV 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,30H MOV R0,#50H MOVX R0,A (4)片內(nèi)RAM的50H單元內(nèi)容送到片外RAM的3000H單元中。 MOV A,50H MOV DPTR,#3000H MOVX DPTR,A (5)片外RAM的2000H單元內(nèi)容送到片外RAM的20H單元中。 MOV DPTR,#2000H MOVX A,DPTR MOV 20H,A (6)片外RAM的1000H單元內(nèi)容送到片外RAM的4000H單元中
10、。 MOV DPTR,#1000H MOVX A,DPTR MOV DPTR,#4000H MOV DPTR,A (7)ROM的1000H單元內(nèi)容送到片內(nèi)RAM的50H單元中。 MOV A,#0 MOV DPTR,#1000H MOVC A,A+DPTR MOV 20H,A (8)ROM的1000H單元內(nèi)容送到片外RAM的1000H單元中。 MOV A,#0 MOV DPTR,#1000H MOVC A,A+DPTR MOVX DPTR,A 5(區(qū)分下列指令有什么不同,(1)MOV A,20H和MOV A,#20H 答:前者源操作數(shù)是直接尋址,后者源操作數(shù)立即尋址。 (2)MOV A,R1和M
11、OVX 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+DPTR 答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲器,后者源操作數(shù)訪問程序數(shù)據(jù)存儲器。 6(設(shè)片內(nèi)RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令執(zhí)行后片
12、內(nèi)RAM的20H、40H、10H單元以及P1、P2中的內(nèi)容。 MOV R0,#20H MOV A,R0 ;A=40H MOV R1,A ;R1=40H MOV A,R1 ;A=10H MOV R0,P1 ;(40H)=0CAH MOV P2,P1 P2=0CAH MOV 10H,A (10H)=10H MOV 20H,10H (20H)=10H 結(jié)果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH 7(已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片內(nèi)RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)
13、=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)單元等于72H 8(已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片內(nèi)RAM(78H)=0DDH,(80H)=6CH,試分別寫出下列指令執(zhí)行后目標單元的結(jié)果和相應(yīng)標志位的值。(1)ADD A,R1 ;累加器A等于55H,CY等于1 (2)SUBB A,#77H ;
14、累加器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)等于14H 9(設(shè)(A)=83H,(R0)=17H,(17H)=34H,分析當(dāng)執(zhí)行完下面指令段后累加器A、R0、17H單元的內(nèi)容。 ANL A,#17H ;A=03H ORL 17H,A ;(17H)=37H XRL A,R0 ;A=
15、34H CPL A ;A=CBH 結(jié)果:A=CBH,(R0)=17H,(17H)=37H 10(寫出完成下列要求的指令。 (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,#B 11(說明LJMP指令與AJMP指令的區(qū)別, 答:LJMP指令后面提供的是16位目標地址,所以可以轉(zhuǎn)移到64KB程序存儲器的任意位置,缺點是:執(zhí)行時間長,字節(jié)數(shù)多。 AJMP指令后帶的是11位直接地址,執(zhí)行時,先將程序指針
16、PC的值加2(該指令長度為2字節(jié)),然后把指令中的11位地址addr11送給程序指針PC的低11位,而程序指針的高5位不變,只能在當(dāng)前2K范圍內(nèi)轉(zhuǎn)移。12(設(shè)當(dāng)前指令CJNE A,#12H,10H的地址是0FFEH,若累加器A的值為10H,則該指令執(zhí)行后的PC值為多少,若累加器A的值為12H呢, 答:指令執(zhí)行后的PC值為1011H,若累加器A的值為12H,則指令執(zhí)行后的PC值為1001H。 13(用位處理指令實現(xiàn)P1.4=P1.0 (P1.1 P1.2) /P1.3的邏輯功能。 程序: MOV C,P1.1 ORL C,P1.2 ANL C,P1.0 ORL C,/P1.3 MOV P1.4,
17、C 14(下列程序段匯編后,從1000H單元開始的單元內(nèi)容是什么, ORG 1000H TAB: DB 12H,34H DS 3 DW 5567H,87H 答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H 15(試編一段程序,將片內(nèi)RAM的20H、21H、22H單元的內(nèi)容依次存入片外RAM的20H、21H、22H中。 程序: MOV R0,#20H MOV R2,#03H LOOP:MOV A,R0 MOVX R0,A INC R
18、0 DJNZ R2,LOOP SJMP $ 16(編程實現(xiàn)將片外RAM的2000H2030H單元的內(nèi)容,全部搬到片內(nèi)RAM的20H單元開始位置,并將源位置清零。程序: MOV R0,#20H MOV DPTR,#2000H MOV R2,#30H LOOP: MOVX A,DPTR MOV R0,A MOV A,#00 MOVX DPTR,A INC DPTR INC R0 DJNZ R2,LOOP SJMP $ 17(編程將片外RAM的1000H單元開始的100個字節(jié)數(shù)據(jù)相加,結(jié)果放于R7R6中。 程序: MOV DPTR,#1000H MOV R2,#100 MOV R7,#00 MOV
19、R6,#00 LOOP: MOVX A,DPTR ADD A,R6 MOV R6,A MOV A,R7 ADDC A,#0 MOV R7,A INC DPTR DJNZ R2,LOOP SJMP $ 18(編程實現(xiàn)R4R3 R2,結(jié)果放于R7R6R5中。 程序: ORG 0100H MUL1:MOV A,R2 MOV B,R3 MUL AB ;R2 R3,結(jié)果的低字節(jié)直接存入積的R5 MOV R5,A ;結(jié)果的高字節(jié)存入R6中暫存起來 MOV R6,B MUL2:MOV A,R2 MOV B,R4 MUL AB ;R2 R4,結(jié)果的低字節(jié)與R6相加后,再存入R6中 ADD A,R6 MOV R
20、6,A MOV A,B ;結(jié)果的高字節(jié)加上進位位后存入R7中 ADDC A,#00 MOV R7,A SJMP $ 19(編程實現(xiàn)把片內(nèi)RAM的20H單元的0位、1位,21H單元的2位、3位,22H單元的4位、5位,23H單元的6位、7位,按原位置關(guān)系拼裝在一起放于R2中。 程序: MOV C,20H.0 MOV A.0,C MOV C,20H.1 MOV A.1,C MOV C,21H.2 MOV A.2,C MOV C,21H.3 MOV A.3,C MOV C,22H.4 MOV A.4,C MOV C,22H.5 MOV A.5,C MOV C,23H.6 MOV A.6,C MOV
21、C,23H.7 MOV A.7,C MOV R2,A 20(用查表的方法實現(xiàn)一位十六進制數(shù)轉(zhuǎn)換成ASCII。 程序:(設(shè)一位十六進制數(shù)放在R2中,輪換的ASCII也放于R2中) C16STASC:MOV DPTR,#TAB MOV A,R2 MOVC A,A+DPTR MOV R2,A RET TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,391H,41H,42H,43H,44H,45H,46H 21(編程統(tǒng)計從片外RAM2000H開始的100個單元中“0”的個數(shù)放于R2中。 程序: MOV DPTR,#2000H MOV R3,#100 MOV
22、R2,#00 LOOP: MOVX A,DPTR JNZ NEXT INC R2 NEXT:INC DPTR DJNZ R3,LOOP SJMP $ 第四章1. C語言有哪些特點, 答:C語言具有以下特點: 1) 語言簡潔、緊湊,使用方便、靈活 2) 運算符豐富 3) 數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu) 4) 可進行結(jié)構(gòu)化程序設(shè)計 5) 可以直接對計算機硬件進行操作 6) 生成的目標代碼質(zhì)量高,程序執(zhí)行效率高 7) 可移植性好 2. 有哪些數(shù)據(jù)類型是MCS-51單片機直接支持的? 答:MCS-51單片機直接支持的數(shù)據(jù)類型標準分為基本數(shù)據(jù)類型和組合數(shù)據(jù)類型,基本數(shù)據(jù)類型有字符型char、
23、短整型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ū)(20H,2FH),允許字節(jié)和位混合訪問 i
24、data:間接尋址訪問的片內(nèi)RAM,允許訪問全部片內(nèi)RAM pdata:用Ri間接訪問的片外RAM低256B xdata:用DPTR間接訪問的片外RAM,允許訪問全部64KB片外RAM code:程序存儲器ROM 64KB空間 5. 在C51中,bit位與sbit位有什么區(qū)別, 答:bit位類型符用于定義一般的位變量。存儲器類型只能是bdata、data、idata,只能是片內(nèi)RAM的可位尋址區(qū),嚴格來說只能是bdata。 sbit位類型符用于定義在可位尋址字節(jié)或特殊功能寄存器中的位,定義時需指明其位地址,可以是位直接地址,可以是可位尋址變量帶位號,也可以是特殊功能寄存器名帶位號。 6. 在C
25、51中,通過絕對地址來訪問的存儲器有幾種,答:通過絕對地址來訪問存儲器有三種方法:1. 使用C51運行庫中預(yù)定義宏。2. 通過指針訪問。3. 使用C51擴展關(guān)鍵字_at_ 7. 在C51中,中斷函數(shù)與一般函數(shù)有什么不同, 答:中斷函數(shù)在定義時后面帶interrupt m修飾符,m的取值為0,31,對應(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ù)聲明都將導(dǎo)致編譯出錯。 (2) 中斷函數(shù)沒有返回值。 (3)
26、在任何情況下都不能直接調(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編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。 (7) 中斷函數(shù)最好寫在文件的尾部,并且禁止使用extern存儲類型說明。防止其他程序調(diào)用。 8. 按給定的存儲類型和數(shù)據(jù)類型,寫出下列變量的說明形式。 (1) 在data區(qū)定義字符變量val1。 char data v
27、al1; (2) 在idata區(qū)定義整型變量val2。 int idata 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é)果,設(shè)
28、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é)果:假 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,
29、z,x); x=y=8;z=x-; printf(n %d %d %d,y,z,x); printf(n); while(1); 結(jié)果: 8 9 9 8 8 9 8 7 7 8 8 7 (2) #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 xy xy x=y x!=y x=y); printf(n); printf(n%3d%3d,x,y); z=xy; printf(%5d,z); z=
30、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 data x,y? 1 2 x y xy xy x=y x!=y x=y 1 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
31、|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 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=
32、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); printf(That is all.n); while(1); 執(zhí)行結(jié)果: a=aa55 b=aa55 x=aa55 y=aa55 a=54aa b=d52a x=54aa y=552a That is all. 11. break和continue語句的區(qū)別是什么, 答:break語句可以跳出switch結(jié)構(gòu),使
33、程序繼續(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ū)別在于: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
34、void main(void) unsigned char x; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; while(1) printf(input x:n); /輸出提示信息 scanf(%c,&x); switch(x) case 1:printf( An);break; case 2:printf( Bn);break; case 3:printf( Cn);break; case 4:printf( Dn);break; case 5:printf( QUITn);break; default: printf( RETRYn); if
35、 (x=5) break; while(1); 13. 輸入3個無符號的字符數(shù)據(jù),要求按由大到小的順序輸出。 參考程序: #include #include void main(void) unsigned char x,y,z,m; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf(input x,y,z:); /輸出提示信息 scanf(%c,%c,%c,&x,&y,&z); printf(n); if (xy) m=x;x=y;y=m; if (yz) m=y;y=z;z=m; if (xy) m=x;x=y;y=m; printf
36、(output %c,%c,%cn, x,y,z); /輸出 while(1); 14. 用3種循環(huán)結(jié)構(gòu)編寫程序?qū)崿F(xiàn)輸出1到10的平方之和。 參考程序: (1)while循環(huán) #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 void main(void) /主函數(shù) int i,s=0; /定義整型變量 i=1; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; while (i=10) /累加1到10的平方之和在s中 s=s+i*i; i+; printf(1到10的平方之和=%dn,s); while(1); (2)d
37、o while循環(huán) #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 void main(void) /主函數(shù) int i,s=0; /定義整型變量 i=1; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; do /累加1到10的平方之和在s中 s=s+i*i; i+; while (i=10); printf(1到10的平方之和=%dn,s); while(1); (3)for循環(huán) #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 void main(void) /主函數(shù) int i,s=
38、0; /定義整型變量 SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; for (i=1;i=10;i+) s=s+i*i; /累加1到10的平方之和在s中 printf(1到10的平方之和=%dn,s);while(1); 15. 對一個由5個元素組成的無符號字符數(shù)組按由小到大的順序進行排序。 參考程序: #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 main() unsigned char f5,m,i,j; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf(
39、輸入任意5個字符:); scanf(%c,%c,%c,%c,%c,&f0,&f1,&f2,&f3,&f4); printf(n); for (i=0;i5;i+) for (j=0;jfj+1) m=fj;fj=fj+1;fj+1=m; printf(由小到大的順序為:%c,%c,%c,%c,%c ,f0,f1,f2,f3,f4); printf(n); while(1); 16. 用指針實現(xiàn),輸入3個無符號字符數(shù)據(jù),按由大到小的順序輸出。 參考程序: #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 main() unsigned char x,y,z; uns
40、igned char *p,*p1,*p2,*p3; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf(input x,y and z:n); scanf(%c,%c,%c,&x,&y,&z); printf(n); p1=&x;p2=&y; p3=&z; if (*p1*p2) p=p1;p1=p2;p2=p; if (*p2*p3) p=p2;p2=p3;p3=p; if (*p1*p2) p=p1;p1=p2;p2=p; printf(max to min is:%c,%c,%cn,*p1,*p2,*p3); while(1); 1
41、7. 有3個學(xué)生,每個學(xué)生都包括學(xué)號、姓名和成績,要求找出成績最高的學(xué)生的姓名和成績。 參考程序: #include /包含特殊功能寄存器庫 #include /包含I/O函數(shù)庫 struct student unsigned char number10; unsigned char name10; unsigned int grade; p13; main() unsigned char i,j=0; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf(input 3 studend number,name and grade:n); f
42、or (i=0;i3;i+) printf(input number:n); scanf(%s,p1i. number); printf(input name:n); scanf(%s,); printf(input grade:n); scanf(%d,&p1i.grade); for (i=1;ip1j.grade) j=i; printf(成績最高的學(xué)生是:%s,成績是:%d,,p1j.grade); printf(n); while(1); 第六章 1(單片機C語言與匯編語言混合編程有哪幾種方式,通常采用什么方式, 答:單片機C語言和匯編語言混合編程分為
43、匯編中調(diào)用C51函數(shù)和C51程序中引用匯編,通常使用的是在C51程序中引用匯編。在C51程序中使用匯編語言有兩種情況:一種是匯編程序部分和C51程序部分為不同的模塊,或不同的文件,通常由C51程序調(diào)用匯編程序模塊的變量和函數(shù)(也可稱為子程序或過程);另一種是嵌入式匯編,即在C51程序中嵌入一段匯編語言程序。 2(簡述C51程序調(diào)用匯編程序時如何實現(xiàn)參數(shù)傳遞。 答:C51中調(diào)用匯編程序進行參數(shù)傳遞時都必須嚴格遵守C51函數(shù)的參數(shù)和返回值的相關(guān)約定。行參數(shù)傳遞的方式有兩種,一種是通過寄存器傳遞參數(shù),C51中不同類型的實參會存入相應(yīng)的寄存器,在匯編中只需對相應(yīng)寄存器進行操作,即可達到傳遞參數(shù)的目的;
44、第二種是通過固定存儲區(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復(fù)選框,使檢查框由灰色變成黑色(有效)狀態(tài)。 第三步:根據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如 Small 模式時,是 KeilC51LibC51S.Lib)加入到工程中,該文件必須作為工程的最后文件。 4(簡述
45、C51中調(diào)用匯編程序的實現(xiàn)方法。 答:編寫為C51調(diào)用的匯編程序,參數(shù)須按規(guī)定的寄存器或存儲器傳送,程序格式有相應(yīng)的規(guī)則,這些規(guī)則比較繁瑣,為了便于處理,在實際中我們往往先用C51寫出這個程序的主體,然后用SRC控制指令編譯產(chǎn)生asm文件,修改這個asm文件得到我們所要的匯編函數(shù)。處理過程具體如下。 第一步:先用C語言程序編寫出程序框架,如文件名為a1.c(注意參數(shù))。 第二步:在Keil C51的Project窗口中右擊該C語言文件,在彈出的快捷菜單中選擇Options for .,右邊的Generate Assembler SRCFile和Assemble SRC File,使檢查框由灰色
46、變成黑色(有效)狀態(tài); 第三步:根據(jù)選擇的編譯模式,把相應(yīng)的庫文件(如Small模式時,是KeilC51Lib C51S.Lib)加入工程中,該文件必須作為工程的最后文件。庫文件與編譯模式的關(guān)系如前面。 第四步:編譯后將會產(chǎn)生一個SRC的文件,將這個文件擴展名改為ASM。這樣就形成了可供C51程序調(diào)用的匯編程序。隨后可在該文件的代碼段中加入所需的指令代碼。 第五步:將該匯編程序與調(diào)用它的主程序一起加到工程文件中,這時工程文件中不再需要原來的C語言文件和庫文件,主程序只需要在程序開始處用EXTERN對所調(diào)用的匯編程序中的函數(shù)作聲明,在主程序中就可調(diào)用匯編程序中的函數(shù)了。 第七章 1. 何為“準雙
47、向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位選擇對機器周期計數(shù)實現(xiàn)計數(shù)功能,選擇對外部脈沖計數(shù)實現(xiàn)計數(shù)功能。 3. 定時/計數(shù)器T0有幾種工作方式,各自的特點是什么
48、, 答:有四種工作方式,特點見下表: M1 M0 工作方式 方式說明 0 0 0 13位定時/計數(shù)器 0 1 1 16位定時/計數(shù)器 1 0 2 8位自動重置定時/計數(shù)器 1 1 3 兩個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-10=65526;方式2初值為:256-10=246;方式2初值為:2
49、56-10=246。 5. 設(shè)振蕩頻率為12MHz,如果用定時/計數(shù)器T0產(chǎn)生周期為100ms的方波,可以選擇哪幾種方式,其初值分別設(shè)為多少, 答:只能選擇方式1,初值為65536-50000=15536。 6. 何為同步通信,何為異步通信,各自的特點是什么, 答:異步通信方式的特點是數(shù)據(jù)在線路上傳送時是以一個字符(字節(jié))為單位,未傳送時線路處于空閑狀態(tài),空閑線路約定為高電平“1”。特點是對發(fā)送時鐘和接收時鐘的要求相對不高,線路簡單,但傳送速度較慢。 同步通信方式的特點是數(shù)據(jù)在線路上傳送時以字符塊為單位,一次傳送多個字符,傳送時須在前面加上一個或兩個同步字符,后面加上校驗字符。特點是對發(fā)送時鐘
50、和接收時鐘要求較高,往往用同一個時鐘源控制,控制線路復(fù)雜,傳送速度快。 7. 單工、半雙工和全雙工有什么區(qū)別, 答:單工方式只有一根數(shù)據(jù)線,信息只能單向傳送;半雙工方式也只有一根數(shù)據(jù)線,但信息可以分時雙向傳送;全雙工方式有兩根數(shù)據(jù)線,在同一個時刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳送。 8. 設(shè)某異步通信接口,每幀信息格式為10位,當(dāng)接口每秒傳送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接收時為
51、接收數(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)利用串行口擴展并行輸入/輸出口,
52、 答:利用串行口在方式0時,當(dāng)外接一個串入并出的移位寄存器,就可以擴展并行輸出口;當(dāng)外接一個并入串出的移位寄存器時,就可以擴展并行輸入口。 13. 什么是中斷、中斷允許和中斷屏蔽, 答:在計算機中,由于計算機內(nèi)外部的原因或軟硬件的原因,使CPU從當(dāng)前正在執(zhí)行的程序中暫停下來,而自動轉(zhuǎn)去執(zhí)行預(yù)先安排好的為處理該原因所對應(yīng)的服務(wù)程序。執(zhí)行完服務(wù)程序后,再返回被暫停的位置繼續(xù)執(zhí)行原來的程序,這個過程稱為中斷,實現(xiàn)中斷的硬件系統(tǒng)和軟件系統(tǒng)稱為中斷系統(tǒng)。中斷允許是允許中斷請求送CPU產(chǎn)生中斷,中斷屏蔽是禁止中斷請求信號送CPU產(chǎn)生中斷。 14. 8051有幾個中斷源,中斷請求如何提出, INT0INT1
53、答:MCS-51單片機提供5個硬件中斷源:兩個外部中斷源(P3.2)和(P3.3),兩個定時/計數(shù)器T0和T1中斷;1個串行口中斷。 INT0INT1外部中斷源和的中斷請求信號從外部引腳P3.2和P3.3輸入;兩個定時/計數(shù)器T0和T1的溢出中斷TF0和TF1定時/計數(shù)器T0(或T1)溢出時提出;串行口中斷由發(fā)送中斷標志T1和接收中斷標志R1產(chǎn)生。 15. 8051的中斷源中,哪些中斷請求信號在中斷響應(yīng)時可以自動清除,哪些不能自動清除,應(yīng)如何處理, 答:工作在邊沿觸發(fā)方式下的兩個外部中斷源和兩個定時/計數(shù)器中斷中斷請求信號在中斷響應(yīng)時可以自動清除,工作在電平觸發(fā)方式下的兩個外部中斷源和串行口中斷不能自動清除。工作在電平觸發(fā)方式下的兩個外部中斷源的中斷請求信號通過外加硬件和加軟件的方式清除,串行口中斷標志T1和標志R1完全由軟件清除。 16. 8051的中斷優(yōu)先級有幾級,在形成中斷嵌套時各級有何規(guī)定, 答:8051
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)英語試卷題型
- 北京設(shè)計合同范本
- 個體合伙企業(yè)合伙協(xié)議書
- 買糧油采購合同范本
- 賣房全款合同范本
- 互聯(lián)網(wǎng)貸款合同范本
- 加盟公司續(xù)約合同范本
- 勞務(wù)租賃個人合同范本
- 企業(yè)混改評估合同范本
- 三年級音樂教學(xué)工作總結(jié)
- 2025年山東泰山財產(chǎn)保險股份有限公司招聘筆試參考題庫含答案解析
- 初中物理競賽及自主招生講義:第7講 密度、壓強與浮力(共5節(jié))含解析
- 高中主題班會 梁文鋒和他的DeepSeek-由DeepSeek爆火開啟高中第一課-高中主題班會課件
- 污水處理設(shè)施運維服務(wù)投標方案(技術(shù)標)
- 一年級下冊書法教案 (一)
- 《浙江省應(yīng)急管理行政處罰裁量基準適用細則》知識培訓(xùn)
- 2024年全國職業(yè)院校技能大賽高職組(康復(fù)治療技術(shù)賽項)考試題庫(含答案)
- 2025年山東健康集團招聘筆試參考題庫含答案解析
- 《中外廣播電視史》課件
- 微信公眾號運營
- 2024年八年級語文下冊《經(jīng)典常談》第一章《說文解字》練習(xí)題卷附答案
評論
0/150
提交評論