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

下載本文檔

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

文檔簡(jiǎn)介

1、第一章1. 給出以下有符號(hào)數(shù)的原碼、反碼和補(bǔ)碼假設(shè)計(jì)算機(jī)字長(zhǎng)為8位.+45-89-6+112答:【+45原=00101101, +45反=00101101, +45補(bǔ)=00101101 -89原=11011001, -89反=10100110, -89補(bǔ)=10100111 -6原=10000110, -6反=11111001, -6補(bǔ)=11111010 + 112原=01110000, +45反=01110000, +45補(bǔ)=011100002 .指明以下字符在計(jì)算機(jī)內(nèi)部的表示形式.AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H

2、 73H 76H 31H 32H 30H3 .什么是單片機(jī)?答:?jiǎn)纹瑱C(jī)是把微型計(jì)算機(jī)中的微處理器、存儲(chǔ)器、 I/O接口、定時(shí) 器/計(jì)數(shù)器、串行接口、中斷系統(tǒng)等電路集成到一個(gè)集成電路芯片上形成 的微型計(jì)算機(jī).因而被稱為單片微型計(jì)算機(jī),簡(jiǎn)稱為單片機(jī).4 .單片機(jī)的主要特點(diǎn)是什么?答:主要特點(diǎn)如下:1在存儲(chǔ)器結(jié)構(gòu)上,單片機(jī)的存儲(chǔ)器采用哈佛Harvard結(jié)構(gòu)2在芯片引腳上,大局部采用分時(shí)復(fù)用技術(shù)3在內(nèi)部資源訪問上,采用特殊功能存放器SFR的形式4在指令系統(tǒng)上,采用面向限制的指令系統(tǒng)5內(nèi)部一般都集成一個(gè)全雙工的串行接口6單片機(jī)有很強(qiáng)的外部擴(kuò)展水平5 .指明單片機(jī)的主要應(yīng)用領(lǐng)域.答:?jiǎn)螜C(jī)應(yīng)用:1工業(yè)自動(dòng)化

3、限制;2智能儀器儀表;3計(jì)算機(jī)外部設(shè)備和智能接口; 4 家用電器多機(jī)應(yīng)用:功能彌散系統(tǒng)、并行多機(jī)處理系統(tǒng)和局部網(wǎng)絡(luò)系統(tǒng).弟早1 . MCS-51單片機(jī)由哪幾個(gè)局部組成?答:MCS-51單片機(jī)主要由以下局部組成的:時(shí)鐘電路、中央處理器CPU、存儲(chǔ)器系統(tǒng)RAM和ROM定時(shí)/計(jì)數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一 些特殊功能存放器SFR.2 . MCS-51的標(biāo)志存放器有多少位,各位的含義是什么?CcA0F FS14 S0RVO-D D D D D D D 76543210答:MCS-51的標(biāo)志存放器PSWT 8位;DP含義如下:CPSW.7:進(jìn)位或借位標(biāo)志位.ACPSW.6輔助進(jìn)位或借位可標(biāo)志位

4、.F0PSW.5:用戶標(biāo)志位.是系統(tǒng)預(yù)留給用戶自己定義的標(biāo)志位RS1 RS0(PSW.4 PSW.3):存放器組選擇位.可用軟件置位或清零,用于 從四組工作存放器中選定當(dāng)前的工作存放器組.OV(PSW.2)溢出標(biāo)志位.在加法或減法運(yùn)算時(shí),如運(yùn)算的結(jié)果超出8位1進(jìn)制數(shù)的范圍,那么ov置1,標(biāo)志溢出,否那么ov青零.P(PSW.0):奇偶標(biāo)志位.用于記錄指令執(zhí)行后累加器 A中1的個(gè)數(shù)的奇偶 性.假設(shè)累加器A中1的個(gè)數(shù)為奇數(shù),那么P置位,假設(shè)累加器A中1的個(gè)數(shù)為偶 數(shù),那么P清零.其中PSW.侏定義,可供用戶使用.3 .在8051的存儲(chǔ)器結(jié)構(gòu)中,內(nèi)部數(shù)據(jù)存儲(chǔ)器可分為幾個(gè)區(qū)域?各有什么 特點(diǎn)?答:片內(nèi)

