單片機(jī)課后習(xí)題_第1頁
單片機(jī)課后習(xí)題_第2頁
單片機(jī)課后習(xí)題_第3頁
單片機(jī)課后習(xí)題_第4頁
單片機(jī)課后習(xí)題_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)課后習(xí)題作者:

日期:

第一章1.給出下列有符號數(shù)的原碼、反碼和補(bǔ)碼 (假設(shè)計(jì)算機(jī)字長為8位)。+45 -89 —6+112答:【+45]原=00101101,1+45]反=00101101,1+45]補(bǔ)=00101101[-89]原二11011001,1-89]反=10100110,[-89]補(bǔ)=10100111[-6]原=10000110,1—6】反=11111001,【一6】補(bǔ)=111110101+112]原=01110000,1+45]反=01110000,[+45]補(bǔ)=011100002.指明下列字符在計(jì)算機(jī)內(nèi)部的表示形式。AsENdfJFmdsv120答:41H73H45H4EH64H66H4AH46H6DH64H73H76H31H32H30H.什么是單片機(jī)?答:單片機(jī)是把微型計(jì)算機(jī)中的微處理器、存儲器、 I/O接口、定時器/計(jì)數(shù)器、串行接口、中斷系統(tǒng)等電路集成到一個集成電路芯片上形成的微型計(jì)算機(jī)。 因而被稱為單片微型計(jì)算機(jī)簡稱為單片機(jī)。.單片機(jī)的主要特點(diǎn)是什么?答:主要牛I點(diǎn)如下:1)在存儲器結(jié)構(gòu)上,單片機(jī)的存儲器采用哈佛(Harvard)結(jié)構(gòu)2)在芯片引腳上,大部分采用分時復(fù)用技術(shù)3)在內(nèi)部資源訪問上,采用特殊功能寄存器(SFR兩形式4)在指令系統(tǒng)上,采用面向控制的指令系統(tǒng)5)內(nèi)部一般都集成一個全雙工的串行接口 6)單片機(jī)有很強(qiáng)的外部擴(kuò)展能力12.指明單片機(jī)的主要應(yīng)用領(lǐng)域。答:單機(jī)應(yīng)用:1)工業(yè)自動化控制;2)智能儀器儀表;3)計(jì)算機(jī)外部設(shè)備和智能接口;4)家用電器多機(jī)應(yīng)用:功能彌散系統(tǒng)、并行多機(jī)處理系統(tǒng)和局部網(wǎng)絡(luò)系統(tǒng)。第二章TOC\o"1-5"\h\zMCS—51單片機(jī)由哪幾個部分組成 ?答:MCS-51單片機(jī)主要由以下部分組成的:時鐘電路、中央處理器( CPU)、存儲器系統(tǒng)(RAM和ROM)、定時/計(jì)數(shù)器、并行接口、串行接口、中斷系統(tǒng)及一些特殊功能寄存器 (SFR)。MCS-51的標(biāo)志寄存器有多少位,各位的含義是什么?答:MCS—51的標(biāo)志寄存器PSW有8位;D D6 5 4 3 21 0RRc0S1soV含義如下:C(PSW.7):進(jìn)位或借位標(biāo)志位。AC(PSW.6:輔助進(jìn)位或借位可標(biāo)志位。F0(PSW.5):用戶標(biāo)志位。是系統(tǒng)預(yù)留給用戶自己定義的標(biāo)志位。

RS1、RSO(PSW4、PSW.3)寄存器組選擇位??捎密浖梦换蚯辶?,用于從四組工作寄存器中選定當(dāng)前的工作寄存器組。OV(PSW.2):溢出標(biāo)志位。在加法或減法運(yùn)算時, 如運(yùn)算的結(jié)果超出8位二進(jìn)制數(shù)的范圍,則OV置1,標(biāo)志溢出,否則OV清零。P(PSW.0):奇偶標(biāo)志位。用于記錄指令執(zhí)行后累加器A中 1的個數(shù)的奇偶性。若累加器A中1的個數(shù)為奇數(shù),則P置位,若累加器 A中1的個數(shù)為偶數(shù),則P清零。其中PSV.1未定義,可供用戶使用。.在8051的存儲器結(jié)構(gòu)中,內(nèi)部數(shù)據(jù)存儲器可分為幾個區(qū)域?各有什么特點(diǎn)?答:片內(nèi)數(shù)據(jù)存儲器按功能可以分成以下幾個部分:工作寄存器組區(qū)、位尋址區(qū)、一般 RAM區(qū)和特殊功能寄存器區(qū),其中還包含堆棧區(qū)。工作寄存器組區(qū),O0H~1FH單元,可用R0~R7等8個寄存器訪問;位尋址區(qū),20H~2FH單元,可按位方式訪問;一般RAM區(qū),30H?7FH單元;堆棧區(qū),可從08到7F單元;特殊功能寄存器區(qū)位于80H?FFH單元。.什么是堆棧?說明MCS-51單片機(jī)的堆棧處理過程。答:堆棧是按先入后出、后入先出的原則進(jìn)行管理的一段存儲區(qū)域。 CS-51單片機(jī)的堆棧是向上生長型的,存入數(shù)據(jù)是從地址低端向高端延伸 ,取出數(shù)據(jù)是從地址高端向低端延伸。入棧和出棧數(shù)據(jù)是以字節(jié)為單位的。 入棧時,SP指針的內(nèi)容先自動加1,然后再把數(shù)據(jù)存入到SP指針指向的單元;出棧時,先把S P指針指向單元的數(shù)據(jù)取出,然后再把SP指針的內(nèi)容自動減1。.簡述內(nèi)部ROM的工作寄存器組情況,系統(tǒng)默認(rèn)是第幾組 ?答:51單片機(jī)有4組工作寄存器,每組8個,用寄存器R0?R7表示,標(biāo)志寄存器PSV的RS1、RS03兩位用于從四組工作寄存器中選定當(dāng)前的工作寄存器組 ,默認(rèn)是第0組。.51單片機(jī)的程序存儲器64KB空間在使用時有那幾個特殊地址?答:51單片機(jī)程序存儲器的64KB存儲空間使用時有7個特殊的地址 ,第一個是0000H,它是系統(tǒng)的復(fù)位地址,51單片機(jī)復(fù)位后PC的值為0000H,復(fù)位后從0000H單元開始執(zhí)行程序,由于后面幾個地址的原因,用戶程序一般不直接從 0000H單元開始存放,而是放于后面,通過在0000H單元放一條絕對轉(zhuǎn)移指令轉(zhuǎn)到后面的用戶程序。 后面6個為6個中斷源的入口地址,51單片機(jī)中斷響應(yīng)后,系統(tǒng)會自動的轉(zhuǎn)移到相應(yīng)中斷入口地址去執(zhí)行程序。 7.簡述什么是51單片機(jī)的特殊功能寄存器?答:特殊功能寄存器(SFR)也稱為專用寄存器,專門用于控制、管理片內(nèi)算術(shù)邏輯部件、并行I/O接口、串行口、定時/計(jì)數(shù)器、中斷系統(tǒng)等功能模塊的工作。用戶在編程時可以給其設(shè)定值,但不能移作他用。SFR分布在80H?0FFH的地址空間,與片內(nèi)隨機(jī)存儲塊統(tǒng)一編址。除PC外,51子系列有18個特殊功能寄存器,其中3個為雙字節(jié),共占用21個字節(jié);52子系列有21個特殊寄存器,其中5個為雙字節(jié),共占用26個字節(jié)。8.MCS-51單片機(jī)有多少根I/O線沱們和單片機(jī)的外部總線有什么關(guān)系 ?答:MCS-51單片機(jī)有32根I/O線,由P0口經(jīng)地址鎖存器提供低8位(A7?AO),P2口提供高8位(A15~A8)而形成。數(shù)據(jù)總線寬度為8位,由P0口直接提供??刂瓶偩€由第二功能狀態(tài)下的P3口和4根獨(dú)立的控制線RSTEA、ALE和PSENM成。9.簡述PSENEA、RST和ALE弓|腳的功能。答:ALE地址鎖存信號輸出端。ALE在每個機(jī)器周期內(nèi)輸出兩個脈沖。下降沿用于控制鎖存P0輸出的低8位地址。PSEN:片外程序存儲器讀選通信號輸出端 ,低電平有效。在從外部程序存儲器讀取指令或常數(shù)期間,該信號有效。RST:復(fù)位信號。當(dāng)單片機(jī)振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機(jī)器周期的高電平, 就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)回復(fù)到初始狀態(tài)。

