




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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ǔ)=01110000指明下列字符在計(jì)算機(jī)內(nèi)部的表示形式。AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH
2、 46H 6DH 64H 73H 76H 31H 32H 30H什么是單片機(jī)?答:?jiǎn)纹瑱C(jī)是把微型計(jì)算機(jī)中的微處理器、存儲(chǔ)器、I/O接口、定時(shí)器/計(jì)數(shù)器、串行接口、中斷系統(tǒng)等 電路集成到一個(gè)集成電路芯片上形成的微型計(jì)算機(jī)。因而被稱為單片微型計(jì)算機(jī),簡(jiǎn)稱為單片機(jī)。單片機(jī)的主要特點(diǎn)是什么?答:主要特點(diǎn)如下:在存儲(chǔ)器結(jié)構(gòu)上,單片機(jī)的存儲(chǔ)器采用哈佛(Harvard)結(jié)構(gòu)在芯片引腳上,大部分采用分時(shí)復(fù)用技術(shù)在內(nèi)部資源訪問(wèn)上,采用特殊功能寄存器(SFR)的形式在指令系統(tǒng)上,采用面向控制的指令系統(tǒng)內(nèi)部一般都集成一個(gè)全雙工的串行接口單片機(jī)有很強(qiáng)的外部擴(kuò)展能力指明單片機(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)。第二章MCS-51單片機(jī)由哪幾個(gè)部分組成?答:MCS-51單片機(jī)主要由以下部分組成的:時(shí)鐘電路、中央處理器(CPU)、存儲(chǔ)器系統(tǒng)(RAM和 ROM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器(SFR)。MCS-51的標(biāo)志寄存器有多少位,各位的含義是什么?答:MCS-51的標(biāo)志寄存器PSW有8位;CCA0FRCCA0FRS1RS0VOPD D D D D D D76543210含義如下:C(PSW.7):進(jìn)位或借位標(biāo)志位。AC(PSW.6):輔助進(jìn)位
4、或借位可標(biāo)志位。F0(PSW.5):用戶標(biāo)志位。是系統(tǒng)預(yù)留給用戶自己定義的標(biāo)志位。RS1、RS0(PSW.4、PSW.3):寄存器組選擇位??捎密浖梦换蚯辶?,用于從四組工作寄存器中選定 當(dāng)前的工作寄存器組。0V(PSW.2):溢出標(biāo)志位。在加法或減法運(yùn)算時(shí),如運(yùn)算的結(jié)果超出8位二進(jìn)制數(shù)的范圍,則0V置 1,標(biāo)志溢出,否則0V清零。P(PSW.O):奇偶標(biāo)志位。用于記錄指令執(zhí)行后累加器A中1的個(gè)數(shù)的奇偶性。若累加器A中1的個(gè) 數(shù)為奇數(shù),則P置位,若累加器A中1的個(gè)數(shù)為偶數(shù),貝打清零。其中PSW. 1未定義,可供用戶使用。在8051的存儲(chǔ)器結(jié)構(gòu)中,內(nèi)部數(shù)據(jù)存儲(chǔ)器可分為幾個(gè)區(qū)域?各有什么特點(diǎn)?答:
5、片內(nèi)數(shù)據(jù)存儲(chǔ)器按功能可以分成以下幾個(gè)部分:工作寄存器組區(qū)、位尋址區(qū)、一般RAM區(qū)和特 殊功能寄存器區(qū),其中還包含堆棧區(qū)。工作寄存器組區(qū),00H1FH單元,可用R0R7等8個(gè)寄存器訪 問(wèn);位尋址區(qū),20H2FH單元,可按位方式訪問(wèn);一般RAM區(qū),30H7FH單元;堆棧區(qū),可從08到7F 單元;特殊功能寄存器區(qū)位于80HFFH單元。什么是堆棧?說(shuō)明MCS-51單片機(jī)的堆棧處理過(guò)程。答:堆棧是按先入后出、后入先出的原則進(jìn)行管理的一段存儲(chǔ)區(qū)域。CS-51單片機(jī)的堆棧是向上生 長(zhǎng)型的,存入數(shù)據(jù)是從地址低端向高端延伸,取出數(shù)據(jù)是從地址高端向低端延伸。入棧和出棧數(shù)據(jù)是以 字節(jié)為單位的。入棧時(shí),SP指針的內(nèi)容
6、先自動(dòng)加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時(shí), 先把SP指針指向單元的數(shù)據(jù)取出,然后再把SP指針的內(nèi)容自動(dòng)減1。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ú)立的控制線RST、EA、ALE和PSEN組成。什么是機(jī)器周期? MCS-51單片機(jī)的一個(gè)機(jī)器周期包括多少個(gè)時(shí)鐘周期?答:機(jī)器周期:機(jī)器周期是單片機(jī)的基本操作周期,每個(gè)機(jī)器周期包含S1、S2、S6
7、6個(gè)狀態(tài),每個(gè)狀態(tài)包含兩拍P1和P2,每一拍為一個(gè)時(shí)鐘周期(振蕩周期)。因此,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周 期。如果時(shí)鐘周期的頻率為12MHz,那么ALE信號(hào)的頻率為多少?答:2MHZ第三章1在MCS-51單片機(jī)中,尋址方式有幾種?其中對(duì)片內(nèi)RAM可以用哪幾種尋址方式?對(duì)片外RAM可 以用哪幾種尋址方式?答:尋址方式2在對(duì)片外RAM單元尋址中,用Ri間接尋址與用DPTR間接尋址有什么區(qū)別?答:片外數(shù)據(jù)存儲(chǔ)器尋址中,用Ri間接尋址只能訪問(wèn)低端的256字節(jié)單元,而用DPTR作指針間接 訪問(wèn)可訪問(wèn)整個(gè)64K字節(jié)。3.在位處理中,位地址的表示方式有哪幾種?答:1直接位地址(OOHOFFH)。例如:20
8、H2字節(jié)地址帶位號(hào)。例如:20H.3表示20H單元的3位。3特殊功能寄存器名帶位號(hào)。例如:P0. 1表示P0 口的1位。4位符號(hào)地址。例如:TR0是定時(shí)/計(jì)數(shù)器T0的啟動(dòng)位4寫(xiě)出完成下列操作的指令。R0的內(nèi)容送到R1中。MOV A,R0MOV R1,A片內(nèi)RAM的20H單元內(nèi)容送到片內(nèi)RAM的40H單元中。MOV 40H,20H片內(nèi)RAM的30H單元內(nèi)容送到片外RAM的50H單元中。MOV A,30HMOV R0,#50HMOVX R0,A片內(nèi)RAM的50H單元內(nèi)容送到片外RAM的3000H單元中。MOV A,50HMOV DPTR,#3000HMOVX DPTR,A片外RAM的2000H單元
9、內(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單元中。MOVA,#0MOVDPTR,#1000HMOVCA,A+DPTRMOV20H,A(8)ROM的1000H單元內(nèi)容送到片外RAM的1000H單元中。MOVA,#0MOVDPTR,#1000HMOVCA,A+DPTRMOVXDPTR,A5區(qū)分下列指令有什么不同?(
10、1)MOV A, 20H 和 MOV A, #20H 答:前者源操作數(shù)是直接尋址,后者源操作數(shù)立即尋址。(2)MOV A, R1 和 MOVX A, R1 答:前者源操作數(shù)是訪問(wèn)片內(nèi)數(shù)據(jù)存儲(chǔ)器,后者源操作數(shù)訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器低256字節(jié)。(3)MOV A, R1 和 MOV A, R1 答:前者源操作數(shù)是寄存器尋址,后者源操作數(shù)寄存器間接尋址。(4)MOVX A, R1 和 MOVX A, DPTR 答:前者源操作數(shù)是訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器低256字節(jié),后者源操作數(shù)訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器整個(gè)64K字節(jié)。(5)MOVX A, DPTR 和 MOVC A, A+DPTR 答:前者源操作數(shù)是訪問(wèn)片外數(shù)據(jù)存儲(chǔ)
11、器,后者源操作數(shù)訪問(wèn)程序數(shù)據(jù)存儲(chǔ)器。(10H) =10H、(40H) =OCAH、 P2=0CAH 和 P1=OCAH6(10H) =10H、(40H) =OCAH、 P2=0CAH 和 P1=OCAH內(nèi) RAM 的 2OH、4OH、1OH單元以及Pl、P2中的內(nèi)容。MOVRO,#2OHMOVA,RO;A=4OHMOVR1,A;R1=4OHMOVA,R1;A=1OHMOVRO,P1;(4OH)=OCAHMOVP2,P1P2=OCAHMOV1OH,A(1OH)=1OHMOV2OH,1OH(2OH)=1OH結(jié)果:(20H) =10H、(Rl) =7FH,(DPTR) =2FFCH,片內(nèi) RAM (
12、7FH) =70H,片外 (Rl) =7FH,(DPTR) =2FFCH,片內(nèi) RAM (7FH) =70H,片外 RAM (2FFEH)=11H,ROM (2FFEH) =64H,試分別寫(xiě)出以下各條指令執(zhí)行后目標(biāo)單元的內(nèi)容。1)MOVA,R1結(jié)果2)MOVXDPTR,A結(jié)果3)MOVCA,A+DPTR結(jié)果1)MOVA,R1結(jié)果2)MOVXDPTR,A結(jié)果3)MOVCA,A+DPTR結(jié)果4)XCHDA,R1結(jié)果累加器A等于70H片外RAM(2FFCH)單元等于02H累加器A等于64HA)=78H,(Rl)=78H,累加器A等于00H,片內(nèi)RAM(7FH)單元等于72H8已知:分別寫(xiě)出下列指令執(zhí)
13、行后目標(biāo)單元的結(jié)果和相應(yīng)標(biāo)志位的值。(B) =04H,CY=1,片內(nèi) RAM(78H) =0DDH,(80H) =6CH,試ADD A,R1;累加器A等于55H,CY等于1SUBB A,#77H;累加器 A 等于 OOH,CY 等于 0MUL AB;累加器A等于EOH,B寄存器等于01H,CY等于1,OV等于0DIV AB;累加器A等于1EH,B寄存器等于OOH,CY、OV等于0ANL 78H,#78H ;片內(nèi) RAM (78H)單元等于 58HORL A,#OFH;累加器 A 等于 7FHXRL 8OH,A;片內(nèi) RAM (8OH)等于 14H9設(shè)(A) =83H,(RO) =17H,(17
14、H) =34H,分析當(dāng)執(zhí)行完下面指令段后累加器A、RO、17H單元 的內(nèi)容。ANL A,#17H;A=O3HCPL A; A=CBH結(jié)果:A=CBH,(RO) =17H,(17H) =37H寫(xiě)出完成下列要求的指令。累加器A的低2位清零,其余位不變。ANL A, #11111100B累加器A的高2位置“1”,其余位不變。ORL A, #11000000B累加器的高4位取反,其余位不變。XRL A, #11110000B累加器第0位、2位、4位、6位取反,其余位不變。XRL A, #01010101B說(shuō)明LJMP指令與AJMP指令的區(qū)別?答:LJMP12設(shè)當(dāng)前指令CJNE A,#12H,10H的地
15、址是0FFEH,若累加器A的值為10H,則該指令執(zhí)行后的 PC值為多少?若累加器A的值為12H呢?答:指令執(zhí)行后的PC值為1011H,若累加器A的值為12H,則指令執(zhí)行后的PC值為1001H。13.用位處理指令實(shí)現(xiàn)P1.4=P1.0(P1.1P1.2)/P1.3的邏輯功能。程序:MOVC,P1.1ORLC,P1.2ANLC,P1.0ORLC,/P1.3MOVP1.4, C14下列程序段匯編后,從1000H單元開(kāi)始的單元內(nèi)容是什么?ORG 1000HTAB: DB 12H, 34HDS 3DW 5567H, 87H答:(1000H) =12H,(1001H) =34H,(1002H) =00H,
16、(1003H) =00,(1004H) =00, (1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H15.試編一段程序,將片內(nèi)RAM的20H、21H、22H單元的內(nèi)容依次存入片外RAM的20H、21H、22H 中。程序:MOV R0,#20HMOV R2,#03HLOOP:MOV A,R0MOVX R0,AINCR0DJNZ R2,LOOPSJMP $16編程實(shí)現(xiàn)將片外RAM的2000H2030H單元的內(nèi)容,全部搬到片內(nèi)RAM的20H單元開(kāi)始位置,并 將源位置清零。程序:MOV R0,#20HMOV DPTR,#2000HMOV R2,#30HLOO
17、P:MOVX A,DPTRMOV R0,AMOVA,#00MOVXDPTR,AINCDPTRINCR0DJNZR2,LOOPSJMP $17.編程將片外RAM的1000H單元開(kāi)始的100個(gè)字節(jié)數(shù)據(jù)相加,結(jié)果放于R7R6中。程序:MOV DPTR,#1000HMOV R2,#100MOV R7, #00MOV R6, #00LOOP:MOVX A, DPTRADDA, R6MOVR6, AMOVA, R7ADDCA, #0MOVR7, AINCDPTRDJNZR2, LOOPSJMP$18編程實(shí)現(xiàn)R4R3R2,結(jié)果放于R7R6R5中。程序:ORG0100HMUL1: MOV A, R2MOVB,
18、 R3MULAB;R2R3,結(jié)果的低字節(jié)直接存入積的R5MOVR5, A;結(jié)果的高字節(jié)存入R6中暫存起來(lái)MOV R6, BMUL2: MOV A, R2MOVB,R4MULAB;R2 R4,結(jié)果的低字節(jié)與R6相加后,再存入R6中ADDA,R6MOVR6,AMOVA,B;結(jié)果的高字節(jié)加上進(jìn)位位后存入R7中ADDCA,#00MOV R7, ASJMP19編程實(shí)現(xiàn)把片內(nèi)RAM的20H單元的0位、1位,21H單元的2位、3位,22H單元的4位、5 位,23H單元的6位、7位,按原位置關(guān)系拼裝在一起放于R2中。程序:MOVC,20H.0MOVA.0,CMOVC,20H.1MOVA.1,CMOVC,21H
19、.2MOVA.2,CMOVC,21H.3MOVA.3,CMOVC,22H.4MOVA.4,CMOVC,22H.5MOVA.5,CMOVC,23H.6MOVA.6,CMOVC,23H.7MOVA.7,CMOVR2,A20用查表的方法實(shí)現(xiàn)一位十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII。程序:(設(shè)一位十六進(jìn)制數(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)計(jì)從片外RA
20、M2000H開(kāi)始的100個(gè)單元中“0”的個(gè)數(shù)放于R2中。程序:MOV DPTR,#2000HMOV R3,#100MOV R2,#00LOOP:MOVXA,DPTRJNZNEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$第四章C語(yǔ)言有哪些特點(diǎn)?答:C語(yǔ)言具有以下特點(diǎn):語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活運(yùn)算符豐富數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語(yǔ)言的各種數(shù)據(jù)結(jié)構(gòu)可進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)可以直接對(duì)計(jì)算機(jī)硬件進(jìn)行操作生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高可移植性好有哪些數(shù)據(jù)類型是MCS-51單片機(jī)直接支持的?答:MCS-51單片機(jī)直接支持的數(shù)據(jù)類型標(biāo)準(zhǔn)分為基本數(shù)據(jù)類型和組合數(shù)據(jù)類型,基本數(shù)據(jù)類
21、型有字 符型char、短整型short、整型int、長(zhǎng)整型long、浮點(diǎn)型float、雙精度型double、特殊功能寄存器 型和位類型,其中char型與short型相同,float型與double型相同。組合數(shù)據(jù)類型有數(shù)組類型、結(jié) 構(gòu)體類型、共同體類型和枚舉類型,另外還有指針類型和空類型。C51特有的數(shù)據(jù)類型有哪些?答:C51特有的數(shù)據(jù)類型有特殊功能寄存器型和位類型。C51中的存儲(chǔ)器類型有幾種,它們分別表示的存儲(chǔ)器區(qū)域是什么?答:C51中的存儲(chǔ)器類型有6種,分別如下:data:直接尋址的片內(nèi)RAM低128B,訪問(wèn)速度快bdata: idata: pdata:用Ri間接訪問(wèn)的片外RAM低256B
22、xdata:用DPTR間接訪問(wèn)的片外RAM,允許訪問(wèn)全部64KB片外RAMcode:程序存儲(chǔ)器ROM 64KB空間在C51中,bit位與sbit位有什么區(qū)別?答:bit位類型符用于定義一般的位變量。存儲(chǔ)器類型只能是bdata、data、idata,只能是片內(nèi) RAM的可位尋址區(qū),嚴(yán)格來(lái)說(shuō)只能是bdata。sbit位類型符用于定義在可位尋址字節(jié)或特殊功能寄存器中的位,定義時(shí)需指明其位地址,可以是 位直接地址,可以是可位尋址變量帶位號(hào),也可以是特殊功能寄存器名帶位號(hào)。在C51中,通過(guò)絕對(duì)地址來(lái)訪問(wèn)的存儲(chǔ)器有幾種?答:通過(guò)絕對(duì)地址來(lái)訪問(wèn)存儲(chǔ)器有三種方法:1.使用C51運(yùn)行庫(kù)中預(yù)定義宏。2.通過(guò)指針訪
23、問(wèn)。3. 使用C51擴(kuò)展關(guān)鍵字_at_在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ù)留。編寫(xiě)MCS-51中斷函數(shù)需要注意如下幾點(diǎn)。中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯(cuò)。中斷函數(shù)沒(méi)有返回值。在任何情況下都不能直接調(diào)用中斷函數(shù)如果在中斷函數(shù)中調(diào)用了其他函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同,否則 會(huì)產(chǎn)生不正確的結(jié)果。C5 1編譯器對(duì)中斷函數(shù)編譯時(shí)會(huì)自
24、動(dòng)在程序開(kāi)始和結(jié)束處加上相應(yīng)的內(nèi)容。C51編譯器從絕對(duì)地址8m+3處產(chǎn)生一個(gè)中斷向量,其中m為中斷號(hào),也即interrupt后面的數(shù) 字。該向量包含一個(gè)到中斷函數(shù)入口地址的絕對(duì)跳轉(zhuǎn)。中斷函數(shù)最好寫(xiě)在文件的尾部,并且禁止使用extern存儲(chǔ)類型說(shuō)明。防止其他程序調(diào)用。按給定的存儲(chǔ)類型和數(shù)據(jù)類型,寫(xiě)出下列變量的說(shuō)明形式。在data區(qū)定義字符變量val1。char data val1;在idata區(qū)定義整型變量 idata val2;在xdata區(qū)定義無(wú)符號(hào)字符型數(shù)組val34。unsigned char xdata val34;在xdata區(qū)定義一個(gè)指向char類型的指針px。ch
25、ar xdata *px;定義可尋址位變量flag。bit flag;定義特殊功能寄存器變量P3。sfr P3=0 xa0;定義特殊功能寄存器變量SCON。sfr SCON=0 x98;定義16位的特殊功能寄存器TO。sfr16 T0=0 x8a;寫(xiě)出下列關(guān)系表達(dá)式或邏輯表達(dá)式的結(jié)果,設(shè)a=3, b=4, c=5。a+bc&b= =c結(jié)果:假a|b+c&b-c結(jié)果:真!(ab)&!c|1結(jié)果:真!(a+b)+c-1&b+c/2 結(jié)果:假寫(xiě)出下列C51程序的執(zhí)行結(jié)果。(1)#include extern serial_initial();main() int x,y,z; serial_init
26、ial();x=y=8;z=+x;printf(n %d %d %d,z,x)x=y=8;z=x+;printf(n %d %d %d,z,x)x=y=8;z=-x;printf(n %d %d %d,z,x)x=y=8;z=x-;printf(n %d %d %d,z,x)printf(n);while(1);結(jié)果: 8 9 98 8 98 7 78 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);x=y
27、x!=y x=y);printf(n x y xy xy printf(n);x=y x!=y x=y);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 data x,y?1 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_
28、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 is alln);while(1);執(zhí)行結(jié)果:input data x, y ?x y !x x|y x&y1 2 0 11That is all(4)#include extern serial_initi
29、al();main()int a,b; unsigned int x,y; serial_initial(); a=b=0 xaa55;x=y=0 xaa55;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=aa55a=54aa b=d52a x=54aa y=552aThat is all.b
30、reak和continue語(yǔ)句的區(qū)別是什么?答:break語(yǔ)句可以跳出switch結(jié)構(gòu),使程序繼續(xù)執(zhí)行switch結(jié)構(gòu)后面的一個(gè)語(yǔ)句。break語(yǔ)句還 可以從循環(huán)體中跳出循環(huán),提前結(jié)束循環(huán)而接著執(zhí)行循環(huán)結(jié)構(gòu)下面的語(yǔ)句。continue語(yǔ)句用在循環(huán)結(jié)構(gòu)中,用于結(jié)束本次循環(huán),跳過(guò)循環(huán)體中continue下面尚未執(zhí)行的語(yǔ) 句,直接進(jìn)行下一次是否執(zhí)行循環(huán)的判定。continue語(yǔ)句和break語(yǔ)句的區(qū)別在于:continue語(yǔ)句只是結(jié)束本次循環(huán)而不是終止整個(gè)循環(huán); break語(yǔ)句則是結(jié)束循環(huán),不再進(jìn)行條件判斷。用分支結(jié)構(gòu)編程實(shí)現(xiàn):輸入“1”顯示“A”,輸入“2”顯示“B”,輸入“3”顯示“C”,輸 入
31、“4”顯示“D”,輸入“5”結(jié)束。參考程序:#include #include void main(void)unsigned char x;SCON=0 x52;/串口初始化TMOD=0 x20;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; de
32、fault: printf( RETRYn);if (x=5) break;while(1);輸入3個(gè)無(wú)符號(hào)的字符數(shù)據(jù),要求按由大到小的順序輸出。參考程序:#include #include void main(void)unsigned char x,y,z,m;/串口初始化SCON=0 x52;/串口初始化TMOD=0 x20;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
33、(output %c,%c,%cn, x,y,z); while(1);/輸出提示信息/輸出參考程序:(1)while 循環(huán)#include #include void main(void)/包含特殊功能寄存器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)int i,s=0; i=1;SCON=0 x52;TMOD=0 x20;TH1=0XF3;TR1=1;while (i=10) /定義整型變量/輸出提示信息/輸出參考程序:(1)while 循環(huán)#include #include void main(void)/包含特殊功能寄存器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)int i,s=0; i=1;SCON=0 x52;
34、TMOD=0 x20;TH1=0XF3;TR1=1;while (i=10) /定義整型變量/串口初始化/累加1到10的平方之和在s中s=s+i*i; i+;printf(1 到 10 的平方之和=%dn,s); while(1);(2)do while 循環(huán)#include /包含特殊功能寄存器庫(kù)#include /包含I/O函數(shù)庫(kù)void main(void)int i,s=0;i=1;/主函數(shù)/定義整型變量SCON=0 x52;TMOD=0 x20;TH1=0XF3;TR1=1;/串口初始化dos=s+i*i; i+;/累加1到10的平方之和在s中while (i=10);printf(
35、l 到 while (i=10);printf(l 到 10 的平方之和=%dn,s);while(1);(3)for循環(huán)#include #include void main(void)int i,s=0;SCON=0 x52;TMOD=0 x20;/包含特殊功能寄存器庫(kù)/包含I/O函數(shù)庫(kù)/主函數(shù)/定義整型變量/串口初始化TH1=0XF3;TR1=1;for (i=1;i=10;i+) s=s+i*i; /累加 1 到 10 的平方之和在 s 中 printf(1 到 10 的平方之和=%dn,s);while(1);對(duì)一個(gè)由5個(gè)元素組成的無(wú)符號(hào)字符數(shù)組按由小到大的順序進(jìn)行排序。參考程序:/
36、包含特殊功能寄存器庫(kù)/包含/包含特殊功能寄存器庫(kù)/包含I/O函數(shù)庫(kù)#include main()unsigned char f5,m,i,j;SCON=0 x52;/串口初始化TMOD=0 x20;TH1=0XF3;TR1=1;printf(輸入任意5個(gè)字符:); 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(由小到大的順序?yàn)?c,%c,%c,%c,%c ,f0,f1,f2,f3,f4); printf(n);while
37、(1);用指針實(shí)現(xiàn),輸入3個(gè)無(wú)符號(hào)字符數(shù)據(jù),按由大到小的順序輸出。參考程序:#include /包含特殊功能寄存器庫(kù)#include stdio.h/包含 1/0 函數(shù)庫(kù)main()unsigned char x,y,z;unsigned char *p,*p1,*p2,*p3;SC0N=0 x52; /串口初始化TM0D=0 x20;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 (*p
38、2*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);有3個(gè)學(xué)生,每個(gè)學(xué)生都包括學(xué)號(hào)、姓名和成績(jī),要求找出成績(jī)最高的學(xué)生的姓名和成績(jī)參考程序:#include /包含特殊功能寄存器庫(kù)#include stdio.h/包含 1/0 函數(shù)庫(kù)struct studentunsigned char number10;unsigned char name10;unsigned int grade;p13;main()unsigned char i,j
39、=0;SC0N=0 x52; /串口初始化TM0D=0 x20;TH1=0XF3;TR1=1;printf(input 3 studend number,name and grade:n);for (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(成績(jī)最高的學(xué)生是:s,成績(jī)是:d,,p
40、lj.grade);printf(n);while(1);第五章單片機(jī)C語(yǔ)言與匯編語(yǔ)言混合編程有哪幾種方式?通常采用什么方式?答:?jiǎn)纹瑱C(jī)C語(yǔ)言和匯編語(yǔ)言混合編程分為匯編中調(diào)用C51函數(shù)和C51程序中引用匯編,通常使用 的是在C51程序中引用匯編。在C51程序中使用匯編語(yǔ)言有兩種情況:一種是匯編程序部分和C51程序 部分為不同的模塊,或不同的文件,通常由C51程序調(diào)用匯編程序模塊的變量和函數(shù)(也可稱為子程序或 過(guò)程);另一種是嵌入式匯編,即在C51程序中嵌入一段匯編語(yǔ)言程序。2簡(jiǎn)述C51程序調(diào)用匯編程序時(shí)如何實(shí)現(xiàn)參數(shù)傳遞。答:C51中調(diào)用匯編程序進(jìn)行參數(shù)傳遞時(shí)都必須嚴(yán)格遵守C51函數(shù)的參數(shù)和返回
41、值的相關(guān)約定。行 參數(shù)傳遞的方式有兩種,一種是通過(guò)寄存器傳遞參數(shù),C51中不同類型的實(shí)參會(huì)存入相應(yīng)的寄存器,在 匯編中只需對(duì)相應(yīng)寄存器進(jìn)行操作,即可達(dá)到傳遞參數(shù)的目的;第二種是通過(guò)固定存儲(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)
42、。第三步:根據(jù)選擇的編譯模式,把相應(yīng)的庫(kù)文件(如Small模式時(shí),是KeilC51LibC51S.Lib)加 入到工程中,該文件必須作為工程的最后文件。4簡(jiǎn)述C51中調(diào)用匯編程序的實(shí)現(xiàn)方法。答:編寫(xiě)為C51調(diào)用的匯編程序,參數(shù)須按規(guī)定的寄存器或存儲(chǔ)器傳送,程序格式有相應(yīng)的規(guī)則, 這些規(guī)則比較繁瑣,為了便于處理,在實(shí)際中我們往往先用C51寫(xiě)出這個(gè)程序的主體,然后用SRC控制 指令編譯產(chǎn)生asm文件,修改這個(gè)asm文件得到我們所要的匯編函數(shù)。處理過(guò)程具體如下。第一步:先用C語(yǔ)言程序編寫(xiě)出程序框架,如文件名為a1.c(注意參數(shù))。第二步:在Keil C51的Project窗口中右擊該C語(yǔ)言文件,在彈
43、出的快捷菜單中選擇Options for .,右邊的Generate 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í)工程文件中不再需要原來(lái)的
44、C 語(yǔ)言文件和庫(kù)文件,主程序只需要在程序開(kāi)始處用EXTERN對(duì)所調(diào)用的匯編程序中的函數(shù)作聲明,在主程 序中就可調(diào)用匯編程序中的函數(shù)了。Afr -第六章何為“準(zhǔn)雙向I/O接口”?在MCS-51單片機(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接口。80C51 單片機(jī)內(nèi)部有幾個(gè)定時(shí)/計(jì)數(shù)器?它們由哪些功能寄存器組成?怎樣實(shí)現(xiàn)定時(shí)功能和計(jì)數(shù) 功能?答:80C51單片機(jī)內(nèi)部有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,由THO,TLO,TH1,TL1,TMOD和TCON功能 寄
45、存器組成。通過(guò)TMOD中的C/T位選擇對(duì)機(jī)器周期計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能,選擇對(duì)外部脈沖計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功 能。定時(shí)/計(jì)數(shù)器T0有幾種工作方式?各自的特點(diǎn)是什么?答:有四種工作方式,特點(diǎn)見(jiàn)下表:M1M0工作方式0方式說(shuō)明M1M0工作方式0方式說(shuō)明13位定時(shí)/計(jì)數(shù)器16位定時(shí)/計(jì)數(shù)器8位自動(dòng)重置定時(shí)/計(jì)數(shù)器兩個(gè)8位定時(shí)/計(jì)數(shù)器(只有T0有)定時(shí)/計(jì)數(shù)器的四種工作方式各自的計(jì)數(shù)范圍是多少?如果要計(jì)10個(gè)單位,不同的方式初值應(yīng) 為多少?答:有四種方式。方式0計(jì)數(shù)范圍: 18192;方式1計(jì)數(shù)范圍: 165536;方式2計(jì)數(shù)范圍: 1256;方式 3 計(jì)數(shù)范圍:1256。如果計(jì)10個(gè)單位,方式0初值為:8192-
46、10=8182;方式1初值為:65536-10=65526;方式2初 值為: 256-1 0=246;方式2初值為: 256-1 0=246 。設(shè)振蕩頻率為12MHz,如果用定時(shí)/計(jì)數(shù)器T0產(chǎn)生周期為100ms的方波,可以選擇哪幾種方 式,其初值分別設(shè)為多少?答:只能選擇方式 1,初值為 65536-50000=15536。何為同步通信?何為異步通信?各自的特點(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ù)在線路上
47、傳送時(shí)以字符塊為單位,一次傳送多個(gè)字符,傳送時(shí)須在前面 加上一個(gè)或兩個(gè)同步字符,后面加上校驗(yàn)字符。特點(diǎn)是對(duì)發(fā)送時(shí)鐘和接收時(shí)鐘要求較高,往往用同一個(gè) 時(shí)鐘源控制,控制線路復(fù)雜,傳送速度快。單工、半雙工和全雙工有什么區(qū)別?答:?jiǎn)喂し绞街挥幸桓鶖?shù)據(jù)線,信息只能單向傳送;半雙工方式也只有一根數(shù)據(jù)線,但信息可以分 時(shí)雙向傳送;全雙工方式有兩根數(shù)據(jù)線,在同一個(gè)時(shí)刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳送。設(shè)某異步通信接口,每幀信息格式為10位,當(dāng)接口每秒傳送1000個(gè)字符時(shí),其波特率為多 少?答:10000波特串行口數(shù)據(jù)寄存器SBUF有什么特點(diǎn)?答:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器合起用一個(gè)特殊功能寄存器SBUF(串行口數(shù)據(jù)寄
48、存器),執(zhí)行 MOV SBUF,A發(fā)送時(shí)為發(fā)送數(shù)據(jù)寄存器,執(zhí)行MOV A, SBUF接收時(shí)為接收數(shù)據(jù)寄存器。MCS-51單片機(jī)串行口有幾種工作方式?各自特點(diǎn)是什么?答:有四種工作方式,分別是方式0、方式1、方式2和方式3。其中:方式0,稱為同步移位寄存器方式,一般用于外接移位寄存器芯片擴(kuò)展I/O接口。方式1,稱為8位的異步通信方式,通常用于雙機(jī)通信。方式2和方式3,稱為9位的異步通信方式,通常用于多機(jī)通信。說(shuō)明SM2在方式2和方式3對(duì)數(shù)據(jù)接收有何影響。答:通過(guò)SM2對(duì)方式2和方式3數(shù)據(jù)接收進(jìn)行控制,SM2=1,那么只有接收的第9位為“ 1”才接收 有效。如SM2=0,接收的第9位無(wú)論為1還是0
49、都接收有效。怎樣來(lái)實(shí)現(xiàn)利用串行口擴(kuò)展并行輸入/輸出口?答:利用串行口在方式0時(shí),當(dāng)外接一個(gè)串入并出的移位寄存器,就可以擴(kuò)展并行輸出口;當(dāng)外接 一個(gè)并入串出的移位寄存器時(shí),就可以擴(kuò)展并行輸入口。什么是中斷、中斷允許和中斷屏蔽?答:在計(jì)算機(jī)中,由于計(jì)算機(jī)內(nèi)外部的原因或軟硬件的原因,使CPU從當(dāng)前正在執(zhí)行的程序中暫停 下來(lái),而自動(dòng)轉(zhuǎn)去執(zhí)行預(yù)先安排好的為處理該原因所對(duì)應(yīng)的服務(wù)程序。執(zhí)行完服務(wù)程序后,再返回被暫 停的位置繼續(xù)執(zhí)行原來(lái)的程序,這個(gè)過(guò)程稱為中斷,實(shí)現(xiàn)中斷的硬件系統(tǒng)和軟件系統(tǒng)稱為中斷系統(tǒng)。中 斷允許是允許中斷請(qǐng)求送CPU產(chǎn)生中斷,中斷屏蔽是禁止中斷請(qǐng)求信號(hào)送CPU產(chǎn)生中斷。8051有幾個(gè)中斷源
50、?中斷請(qǐng)求如何提出?答:MCS-51單片機(jī)提供5個(gè)硬件中斷源:兩個(gè)外部中斷源INTO (P3.2)和INTI (P3.3),兩個(gè)定時(shí)/ 計(jì)數(shù)器T0和T1中斷;1個(gè)串行口中斷。外部中斷源INTO和INT1的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)生。8051的中斷源中,哪些中斷請(qǐng)求信號(hào)在中斷響應(yīng)時(shí)可以自動(dòng)清除?哪些不能自動(dòng)清除?應(yīng)如何 處理?答:工作在邊沿觸發(fā)方式下的兩個(gè)外部中斷源和兩個(gè)定時(shí)/計(jì)數(shù)器中斷中斷請(qǐng)求信號(hào)在中斷響應(yīng)時(shí)可 以自動(dòng)清除,工作在電平觸發(fā)方式下的兩個(gè)外部中斷
51、源和串行口中斷不能自動(dòng)清除。工作在電平觸發(fā)方 式下的兩個(gè)外部中斷源的中斷請(qǐng)求信號(hào)通過(guò)外加硬件和加軟件的方式清除,串行口中斷標(biāo)志T1和標(biāo)志 R1完全由軟件清除。8051的中斷優(yōu)先級(jí)有幾級(jí)?在形成中斷嵌套時(shí)各級(jí)有何規(guī)定?答:8051的中斷優(yōu)先級(jí)有兩級(jí);形成中斷嵌套時(shí)規(guī)定(1) 正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或 低優(yōu)先級(jí)的中斷請(qǐng)求所中斷,直到該中斷服務(wù)程序結(jié)束,返回了主程序且執(zhí)行了主程序中的一條指令 后,CPU才響應(yīng)新的中斷請(qǐng)求。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù)程序能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷,實(shí)現(xiàn)兩級(jí)中斷嵌套。CPU同時(shí)接收到幾個(gè)中斷請(qǐng)求時(shí),首先響應(yīng)優(yōu)先級(jí)最高的中斷請(qǐng)求。設(shè)8051的P1中各位接發(fā)光二極
52、管,分別用匯編語(yǔ)言和C語(yǔ)言編程實(shí)現(xiàn)逐個(gè)輪流點(diǎn)亮二極管, 并循環(huán)顯示。參考程序:ORG 0000HLJMP MAINORG 0100H;主程序MAIN: MOV A,#01HLOOP:MOV P1,ACALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R7,#0FFHDJNZ R7,$RETENDC語(yǔ)言程序:#include /包含特殊功能寄存器庫(kù)void delay(unsigned int x);void main()unsigned char i,j;while(1)i=01;for (j=0;j8;j+)P1=i;delay(100);i=i*2;void de
53、lay(unsigned int x) unsigned char j;while(x-)for (j=0;j125;j+);8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時(shí)/計(jì)數(shù)器TO,實(shí)現(xiàn)從P1.0產(chǎn)生周期為2ms的方 波。要求分別用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。解:分析:從P1.0輸出周期為2ms的方波,只須P1.0每1 ms取反一次則可。當(dāng)系統(tǒng)時(shí)鐘為 12MHZ,定時(shí)/計(jì)數(shù)器T0 工作于方式1時(shí),最大的定時(shí)時(shí)間為65.536ms,滿足1ms的定時(shí)要求,方式控 制字應(yīng)設(shè)定為00000001B (01H)。定時(shí)1ms,計(jì)數(shù)值N為1000,初值X=65536-1000=64536,則 TH0=F
54、CH,TL0=18H。采用中斷處理方式:程序如下:ORG 0000HLJMPMAINORG000BH;中斷處理程序MOVTH0,#0FCHMOVTL0,#18HCPLP1.0RETIORG0100H;主程序MAIN:MOV TMOD,#01HMOVTH0,#0FCHMOVTL0,#18HSETBEASETBET0SETBTR0SJMP$ENDC語(yǔ)言程序:#include /包含特殊功能寄存器庫(kù)sbit P1_0=P0;void main()TMOD=0 x01;TH0=0 xFC;TL0=0 x18;EA=1;ET0=1;TR0=1;while(1);void time0_int(void)
55、interrupt 1 /中斷服務(wù)程序TH0=0 xFC;TL0=0 x18;P1_0=!P1_0;8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時(shí)/計(jì)數(shù)器T1,實(shí)現(xiàn)從P1.1產(chǎn)生周期為2s的方 波。要求分別用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。解:從P1.1產(chǎn)生2s的方波,應(yīng)產(chǎn)生500ms的周期性的定時(shí),定時(shí)到對(duì)P1.1取反就可實(shí)現(xiàn)。由于定 時(shí)時(shí)間較長(zhǎng),一個(gè)定時(shí)/計(jì)數(shù)器T1不能直接實(shí)現(xiàn),采用定時(shí)/計(jì)數(shù)器T1產(chǎn)生周期性為10ms的定時(shí),然后 用一個(gè)寄存器R2對(duì)10ms計(jì)數(shù)100次來(lái)實(shí)現(xiàn)。系統(tǒng)時(shí)鐘為12MHZ,定時(shí)/計(jì)數(shù)器T1定時(shí)10ms,計(jì)數(shù)值N 為10000,只能選方式1,方式控制字為00010000
56、B (10H),初值X:X=65536-10000=55536=1101100011110000B則 TH1=11011000B=D8H, TL1=11110000B=F0H。定時(shí)/計(jì)數(shù)器T1采用中斷處理方式。匯編程序:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN: MOV TMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASETBET1SETBTR1SJMP$INTT1:MOV TH1,#0D8HMOV TL1,#0F0HINC R2CJNE R2,#64H,NEXTCPL P1.1MOV
57、 R2,#00HNEXT: RETIENDC語(yǔ)言程序:#include /包含特殊功能寄存器庫(kù)sbit P1_1=P1;char i;void main()TMOD=0 x10; TH1=0 xD8;TL1=0 xf0;EA=1;ET1=1;i=0;TR1=1;while(1);void time0_int(void) interrupt 3 /中斷服務(wù)程序 TH1=0 xD8;TL1=0 xf0;i+;if (i= =100) P1_1=! P1_1;i=0;8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時(shí)/計(jì)數(shù)器T1,實(shí)現(xiàn)從P1.1產(chǎn)生高電平寬度為 10ms,低電平寬度為20ms的矩形波。
58、要求分別用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。解:本題處理方式有多種,這里采用對(duì)定時(shí)/計(jì)數(shù)器T1形成10ms周期定時(shí),用R2對(duì)10ms計(jì)數(shù),當(dāng) 計(jì)到1,則對(duì)P1.1置1,當(dāng)計(jì)到2和3,則對(duì)P1.1置0來(lái)實(shí)現(xiàn)。用定時(shí)/計(jì)數(shù)器T1形成10ms周期定時(shí) 見(jiàn)上題。程序如下:ORG 0000HLJMP MAINLJMP INTT1ORG 0100HMAIN: MOV TMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASETBET1SETBTR1SJMP$INTT1: MOV TH1,#0D8HMOVTL1,#0F0HINCR2CJNER2,#01H,NEXTSETB
59、P1.1SJMPEXITNEXT: CJNE R2,#02H,NEXT1CLR P1.1SJMP EXITNEXT1:CJNE R2,#03H,NEXTSETB P1.1MOV R2,#00EXIT: RETIENDC語(yǔ)言程序:#include /包含特殊功能寄存器庫(kù)sbit P1_1=P1;char i;void main()TH1=0 xD8;TL1=0 xf0;EA=1;ET1=1;i=0;TR1=1;while(1)if (i= =0) P1_1=1; if (i= =1) P1_1=0; if (i= =2) P1_1=0; void time0_int(void) interrup
60、t 3 /中斷服務(wù)程序TH1=0 xD8;TL1=0 xf0;i+;21.if (i= =3) 21.用8051單片機(jī)的串行口擴(kuò)展并行I/O接口,控制16個(gè)發(fā)光二極管依次發(fā)光,畫(huà)出電路圖,用 匯編語(yǔ)言和C語(yǔ)言分別編寫(xiě)相應(yīng)的程序。解:采用在串口連接兩個(gè)CD409解:采用在串口連接兩個(gè)CD4094來(lái)實(shí)現(xiàn),電路圖如下:程序如下;ORG 0000HLJMP MAINORG 0100HMAIN:MOV SCON,#00HMOV R3,#00HMOV R2,#01HCLR P1.0START:MOV A,R3MOV SBUF,ALOOP: JNB TI,LOOPMOV A,R2MOV SBUF,ALOOP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度鐵路貨運(yùn)保險(xiǎn)服務(wù)協(xié)議
- 二零二五年度順豐速遞快遞員快遞業(yè)務(wù)數(shù)據(jù)分析合同
- 衛(wèi)生院聘用合同(2025年度基層衛(wèi)生人才培養(yǎng))
- 2025年度電子商務(wù)平臺(tái)直播帶貨合作與分成協(xié)議
- 2025年度旅行社與車隊(duì)旅游專線定制運(yùn)營(yíng)合同模板
- 二零二五年度老年人居家護(hù)理服務(wù)保姆雇傭協(xié)議書(shū)
- 2025年度高端白酒品牌省外市場(chǎng)代理合同
- 二零二五年度農(nóng)村集體土地房地產(chǎn)買賣居間服務(wù)協(xié)議
- 二零二五年度戀愛(ài)雙方子女教育及成長(zhǎng)規(guī)劃協(xié)議
- 二零二五工傷私了賠償協(xié)議書(shū)標(biāo)準(zhǔn)文本
- 大學(xué)生人文知識(shí)競(jìng)賽報(bào)名表
- 小升初閱讀理解專題課件
- 血漿吸附療法課件
- 人教部編版九年級(jí)下冊(cè)歷史第四單元 經(jīng)濟(jì)大危機(jī)和第二次世界大戰(zhàn)單元測(cè)試題
- 個(gè)人理財(cái)實(shí)務(wù)教學(xué)課件
- (完整版)新版PEP小學(xué)英語(yǔ)五年級(jí)下冊(cè)教材分析
- 研發(fā)經(jīng)費(fèi)填報(bào)指標(biāo)說(shuō)明及核算方法
- 一年級(jí)思維訓(xùn)練(課堂PPT)
- 綠色光年20162017雙上海閔行區(qū)江川綠色光
- GB_T 27025-2019 檢測(cè)和校準(zhǔn)實(shí)驗(yàn)室能力的通用要求(高清版)
- 菊花深加工項(xiàng)目可行性研究報(bào)告寫(xiě)作范文
評(píng)論
0/150
提交評(píng)論