5、數(shù)據(jù)存儲(chǔ)器按功能可以分成以下幾個(gè)局部:工作存放器組區(qū)、位 尋址區(qū)、一般RAM:和特殊功能存放器區(qū),其中還包含堆棧區(qū).工作存放器組 區(qū),00H1FH單元,可用RO- R7等8個(gè)存放器訪問;位尋址區(qū),20H2FH單 元,可按位方式訪問;一般 RAM:, 30H- 7FH單元;堆棧區(qū),可從08到7F單 元;特殊功能存放器區(qū)位于 80HFFHI元.4 .什么是堆棧?說明MCS-51單片機(jī)的堆棧處理過程.答:堆棧是按先入后出、后入先出的原那么進(jìn)行治理的一段存儲(chǔ)區(qū)域.CS-51單片機(jī)的堆棧是向上生長(zhǎng)型的,存入數(shù)據(jù)是從地址低端向高端延伸,取出數(shù)據(jù) 是從地址高端向低端延伸.入棧和出棧數(shù)據(jù)是以字節(jié)為單位的.入棧

6、時(shí),SP指針的內(nèi)容先自動(dòng)加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時(shí),先把 SP指針指向單元的數(shù)據(jù)取出,然后再把 SP指針的內(nèi)容自動(dòng)減1.5 . MCS-51單片機(jī)有多少根I/O線?它們和單片機(jī)的外部總線有什么關(guān)系?答:MCS-51單片機(jī)有32根I/O線,由P0 口經(jīng)地址鎖存器提供低8位(A7A0), P2 口提供高8位(A15A8)而形成.數(shù)據(jù)總線寬度為 8位,由P0 口直接提供.限制總線由第二功能狀態(tài)下的 P3 口和4根獨(dú)立的限制線RSK EA ALE和 PSEN®成.6 .什么是機(jī)器周期? MCS-51單片機(jī)的一個(gè)機(jī)器周期包括多少個(gè)時(shí)鐘周期?答:機(jī)器周期:機(jī)器周期是單片機(jī)

7、的根本操作周期,每個(gè)機(jī)器周期包含S1、S2、S66個(gè)狀態(tài),每個(gè)狀態(tài)包含兩拍 P1和P2,每一拍為一個(gè)時(shí)鐘周期振蕩周期.因此,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期.7 .如果時(shí)鐘周期的頻率為12MHz那么ALE信號(hào)的頻率為多少?答:2MHZAfV*弟二早1 .在MCS-5俾片機(jī)中,尋址方式有幾種?其中對(duì)片內(nèi) RAMPT以用哪幾種 尋址方式?對(duì)片外RAMW以用哪幾種尋址方式?答:尋址方式可分為數(shù)的尋址和指令尋址,數(shù)的尋址有:常數(shù)尋址立即 尋址、存放器數(shù)尋址存放器尋址、存儲(chǔ)器數(shù)尋址直接尋址方式、存放 器間接尋址方式、變址尋址方式和位尋址,指令的尋址有絕對(duì)尋址和相對(duì)尋 址.片內(nèi)RAM1址有:存放器尋址、直接

8、尋址方式和存放器間接尋址方式.片 外RAM#址有:存放器間接尋址方式.2 .在對(duì)片外RAMI元尋址中,用Ri間接尋址與用DPTRW接尋址有什么區(qū) 別?答:片外數(shù)據(jù)存儲(chǔ)器尋址中,用 Ri間接尋址只能訪問低端的256字節(jié)單 元,而用DPTR乍指針間接訪問可訪問整個(gè)64K字節(jié).3 .在位處理中,位地址的表示方式有哪幾種?答:1,直接位地址00H0FFH o傷J如:20H4 .字節(jié)地址帶位號(hào).例如:20H.3表示20H單元的3位5 .特殊功能存放器名帶位號(hào).例如:P0.1表示P0 口的1位6 .位符號(hào)地址.例如:TR0是定時(shí)/計(jì)數(shù)器T0的啟動(dòng)位04.寫出完成以下操作的指令.(1) R0的內(nèi)容送到R1中

9、.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 R 0A(4)片內(nèi)RAM勺50H單元內(nèi)容送到片外 RAM勺3000H單元中MOV A 50HMOV DPTR #3000HMOVX DPT FA(5)片外RAM勺2000H單元內(nèi)容送到片外 RAM勺20H單元中MOV DPTR #2000HMOVX A DPTRMOV 20H A(6)片外RAM勺1000H單元內(nèi)容送到片外 RAM勺4000H單元中MOV DPT