EA:片外程序存儲器選用端。該引腳為低電平時 ,選用片外程序存儲器,高電平或懸空時選用片內(nèi)程序存儲器。.什么是機(jī)器周期?什么是指令周期 ?MCS有效。-51單片機(jī)的一個機(jī)器周期包括多少個時鐘周期?答:機(jī)器周期:機(jī)器周期是單片機(jī)的基本操作周期,每個機(jī)器周期包含 SI、S2、、S66個狀態(tài),每個狀態(tài)包含兩拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機(jī)器周期包含12個時鐘周期。.復(fù)位的作用是什么?51單片機(jī)復(fù)位有幾種方式?答:復(fù)位使單片機(jī)回復(fù)到初始狀態(tài)。 在時鐘電路工作以后, 當(dāng)外部電路使得RST端出現(xiàn)兩個機(jī)器周期(24個時鐘周期)以上的高電平,系統(tǒng)內(nèi)部復(fù)位。復(fù)位有兩種方式:上電復(fù)位和按鈕復(fù)位,.時鐘周期的頻率為6MHz,機(jī)器周期和ALE信號的頻率為多少?答:2MHZ第三章.在MCS-51單片機(jī)中,尋址方式有幾種?其中對片內(nèi)RAM可以用哪幾種尋址方式?對片外RAM可以用哪幾種尋址方式?答:尋址方式可分為數(shù)的尋址和指令尋址,數(shù)的尋址有 :常數(shù)尋址(立即尋址卜寄存器數(shù)尋址(寄存器尋址卜存儲器數(shù)尋址(直接尋址方式、寄存器間接尋址方式、變址尋址方式)和位尋址,指令的尋址有絕對尋址和相對尋址。 片內(nèi)RAM尋址有:寄存器尋址、直接尋址方式和寄存器間接尋址方式。片外 RAM尋址有:寄存器間接尋址方式。.在對片外RAM單元尋址中,用Ri間接尋址與用DPTR間接尋址有什么區(qū)別?答:片外數(shù)據(jù)存儲器尋址中,用Ri間接尋址只能訪問低端的256字節(jié)單元,而用DPTR作指針間接訪問可訪問整個64K字節(jié)。.在位處理中,位地址的表示方式有哪幾種?答:1.直接位地址(00H~0FFH)。例如:20H.字節(jié)地址帶位號。例如:20H.3表示20H單元的3位。.特殊功能寄存器名帶位號。例如 :P0.1表示P0口的1位。.位符號地址。例如:TRO是定時/計(jì)數(shù)器T0的啟動位。.寫出完成下列操作的指令。 (1)R0的內(nèi)容送到R1中。MOVA,R0MOVR1,A(2)片內(nèi)RAM的2OH單元內(nèi)容送到片內(nèi) RAM的40H單元中。MOV40H,20H(3)片內(nèi)RAM的3OH單元內(nèi)容送到片外 RAM的50H單元中。 MOVA,30HMOVR0,#50HMOVX@R0,A(4)片內(nèi)RAM的50H單元內(nèi)容送到片外RAM的3000H單元中。 MOVA,50HMOVDPTR,#3000HMOVX@DPTR,A(5)片外RAM的2000H單元內(nèi)容送到片外RAM白20H單元中。MOVDPTR,#2000HMOVXA,@DPTRMOV20H,A(6)片外RAM的1000H單元內(nèi)容送到片外RAM的4000H單元中。MOVDPTR#1000HMOVXA,@DPTR

MOVDPTR#4000HMOV@DPTRA(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+DPTRMOVX@DPTR,A5.區(qū)分下列指令有什么不同? (1)MOVA,20H和MOVA,#20H答:前者源操作數(shù)是直接尋址后者源操作數(shù)立即尋址。(2)MOVA,@R1和MOVXA,@R1答:前者源操作數(shù)是訪問片內(nèi)數(shù)據(jù)存儲器 ,后者源操作數(shù)訪問片外數(shù)據(jù)存儲器低25 6字節(jié)。(3)MOVA,R1和MOVA,@R1答:前者源操作數(shù)是寄存器尋址,后者源操作數(shù)寄存器間接尋址。(4)MOVXA,@R1和MOVXA,@DPTR答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲器低25 6字節(jié),后者源操作數(shù)訪問片外數(shù)據(jù)存儲器整個64K字節(jié)。⑸MOVXA,@DPTR和MOVCA,@A+DPTR答:前者源操作數(shù)是訪問片外數(shù)據(jù)存儲器,后者源操作數(shù)訪問程序數(shù)據(jù)存儲器。6.設(shè)片內(nèi)RAM的(20H)=40H,(40H)=10H,(1OH)=50H,(P1)=0CAH。分析下列指令執(zhí)行后片內(nèi)RAM的20H、40H、10H單元以及P1、P2中的內(nèi)容。MOVRO,#20HMOVA,@R0;A=40HMOVR1,A;RI=4OHMOVA,@R1;A=10HMOV@R0,P1;(40H)=0CAHMOVP2,P1P2=0CAHMOV10H,A(10H)=10HMOV20H,10H(20H)=10H結(jié)果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH片內(nèi)RAM(7FH)=70H,片外RAM(2FF田)=11H,ROM(2FFEH)=64H,試分別寫出以下各條指令執(zhí)行后目標(biāo)單元的內(nèi)容。MOVA,@R1 結(jié)果:累加器A等于70HMOVX@DPTR,A 結(jié)果:片外RAM(2FFCH)單元等于02HMOVCA,@A+DPTR結(jié)果:累加器A等于64HXCHDA,@R1 結(jié)果:累加器A等于00H,片內(nèi)RAM(7FH)單元等于72H.已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片內(nèi)RAM(78H)=0DDH,(80H)=6CH,試分別寫出下列指令執(zhí)行后目標(biāo)單元的結(jié)果和相應(yīng)標(biāo)志位的值。(1)ADDA,@R1; 累加器A等于55H,CY等于1SUBBA,#77H;累加器A等于00H,CY等于0MULAB; 累加器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

⑺XRL80H,A; 片內(nèi)RAM(80H)等于14H9.設(shè)(A)=83H,(R0)=17H,(17H)=34H,分析當(dāng)執(zhí)行完下面指令段后累加器A、 R0、17H單元的內(nèi)容。ANLA,#l7H;A=03HORL17H,A;(17H)=37HXRLA,@R0;A=34HCPLA;A=CBH結(jié)果:A=CBH,(R0)=17H,(17H)=37H10.寫出完成下列要求的指令。(1)累加器A的低2位清零,其余位不變。ANLA,#11111100B(2)累加器A的高2位置“1”,其余位不變。ORLA,#11000000B(3)累加器的高4位取反,其余位不變。XRLA,#l1110000B(4)累加器第0位、2位、4位、6位取反,其余位不變。XRLA,#01010101B11.說明LJMP指令與AJMP指令的區(qū)別?答:LJMP指令后面提供的是1 6位目標(biāo)地址,所以可以轉(zhuǎn)移到64KB程序存儲器的任意位置,缺點(diǎn)是:執(zhí)行時間長,字節(jié)數(shù)多。AJMP指令后帶的是11位直接地址,執(zhí)行時,先將程序指針PC的值加2(該指令長度為2字節(jié)),然后把指令中的11位地址addr11送給程序指針PC的低11位,而程序指針的高5位不變,只能在當(dāng)前2K范圍內(nèi)轉(zhuǎn)移。12.設(shè)當(dāng)前指令CJNEA,#12H,10H的地址是0FFEH,若累加器A的值為10H,則該指令執(zhí)行后的PC值為多少年累加器A的值為12H呢?答:指令執(zhí)行后的 PC值為1011H,若累加器A的值為 12H,則指令執(zhí)行后的PC值為1001H。13.用位處理指令實(shí)現(xiàn)P1.4=P1.0 (Pl.1P1.2) /P1.3的邏輯功能。程序:MOVC,P1.1ORLC,P1.2ANLC,P1.0ORLC,/P1.3MOVP1.4,C14.下列程序段匯編后,從 1000H單元開始的單元內(nèi)容是什么?ORG1000HTAB:DB12H,34HDS3DW5567H,87H答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H.試編一段程序,將片內(nèi)RAM的20H、21H、22H單元的內(nèi)容依次存入片外 RAM的20H、21H、22H中。程序:MOVR0,#20HMOVR2,#03H

LOOP:MOVA,@R0MOVX@R0,AINCR0DJNZR2,LOOPSJMP$.編程實(shí)現(xiàn)將片外RAM的2000H~2030H單元的內(nèi)容,全部搬到片內(nèi)RAM的20H單元開始位置,并將源位置清零。程序:MOVRO,#20HMOVDPTR,#2000HMOVR2,#30HLOOP:MOVXA,@DPTRMOV@R0,AMOVA,#00MOVX@DPTR,AINCDPTRINCRODJNZR2LOOPSJMP$17.編程將片外RAM的1000H單元開始的100個字節(jié)數(shù)據(jù)相加,結(jié)果放于 R7R6中。程序:MOVDPTR,#1000HMOVR2,#100MOVR7,#00MOVR6,#00LOOP:MOVXA,@DPTRADDA,R6MOVR6,AMOVA,R7ADDCA,#0MOVR7,AINCDPTRDJNZR2,LOOPSJMP$18.編程實(shí)現(xiàn)R4R3R2,結(jié)果放于R7R6R5中。程序:ORG0100HMUL1:MOVA,R2MOVB,R3MULAB ;R2R3,結(jié)果的低字節(jié)直接存入積的 R5MOVR5,A;結(jié)果的高字節(jié)存入R6中暫存起來MOVR6,BMUL2:MOVA,R2MOVB,R4MULAB;R2R4,結(jié)果的低字節(jié)與R6相力口后,再存入R6中ADDA,R6

MOVR6,AMOVA,B ;結(jié)果的高字節(jié)加上進(jìn)位位后存入 R7中ADDCA,#00MOVR7,ASJMP$19.編程實(shí)現(xiàn)把片內(nèi)RAM白220H單元的0位、1位,21H單元的2位、3位,22H單元的4位、5位,23H單元的6位、7位,按原位置關(guān)系拼裝在一起放于 R2中。程序:MOVC,20H.0MOVA.0,CMOVC,20H.iMOVA.1,CMOVC,21H.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ù)放在R 2中,輪換的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)計(jì)從片外RAM2000H開始的100個單元中“0”的個數(shù)放于R2中。程序:MOVDPTR,#2000HMOVR3,#100MOVR2,#00LOOP:MOVXA,@DPTRJNZNEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$第四章1.C51特有的數(shù)據(jù)類型有哪些?答:C51特有的數(shù)據(jù)類型有特殊功能寄存器型和位類型。?答:C51中的存儲器.C51中的存儲器類型有幾種,它們分別表示的存儲器區(qū)域是什么

類型有6種,分別如下:data:直接尋址的片內(nèi)RAM低1?答:C51中的存儲器bdata:片內(nèi)RAM的可位尋址區(qū)(20H?2FH),允許字節(jié)和位混合訪問idata:間接尋址訪問的片內(nèi)RAM,允許訪問全部片內(nèi)RAMpdata:用Ri間接訪問的片外RAM低256Bxdata:用DPTR間接訪問的片外RAM,允許訪問全部64KB片外RAMcode:程序存儲器ROM64KB空間.在C51中,bit位與sbit位有什么區(qū)別?答:bit位類型符用于定義一般的位變量。存儲器類型只能是 bdata、data、idata,只能是片內(nèi)RAM的可位尋址區(qū),嚴(yán)格來說只能是bdata。sbit位類型符用于定義在可位尋址字節(jié)或特殊功能寄存器中的位 ,定義時需指明其位地址,可以是位直接地址,可以是可位尋址變量帶位號,也可以是特殊功能寄存器名帶位號。.位變量和特殊功能寄存器變量有什么作用 ?答:特殊功能寄存器變量是C51中特有的一種變量。通過特殊功能寄存器變量可訪問 MCS-51系列單片機(jī)的特殊功能寄存器。訪問時需通過 sfr或s什16類型說明符進(jìn)行定義,定義時需指明它們所對應(yīng)的特殊功能寄存器的地址。位變量也是C51中的一種特有變量。通過位變量可訪問MCS-51系列單片機(jī)的可位尋址位。使用時需用位類型符進(jìn)行定義。位類型符有兩個 :bit和sbit??梢远x兩種位變量。.在C51中,通過絕對地址來訪問的存儲器有幾種 ?答:通過絕對地址來訪問存儲器有三種方法 :1.使用C51運(yùn)行庫中預(yù)定義宏。2.通過指針訪問。3.使用C51擴(kuò)展關(guān)鍵字_at_.什么是存儲模式,存儲模式和存儲器類型有什么關(guān)系 ?答:C51中有三種存儲模式:SMALL模式、COMPACT模式和LARGE模式。不同的存儲模式對變量默認(rèn)的存儲器類型不一樣。SMALL模式。SMALL模式稱為小編譯卞II式,在SMALL模式下,編譯時變量被默認(rèn)在片內(nèi)RAM中,存儲器類型為data。COMPACT模式。COMPACT模式稱為緊湊編譯模式,在COMPACT莫式下,編譯時變量被默認(rèn)在片外RAM的低256B空間,存儲器類型為pdata。LARGE模式。LARGE模式稱為大編譯模式,在LARGE模式下,編譯時變量被默認(rèn)在片外RAM的64B空間,存儲器類型為xdata。在程序中變量存儲*II式的指定通過 #pragma預(yù)處理命令來實(shí)現(xiàn)。如果沒有指定,則系統(tǒng)都隱含為SMALL模式。.在C51中,修飾符usingn有什么作用?答:usingn修飾符,用于指定本函數(shù)內(nèi)部使用的工作寄存器組,其中n的取值為 0~3,表示寄存器組號。.在C51中,中斷函數(shù)與一般函數(shù)有什么不同?答:中斷函數(shù)在定義時后面帶 interruptm修飾符,m的取值為0~31,對應(yīng)的中斷情況如下:0——外部中斷0,1——定時/計(jì)數(shù)器T0,2——外部中斷1,3——定時/計(jì)數(shù)器T1,4-一串行口中斷,5——定時/計(jì)數(shù)器T2,其他值預(yù)留。編寫MCS-51中斷函數(shù)需要注意如下幾點(diǎn)。(1)中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。(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

編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。(7)中斷函數(shù)最好寫在文件的尾部 ,并且禁止使用extern存儲類型說明。防止其他程序調(diào)用。9.按給定的存儲類型和數(shù)據(jù)類型 ,寫出下列變量的說明形式。 (1)在data區(qū)定義字符變量vall。chardatavall;(2)在idata區(qū)定義整型變量val2。intidataval2;(3)在xdata區(qū)定義無符號字符型數(shù)組 val3[4]。unsignedcharxdataval3[4];(4)在xdata區(qū)定義一個指向char類型的指針px。charxdata*px;(5)定義可尋址位變量flag。bitflag;(6)定義特殊功能寄存器變量 P3。sfrP3=0xa0;(7)定義特殊功能寄存器變量 SCON。sfrSCON^0x98;(8)定義16位的特殊功能寄存器T0osfr16T0=0x8a;第七章1.何為“準(zhǔn)雙向I/O接口”?在MCS-51單片機(jī)的四個并口中,哪些是“準(zhǔn)雙向I/O接口”?答:準(zhǔn)雙向I/O接口是能實(shí)現(xiàn)輸入輸出功能,但在使用時只能從輸入和輸出中選擇一個。 MCS—51單片機(jī)的四個并口中P1、P2、P3是準(zhǔn)雙向I/O接口。.80C51單片機(jī)內(nèi)部有幾個定時/計(jì)數(shù)器?它們由哪些功能寄存器組成 ?怎樣實(shí)現(xiàn)定時功能和計(jì)數(shù)功能?答:80C51單片機(jī)內(nèi)部有兩個16位的可編程定時/計(jì)數(shù)器,由TH0,TLO,TH1,TL1,TMOD和TCON功能寄存器組成。通過TMOD中的C/T位選擇對機(jī)器周期計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能, 選擇對外部脈沖計(jì)數(shù)實(shí)現(xiàn)計(jì)數(shù)功能。.定時/計(jì)數(shù)器T0有幾種工作方式?各自的特點(diǎn)是什么? 答:有四種工作方式,特點(diǎn)見下表:答:有四種工作方式,特點(diǎn)見下表 :1M0工作方式方式說明00013位定時/計(jì)數(shù)器01116位定時/計(jì)數(shù)器1028位自動重置定時/計(jì)數(shù)器113兩個8位定時/計(jì)數(shù)器(只有T0有)4.定時/計(jì)數(shù)器的四種工作方式各自的計(jì)數(shù)范圍是多少 就口果要方tl00個單位,不同的方式初值應(yīng)為多少?答:有四種方式。方式0計(jì)數(shù)范圍:1?8192;方式1計(jì)數(shù)范圍:1 ~65536;方式2計(jì)數(shù)范圍:1~256;方式3計(jì)數(shù)范圍:1?256。如果計(jì)100個單位,方式0初值為:8192-100=8092;方式1初值為:65536-100=

65436;方式2初值為:256—100=156;方式2初值為:256-100=156。.設(shè)振蕩頻率為6MHz,如果用定時/計(jì)數(shù)器T0產(chǎn)生周期為10ms的方波,可以選擇哪幾種方式,其初值分別設(shè)為多少?答:只能選擇方式1,初值為65536-10000=55536。.何為同步通信?彳S]■為異步通信?各自的特點(diǎn)是什么?答:異步通信方式的特點(diǎn)是數(shù)據(jù)在線路上傳送時是以一個字符(字節(jié) )為單位,未傳送時線路處于空閑狀態(tài),空閑線路約定為高電平“1”。特點(diǎn)是對發(fā)送時鐘和接收時鐘的要求相對不高,線路簡單,但傳送速度較慢。同步通信方式的特點(diǎn)是數(shù)據(jù)在線路上傳送時以字符塊為單位, 一次傳送多個字符,傳送時須在前面加上一個或兩個同步字符, 后面加上校驗(yàn)字符。特點(diǎn)是對發(fā)送時鐘和接收時鐘要求較高,往往用同一個時鐘源控制,控制線路復(fù)雜,傳送速度快。.單工、半雙工和全雙工有什么區(qū)別 ?答:單工方式只有一根數(shù)據(jù)線,信息只能單向傳送 ;半雙工方式也只有一根數(shù)據(jù)線,但信息可以分時雙向傳送;全雙工方式有兩根數(shù)據(jù)線,在同一個時刻能夠?qū)崿F(xiàn)數(shù)據(jù)雙向傳送。.設(shè)某異步通信接口,每幀信息格式為10位,當(dāng)接口每秒傳送1000個字符時,其波特率為多少?答:10000波特.串行口數(shù)據(jù)寄存器SBUF有什么特點(diǎn)?答:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器合起用一個特殊功能寄存器 SBUF用行口數(shù)據(jù)寄存器),執(zhí)行MOVSBUFA發(fā)送時為發(fā)送數(shù)據(jù)寄存器, 執(zhí)行MOVA,SBUF接收時為接收數(shù)據(jù)寄存器。10.MCS-51單片機(jī)串行口有幾種工作方式?各自特點(diǎn)是什么?答:有四種工作方式,分別是方式0、方式1、方式2和方式3。其中:方式0,稱為同步移位寄存器方式,一般用于外接移位寄存器芯片擴(kuò)展I /O接口。方式1,稱為8位的異步通信方式,通常用于雙機(jī)通信。方式2和方式3,稱為9位的異步通信方式,通常用于多機(jī)通信。 11.說明SM2在方式2和方式3對數(shù)據(jù)接收有何影響。答:通過SM2對方式2和方式3數(shù)據(jù)接收進(jìn)行控制,SM2=1,那么只有接收的第9位為“1”才接收有效。如SM2=0,接收的第9位無論為1還是0都接收有效。12.怎樣來實(shí)現(xiàn)利用串行口擴(kuò)展并行輸入/輸出口 ?答:利用串行口在方式0時,當(dāng)外接一個串入并出的移位寄存器 ,就可以擴(kuò)展并行輸出口;當(dāng)外接一個并入串出的移位寄存器時,就可以擴(kuò)展并行輸入口。什么是中斷、中斷允許和中斷屏蔽?答:在計(jì)算機(jī)中,由于計(jì)算機(jī)內(nèi)外部白^原因或軟硬件的原因,使C PU從當(dāng)前正在執(zhí)行的程序中暫停下來,而自動轉(zhuǎn)去執(zhí)行預(yù)先安排好的為處理該原因所對應(yīng)的服務(wù)程序。 執(zhí)行完服務(wù)程序后,再返回被暫停的位置繼續(xù)執(zhí)行原來的程序, 這個過程稱為中斷,實(shí)現(xiàn)中斷的硬件系統(tǒng)和軟件系統(tǒng)稱為中斷系統(tǒng)。中斷允許是允許中斷請求送C PU產(chǎn)生中斷,中斷屏蔽是禁止中斷請求信號送cPU產(chǎn)生中斷。8051有幾個中斷源?中斷請求如何提出?答:MCS-51單片機(jī)提供5個硬件中斷源:兩個外部中斷源INT0(P3.2)和INT1(P3.3),兩個定時/計(jì)數(shù)器T0和T1中斷;1個串行口中斷。外部中斷源INT0和INT1的中斷請求信號從外部引腳P3.2和P3.3輸入;兩個定時/計(jì)數(shù)器T0和T1的溢出中斷TF0和TF1定時/計(jì)數(shù)器T0(或T1)溢出時提出;串行口中斷由發(fā)送中斷標(biāo)志T1和接收中斷標(biāo)志R1產(chǎn)生。8051的中斷源中,哪些中斷請求信號在中斷響應(yīng)時可以自動清除 ?哪些不能自動清除?

