單片機應(yīng)用技術(shù)第3版張文灼課后參考答案_第1頁
單片機應(yīng)用技術(shù)第3版張文灼課后參考答案_第2頁
單片機應(yīng)用技術(shù)第3版張文灼課后參考答案_第3頁
單片機應(yīng)用技術(shù)第3版張文灼課后參考答案_第4頁
單片機應(yīng)用技術(shù)第3版張文灼課后參考答案_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE項目1用單片機控制1只閃爍燈一、動手與動腦1.單片機的含義是什么?其有哪些主要特點?答:(1)單片機是指將CPU、存儲器、定時/計數(shù)器、I/O接口電路和必要的外設(shè)集成在一塊芯片上的微型計算機,其構(gòu)成一個既小巧又很完善的計算機硬件系統(tǒng),實現(xiàn)微機的基本功能,早期稱其為單片微型計算機SCM,簡稱單片機。(2)體積小巧、可靠性高、控制功能強、易于擴展、低電壓、低功耗、性能價格比優(yōu)異。2.簡述單片機發(fā)展的歷史和其主要技術(shù)發(fā)展方向。答:發(fā)展歷史如下:(1)低性能8位單片機階段約1976~1978年,以Intel公司的MCS-48系列單片機為代表。(2)高性能8位單片機階段約1978~1982年,1978年Motorola公司推出M6800系列單片機,Zilog公司推出Z8系列單片機。1980年Intel公司推出了高性能的MCS-51系列單片機,并成為此時期的代表機型。(3)8位單片機提高及16位單片機推出階段約1982~1990年,8位機以MCS-51系列單片機為代表,同時16位單片機也有很大發(fā)展,如Intel公司的MCS-96系列單片機。(4)單片機全面發(fā)展階段約1990~至今,目前單片機正朝著多品種、高速、強運算能力、大尋址范圍以及小型廉價方向發(fā)展。發(fā)展趨勢:(1)低功耗CMOS化、(2)低噪聲與高可靠性、(3)存儲器大容量化、(4)高性能化、(5)外圍電路內(nèi)裝化、(6)增強I/O及擴展功能。3.了解單片機常用的系列、品種,AT89C51系列單片機的主要特征是什么?略。4.簡述單片機程序存儲器和數(shù)據(jù)存儲器的區(qū)別與類別。答:(1)區(qū)別:程序存儲器用來存放單片機的應(yīng)用程序及運行中的常數(shù)數(shù)據(jù),數(shù)據(jù)存儲器用于暫存運行期間的數(shù)據(jù)、現(xiàn)場采集的原始數(shù)據(jù)、中間結(jié)果、運算結(jié)果、緩沖和標志位等臨時數(shù)據(jù)。(2)程序存儲器類別:1)掩膜ROM、2)可編程只讀存儲器PROM、3)紫外線擦除可編程只讀存儲器EPROM、4)電擦除可編程E2PROM、5)快閃存儲器(3)數(shù)據(jù)存儲器類別:RAM按器件制造工藝不同分為兩類,分別為雙極型RAM和MOS型RAM。MOS隨機存儲器按信息存儲的方式又分為靜態(tài)RAM和動態(tài)RAM兩種5.簡述單片機應(yīng)用系統(tǒng)開發(fā)的基本方法。答:(1)在線仿真開發(fā)首先利用仿真機提供給用戶的系統(tǒng)軟硬件進行設(shè)計調(diào)試(稱仿真),然后試運行,若滿足設(shè)計要求,則程序設(shè)計完成,不滿足則繼續(xù)在仿真機中修改;程序調(diào)試好后,取下仿真機,將程序固化到用戶系統(tǒng)的單片機程序存儲器并將單片機插入用戶插座,開發(fā)結(jié)束。一般的仿真器自帶程序固化功能,也可使用單獨的編程器固化。(2)離線仿真開發(fā)對于接口電路較多的系統(tǒng),又無實時在線開發(fā)設(shè)備,可先設(shè)計好硬件電路做好印制板或搭接好線路,在PC機的仿真軟件中設(shè)計好程序,利用一個簡易編程器即可將程序固化到單片機芯片,然后將單片機直接插入硬件電路中試運行,如有問題,拔下單片機重新固化修改后的程序,如此反復(fù),直至成功。(3)ISP開發(fā)對于可在系統(tǒng)編程的單片機(如AT89S系列),可利用其串口對內(nèi)部的程序存儲器進行編程,不需要編程器。單片機可以直接焊接到電路板上,同PC機連機后,通過ISP程序可將用戶事先編好的程序直接寫入片內(nèi)程序存儲器中,然后運行調(diào)試,有問題然后在PC機上修改程序重新下載,調(diào)試結(jié)束即為成品。二、思考與練習1.將下列二進制和十六進制數(shù)轉(zhuǎn)換為十進制數(shù)。(1)11011B(2)0.01B(3)10111011B(4)EBH答:(1)27(2)0.25(3)187(4)2352.將下列十進制數(shù)轉(zhuǎn)換為二進制和十六進制數(shù)。(1)255(2)127(3)0.90625(4)5.1875答:(1)11111111B、FFH(2)01111111B、7FH(3)0.11101B、0.E8H(4)101.0011B、5.3H3.機器數(shù)、真值、原碼、反碼和補碼如何表示?答:(1)在計算機中使用的連同符號位一起數(shù)字化的數(shù),稱為機器數(shù),機器數(shù)所表示的真實值則稱為真值。(2)對有符號數(shù),機器數(shù)常用的表示方法有原碼、反碼、補碼三種。1)原碼最高位為符號位,“0”表示正,“1”表示負,其余位表示數(shù)值的大?。?)反碼規(guī)定正數(shù)的反碼與其原碼相同;負數(shù)的反碼是對其原碼逐位取反,但符號位除外。3)正數(shù)的補碼與其原碼相同;負數(shù)的補碼是在其反碼的末位加1。4.設(shè)計器字長為8位,求下列數(shù)值的二、十六進制原碼、反碼和補碼。(1)+0(2)-0(3)+33(4)-33(5)-127答:(1)[+0]原=[+0]反=[+0]補=00000000B=00H(2)[-0]原=00000000B[-0]反=11111111B[-0]補=00000000B(3)[+33]原=[+33]反=[+33]補=00100001B=21H(4)[-33]原=10100001B=A1H[-33]反=11011110B=DEH[-33]補=11011111B=DEH(5)[-127]原=11111111B=FFH[-127]反=10000000B=80H[-127]補=10000001B=81H5.把下列數(shù)看成無符號數(shù)時,對應(yīng)的十進制數(shù)為多少?若把其看成有符號數(shù)的補碼,對應(yīng)的十進制數(shù)是多少?(1)10100001B(2)10000000B答:看做無符號數(shù)時:(1)161(2)128;看做有符號數(shù)時:(1)-33(2)-1276.若要訪問片外32KB的存儲空間,假設(shè)每個存儲單元是一個字節(jié),計算需要多少根地址線。答:15根。7.單項選擇題答:(1)~(5)BCDDA。項目2用單片機模擬按鍵開關(guān)燈一、動手與動腦1.何為單片機最小應(yīng)用系統(tǒng)?答:單片機最小應(yīng)用系統(tǒng)是指能使單片機獨立工作運行的盡可能少的電路連接。2.時鐘電路的作用是什么?答:時鐘電路用于產(chǎn)生單片機工作所需要的時鐘信號,唯一的時鐘信號控制下的時序可以保證單片機各部件的同步工作。3.什么是機器周期?機器周期和時鐘頻率有何關(guān)系?當時鐘頻率為6MHz時,機器周期是多少時間?答:單片機晶振芯片每秒振蕩的次數(shù)稱為時鐘頻率,振蕩一次所需時間稱為振蕩周期。12個振蕩周期是一個機器周期。時鐘頻率為6MHz時,機器周期是2μs。4.簡述89C51的4個并行I/O端口的功能。答:89C51的并行I/O口為單片機與外部器件或設(shè)備進行信息交換提供了多功能的輸入/輸出通道,是單片機擴展外部功能、構(gòu)成單片機應(yīng)用系統(tǒng)的重要物理基礎(chǔ)。4個I/O口都具有字節(jié)尋址和位尋址功能,每一位均可作為雙向的通用I/O功能使用,具體如下:(1)P0口為雙功能8位并行I/O口??勺魍ㄓ脭?shù)據(jù)I/O端口使用;在訪問片外擴展的存儲器時,又可作地址/數(shù)據(jù)總線分時傳輸?shù)?位地址和8位數(shù)據(jù)。(2)P1口為單一功能的并行I/O口,只用作通用的數(shù)據(jù)I/O端口。(3)P2口為雙功能8位并行I/O口。可作通用數(shù)據(jù)I/O端口使用,又可在訪問片外擴展的存儲器時用作高8位地址總線。(4)P3口為雙功能8位并行I/O口,第一功能是通用數(shù)據(jù)I/O端口,還有第二功能。5.P3口的第二功能是什么?答:引腳名稱功能注釋引腳名稱功能注釋P3.0RXD串行數(shù)據(jù)接收P3.4T0定時/計數(shù)器0外部輸入P3.1TXD串行數(shù)據(jù)發(fā)送P3.5T1定時/計數(shù)器1外部輸入P3.2外部中斷0申請P3.6外部RAM寫選通P3.3外部中斷1申請P3.7外部RAM讀選通6.MCS-51型單片機片內(nèi)RAM的組成是如何劃分的,各有什么功能?略,見課本。15.畫出MCS-51型單片機時鐘電路,并指出石英晶體和電容的取值范圍。答:一般電容C1和C2取30pF左右,晶體振蕩頻率范圍是1.2MHz~24MHz。a)內(nèi)部時鐘b)外部時鐘7.對于任務(wù)4,編寫程序?qū)崿F(xiàn)監(jiān)視開關(guān)K1,如果開關(guān)K1合上,L1滅,開關(guān)K1打開,L1亮。答:ORG0000HSTART:JBP3.0,L1SETBP1.0SJMPSTARTL1:CLRP1.0SJMPSTARTEND8.MCS-51型單片機常用的復(fù)位方法有幾種?畫出電路圖。答:單片機常見的復(fù)位電路包括上電復(fù)位電路和按鍵復(fù)位電路。如下圖所示。a)上電復(fù)位電路b)按鍵復(fù)位電路二、思考與練習1.MCS-51型單片機由哪些單元組成?各自的功能是什么?答:(1)8位的CPUCPU是89C51單片機的核心,完成運算和控制功能,一次能處理8位二進制數(shù)或代碼;(2)256B的內(nèi)部RAM內(nèi)部RAM能作為寄存器供用戶使用的只是前128個單元,用于存放可讀寫的臨時數(shù)據(jù),其中后128個單元被專用寄存器占用;(3)4KB的內(nèi)部FlashROM簡稱內(nèi)部ROM,存放程序、原始數(shù)據(jù)或表格數(shù)據(jù);(4)2個16位的定時/計數(shù)器T0/T189C51共有2個16位的定時/計數(shù)器,以實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機進行控制;(5)4個8位并行I/O口分別為P0、P1、P2、P3,實現(xiàn)數(shù)據(jù)的并行輸入輸出;(6)1個全雙工的串行口實現(xiàn)單片機和其他設(shè)備之間的串行數(shù)據(jù)傳送;(7)5個中斷源包括2個外部中斷,2個定時/計數(shù)中斷,1個串行口發(fā)送/接收中斷;(8)片內(nèi)時鐘振蕩電路89C51芯片允許的晶振頻率一般為1~24MHz。2.MCS-51型單片機控制線有幾根?每一根控制線的作用是什么?答:控制線有4條,功能如下:(1)ALE/地址鎖存控制信號。在系統(tǒng)擴展時,ALE輸出的信號用于控制把P0口輸出的低8位地址鎖存器鎖存起來,配合P0口引腳的第二功能使用,以實現(xiàn)低位地址和數(shù)據(jù)的隔離。正常操作時因能按晶振頻率1/6的固定頻率,從ALE端發(fā)出正脈沖信號,所以有時可以加以利用,但應(yīng)注意,每次訪問外部數(shù)據(jù)存儲器時,會少輸出一個ALE脈沖。此引腳第二功能是對片內(nèi)程序存儲器固化程序時,作為編程脈沖輸入端。(2)外部程序存儲器讀選通信號。在讀外部程序存儲器時有效,發(fā)出低電平,可以用作對外部程序存儲器的讀操作選通信號。(3)/Vpp訪問程序存儲控制信號。當信號為低電平時(=0),CPU只執(zhí)行外部程序存儲器指令;而當信號為高電平時(=1),則CPU優(yōu)先從內(nèi)部程序存儲器執(zhí)行指令,并可自動延至外部程序存儲器單元。對于E2PROM型單片機(89C51)或EPROM型單片機(8751),在E2PROM或EPROM編程期間,第二功能Vpp引腳用于施加一個+12V或+21V電源。(4)RST/VpdRST是復(fù)位信號輸入端,當RST端輸入的復(fù)位信號延續(xù)2個機器周期以上高電平,單片機完成復(fù)位初始化操作;第二功能Vpd是備用電源引入端,當電源發(fā)生故障電壓降低到下限值時,備用電源經(jīng)此端向內(nèi)部RAM提供電壓,以保護內(nèi)部RAM中的信息不丟失。3.MCS-51型單片機ROM空間中,0003H~002BH有什么用途?用戶應(yīng)怎樣合理安排?答:0003H~002AH,共40個單元,這40個單元被均勻地分為五段,作為五個中斷源的中斷地址區(qū)。程序存儲器特殊功能存儲單元如下表所示。地址功能0000H程序執(zhí)行起始地址0003H~000AH外部中斷0中斷服務(wù)程序地址起止區(qū)000BH~0012H定時/計數(shù)器0中斷服務(wù)程序地址起止區(qū)0013H~001AH外部中斷1中斷服務(wù)程序地址起止區(qū)001BH~0022H定時/計數(shù)器1中斷服務(wù)程序地址起止區(qū)0023H~002AH串行口發(fā)送/接收中斷服務(wù)程序地址起止區(qū)4.MCS89C51單片機有多少個特殊功能寄存器?其分布在何地址范圍?略,見課本。5.DPTR是什么寄存器?其作用是什么?其是由哪幾個寄存器組成?答:DPTR主要是用來保存16位地址,編程時,DPTR既可以按16位寄存器使用,也可以按兩個8位寄存器(DPH、DPL)分開使用。6.簡述程序狀態(tài)寄存器PSW各位的含義。單片機如何確定和改變當前的工作寄存器區(qū)?略,見課本2.6.2。7.什么是堆棧?堆棧指示器SP的作用是什么?在堆棧中存取數(shù)據(jù)時的原則是什么?答:(1)堆棧是一個特殊的存儲區(qū),設(shè)在內(nèi)部RAM中,用來暫存數(shù)據(jù)和地址,按“先進后出”的原則存取數(shù)據(jù)。堆棧有入棧和出棧兩種操作,用SP作為堆棧指針。(2)系統(tǒng)復(fù)位后SP的內(nèi)容為07H,使得堆棧實際上從08H單元開始。如果需要改變,用戶可以通過指令在00H-7FH中任意選擇。但08H~1FH單元分別屬于工作寄存器1~3區(qū),如程序中要用到這些區(qū),則最好把SP值改為1FH或更大的值,堆棧最好在內(nèi)部RAM的30H~7FH單元中開辟。SP的內(nèi)容一經(jīng)確定,堆棧的底部位置即確定,由于SP可用指令初始化為不同值,因此堆棧底部位置是不確定的,棧頂最大可為7FH單元。8.P0~P3口作為輸入口時,有何要求?答:4個端口都稱為“準雙向口”,不是真正的雙向口,必須將位鎖存器置“1”后,才可以讀入正確信息。9.答:(1)~(8)DCDDBABA。項目3用C51語言編寫單片機程序一、動手與動腦1.C51的data、bdata、idata有什么區(qū)別?答:data直接訪問內(nèi)部數(shù)據(jù)存儲器(128字節(jié)),訪問速度最快bdata可位尋址內(nèi)部數(shù)據(jù)存儲器(16字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內(nèi)部數(shù)據(jù)存儲器(256字節(jié)),允許訪問全部2.定義變量a、b、c,a為內(nèi)部RAM的可位尋址區(qū)的字符變量;b為外部數(shù)據(jù)存儲區(qū)浮點型變量;c為指向int型xdata區(qū)的指針。答:unsignedcharbdataa,b,c,d;floatxbyteb;intxdata*c;3.編制將內(nèi)部RAM中40H單元和50H單元的數(shù)據(jù)相乘,結(jié)果存放到外部RAM1000H和1001H單元的程序。答:#include<reg51.h>#include<absacc.h>main(){chara,b;intc;a=DBYTE[0X50];b=DBYTE[0X40];c=a*b;XBYTE[0X1000]=c%256;XBYTE[0X1001]=c/256;while(1);}4.將外部RAM的20H~30H單元的內(nèi)容傳送到內(nèi)部RAM20H~30H單元。答:#include<reg51.h>#include<absacc.h>main(){unsignedchari;for(i=0x20;i<=0x30;i++)DBYTE[i]=XBYTE[i];while(1);}5.求出內(nèi)部RAM50H~5FH單元中的最大數(shù),存入內(nèi)部RAM60H單元中。答:#include<reg51.h>#include<absacc.h>main(){unsignedchari,x,max;max=0;for(i=0x50;i<=0x5f;i++){if(max<DBYTE[i])max=DBYTE[i];}DBYTE[0X60]=max;while(1);}二、思考與練習將下面為匯編語言程序轉(zhuǎn)換成等效的C語言程序。 ORG0030H MOV P1,#04H MOV R6,#0AH MOV R0,#30H CLR P1.0 SETB P1.3 ACALL TLC SJMP $TLC:MOV A,#0 CLR P1.3 MOV R5,#08HLOP:MOV C,P1.2 RLC A SETB P1.0 CLR P1.0 DJNZ R5,LOP MOV @R0,A INC R0 DJNZ R6,TLC RET END答:#include<reg51.h>#include<absacc.h>main(){unsignedchari,addr;for(i=0;i<10;i++){DBYTE[addr]=0xff;addr++;}while(1);}項目4用匯編語言編寫89C51單片機程序一、動手與動腦1.89C51常用的匯編語言偽指令有哪些?各自的作用是什么?答:見課本。2.程序設(shè)計的幾種基本結(jié)構(gòu)是什么?答:任何匯編語言源程序都可由順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)及子程序結(jié)構(gòu)組成。3.匯編語言程序設(shè)計分哪幾個步驟?每個步驟的主要任務(wù)是什么?答:(1)題意分析熟悉并了解匯編語言指令的基本格式和主要特點,明確被控對象對軟件的要求,設(shè)計出算法等。(2)畫出程序流程圖程序流程圖也稱為程序框圖,是根據(jù)控制流程設(shè)計的,其可以使程序清晰,結(jié)構(gòu)合理,按照基本結(jié)構(gòu)編寫程序,便于調(diào)試。編寫較復(fù)雜的程序,畫出程序流程圖是十分必要的。(3)分配內(nèi)存工作區(qū)及有關(guān)端口地址分配內(nèi)存工作區(qū),根據(jù)程序區(qū)、數(shù)據(jù)區(qū)、暫存區(qū)、堆棧區(qū)等預(yù)計所占空間大小,對片內(nèi)外存儲區(qū)進行合理分配并確定每個區(qū)域的首地址,便于編程使用。(4)編制匯編源程序。(5)仿真調(diào)試程序并不斷修正。4.用指令實現(xiàn)以下數(shù)據(jù)傳送過程。(1)R1的內(nèi)容送R0(2)片內(nèi)RAM20H單元的內(nèi)容送R1(3)片外RAM20H單元的內(nèi)容送片內(nèi)20H單元(4)片外RAM1000H單元的內(nèi)容送片內(nèi)RAM20H單元(5)程序存儲器2000H單元的內(nèi)容送R0(6)程序存儲器2000H單元的內(nèi)容送片內(nèi)RAM20H單元(7)程序存儲器2000H單元的內(nèi)容送片外RAM20H單元答:(1)R1的內(nèi)容送R0MOVA,R1MOVR0,A(2)片內(nèi)RAM20H單元的內(nèi)容送R1MOVR1,20H(3)片外RAM20H單元的內(nèi)容送片內(nèi)20H單元MOVR0,#20HMOVP0,#0HMOVXA,@R0MOV20H,A(4)片外RAM1000H單元的內(nèi)容送片內(nèi)RAM20H單元MOVDPTR,#2000HMOVXA,@DPTRMOV20H,A(5)程序存儲器2000H單元的內(nèi)容送R0。MOVA,#0HMOVDPTR,#2000HMOVCA,@A+DPTRMOVR0,A(6)程序存儲器2000H單元的內(nèi)容送片內(nèi)RAM20H單元。MOVA,#0HMOVDPTR,#2000HMOVCA,@A+DPTRMOV20H,A(7)程序存儲器2000H單元的內(nèi)容送片外RAM20H單元。MOVA,#0HMOVDPTR,#2000HMOVCA,@A+DPTRMOVDPTR,#20HMOVX@DPTR,A5.用直接地址尋址方式、寄存器間接尋址方式、字節(jié)交換法和堆棧傳遞法等4種方法將內(nèi)部RAM30H與31H單元的數(shù)據(jù)交換。答:1.MOVA,30HMOV30H,31HMOV31H,A2.MOVR0,#30HMOVA,@R0MOVR1,AMOVR0,#31HMOVA,@R0MOVR0,#30HMOV@R0,AMOVR0,#31HMOVA,R1MOV@R0,A3.MOVA,30HXCHA,31HMOV30H,A4.PUSH30HPUSH31HPOP30HPOP31H6.編寫一段程序,將片內(nèi)RAM30H單元的內(nèi)容與片外RAM30H單元的數(shù)據(jù)交換。答:MOVDPTR,#30HMOVXA,@DPTRMOVR1,AMOVA,30HMOVX@DPTR,AMOV30H,R17.編制一程序,查找內(nèi)部RAM20~2FH單元中是否有數(shù)據(jù)0AAH。若有,則將30H單元置為01H,否則將30H單元清0。答:ORG0000HSTART:MOVR0,#20HMOVR2,#10HMOV30H,#00HAGN:MOVA,@R0SUBBA,#0AAHJZKDJNZR2,AGNJMPK1K:MOV30H,#01HK1:JMP$END8.片內(nèi)RAM40H開始的單元內(nèi)有10個二進制數(shù),編程找出其中最大值并存于50H單元中.答:START:MOVR0,#40H;數(shù)據(jù)塊首地址送R0MOVR7,#09H;比較次數(shù)送R7MOVA,@R0;取數(shù)送ALOOP:INCR0MOV30H,@R0;取數(shù)送30HCJNEA,30H,NEHT;(A)與(30H)相比NEXT:JNCBIE1(A)≥(30H)轉(zhuǎn)BIR1MOVA,30H;(A)<(30H),大數(shù)送ABIE1:DJNZR7,LOOP;比較次數(shù)減1,不為0,繼續(xù)比較MOV50H,A;比較結(jié)束,大數(shù)送50HRET9.編制一個循環(huán)閃爍燈的程序,畫出電路圖。在P0口接有8個發(fā)光二極管,要求每次其中某個燈閃爍點亮10次后,轉(zhuǎn)到下一個閃爍10次,循環(huán)不止。答:P1.089C51P1.75VD0Q05V74LS240D7Q7

本程序的硬件連接如圖所示。當P1.0輸出高電平時,LED燈亮,否則不亮。其程序如下:MOVA,#01H;燈亮初值SHIFT:LCAILFLASH;調(diào)閃亮10次子程序RRA;右移一位SJMPSHIFT;循環(huán)FLASH:MOVR2,#0AH;閃爍10次計數(shù)FLASH1:MOVP1,A;點亮LCALLDELAY;延時MOVP1,#00H;熄滅LCALLDELAY;延時DJNZR2,FLASH1;循環(huán)RET10.編程實現(xiàn)如下操作,不得改變未涉及到的位的內(nèi)容。(1)使累加器A的最高位置“1” (2)對累加器A高4位取反(3)清除A.3、A.4、A.5 (4)使A.4、A.5、A.2置“1”答:(1)SETBACC.7(2)XRLA,#0F0H(3)ANLA,11000111B(4)ORLA,00110100B11.編寫匯編語言程序?qū)崿F(xiàn)功能:利用89C51的P1口,監(jiān)測某一按鍵開關(guān),使每按鍵一次,輸出一個正脈沖(脈寬隨意)。答:ORG0100HABC:SETBP1.0SETBP1.7JBPI.7,$JNBP1.7,$CLRP1.0MOVR2,#0DAY:NOPNOPDJNZR2,DAYSJMPABC12.設(shè)有兩個4位BCD碼,分別存放在片內(nèi)RAM的23H,22H單元和33H,32H單元中,求它們的和,并送入43H,42H單元中去。(以上均為低位字節(jié),高位在高字節(jié))。答: ORG 0000H LJMP START ORG 0030H START:MOV A,22H ADD A,32H DA A MOV 42H,A MOV A,23H ADDC A,33H DA A MOV 43H,A SJMP $ END 13.編程計算片內(nèi)RAM區(qū)30H~37H的8個單元中數(shù)的算術(shù)平均值,結(jié)果存在3AH單元中。答:ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV R0,#30H MOV R1,#00H MOV R2,#00H MOV R3,#07HLP2:MOV A,@R0 ADD A,R2 MOV R2,A JNC LP1 INC R1LP1: INC R0 DJNZ R3,LP2 MOV R3,#03HLP3: CLR C MOV A,R1 RRC A MOV R1,A MOV A,R2 RRC A MOV R2,A DJNZ R3,LP3 MOV 3AH,R2 SJMP $ END14.試編寫程序?qū)崿F(xiàn):利用89C51的P1口控制8個發(fā)光LED,相鄰的4個LED為一組,使2組每隔0.5s交替發(fā)亮一次,周爾復(fù)始。答:ORG0100HMOVA,#0FHABC:MOVP1,AACALLD05SWAPASJMPABCD05:MOVR6,250DY:MOVR7,250DAY:NOPNOPDJNZR6,DAYDJNZR7,DAYRETEND15.編寫子程序START,實現(xiàn)將片內(nèi)RAM30H單元開始的15個的數(shù)據(jù)傳送到片外RAM3000H開始的單元中去。解:STRAT:MOVR0,#30HMOVR7,#0FHMOVDPTR,#3000HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOPRET二、思考與練習1.MCS-51單片機的指令有哪些尋址方式?答:(1)立即尋址(2)直接尋址(3)寄存器尋址(4)寄存器間接尋址(5)基址+變址間接尋址(6)相對尋址(7)位尋址2.分析下面指令中源操作數(shù)的尋址方式。(1)MOVA,#0FH (2)MOVA,00H(3)MOVA,R1 (4)MOVA,@R1(5)MOVCA,@A+DPTR (6)JC80H(7)MOVC,20H (8)MOVXA,@R1答:(1)MOVA,#0FH立即尋址(2)MOVA,00H直接尋址(3)MOVA,R1寄存器尋址(4)MOVA,@R1寄存器間接尋址(5)MOVCA,@A+DPTR基址+變址間接尋址(6)JC80H相對尋址(7)MOVC,20H位尋址(8)MOVXA,@R1寄存器間接尋址3.MCS-51單片機指令系統(tǒng)按功能分哪為幾類?答:(1)數(shù)據(jù)傳送指令(2)數(shù)據(jù)交換指令(3)算術(shù)運算類指令(4)邏輯運算類指令(5)控制轉(zhuǎn)移類指令(6)位操作指令4.在“MOVCA,@A+DPTR”和“MOVCA,@A+PC”中,分別使用了DPTR和PC作基址,請問這兩個基址代表什么地址?使用中有何不同?答:使用@A+DPTR基址變址尋址時,DPTR為常數(shù)且是表格的首地址,A為從表格首址到被訪問字節(jié)地址的偏移量。使用@A+PC基址變址尋址時,PC仍是下條指令首地址,而A則是從下條指令首地址到常數(shù)表格中的被訪問字節(jié)的偏移量。5.何為偽指令?其作用是什么?答:偽指令不屬于指令集之中的指令,但具有和指令類似的形式,其作用是對匯編過程進行某種控制或提供某些匯編信息,不產(chǎn)生可執(zhí)行的目標代碼。6.片內(nèi)RAM20H~2FH單元中的128個位地址與直接地址00H~7FH形式完全相同,如何在指令中區(qū)分出位尋址操作和直接尋址操作?答:雖然內(nèi)部RAM位尋址區(qū)的位地址范圍00H~7FH與低128個單元的單元地址范圍00H~7FH形式完全相同,但是在應(yīng)用中可以通過指令的類型區(qū)分單元地址和位地址。位尋址的操作只適用于下列位指令,而直接尋址操作對這些指令是無效的。MOVC,bitMOVbit,CCLRbitSETBbitCPLbitANLC,bitANLC,/bitJBbit,relJNBbit,rel7.設(shè)堆棧指針(SP)=60H,片內(nèi)RAM中的(30H)=24H,(31H)=10H。執(zhí)行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內(nèi)容將有何變化?PUSH30HPUSH31HPOPDPLPOPDPHMOV30H,#00HMOV31H,#0FFH答:結(jié)果為:(61H)=24H(62H)=10H(30H)=00H(31H)=0FFH(DPTR)=2410H(SP)=60H8.說明無條件轉(zhuǎn)移指令A(yù)JMP、SJMP、LJMP和JMP的功能和應(yīng)用場合。答:AJMP為2KB地址范圍內(nèi)的的轉(zhuǎn)移指令;SJMP為相對轉(zhuǎn)移指令,本指令首地址加上偏移量加上2為跳轉(zhuǎn)到的位置;LJMP為64KB程序存儲空間的全范圍轉(zhuǎn)移指令,轉(zhuǎn)移的地址可為16位地址中的任意值;JMP間接轉(zhuǎn)移指令。9.設(shè)內(nèi)部RAM(30H)=#5AH,(5AH)=#40H,(40H)=#00H,(P1)=#7FH,問連續(xù)執(zhí)行下列指令后,各有關(guān)存儲單元(即R0,R1,A,B,P1,30H,40H及5AH單元)的內(nèi)容如何?MOVR0,#30HMOVA,@R0MOVR1,AMOVB,R1MOV@R1,P1MOVA,P1MOV40H,#20HMOV30H,40H答:MOVR0,#30H;R0=30HMOVA,@R0;A=5AHMOVR1,A;R1=5AHMOVB,R1;B=5AHMOV@R1,P1;(5AH)=7FHMOVA,P1;A=7FHMOV40H,#20H;(40H)=20HMOV30H,40H;(30H)=20H10.答:(1)~(5)BDCBC;(6)~(10)ACBBD;(11)~(15)BBCBC;(16)~(20)CBDCB;(21)~(25)DABBB。項目5中斷系統(tǒng)與定時/計數(shù)器的應(yīng)用一、動手與動腦1.編程實現(xiàn)對外部脈沖計數(shù),當計到100時,從P1.1引腳輸出一個正跳變。答:#include<reg51.h>sbitP1_1=P1^1;main(){unsignedcharn;n=5;P1_1=0;TMOD=0X06;TL0=0X96;TH0=0X96;ET0=1;TR0=1;EA=1;while(1);}voidT0()interrupt1{P1_1=1;while(n--);n=5;P1_1=0;}2.略。二、思考與練習1.什么是中斷?單片機采用中斷有什么好處?答:在單片機中,當CPU在執(zhí)行程序時,由單片機內(nèi)部或外部的原因引起的隨機事件要求CPU暫時停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個用于處理該隨機事件的程序,處理完后又返回被中止的程序斷點處繼續(xù)執(zhí)行,這一過程稱為中斷。單片機在某一時刻只能處理一個任務(wù),當多個任務(wù)同時要求單片機處理時,由于資源有限,因此就可能出現(xiàn)資源競爭的局面,即幾項任務(wù)來爭奪一個CPU。而中斷技術(shù)就是解決資源競爭的有效方法,采用中斷技術(shù)可以使多項任務(wù)共享一個資源。2.T0用做定時器,以方式0工作,定時10ms,單片機晶振頻率為6MHZ,請計算定時初值。答:根據(jù)公式T=12×(213-a)/fosc得a=213-foscT/12=213-5000=31923.單項選擇題,從四個備選項中選擇正確的選擇。答:(1)~(5)BCACC;(6)~(10)CDADB;(10)~(15)DACBA;(16)~(20)ACBAD。項目6利用串行通信技術(shù)實現(xiàn)89C51雙機通信一、動手與動腦1.編寫一個子程序,將累加器A中的一個字符從串行接口發(fā)送出去。答:SOUT:MOVSCON,#40H;設(shè)置串行接口為工作方式MOVTMOD,#20H;定時器T1工作于模式2MOVTL1,#0E8H;;設(shè)置波特率為1200b/sMOVTH1,#0E8HSETBTR1MOVSBUF,AJNBT1,$CLBT1RET2.編寫一個子程序,從串行接口接收一個字符。答:START:MOVTMOD,#20H;定時器T1工作于模式2MOVTH1,#0E8H;設(shè)置波特率為1200b/sMOVTL1,#0E8HSETBTR1;啟動T1MOVSCON,#50H;串行接口工作于方式1,充許接收L1:JNBRI,L1;等待接收數(shù)據(jù),末接收到數(shù)據(jù),繼續(xù)等待CLRRI;接收到數(shù)據(jù),清RIMOVA,SBUF;接收到數(shù)據(jù)送ARET3.請編制串行通信的數(shù)據(jù)發(fā)送程序,發(fā)送片內(nèi)RAM50H~5FH的16B數(shù)據(jù),串行接口設(shè)定為方式2,采用偶校驗方式。設(shè)晶振頻率為6MHz。解:查詢方式發(fā)送程序如下MOVSCON,#8OHMOVPCON,#80HMOVR0,#50HMOVR7,#16HLOOP:MOVA,@R0MOVC,PMOVTB8,CMOVSBUF,AJNBT1,$CLRT1INCR0DJNZR7,LOOPRET二、思考與練習1.串行通信有幾種基本通信方式?有什么區(qū)別?答:按照串行數(shù)據(jù)傳輸中的時鐘控制方式,串行通信可分為同步通信和異步通信兩類。(1)在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀(CharacterFrame)傳送的。字符幀由發(fā)送端逐幀發(fā)送,每一幀數(shù)據(jù)低位在前,高位在后,通過傳輸線被接收端逐幀接收。發(fā)送端和接收端由各自獨立的時鐘控制數(shù)據(jù)的發(fā)送和接收,兩個時鐘彼此獨立,不必同步。(2)同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。同步通信信息幀和異步通信的字符幀不同,通常有若干個數(shù)據(jù)字符,由同步字符、數(shù)據(jù)字符和校驗字符CRC三部分組成。同步字符可采用統(tǒng)一的標準格式,也可由用戶約定。2.什么是串行通信的波特率?答:波特率也稱比特數(shù),是每秒鐘傳送二進制數(shù)碼的位數(shù),表示數(shù)據(jù)傳輸?shù)乃俣?,波特率越高,?shù)據(jù)傳輸速度越快。3.串行通信有哪幾種傳輸方式?各有什么特點?答:在串行通信中按照數(shù)據(jù)傳送方向,串行通信可分為單工、半雙工和全雙工三種數(shù)據(jù)傳輸方式。(1)單工通信系統(tǒng)的A端只有發(fā)送器,B端只有接收器,信息數(shù)據(jù)只能單方向傳送而不能反傳。(2)半雙工通信系統(tǒng)的每個通信設(shè)備都由一個發(fā)送器和一個接收器組成。在這種制式下,數(shù)據(jù)能從A站傳送到B站,也可以從B站傳送到A站,但是不能同時在兩個方向上傳送,即只能一端發(fā)送,一端接收。其收發(fā)開關(guān)一般是由軟件控制的電子開關(guān)。(3)全雙工通信系統(tǒng)的每端都有發(fā)送器和接收器,可以同時發(fā)送和接收,即數(shù)據(jù)可以在兩個方向上同時傳送。4.簡述89C51串行口控制寄存器SCON各位的定義。答:略。5.某異步通信接口,其幀格式為10位,當接口每秒傳送1800個字符時,計算其傳送波特率。答:10×1800=18000bps=18000波特率6.說明如何利用89C51串行口方式0,將串行口擴展為并行口。答:(1)方式0用于擴展并行輸出口電路如下圖所示,其中74LS164為串入并出移位寄存器。(2)利用兩片74LS165擴展2個8位并行輸入端口。擴展電路如下圖所示。項目7擴展89C51單片機的系統(tǒng)接口一、動手與動腦1.簡述89C51的三總線結(jié)構(gòu)。答:89C51單片機的三總線結(jié)構(gòu),即地址總線(AB)、數(shù)據(jù)總線(DB)和控制總線(CB)。2.單片機擴展片外存儲器時,為何要加地址鎖存電路,作用是什么?答:單片機擴展片外存儲器時,地址線是由P0和P2口提供的,但P0口同時分時用作數(shù)據(jù)線,因此當CPU訪問外部存儲單元時,先從P0口輸出低8位地址,從P2口輸出高8位地址,選擇對應(yīng)單元,然后利用P0口進行讀寫,所以應(yīng)通過鎖存器將P0口首先輸出的低8位地址鎖存保持住,才不致導(dǎo)致P0口使用上的沖突。3.為什么要擴展并行口?常用什么方法來擴展并行口?答:89C51單片機共有4個8位并行I/O端口P0~P3,當需要外部擴展存儲器或I/O口時,P0和P2口作為數(shù)據(jù)和地址總線使用,因而提供給用戶的I/O口就只有P1或P3口的部分口線,當所接的外設(shè)比較多時,就必須擴展I/O接口。(1)通用鎖存器、緩沖器的擴展。(2)可編程并行接口芯片的擴展。4.簡述可編程并行接口8255A的內(nèi)部結(jié)構(gòu)?答:8255A的內(nèi)部結(jié)構(gòu)由三部分組成:總線接口部分,內(nèi)部邏輯部分,外部接口部分。外部接口部分該部分有3個8位并行I/O端口,即A口、B口和C口??偩€接口部分其中有數(shù)據(jù)總線驅(qū)動器,讀/寫控制邏輯內(nèi)部邏輯部分由A組和B組控制電路。5.在89C51上擴展8255A,將PA口設(shè)置成輸入方式,PB口設(shè)置成輸出方式,PC口設(shè)置成輸出方式,給出初始化程序。答:根據(jù)題目要求,A口輸入,B口輸出,二者均采用工作方式0,則控制字為98H。編程如下:MOVA,#98H;方式控制字AMOVDPTR,#7FFFH;選通控制寄存器MOVX@TPTR,A;方式控制字送入8255AMOVDPTR,#7FFCHMOVXA,@DPTR;讀PA口數(shù)據(jù)MOVDPTR,#7FFDH;MOVX@DPTR,A;送PB口數(shù)據(jù)6.試編程對8155進行初始化,設(shè)A口為選通輸出,B口為選通輸入,C口作為控制聯(lián)絡(luò)口,并啟動定時器/記數(shù)器按方式1工作,工作時間為10ms,定時器計數(shù)脈沖頻率為單片機的時鐘頻率24分頻,fosc=12MHz。答:算得初值=5000=1388HMOVDPTR,#7F04;定時器低八位寄存器地址→DPTRMOVA,#88H;低8位初值→AMOVX@

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論