10、R #1000HMOVX A DPTRMOV DPTR #4000HMOV DPTRA(7) ROM勺1000H單元內(nèi)容送到片內(nèi) RAM勺50H單元中.MOV A #0MOV DPTR #1000HMOVC A A+DPTRMOV 201H A(8) ROM勺1000H單元內(nèi)容送到片外 RAM勺1000H單元中.MOV A #0MOV DPTR #1000HMOVC A A+DPTRMOVX DPT FA5 .區(qū)分以下指令有什么不同?(1) MOV A 20H和 MOV A #20H答:前者源操作數(shù)是直接尋址,后者源操作數(shù)立即尋址.(2) MOV A R1K MOVX A R1答:前者源操作數(shù)

11、是訪問片內(nèi)數(shù)據(jù)存儲(chǔ)器,后者源操作數(shù)訪問片外數(shù)據(jù) 存儲(chǔ)器低256字節(jié).(3) MOV A R1 和 MOV A R1答:前者源操作數(shù)是存放器尋址,后者源操作數(shù)存放器間接尋址.(4) MOVX A Rfn MOVX A DPTR答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲(chǔ)器低256字節(jié),后者源操作數(shù)訪問片外數(shù)據(jù)存儲(chǔ)器整個(gè)64K字節(jié).(5) MOVX A DPT和 MOVC A A+DPTR答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲(chǔ)器,后者源操作數(shù)訪問程序數(shù)據(jù) 存儲(chǔ)器.6 .設(shè)片內(nèi) RAM勺(20H) =40H, (40H) =10H, ( 10H) =50H, (P1) =0CAH分析以下指令執(zhí)行后片內(nèi) RAM勺2

12、0H 40H 10H單元以及P1、P2中的 內(nèi)容.MOV R0 #20HMOV A R0 ; A=40HMOV R1, A ; R1=40HMOV A R1 A=10HMOV R0P1; (40H) =0CAHMOV P2 P1P2=0CAHMOV 10H A (10H) =10HMOV 20H 10H(20H) =10H結(jié)果:(20H) =10H (10H) =10H (40H) =0CAH P2=0CAHF口 P1=0CAH7,(A) =02H, (R1) =7FH, (DPTR =2FFCH 片內(nèi) RAM(7FH) =70H,片外RAM(2FFEH =11H, ROM( 2FFEH =6