應(yīng)如何處理?答:工作在邊沿觸發(fā)方式下的兩個外部中斷源和兩個定時 /計(jì)數(shù)器中斷中斷請求信號在中斷響應(yīng)時可以自動清除,工作在電平觸發(fā)方式下的兩個外部中斷源和串行口中斷不能自動清除。工作在電平觸發(fā)方式下的兩個外部中斷源的中斷請求信號通過外加硬件和加軟件的方式清除,串行口中斷標(biāo)志T1和標(biāo)志R1完全由軟件清除。16.8051的中斷優(yōu)先級有幾級?在形成中斷嵌套時各級有何規(guī)定 ?答:8051的中斷優(yōu)先級有兩級;形成中斷嵌套時規(guī)定(1)正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷,直到該中斷服務(wù)程序結(jié)束,返回了主程序且執(zhí)行了主程序中的一條指令后,CPU才響應(yīng)新的中斷請求。(2)正在進(jìn)行的低優(yōu)先級中斷服務(wù)程序能被高優(yōu)先級中斷請求所中斷 ,實(shí)現(xiàn)兩級中斷嵌套。(3)CPU同時接收到幾個中斷請求時,首先響應(yīng)優(yōu)先級最高的中斷請求。7.設(shè)8051的P1中各位接發(fā)光二極管, 分別用匯編語言和C語言編程實(shí)現(xiàn)逐個輪流點(diǎn)亮二極管,并循環(huán)顯示。參考程序:ORG0000HLJMPMAINORG0100H主程序MAIN:MOVA,#01HLOOP:MOVP1,ACALLDELAYRLASJMPLOOPSJMP$DELAY:MOVR7,#0FFHDNZR7,$RETENDC語言程序:#include<reg51.h>//包含特殊功能寄存器庫 voiddelay(unsignedintx);voidmain() {unsignedchari,j;while(1){i=01;for(j=0;j<8;j++){P1=i;delay(100);i=i*2;}}}voiddelay(unsignedintx){unsignedcharj;while(x--){for(j=0;j<125;j++);}}8051系統(tǒng)中,已知振蕩頻率為12MHz,用定時/計(jì)數(shù)器T0,實(shí)現(xiàn)從P1.。產(chǎn)生周期為2ms的方波。要求分別用匯編語言和 C語言進(jìn)行編程。解:分析:從P1.0輸出周期為2ms的方波,只須P1.0每1ms取反一次則可。當(dāng)系統(tǒng)時鐘為12MHZ,定時/計(jì)數(shù)器T0工作于方式1時,最大的定時時間為65.536ms,滿足1ms的定時要求,方式控制字應(yīng)設(shè)定為0 0O0O001B(01H)。定時1ms,計(jì)數(shù)值N為1000,初值X=65536-1000=64536,則TH0=FCH,TL0=18H。采用中斷處理方式:程序如下:ORG0000HLJMPMAINORG000BH ;中斷處理程序MOVTH0,#0FCHMOVTL0,#18iCPLP10RETIORG0100H ;主程序MAIN:MOVTMOD,#01H