13、4H,試分別寫出以下各條指令 執(zhí)行后目標(biāo)單元的內(nèi)容.(1) MOV A R1結(jié)果:(2) MOVX DPTFA結(jié)果:(3) MOVC A A+DPTR 結(jié)果:(4) XCHD A R1結(jié)果:單元等于72H累加器A等于70H片外RAM(2FFCH單元等于02H累加器A等于64H累加器 A等于00H,片內(nèi)RAM(7FH)(B) =04H, CY=1 片內(nèi) RAM(78H)8.:(A) =78H, (R1) =78H=0DDH (80H) =6CH試分別寫出以下指令執(zhí)行后目標(biāo)單元的結(jié)果和相應(yīng)標(biāo)志 位的值.(1) ADD A, R1;累加器A等于55H, CY等于1(2) SUBB A #77H(3)

14、 MUL AB等于1, 0可于0(4) DIV ABCY OV等于0;累加器A等于00H, CY等于0;累加器A等于E0H B存放器等于01H, CY;累加器A等于1EH B存放器等于00H,(5) ANL 78H, #78H ;片內(nèi) RAM(78H)單元等于 58H(6) ORL A, #0FH;累加器 A等于 7FH(7) XRL 80H, A;片內(nèi) RAM(80H)等于 14H9 .設(shè)(A) =83H, (R0) =17H, (17H) =34H,分析當(dāng)執(zhí)行完下面指令段后 累加器A、RO 17H單元的內(nèi)容.ANL A, #17H; A=03HORL 17H, AXRL A, R0CPL

15、A;(17H) =37H;A=34H;A=CBH結(jié)果:A=CBH (R.=17H, (17H) =37H10 .寫出完成以下要求的指令.(1)累加器A的低2位清零,其余位不變.ANL A, #11111100B(2)累加器A的高2位置“1,其余位不變.ORL A, #11000000B(3)累加器的高4位取反,其余位不變.XRL A, #11110000B(4)累加器第0位、2位、4位、6位取反,其余位不變.XRL A, #01010101B11 .說明LJMP旨令與AJMP旨令的區(qū)別?答:LJMP指令后面提供的是16位目標(biāo)地址,所以可以轉(zhuǎn)移到64KB程序 存儲(chǔ)器的任意位置,缺點(diǎn)是:執(zhí)行時(shí)間長(zhǎng)

16、,字節(jié)數(shù)多.AJMP旨令后帶的是11位直接地址,執(zhí)行時(shí),先將程序指針 PC的 值加2 (該指令長(zhǎng)度為2字節(jié)),然后把指令中的11位地址addrll送給程序 指針PC的低11位,而程序指針的高5位不變,只能在當(dāng)前2K范圍內(nèi)轉(zhuǎn)移.12 .設(shè)當(dāng)前指令CJNE A, #12H, 10H的地址是0FFEH假設(shè)累加器A的值為 10H,那么該指令執(zhí)行后的PC值為多少?假設(shè)累加器A的值為12H呢?答:指令執(zhí)行后的PC值為1011H假設(shè)累加器A的值為12H,那么指令執(zhí)行 后的PC值為1001H13 .用位處理指令實(shí)現(xiàn) P1.4=P1.0 (P1.1 P1.2) /P1.3的邏輯功能.程序:MOV C, P1.1

17、ORL C, P1.2ANL C, P1.0ORL C, /P1.3MOV P1.4, C14 .以下程序段匯編后,從1000H單元開始的單元內(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 中

18、.程序:MOVRO, #20HMOVR2, #03HLOOP MOV A R0MOVX R0 AINCRODJNZ R2, LOOPSJMP $16 .編程實(shí)現(xiàn)將片外RAM勺2000H2030K元的內(nèi)容,全部搬到片內(nèi) RAM 的20H單元開始位置,并將源位置清零.程序:MOVR0, #20HMOV DPTR #2000HMOVR2, #30HLOOPMOVX A, DPTRMOV R0AMOV A, #00MOVX DP RAINCDPTRINCR0DJNZ R2, LOOPSJMP $17 .編程將片外RAM勺1000H單元開始的100個(gè)字節(jié)數(shù)據(jù)相加,結(jié)果放于 R7R6 中.程序:MOVDP

19、TR #1000HMOV R2, #100MOV R7, #00MOV R6, #00LOOP MOVX A, DPTRADD A, R6MOV R6, AMOV A, R7ADDC A, #0MOV R7, AINCDPTRDJNZ R2, LOOPSJMP $18 .編程實(shí)現(xiàn) R4R3R2,結(jié)果放于 R7R6R5K程序:ORG 0100HMUL1 MOV A R2MOV B, R3MUL AB; R2 R3,結(jié)果的低字節(jié)直接存入積的 R5MOV R5 A ;結(jié)果的高字節(jié)存入R6中暫存起來MOV R6 BMUL2 MOV A R2MOV B, R4MUL AB;R2 R4,結(jié)果的低字節(jié)與R6

20、相加后,再存入R6中ADD A, R6MOV R6 AMOV A B ;結(jié)果的高字節(jié)加上進(jìn)位位后存入 R7中ADDC A #00MOV R7 ASJMP $19 .編程實(shí)現(xiàn)把片內(nèi)RAM勺20H單元的0位、1位,21H單元的2位、3 位,22H單元的4位、5位,23H單元的6位、7位,按原位置關(guān)系拼裝在一起 放于R2中.程序:MOV C, 20H.0MOV A.0, CMOV C, 20H.1MOV A.1 , CMOV C, 21H.2MOV A.2, CMOV C, 21H.3MOV A.3 , CMOV C, 22H.4MOV A.4 , CMOV C, 22H.5MOV A.5 , CM

21、OV C, 23H.6MOV A.6 , CMOV C, 23H.7MOV A.7, CMOV R2, A20 .用查表的方法實(shí)現(xiàn)一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCIIo程序:設(shè)一位十六進(jìn)制數(shù)放在 R2中,輪換的ASCII也放于R2中C16STASCMOV DPTR #TABMOV A, R2MOVC A, A+DPTRMOV R2, ARETTAB DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37HDB 38H, 391H 41H 42H, 43H, 44H, 45H, 46H21 .編程統(tǒng)計(jì)從片外RAM2000肝始的100個(gè)單元中“ 0的個(gè)數(shù)放于R2程序:MOVDP

22、TR #2000HMOVR3, #100MOVR2, #00LOOPMOVX A,DPTRJNZNEXTINCR2NEXT INCDPTRDJNZ R3, LOOPSJMP $第四章1. C語言有哪些特點(diǎn)?答:C語言具有以下特點(diǎn):1語言簡(jiǎn)潔、緊湊,使用方便、靈活2運(yùn)算符豐富3數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu)4可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)5可以直接對(duì)計(jì)算機(jī)硬件進(jìn)行操作6生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高7可移植性好2 .有哪些數(shù)據(jù)類型是MCS-51單片機(jī)直接支持的?答:MCS-51單片機(jī)直接支持的數(shù)據(jù)類型標(biāo)準(zhǔn)分為根本數(shù)據(jù)類型和組合數(shù)據(jù) 類型,根本數(shù)據(jù)類型有字符型 char、短整型short、

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

24、片內(nèi)RAM允許訪問全部片內(nèi)RAMpdata:用Ri間接訪問的片外RAM氐256Bxdata :用DPTRh接訪問的片外RAM允許訪問全部64KB片外RAMcode:程序存儲(chǔ)器 ROM 64KB空間5 .在C51中,bit位與sbit位有什么區(qū)別?答:bit位類型符用于定義一般的位變量.存儲(chǔ)器類型只能是 bdata、 data、idata ,只能是片內(nèi)RAM勺可位尋址區(qū),嚴(yán)格來說只能是 bdata.sbit位類型符用于定義在可位尋址字節(jié)或特殊功能存放器中的位,定義時(shí) 需指明其位地址,可以是位直接地址,可以是可位尋址變量帶位號(hào),也可以是 特殊功能存放器名帶位號(hào).6 .在C51中,通過絕對(duì)地址來訪問

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

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

27、義整型變量 idata val2;(3) 在xdata區(qū)定義無符號(hào)字符型數(shù)組val34.unsigned char xdata val34;(4) 在xdata區(qū)定義一個(gè)指向char類型的指針px.char xdata *px;(5) 定義可尋址位變量flag .bit flag;(6) 定義特殊功能存放器變量P3.sfr P3=0xa0;(7) 定義特殊功能存放器變量SCONsfr SCON=0x98;(8) 定義16位的特殊功能存放器T0osfr16 T0=0x8a;(9) 出以下關(guān)系表達(dá)式或邏輯表達(dá)式的結(jié)果,設(shè) a=3, b=4, c=5.a+b>c&&a

28、mp;b= =c結(jié)果:假(2) a|b+c&&b-c結(jié)果:真(3) !(a>b)&&!c|1結(jié)果:真(4) !(a+b)+c-1&&b+c/2 結(jié)果:<10. 寫出以下C51程序的執(zhí)行結(jié)果.#include <stdio.h>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

29、);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(l);)結(jié)果: 8 9 98 8 98 7 78 8 7#include <stdio.h>extern serial_initial();main()int x,y,z;serial_initial();printf("input data x,y?n");scanf("%d %d",&

30、;x,&y);printf("n x y x<y x<=y x>y x>=y x!=y x=y");printf("n");printf("n%3d%3d",x,y);z=x<y;printf("%5d",z);z=x<=y;printf("%5d",z);z=x>y;printf("%5d",z);z=x>=y;printf("%5d",z);z=x!=y;printf("%5d"

31、;,z);z=x=y;printf("%5d",z);while(1);執(zhí)行結(jié)果:input data x,y?1 2x y x<y x<=y x>y x>=y x!=y x=y1 2 1 1 0 0 1 0#include <stdio.h>extern serial_initial();main()int x,y,z;serial_initial();printf("input data x, y ?n");scanf("%d %d",&x,&y);printf("n

32、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 is alln"); while(1);)執(zhí)行結(jié)果:input data x, y ?x y !x x|y x&&

33、;y1 2 0 11That is all#include <stdio.h>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=a<<1;b=b>>1;x=x<<1;y=y>>1;printf("n a=%4x b=%4x x=%4x y=%4x,a,b,x,y);printf("

34、n");printf("n");printf("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)后面的 一個(gè)語句.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)體中 conti

35、nue下面尚未執(zhí)行的語句,直接進(jìn)行下一次是否執(zhí)行循環(huán)的判定.continue語句和break語句的區(qū)別在于:continue語句只是結(jié)束本次循環(huán) 而不是終止整個(gè)循環(huán);break語句那么是結(jié)束循環(huán),不再進(jìn)行條件判斷.12. 用分支結(jié)構(gòu)編程實(shí)現(xiàn):輸入“ 1顯示“ A,輸入“ 2顯示“B,輸入“ 3顯示“ C',輸入“ 4顯示“ D,輸入“ 5結(jié)束.參考程序:#include <reg52.h>#include <stdio.h>void main(void)(unsigned char x;SCON=0x52;/ 用口初始化TMOD=0x20;TH1=0XF3;TR

36、1=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

37、(" QUIT'n");break;default: printf(" RETRYn");if (x='5') break;while(1);13. 輸入3個(gè)無符號(hào)的字符數(shù)據(jù),要求按由大到小的順序輸出.參考程序:#include <reg52.h>#include <stdio.h>void main(void)unsigned char x,y,z,m;SCON=0x52;/ 用口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf("input x,y,z:");/