MOVTH0,#0FCHMOVTL0,#18HSETBEASETBET0SETBTR0SJMP$ENDC語言程序:#include<reg51.h>//包含特殊功能寄存器庫 sbitP1_0=P1A0;voidmain(){TMOD=0x01;THO=0xFC;TL0=0x18;EA=1;ET0=1;TRO=1;whi1e(1);}voidtime0_int(void)interrupt1//中斷服務(wù)程序{TH0=0xFC;TL0=0x18;P1_0=!Pl_0;}8051系統(tǒng)中,已知振蕩頻率為6 MHz,用定時/計(jì)數(shù)器T1,實(shí)現(xiàn)從P1.1產(chǎn)生周期為2s的方波。要求分別用匯編語言和 C語言進(jìn)行編程。解:從P1.1產(chǎn)生2s的方波,應(yīng)產(chǎn)生500ms的周期性的定時,定時到對 P1.1取反就可實(shí)現(xiàn)。由于定時時間較長,一個定時/計(jì)數(shù)器 T1不能直接實(shí)現(xiàn),采用定時/計(jì)數(shù)器T1產(chǎn)生周期性為10ms的定時,然后用一個寄存器R2對10ms計(jì)數(shù)100次來實(shí)現(xiàn)。系統(tǒng)時鐘為12MHZ,定時/計(jì)數(shù)器T1定日10ms,計(jì)數(shù)值N為10000,只能選方式1,方式控制字為00010000B(10H),初值X:X=65536—10000=55536=11000B貝UTH1=11011000B=D8H,TL1=11110000B=F0H。定時/計(jì)數(shù)器T1采用中斷處理方式。匯編程序:ORG0000HLJMPMAINORG001BHLJMPINTT1ORG0100HMAIN:MOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASEBET1SETBTR1SJMP$INTTl:MOVTH1,#0D8HMOVTL1,#0F0HINCR2CJNER2,#64H,NEXTCPLP1.1MOVR2,#00HNEXT:RETIENDC語言程序:#include<reg51.h>//包含特殊功能寄存器庫 sbitP1_1=P1人1;chari;voidmain(){TMOD=0x10;TH1=0xD8;TL1=0xfO;EA=1;ET1=1;i=0;TR1=1;while(1);}voidtime0_int(void)interrupt3//中斷服務(wù)程序{TH1=0xD8;TLI=0xf0;i++;if(i==100){P1_1=!P1—1;i=0;}}

20.8051系統(tǒng)中,已知振蕩頻率為 12MHz,用定時/計(jì)數(shù)器T1,實(shí)現(xiàn)從P1.1產(chǎn)生高電平寬度為10ms,低電平寬度為20ms的矩形波。要求分別用匯編語言和 C語言進(jìn)行編程。解:本題處理方式有多種,這里采用對定時/計(jì)數(shù)器T1形成10ms周期定時,用R2對10ms計(jì)數(shù),當(dāng)計(jì)到1,則對P1.1置1,當(dāng)計(jì)到2和3,則對P1.1置0來實(shí)現(xiàn)。用定日計(jì)數(shù)器T1形成10ms周期定時見上題。程序如下:ORG0000HLJMPMAINORG001BHLJMPNTT1ORG0100HMAIN:MOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVR2,#00HSETBEASETBETSETBTR1SJMP$INTT1:MOVTH1,#0D8HMOVTL1,#0F0HINCR2CNER2,#01H,NEXTSETBP1.1SJMPEXITNEXT:QNER2,#02H,NEXT1CLRP1.1SJMPEXITNEXT1:CJNER2,#03H,NEXTSETBPl.1MOVR2,#00EXIT:RETIENDC語言程序:#includevrcg51.h>//包含特殊功能寄存器庫 sbitP1_1=P1A1;chari;voidmain() {TMOD=Oxl0;TH1=0xD8;TL1=0xf0;EA=1;ET1=1;i=0;TR1=1;whi1e(1){if(i==0){P1_1=1;}if(i==1){p1_1=0;}if(i==2){P1_1=0;}};}voidtime0_int(void)interrupt3//中斷服務(wù)程序{TH1=0xD8;TL1=0xf0;i++;if(i==3) {i=0;}}21.用8051單片機(jī)的串行口擴(kuò)展并行 I/O接口,控制16個發(fā)光二極管依次發(fā)光,畫出電路圖,用匯編語言和C語言分別編寫相應(yīng)的程序。解:采用在串口連接兩個CD4094來實(shí)現(xiàn),電路圖如下:程序如下;ORG0000HLJMPMAINORG0100HMAIN:MOVSCON,#00HMOVR4,#10HMOVR3,#00HMOVR2,#01HCLRR.0