38、輸出提示信息scanf("%c,%c,%c",&x,&y,&z);printf("n");if (x<y) m=x;x=y;y=m;if (y<z) m=y;y=z;z=m;if (x<y) m=x;x=y;y=m;printf("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 <reg52.h> #include <stdio.h>

39、 void main(void) int i,s=0;i=1;SCON=0x52;TMOD=0x20;TH1=0XF3; TR1=1;while (i<=10)s=s+i*i; i+;/包含特殊功能存放器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)/定義整型變量/用口初始化/累加1到10的平方之和在s中printf("1至U 10 的平方之和二%dn",s);while(1);(2) do while 循環(huán)#include <reg52.h>#include <stdio.h> void main(void) int i,s=0;i=1;SCON=0x52;T

40、MOD=0x20;TH1=0XF3;TR1=1; do/包含特殊功能存放器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)/定義整型變量/用口初始化/累加1至I 10的平方之和在s中s=s+i*i;i+;while (i<=10);printf("1 到 10 的平方之和二%dn",s);while(1);(3)for循環(huán)#include <reg52.h>#include <stdio.h> void main(void) int i,s=0;SCON=0x52;TMOD=0x20;/包含特殊功能存放器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)/定義整型變量/用口初始化TH1

41、=0XF3;TR1=1;for (i=1;i<=10;i+) s=s+i*i; /累加 1 到 10 的平方之和在 s 中printf("1 到 10 的平方之和=%dn",s);while(1);15.對(duì)一個(gè)由5個(gè)元素組成的無符號(hào)字符數(shù)組按由小到大的順序進(jìn)行排序.參考程序:#include <reg52.h>#include <stdio.h> main()unsigned char f5,m,i,j;/包含特殊功能存放器庫(kù) 包含I/O函數(shù)庫(kù)SCON=0x52;/ 用口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(&q

42、uot;輸入任意5個(gè)字符:");scanf("%c,%c,%c,%c,%c",&f0,&f1,&f2,&f3,&f4);printf("n");for (i=0;i<5;i+)for (j=0;j<5-i;j+)if (fj>fj+1)m=fj;fj=fj+1;fj+1=m;printf("由小到大的順序?yàn)椋篶,%c,%c,%c,%c",f0,f1,f2,f3,f4);printf("n");while(1);16.出.用指針實(shí)現(xiàn),輸入3個(gè)無符號(hào)字

43、符數(shù)據(jù),按由大到小的順序輸參考程序:#include <reg52.h> /包含特殊功能存放器庫(kù)#include <stdio.h> / 包含 I/O 函數(shù)升 main() unsigned char x,y,z;unsigned 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

44、=&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);17.有3個(gè)學(xué)生,每個(gè)學(xué)生都包括學(xué)號(hào)、姓名和成績(jī),要求找出成績(jī)最高的學(xué)生的姓名和成績(jī).參考程序:#include <reg52.h>#include <stdio.h> struct studen

45、t/包含特殊功能存放器庫(kù) 包含I/O函數(shù)庫(kù) unsigned unsigned unsigned p13; main() unsignedchar number10;char name10; int grade;SCON=0x52;TMOD=0x20;TH1=0XF3;TR1=1;char i,j=0;/用口初始化printf("input 3 studend number,name and grade:n");for (i=0;i<3;i+)printf("input number:n");scanf("%s",p1i. nu

46、mber);printf("input name:n");scanf("%s",);printf("input grade:n");scanf("%d",&p1i.grade);,or (i=1;i<3;i+)if (p1i.grade>p1j.grade) j=i;printf("成績(jī)最高的學(xué)生是:s,成績(jī)是:%d",,p1j.grade);printf("n");) while(1);)第五章1 .單片機(jī)C語言與匯編語言

47、混合編程有哪幾種方式?通常采用什么方式?答:?jiǎn)纹瑱C(jī)C語言和匯編語言混合編程分為匯編中調(diào)用 C51函數(shù)和C51程 序中引用匯編,通常使用的是在 C51程序中引用匯編.在C51程序中使用匯編 語言有兩種情況:一種是匯編程序局部和 C51程序局部為不同的模塊,或不同 的文件,通常由C51程序調(diào)用匯編程序模塊的變量和函數(shù)也可稱為子程序或 過程;另一種是嵌入式匯編,即在 C51程序中嵌入一段匯編語言程序.2 .簡(jiǎn)述C51程序調(diào)用匯編程序時(shí)如何實(shí)現(xiàn)參數(shù)傳遞.答:C51中調(diào)用匯編程序進(jìn)行參數(shù)傳遞時(shí)都必須嚴(yán)格遵守C51函數(shù)的參數(shù)和返回值的相關(guān)約定.行參數(shù)傳遞的方式有兩種,一種是通過存放器傳遞參數(shù), C51中不

48、同類型的實(shí)參會(huì)存入相應(yīng)的存放器,在匯編中只需對(duì)相應(yīng)存放器進(jìn)行 操作,即可到達(dá)傳遞參數(shù)的目的;第二種是通過固定存儲(chǔ)區(qū)傳遞.3 .簡(jiǎn)述嵌入式匯編的實(shí)現(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)的庫(kù)文件 如Small模式時(shí),是 KeilC5

49、1LibC51S.Lib 參加到工程中,該文件必須作為工程的最后文件.4 .簡(jiǎn)述C51中調(diào)用匯編程序的實(shí)現(xiàn)方法.答:編寫為C51調(diào)用的匯編程序,參數(shù)須按規(guī)定的存放器或存儲(chǔ)器傳送, 程序格式有相應(yīng)的規(guī)那么,這些規(guī)那么比擬繁瑣,為了便于處理,在實(shí)際中我們往 往先用C51寫出這個(gè)程序的主體,然后用 SRC空制指令編譯產(chǎn)生asm文件,修 改這個(gè)asm文件得到我們所要的匯編函數(shù).處理過程具體如下.第一步:先用C語言程序編寫出程序框架,如文件名為 al.c注意參數(shù).第二步:在Keil C51的Project窗口中右擊該C語言文件,在彈出的快捷 菜單中選擇 Options for .,右邊的 Generat

50、e Assembler SRCFile 和Assemble SRC File ,使檢查框由灰色變成黑色有效狀態(tài);第三步:根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件 如Small模式時(shí),是 KeilC51Lib C51S.Lib 參加工程中,該文件必須作為工程的最后文件.庫(kù) 文件與編譯模式的關(guān)系如前面.第四步:編譯后將會(huì)產(chǎn)生一個(gè) SRC勺文件,將這個(gè)文件擴(kuò)展名改為 ASM這 樣就形成了可供C51程序調(diào)用的匯編程序.隨后可在該文件的代碼段中參加所 需的指令代碼.第五步:將該匯編程序與調(diào)用它的主程序一起加到工程文件中,這時(shí)工程 文件中不再需要原來的C語言文件和庫(kù)文件,主程序只需要在程序開始處用 EXTERN

51、t所調(diào)用的匯編程序中的函數(shù)作聲明,在主程序中就可調(diào)用匯編程序中 的函數(shù)了.第六章1 .何為“準(zhǔn)雙向I/O接口?在MCS-5俾片機(jī)的四個(gè)并口中,哪些是“準(zhǔn)雙向I/O接口?答:準(zhǔn)雙向I/O接口是能實(shí)現(xiàn)輸入輸出功能,但在使用時(shí)只能從輸入和輸 出中選擇一個(gè).MCS-51單片機(jī)的四個(gè)并口中P1、P2、P3是準(zhǔn)雙向I/O接口.2 . 80C51單片機(jī)內(nèi)部有幾個(gè)定時(shí)/計(jì)數(shù)器?它們由哪些功能存放器組成?怎 樣實(shí)現(xiàn)定時(shí)功能和計(jì)數(shù)功能?答:80C51單片機(jī)內(nèi)部有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,由TH0,TL0,TH1,TL1,TMODffi TCONft能存放器組成.通過 TMO葉的C/T位選擇對(duì) 機(jī)器周期計(jì)數(shù)實(shí)

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

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