START:MOVA,R3MOVSBUF,ALOOP:JNBTI,LOOPMOVA,R2MOVSBUF,ALOOPl:JNBTI,LOOP1SETBPL.0ACALLDELAYCLRTICLRCMOVA,R2RLCAMOVR2,AMOVA,R3RLCAMOVR3,ACLRPl.0DJNZR4,START1SJMPMAINDELAY:MOVR7,#05HLOOP2MOVR6,#0FFHLOOP1:DJZR6,LOOPlDJNZR7LOOP2RETENDC語言程序:#include<reg51.h>voiddelay(unsignedintx);union{unsignedintword;struct{unsignedcharhigh;unsignedchar1ow;}bytes;}number;voidmain(){inti;SCON=0x00;while。){number,word=0x01;for(i=0;i<16;i++){SBUF=number.bytes.low;while(!TI);TI=0;SBUF=number.bytes.high;whi1e(!TI);TI=0;delay(10);number.word=number.word*2;}}}voiddelay(unsignedintx){unsignedcharj;while(x--){for(j=0;j<125;j++);}}第八章1.什么是MCS-51單片機(jī)的最小系統(tǒng)?答:所謂最小系統(tǒng),是指一個真正可用的單片機(jī)的最小配置系統(tǒng)。對于單片機(jī)內(nèi)部資源已能夠滿足系統(tǒng)需要的,可直接采用最小系統(tǒng)。.簡述存儲器擴(kuò)展的一般方法。答:存儲器芯片與單片機(jī)擴(kuò)展連接具有共同的規(guī)律。即不論何種存儲器芯片 淇引腳都呈三總線結(jié)構(gòu),與單片機(jī)連接都是三總線對接。另外,電源線接電源線 ,地線接地線。.什么是部分譯碼法?什么是全譯碼法?它們各有什么特點(diǎn)?用于形成彳f么信號?答:部分譯碼就是存儲器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后, 剩余的高位地址線僅用一部分參加譯碼。部分譯碼使存儲器芯片的地址空間有重疊,造成系統(tǒng)存儲器空間的浪費(fèi)。全譯碼就是存儲器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后 ,剩余的高位地址線全部參加譯碼。這種譯碼方法中存儲器芯片的地址空間是唯一確定的 ,但譯碼電路要相對

復(fù)雜。譯碼形成存儲器芯片的片選信號線 CE..采用部分譯碼為什么會出現(xiàn)地址重疊情況 ,它對存儲器容量有何影響?答:部分譯碼就是存儲器芯片的地址線與單片機(jī)系統(tǒng)的地址線順次相接后 ,剩余的高位地址線僅用一部分參加譯碼。參加譯碼的地址線對于選中某一存儲器芯片有一個確定的狀態(tài) ,而與不參加譯碼的地址線無關(guān)。 也可以說,只要參加譯碼的地址線處于對某一存儲器芯片的選中狀態(tài),不參加譯碼的地址線的任意狀態(tài)都可以選中該芯片。正因?yàn)槿绱耍糠肿g碼使存儲器芯片的地址空間有重疊,造成系統(tǒng)存儲器空間減少。.存儲器芯片的地址引腳與容量有什么關(guān)系?答:容量(Q)與地址線數(shù)目(N)滿足關(guān)系式:Q=2N。.MCS-51單片機(jī)的外部設(shè)備是通過什么方式訪問的 ?答:MCS-51單片機(jī)擴(kuò)展的外部設(shè)備與片外數(shù)據(jù)存儲器統(tǒng)一編址 ,即外部設(shè)備占用片外數(shù)據(jù)存儲器的地址空間。按片外數(shù)據(jù)存儲器的訪問方式訪問。.何為鍵抖動?建抖動對鍵位識別有什么影響?怎樣消除鍵抖動?答:按鍵時,無論按下鍵位還是放開鍵位都會產(chǎn)生抖動,如果對抖動不作處理,必然會出現(xiàn)按一次鍵而輸入多次 ,為確保按一次鍵只確認(rèn)一次,必須消除按鍵抖動。消除按鍵抖動通常有硬件消抖和軟件消抖兩種方法。.矩陣鍵盤有幾種編碼方式?怎樣編碼?答:通常有以下兩種方法進(jìn)行編碼; (1)用連接鍵盤的I/O線的二進(jìn)制組合進(jìn)行編碼。(2)順序排列編碼。.簡述對矩陣鍵盤的掃描過程。答:矩陣式鍵盤的工作過程可分為兩步:第一步是 CPU首先檢測鍵盤上是否有鍵按下 ;第二步是識別哪一個鍵按下。(1)檢測鍵盤上是否有鍵按下的處理方法是 :將列線送入全掃描字,讀入行線的狀態(tài)來判別。(2)識別鍵盤中哪一個鍵按下的處理方法是:將列線逐列置成低電平,檢查行輸入狀態(tài) ,稱為逐列掃描。.共陰極數(shù)碼管與共陽極數(shù)碼管有何區(qū)別?答:共陰極結(jié)構(gòu),8段發(fā)光二極管的陰極端連接在一起,陽極端分開控制 ,使用時公共端接地,要使哪根發(fā)光二極管亮,則又?應(yīng)的陽極端接高電平 ;共陽極結(jié)構(gòu),8段發(fā)光二極管的陽極端連接在一起,陰極端分開控制,使用時公共端接電源,要使哪根發(fā)光二極管亮 ,則對應(yīng)的陰極端接地。13.簡述LED動態(tài)顯示過程。答:LED動態(tài)顯示是將所有的數(shù)碼管的段選線并接在一起 ,用一個I/O接口控制,公共端不是直接接地(共陰極)或電源(共陽極),而是通過相應(yīng)的I/O接口線控制,工作過程為:第一步使右邊第一個數(shù)碼管的公共端D 。為1,其余的數(shù)碼管的公共端為0,同時在I/O(1)上發(fā)送右邊第一個數(shù)碼管的字段碼,這時,只有右邊第一個數(shù)碼管顯示 ,其余不顯示;第二步使右邊第二個數(shù)碼管的公共端D1為1,其余的數(shù)碼管的公共端為 0,同時在I/O(1)上發(fā)送右邊第二個數(shù)碼管的字段碼,這時,只有右邊第二個數(shù)碼管顯示,其余不顯示,依此類推,直到最后一個這樣4個數(shù)碼管輪流顯示相應(yīng)的信息,一次循環(huán)完畢后,下一次循環(huán)又這樣輪流顯示,從計(jì)算機(jī)的角度看是一個一個地顯示 ,但由于人的視覺暫留效應(yīng),只要循環(huán)的周期足夠快,則看起來所有的數(shù)碼管就都是一起顯示的了 ,這就是動態(tài)顯示的原理。13.使用2764(8KB8)芯片通過部分譯碼法擴(kuò)展24KB程序存儲器,畫出硬件連接圖,指明各芯片的地址空間范圍。答:使用2764(8K8)芯片通過部分譯碼法擴(kuò)展24KB程序存儲器,須要3塊。采用線譯碼,