54、兩個(gè)同步字符,后面加上校驗(yàn)字符.特點(diǎn) 是對(duì)發(fā)送時(shí)鐘和接收時(shí)鐘要求較高,往往用同一個(gè)時(shí)鐘源限制,限制線路復(fù) 雜,傳送速度快.7 .單工、半雙工和全雙工有什么區(qū)別?答:?jiǎn)喂し绞街挥幸桓鶖?shù)據(jù)線,信息只能單向傳送;半雙工方式也只有一 根數(shù)據(jù)線,但信息可以分時(shí)雙向傳送;全雙工方式有兩根數(shù)據(jù)線,在同一個(gè)時(shí) 刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳送.8 .設(shè)某異步通信接口,每幀信息格式為 10位,當(dāng)接口每秒傳送1000個(gè)字 符時(shí),其波特率為多少?答:10000波特9 .用行口數(shù)據(jù)存放器SBUFt什么特點(diǎn)?答:發(fā)送數(shù)據(jù)存放器和接收數(shù)據(jù)存放器合起用一個(gè)特殊功能存放器 SBUF4 行口數(shù)據(jù)存放器,執(zhí)行MOV SBUF,Ag送時(shí)為發(fā)

55、送數(shù)據(jù)存放器,執(zhí)行 MOV A, SBUF®收時(shí)為接收數(shù)據(jù)存放器.10 .MCS-51單片機(jī)用行口有幾種工作方式?各自特點(diǎn)是什么?答:有四種工作方式,分別是方式 0、方式1、方式2和方式3.其中:方式0,稱為同步移位存放器方式,一般用于外接移位存放器芯片擴(kuò)展I/O接口.方式1,稱為8位的異步通信方式,通常用于雙機(jī)通信.方式2和方式3,稱為9位的異步通信方式,通常用于多機(jī)通信.11 . 說明SM2ft方式2和方式3對(duì)數(shù)據(jù)接收有何影響.答:通過SM2寸方式2和方式3數(shù)據(jù)接收進(jìn)行限制,SM2=1,那么只有接 收的第9位為“1才接收有效.如SM2=0接收的第9位無論為1還是0都接 收有效.1

56、2 .怎樣來實(shí)現(xiàn)利用用行口擴(kuò)展并行輸入/輸出口?答:利用用行口在方式0時(shí),當(dāng)外接一個(gè)申入并出的移位存放器,就可以 擴(kuò)展并行輸出口;當(dāng)外接一個(gè)并入用出的移位存放器時(shí),就可以擴(kuò)展并行輸入 口.13 . 什么是中斷、中斷允許和中斷屏蔽?答:在計(jì)算機(jī)中,由于計(jì)算機(jī)內(nèi)外部的原因或軟硬件的原因,使CPIM當(dāng)前正在執(zhí)行的程序中暫停下來,而自動(dòng)轉(zhuǎn)去執(zhí)行預(yù)先安排好的為處理該原因所 對(duì)應(yīng)的效勞程序.執(zhí)行完效勞程序后,再返回被暫停的位置繼續(xù)執(zhí)行原來的程 序,這個(gè)過程稱為中斷,實(shí)現(xiàn)中斷的硬件系統(tǒng)和軟件系統(tǒng)稱為中斷系統(tǒng).中斷 允許是允許中斷請(qǐng)求送CPU生中斷,中斷屏蔽是禁止中斷請(qǐng)求信號(hào)送 CPIF 生中斷.14 .8051有幾個(gè)中斷源?中斷請(qǐng)求如何提出?答:MCS-51單片機(jī)提供5個(gè)硬件中斷源:兩個(gè)外部中斷源INT0 (P3.2)和 INT1 (P3.3),兩個(gè)定時(shí)/計(jì)數(shù)器T0和T1中斷;1個(gè)用行口中斷.外部中斷源INT0和INT1的中斷請(qǐng)求信號(hào)從外部引腳 P3.2和P3.3輸入;兩 個(gè)定時(shí)/計(jì)數(shù)器T0和T1的溢出中斷TF0和TF1定時(shí)/計(jì)數(shù)器T0(或T1)溢出時(shí) 提出;用行口中斷由發(fā)送中斷標(biāo)志 T1和接收中斷標(biāo)志R1產(chǎn)生.15 .805

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論