P2.5與第一片2764的CE相連,P2.6與第二片2764的CE相連,P2.7與第三片2764的CE相連,硬件連接如下:地址空間如下:第一片:1100000000000000~1101111111111111;即C000H~DFFFH;第二片:1010000000000000?1011111111111111;即A000H?BFFFH;第三片:0110000000000000~0111111111111111;即6000H?7FFFH;.使用6264(8KB8)芯片通過全譯碼法擴(kuò)展 24KB數(shù)據(jù)存儲器,畫出硬件連接圖 ,指明各芯片的地址空間范圍。答:使用6264(8K8)芯片通過全譯碼法擴(kuò)展24KB程序存儲器,須要3塊。采用138譯碼器譯碼,硬件連接如下:地址空間如下:第一片:0000000000000000~0001111111111111;即0000H?1FFFH;第二片:0010000000000000~0011111111111111;即2000H~3FFFH;第三片:0100000000000000~0101111111111111;即3000H~5FFFH.試用一片74LS373擴(kuò)展一個并行輸入口,畫出硬件連接圖,指出相應(yīng)的控制命令。答:硬件電路圖如下:74LS373的輸入端為擴(kuò)展的輸入口 ,輸出端接8051的數(shù)據(jù)總路線P0口,控制端接高電平,輸出允許由片外數(shù)據(jù)存儲器讀信號 RD和P2.0控制。當(dāng)片外數(shù)據(jù)存儲器讀信號RD和P2.0同為低平時從74LS373中讀入輸入的數(shù)據(jù)。輸入數(shù)據(jù)的命令如下: MOVDPTR,#0FE0OHMOVXA,@DPTR.用8255A擴(kuò)展并行I/O,實(shí)現(xiàn)把8個開關(guān)的狀態(tài)通過8個二極管顯示出來,畫出硬件連接圖,用匯編語言和C語言分別編寫相應(yīng)的程序。 答:硬件電路圖如下:8051與8255的連接略,設(shè)8255的A,B,C和控制控口的地址為7F0OH,7F01H,7F02H,7F03H。8255的A口接8個開關(guān),B口接8個發(fā)光二極管。

程序如下:匯編程序ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#7F03HMOVA,#90HMOVX@DPTR,ALOOP:MOVDPTR,77F00HMOVXA,@DPTRMOVDPTR#7F01HMOVX@DPTR,ASJMPOOPSJMP$ENDC語言程序:#includc<reg51.h>#include<absacc.h>main(){unsignedchari;XBYTE[0x7f03]=0x90;whi1e(1) {i=XBYTE[0x7f00];XBYTE[0x7f01]=i;}}}17.用匯編語言編寫出定時掃描方式下矩陣鍵盤的處理程序。該程序放于定時器的中斷服務(wù)程序中。定時器每 10ms中斷一次,執(zhí)行一次中斷服務(wù)程序。F1和F2標(biāo)志位用片內(nèi)RAM的50H和51H單元。ACALLKS1JNZO1MOV50H,#0無鍵按下,F(xiàn)1的F0標(biāo)志清0結(jié)束MOV51H,00SJMPOUTLK1:CJNE50H,#1,OUT1;有鍵按下檢查F1標(biāo)志是否為1,不為1置1結(jié)束。CJNE51H,#01,OUT;再檢查F2標(biāo)志是否為1,為1說明已處理按鍵則結(jié)束。LK2:MOVR2,#0FEH;掃描查詢鍵碼MOVR4,#00H LK4:MOVDPTR#7F00HMOVA,R2 MOVX@DPTR,AINCDPTR INCDPTRMOVXA,@DPTRJBAC.0,LONE MOVA,000HAJMPIKP LONEJBACC.1,LTWOMOVA,#08HAJMPLKPLTWO:JBACT.2,LTHRMOVA,#10HAJMPLKPLTHR:JBACC.3,NEXTMOVA,#18HLKP:ADDAR4;求鍵碼放累加大器A,MOV51H,#1;F2標(biāo)志置1,結(jié)束SJMPOUTNEXT:INCR4 MOVA,R2JNBACC.7,KENDRLA MOVR2,A SMPLK4KEND:SJMPOUT掃描完結(jié)束KS1:MOVDPTR,#7F00H檢查有無按鍵MOVA,KEND:SJMPOUT#00H MOVX@DPTR,AINCDPTt NCDPTROUTMOV50MOVXA,@DPTRCPLA ALA,#0FH RETOUTMOV50H,#1OUT:18.用C語言編寫出定時掃描方式下矩陣鍵盤的處理程序。F1和F2標(biāo)志已在主函數(shù)前定義?!?***********〃************檢測有無鍵按下函數(shù) ************ucharcheckkey()//檢測有無鍵按下函數(shù),有返回0xff,無返回ucharcheckkey(){uchari;XBYTE[0x7f00]=0x00;i=XBYTE[0x7f02];i=i&0x0f;if(i==0x0f)return(0);elseret

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論