單片機原理及應用習題答案_第1頁
單片機原理及應用習題答案_第2頁
單片機原理及應用習題答案_第3頁
單片機原理及應用習題答案_第4頁
單片機原理及應用習題答案_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機原理及應用習題答案習題1解答1填空201010014;1100101B10165;1F8H111111000504;1個字節(jié)由8個二進制位組成,每個二進制位只有2種狀態(tài),可表示為0或1;1K字節(jié)就是2的10次方字節(jié),即1024個字節(jié);1M字節(jié)就是2的20次方字節(jié),約為1048567個字節(jié)。2在8位二進制中,26、26、127、1的補碼(用十六進制表示)是多少解正數(shù)的補碼等于原碼,負數(shù)的補碼等于它的原碼除符號位不變,其余的各位求反加1。26原000110101B1AH,26補1AH26原100110101B,26補11100101B111100110B0E6H127原11111111B,127補10000000B110000001B81H1原10000001B,1補11111110B111111111B0FFH3用十進制寫出下列補碼表示的數(shù)的真值FEH、FBH、80H、11H、70H、7FH。解真值是指日常用“”或“”號表示的數(shù)。機器數(shù)是指計算機中用編碼表示的數(shù),正數(shù)的符號以最高位為0表示,負數(shù)的符號以最高位為1表示。根據(jù)補碼求真值的一個通俗口訣是“正碼不變,負碼求補,補后勿忘添負號”。FEH11111110B,其符號位為“1”,屬負數(shù),故其原碼為10000001B110000010B,即FEH真值為2;同理FBH屬負數(shù),其真值為5;80H的真值為128;11H的真值為17;70H的真值為112;7FH的真值為127。4微型計算機主要由哪幾部分組成各部分有何功能答一臺微型計算機由中央處理單元(CPU)、存儲器、I/O接口及I/O設備等組成,相互之間通過三組總線(BUS)即地址總線AB、數(shù)據(jù)總線DB和控制總線CB來連接。CPU由運算器和控制器組成,運算器能夠完成各種算術運算和邏輯運算操作,控制器用于控制計算機進行各種操作。存儲器是計算機系統(tǒng)中的“記憶”裝置,其功能是存放程序和數(shù)據(jù)。按其功能可分為RAM和ROM。輸入/輸出(I/O)接口是CPU與外部設備進行信息交換的部件。總線是將CPU、存儲器和I/O接口等相對獨立的功能部件連接起來,并傳送信息的公共通道。5何為存儲器單元的地址答存儲器中存放二進制數(shù)的單元稱為存儲單元。存儲器中包含許多存儲單元,為了便于信息的存入和取出,每一個存儲單元必須有一個固定的編號來標識,稱這個編號為存儲器單元地址。6何謂單片機單片機有何特點答單片機(SINGLECHIPMICROCOMPUTER)是指把CPU、RAM、ROM、定時器/計數(shù)器以及I/O接口電路等主要部件集成在一塊半導體芯片上的微型計算機。單片機在控制應用領域中的特點面向控制,能針對性地解決從簡決從簡單到復雜的各類控制任務,因而獲得最佳的性能價格比;抗干擾能力強、適應溫度范圍寬,能在各種惡劣的環(huán)境下都能可靠性地工作;能方便地實現(xiàn)多機和分布式控制,從而使整個控制系統(tǒng)的效率和可靠性大大提高;體積小、功耗低、低成本、控制功能強、易于產(chǎn)品化,能方便地組成各種智能化的控制設備和儀器,做到機、電、儀一體化。7單片機內部ROM的配置有幾種形式答單片機片內ROM的配置狀態(tài)可分四種片內掩膜(MASK)ROM型單片機(如8051),適合于定型大批量應用產(chǎn)品的生產(chǎn);片內EPROM型單片機(如8751),適合于研制產(chǎn)品樣機;片內無ROM型單片機(如8031),需外接EPROM,單片機擴展靈活,適用于研制新產(chǎn)品;EEPROM(或FLASHROM)型單片機(如89C51),內部程序存儲器電可擦除,使用更方便。習題2解答18051單片機內包含哪些主要邏輯功能部件答8051單片機是一個完整的單片微型計算機。它包括以下功能部件一個芯片上,集成了一個微型計算機的基本組成部分。它包括以下功能部件1個8位CPU;片內4KB的程序存儲器ROM;片內128B的數(shù)據(jù)存儲器RAM;可尋址外部程序存儲器和數(shù)據(jù)存儲器空間各64KB的控制電路;21個特殊功能寄存器SFR;4個8位并行I/O口P0P3,共32根I/O線;1個全雙工的串行口;2個16位定時器/計數(shù)器;5個中斷源,有2個優(yōu)先級嵌套中斷結構;片內振蕩器及時鐘電路。28051單片機的信號有何功能8031的引腳應如何處理,為什么EAEA答1是訪問外部程序存儲器ROM的控制信號。當為低電平(接地)時,CPU只執(zhí)行外部程序存儲器中的程序。當為高電平且PC值小于0FFFH(4K)時,CPU執(zhí)行內部程序存儲器的程序,但當PC的值超出4K時(對8051/8751/8951)將自動轉去執(zhí)行片外程序存儲器內的程序。8031單片機無片內ROM的,必須外接程序存儲器,因此,8031的必須接地(低電平)。EA38051單片機的P0P3口各有什么特點8051單片機有P0、P1、P2、P3四個雙向的8位并行I/O口,每個端口可以按字節(jié)輸入或輸出,每一條I/O線也可以單獨用作輸入或輸出(即按位進行輸入或輸出)。每個端口都是由一個鎖存器(即特殊功能寄存器P0P3),一個輸出驅動器和兩個(P3口為3個)輸入緩沖器組成。并行I/O口作輸出時數(shù)據(jù)可以鎖存,作輸入時數(shù)據(jù)可以緩沖,但它們又各具特點。P0口和P2口構成MCS51單片機的16位地址總線,P0口還是8位的數(shù)據(jù)總線。P3口多用于第二功能輸入或輸出,。通常只有P1口用于一般輸入/輸出。P3口各位的第二功能P3口引腳第二功能P3口引腳第二功能P30RXD(串行輸入端)P34T0(定時器0的外部輸入)P31TXD(串行輸出端)P35T1(定時器1的外部輸入)P32(外部中斷0輸入)INTP36(片外數(shù)據(jù)存儲器寫選通控制輸出)WRP33(外部中斷1輸入)P37(片外數(shù)據(jù)存儲器讀選通控制輸出)D系統(tǒng)復位后,P0P3口的32個管腳均輸出高電平,因此在系統(tǒng)的設計過程中,應保證這些管腳控制的外設不會因為系統(tǒng)復位而發(fā)生誤動作。P0P3口輸出級的電路結構有所不同。P0口是三態(tài)輸出,其每個管腳均可以驅動8個LSTTL輸入,而P1P3口的輸出級均有上拉電阻,每個管腳可驅動4個LSTTL輸入。每個并行口,可定義一部分管腳為輸入腳,另一部分管腳為輸出腳,沒有使用的管腳可以懸空。4簡述8051單片機存儲器的組織結構和片內RAM的空間分配。答8051單片機的存儲器包括程序存儲器和數(shù)據(jù)存儲器,從用戶使用的角度可分為三個邏輯地址空間片內、片外統(tǒng)一編址的64KB程序存儲器地址空間0000HFFFFH;64KB的外部數(shù)據(jù)存儲器或擴展I/O口地址空間0000HFFFFH;256B的片內數(shù)據(jù)存儲器地址空間00HFFH(包括低128B的內部RAM地址00H7FH和高128B的特殊功能寄存器地址空間,21個SFR離散地分布在這個區(qū)域)。內部RAM共有128個單元,根據(jù)用途可劃分為工作寄存器區(qū)、位尋址區(qū)和通用RAM區(qū),各區(qū)域的特性如下工作寄存器區(qū)(00H1FH)寄存器區(qū)32個單元共分4個組,每個組有8個8位的寄存器R0R7。在任何時刻,四個組中只能有一組可以成為當前工作寄存器組使用,其他三組作為一般的內部RAM使用。當前工作寄存器組由程序狀態(tài)字寄存器PSW的RS0和RS1兩位的狀態(tài)來決定。位尋址區(qū)(20H2FH)共16個單元,每個單元有8個位,每個位都有一個位地址,編號為00H7FH,位尋址區(qū)的16個單元也可以按字節(jié)尋址,作為一般的內部RAM使用。通用RAM區(qū)(30H7FH)這部分存儲空間作為一般的內部RAM區(qū)或堆棧區(qū),CPU只能按字節(jié)方式尋址。58051單片機有哪些特殊功能寄存器各在單片機中的哪些功能部件中答8051單片機有21個8位的特殊功能寄存器(SFR),它們的地址離散地分部在內部數(shù)據(jù)存儲器的80HFFH地址空間。在8051單片機結構中,21個SFR在物理上是分散在片內各功能部件中CPU的中SFRACC、B、PSW、SP和DPTR(16位寄存器,由DPH和DPL組成);定時/計數(shù)器單元中的寄存器TMOD、TCON、T0(16位寄存器,由TH0和TL0組成)和T1(16位寄存器,由TH1和TL1組成);并行I/O口寄存器P0、P1、P2和P3;中斷系統(tǒng)內的寄存器IE和IP;串行端口中的寄存器SCON、SBUF和PCON。6程序計數(shù)器PC有何作用是否屬于SFR,為什么答程序計數(shù)器PC是一個16位的專用寄存器,用來存放即將要執(zhí)行的指令地址,可對64KB的程序存儲器直接尋址。它具有自動加1功能,當CPU要取指令時,PC的內容送地址總線上,從存儲器中取出指令后,PC內容則自動加1,指向下一條指令,從而保證程序按順序執(zhí)行。PC雖然也是CPU內部的一個寄存器,但它在物理結構上是獨立的,沒有地址,是不可尋址的,用戶無法對它進行直接讀寫,不屬特殊功能寄存器。7什么叫堆棧堆棧指針SP的作用是什么8051單片機堆棧的最大容量是多少字節(jié)答堆棧是按照“先進后出,后進先出”的原則來存取數(shù)據(jù)的一個內部RAM區(qū)域,這個存儲器區(qū)域的一端是固定的(棧底),另一端是活動的(棧頂),每個存儲單元是不能按字節(jié)任意訪問的。堆棧指針SP始終指向棧頂單元,棧頂隨著數(shù)據(jù)入棧和出棧上下浮動。8051單片機堆棧的最大容量是128字節(jié)88051單片機的程序存儲器和數(shù)據(jù)存儲器可以有相同的地址,而單片機在對這兩個存儲區(qū)的數(shù)據(jù)進行操作時,不會發(fā)生錯誤,為什么答對于不同的存儲地址空間,8051單片機采用不同的存取指令和控制信號CPU訪問片內、外ROM時,采用“MOVC”指令,外部ROM用選通;訪問外部RAM或擴展I/O口時,采用PSEN“MOVX”指令,由(讀)信號和(寫)信號選通;訪問片內RAM和特殊功能寄存器時,采用RDWR“MOV”指令。因此,盡管程序存儲器地址和數(shù)據(jù)存儲器地址空間重疊,但不會發(fā)生混亂。98051單片機是如何確定和改變當前工作寄存器組答在任何時刻,8051單片機的四個工作寄存器組中只能有一組可以成為當前工作寄存器組使用,其他三組作為一般的內部RAM使用。當前工作寄存器組由程序狀態(tài)字寄存器PSW的RS0和RS1兩位的狀態(tài)來決定,如表所示。當前工作寄存器組的選擇RS1RS0被選寄存器組寄存器R0R7的地址000組00H07H011組08H0FH102組10H17H113組18H1FH根據(jù)需要,用戶可以利用傳送指令或位操作指令改變RS1和RS0的內容來選擇不同的工作寄存器組。10單片機復位后,CPU使用了哪一組工作寄存器工作寄存器R0R7對應的單元地址是什么答單片機復位后,RS1和RS0都為0,CPU選中第0組作為當前工作寄存器組,工作寄存器R0R7對應的單元地址是00H07H。11程序狀態(tài)字寄存器PSW的作用是什么常用標志位有哪些位作用是什么答PSW是一個8位的特殊功能寄存器,由一些標志位組成,用于存放程序運行中的各種狀態(tài)信息。它可以進行位尋址,各位的定義如下位D7D6D5D4D3D2D1D0位名稱CYACF0RS1RS0OVPCY進位標志位。在進行加(或減)法運算時,若操作結果的最高位(D7位)有進位(或借位)時,CY由硬件置1,否則CY清0。在進行位操作時,CY又是位累加器,指令助記符用C表示。AC輔助進位標志位。在進行加(或減)運算時,若操作結果的低半字節(jié)(D3位)向高半字節(jié)產(chǎn)生進位(或借位)時,AC位將由硬件自動置1,否則AC位清0。F0用戶標志位。用戶根據(jù)需要對F0置位或復位,作為軟件標志。RS1和RS0工作寄存器組選擇控制位。由用戶用軟件改變RS1和RS0的狀態(tài),以選擇內RAM中的哪組工作寄存器為當前工作寄存器組。OV溢出標志位。當進行補碼運算時,運算結果超出128127范圍時,產(chǎn)生溢出,則OV自動置1,否則OV清0。PSW1保留位。8051中未定義。P奇偶校驗標志位。每條指令執(zhí)行完后,該位始終跟蹤累加器A中1的數(shù)目的奇偶性。如果A中有奇數(shù)個1,則P1;否則P0。128051單片機的晶體振蕩器頻率為6MHZ,則它一個機器周期為多少微秒答機器周期是指CPU完成某一個規(guī)定操作所需的時間,8051單片機的一個機器周期包含6個狀態(tài),并依次表示為S1S6,每個狀態(tài)分為2個節(jié)拍。因此一個機器周期包含12個時鐘周期(振蕩周期),依次表示為S1P1、S1P2、S2P1、S6P1、S6P2。當FOSC6MHZ時,機器周期T12(1/6MHZ)2S138051單片機復位后寄存器PC、A、PSW、SP、P0P3的狀態(tài)各是什么復位后內部RAM中的數(shù)據(jù)有何影響答8051單片機復位后PC、A、PSW、SP、P0P3的狀態(tài)如下PC0000H;A、PSW00HSP07H;P0P3FFH單片機的復位不影響內部RAM的狀態(tài)(包括工作寄存器RN)。習題3解答1若訪問工作寄存器、特殊功能寄存器、片外數(shù)據(jù)存儲器、程序存儲器分別可使用哪些尋址方式答訪問工作寄存器采用寄存器尋址,特殊功能寄存器采用直接尋址,片外數(shù)據(jù)存儲器采用寄存器間接尋址,程序存儲器的尋址方式有立即尋、變址尋址、相對尋址。2寫出下列源操作數(shù)的尋址方式。(1)JZ20H(2)MOVA,R2(3)MOVA,B(4)MOVDPTR,4012H(5)MOVXA,DPTR(6)MOVCA,APC(7)PUSHB(8)POPACC(9)MOVC,20H(10)MOVA,20H答各指令的源操作數(shù)的尋址方式是相對尋址;寄存器尋址;寄存器尋址;立即尋址;寄存器間接尋址;變址尋址;直接尋址;直接尋址;位尋址;直接尋址3設片內RAM的30H單元的內容為40H,即(30H)40H,(40H)10H,(10H)00H,端口P1CAH,執(zhí)行下列程序段填結果。MOVR0,30H;R030HMOVA,R0;A(R0)(30H)40HMOVR1,A;R140HMOVB,R1;B(40H)10HMOVR1,P1;(40H)0CAHMOVA,P1;A0CAHMOV10H,20H;(10H)20HMOV30H,10H;(30H)20H結果R0,R1,A,B,P1,(40H),(30H),(10H)。解每一條指令執(zhí)行后的結果如注釋字段所標。最后的結果為R030H,R140H,A0CAH,B10H,P10CAH,(40H)0CAH,(30H)20H,(10H)20H。4設A94H,R237H,(40H)6EH,R140H,RS1RS000執(zhí)行程序段填結果。MOVP2,AMOVA0H,R2MOVD0H,R1MOV02H,98H結果A,02H,40H,01H,P2,PSW。解結果A94H,02H98H,40H6EH,01H40H,P237H,PSW6EH。5A83H,R017H,(17H)34H,執(zhí)行以下指令后AANLA,17H;A03HORL17H,A;17H37HXRLA,R0;A34HCPLA;A0CBH解每一條指令執(zhí)行后的結果如注釋字段所標。所以執(zhí)行以下指令后A0CBH。6若要完成下列數(shù)據(jù)傳送,應如何用MCS51的指令來實現(xiàn)。A的內容送到P1。解MOVA,P1R1的內容傳送到R0。解MOVA,R1MOVR0,A片內RAM20H單元的內容送片內RAM30H單元。解MOV31H,20H片外RAM20H單元的內容送片內RAM30H單元。解MOVR0,20HMOVXA,R0MOV30H,A片外RAM20H單元的內容送片外RAM30H單元。解MOVR0,20HMOVXA,R0MOVR1,30HMOVXR1,A用兩種方法將程序存儲器ROM3040H中的常數(shù)送到A中,已知PC當前值為3000H。解MOVA,00HMOVDPTR,3040HMOVCA,ADPTRMOVA,40HMOVCA,APC3000H3040HROM2000H單元的內容送到片外RAM1000H單元中。解CLRAMOVDPTR,2000HMOVA,ADPTRMOVDPTR,1000HMOVDPTR,A將A中的內容與寄存器B中的內容交換。解XCHA,B將片內RAM30H單元內容與片外40H單元的內容交換。解MOVR0,40HMOVXA,R0XCHA,30HMOVXR0,A將片外RAM30H單元內容與片外40H單元的內容交換。解MOVR0,30HMOVXA,R0MOVR7,A;暫存外部RAM30H單元的內容MOVR1,40HMOVXA,R1MOVXR0,A;外部RAM40H單元的內容送外部RAM30H單元MOVA,R7MOVXR1,A;外部RAM30H單元的內容送外部RAM40H單元7設位單元00H、01H中的內容為0,下列程序段執(zhí)行后P1口的8條I/O線為何狀態(tài)位單元00H、01H的值。STARTCLRCCY0MOVA,56HA56H01010110BJCLP1CPLCCY1SETB01H01H1LP1MOVACC0,CACC01JBACC2,因ACC21,轉向LP2SETB00H該指令不執(zhí)行LP2MOVP1,AP1A01010111BRET解每一條指令執(zhí)行后的結果如注釋字段所標。P101010111B,即P1口的8條I/O線中P00、P01、P02、P04、P06為高電平狀態(tài),P03、P05、P07為低電平狀態(tài),8下列指令哪些是非法指令1CPLB2ADDCB,20H3SETB30H,04MOVR1,R25SUBBA,R26CJNER0,64H,LABEL7MOVXR0,20H8DJNZR0,LABEL9PUSHB10POPR111RLB12MOVR7,R013RLCA14MOVR1,1234H15ANLR0,A16ORLC,/ACC517XRLC,ACC518DECDPTR19XCHDA,R120SWAPB21MOVXA,ADPTR22MOVCA,ADPTR23XCHA,R124SUBA,12H25MULA,B26DIVAB27DAA28JMPLABEL29LJMPLABEL30RETI解1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;2526;27;28;29;30。9執(zhí)行下列程序填結果。MOVSP,2FHSP2FHMOVA,50HA50HMOVB,51HB51HPUSHACCSP30H,30H50HPUSHBSP31H,31H51HPOPACCA51H,SP30HPOPBB50HSP2FH結果SP,A,B,(30H),(31H)。解結果SP2FH,A51H,B50H,(30H)50H,(31H)51H。10SP70H,MA1000H,SUBPR4060H。試問下列程序中哪些是正確的為什么哪些程序最好,為什么若SUBPR1060H,則哪個程序最好,為什么(1)MAACALLSUBPR(2)MALCALLSUBPR(3)MALJMP4000H4000HACALLSUBPRLJMP1003H解因為ACALL指令轉去子程序的入口地址與ACALL的下一條指令必須在同一個2K范圍,而LCALL指令轉去子程序的入口地址與LCALL的下一條指令范圍為64K。所以當SUBPR4060H時,程序(2)和(3)是正確的,(1)的程序是錯誤的,程序(2)較(3)快捷;當SUBPR1060H時,程序(1)和(2)是正確的,程序(3)是錯誤的,程序(1)較程序(2)節(jié)省一個存儲單元。11設A53H,PSW81H,轉移指令所在地址為3090H,執(zhí)行下列各條指令后,PC(1)JNZ12H(2)JNC34H(3)JNBP,56H(4)JBCAC,78H(5)CJNEA,50H,9AH(6)DJNZPSW,0BCH(7)SJMP0B4H解(1)因A0,所以轉移,故PC3090H212H30A4H;(2)因CY1,所以不轉移,故PC3090H23092H;(3)因P1,所以不轉移,故PC3090H33093H;(4)因AC0,所以不轉移,故PC3090H33093H;(5)因A50H,所以轉移,故PC3090H39AH3093H66H302DH注意補碼數(shù)9AH的最高位為1屬負數(shù),故應先求得其真值為66H(6)因PSWPSW180H0,所以轉移,故PC3090H30BCH3093H44H304FH(7)無條件轉移,PC3090H20B4H3092H4CH3046H。12閱讀下列程序,說明其功能。MOVR1,40H;設(40H)XMOVA,R1;AXRLA;A2MOVR0,A;R02RLA;A224RLA;A428XADDA,R0;A8210MOVR1,A;(40H)10X解各指令的注釋如程序所標,程序的功能為40H單元的內容乘10。13執(zhí)行程序填結果(1)MOVA,19H;A19HADDA,72H;A8BHDAA;A91H結果A解A91H(2)CLRC;CY0MOVA,9AH;A9AHSUBBA,19H;A81HADDA,72H;A0F3HDAA;A53H,CY1結果A解A53H14設(SP)50H,MA0123H,SUB0345H。執(zhí)行指令“MAACALLSUB”后PC,SP,(51H),(52H)。解PC0345H,SP52H,(51H)25H,(52H)01H15(SP)4BH,(49H)12H,(4AH)5AH,(4BH)68H。執(zhí)行指令“RET”后PC,SP。解PC685AH,SP48H習題4解答1按下面要求編程。(51H)0;若(50H)為奇數(shù)1;若(50H)為偶數(shù)解MOVA,50HMOVB,2DIVAB;偶數(shù)除以2的余數(shù)為0MOVA,BJNZL1;判余數(shù)是否為0MOV51H,01H;為偶數(shù),1送51H單元SJMPNEXTL1MOV51H,00H;為奇數(shù),0送51H單元NEXTSJMPNEXT2按下面要求編程。1;若(50H)20(51H)0;若20(50H)401;若(50H)40解MOVA,50H;設50H單元的內容為XCJNEA,20,L1;X20時,轉向L1SJMPL4;X20時,轉向L4L1JCL4;X20時,轉向L4L2CJNEA,40,L3;X20且X40時,轉向L3SJMPL4;X40時,轉向L4L3JNCL4;X40時,轉向L4MOV51H,00H;20X40時,送0到51H單元SJMPNEXTL4MOV51H,0FFH;X20或X40時,送1到51H單元NEXTSJMPNEXT3試編寫程序,將片外8000H開始的16個連續(xù)單元清0。解方法一MOVDPTR,8000H;數(shù)據(jù)塊首址CLRALOOPMOVXDPTR,A;單元清0INCDPTRMOVR7,DPLCJNER7,10H,LOOPSJMP方法二MOVDPTR,8000HMOVR7,10H;數(shù)據(jù)塊長度16CLRALOOPMOVXDPTR,AINCDPTRDJNZR7,LOOPSJMP4在片內50H開始的單元中存有8個無符號數(shù),找出其中最大數(shù)存于70H單元中。解MOVR0,50H;數(shù)據(jù)塊首址MOVR2,8;長度計數(shù)器賦初值MOVA,R0;取第一個數(shù)LOOPINCR0;取下一個數(shù)MOVB,R0CJNEA,B,NEXTNEXTJNCNEXT1;兩數(shù)比較,若AB時,A中放當前數(shù)MOVA,R0;若AB時,送大數(shù)到A中NEXT1DJNZR2,LOOP;數(shù)據(jù)塊比較完否MOV70H,A;最大值送入70H單元中HERESJMPHERE5試編寫程序,求出片內RAM30H單元中的數(shù)據(jù)含“1”的個數(shù),將結果存入31H單元。解要統(tǒng)計一個8位二進制數(shù)中“1”的個數(shù),可以把這個數(shù)一位一位地移到CY中,然后加以判斷和統(tǒng)計。程序設計如下MOVR2,8移位次數(shù)MOVR1,10R1作為統(tǒng)計“1”的個數(shù)的計數(shù)器MOVA,30H取數(shù)LOOPRLCA數(shù)的最高位移入CYJNCNEXTINCR1若CY1,則計數(shù)器加1NEXTDJNZR2,LOOPMOV31H,R1存結果HERESJMPHERE6編制用軟件延時1秒的子程序,控制P1腳上所接的8個發(fā)光二極管交叉燈亮一秒。解設晶體振蕩器的頻率為6MHZMOVA,0AAHLOOPMOVP1,A;交叉亮LCALLDEY1S;調延時1S子程序CPLASJMPLOOPDEY1SMOVR5,2;延時1S子程序LOOP3MOVR6,200LOOP2MOVR7,250LOOP1NOPNOPNOPDJNZR7,LOOP1DJNZR6,LOOP2DJNZR5,LOOP3RET7設計燈移位程序,要求P1腳上所接的8只發(fā)光二極管每次點亮一個,點亮時間為05秒。順序從低位到高位循環(huán)點亮。解MOVA,01HLOOPMOVP1,ALCALLDEY05SRLASJMPLOOPDEY1SMOVR5,1;延時05S子程序LOOP3MOVR6,200LOOP2MOVR7,250LOOP1NOPNOPNOPDJNZR7,LOOP1DJNZR6,LOOP2DJNZR5,LOOP3RET8將累加器A中的2位十六進制數(shù),轉換為ASCII碼,存放在片內RAM30H和31H單元中。解MOVR0,A;暫存A中的數(shù)在R0中ANLA,0FH;屏蔽高位MOVDPTR,ASCTABMOVCA,ADPTR;低位轉換成ASCII碼MOV31H,A;存低位MOVA,R0SWAPA;將高位交換到低位ANLA,0FHMOVCA,ADPTRMOV30H,A;存高位ASCIIDB30H,31H,32H,33H,34H,35H,36HDB37H,38H,39H,41H,42H,43H,44HDB45H,46H9將兩字節(jié)ASCII碼,轉換為二進制數(shù),編成子程序形式。解子程序為AASCH如下;功能將兩字節(jié)ASCII碼,轉換為一個字節(jié)二進制數(shù)(即十六進制);入口參數(shù)(R0)為ASCII碼的首地址;出口參數(shù)(R1)為轉換后的二進制數(shù)的地址AASCHMOVA,R0;取ASCII碼的高位ACALLASCH;調用子程序ACHSWAPA;將十六進制數(shù)放在A的高位MOVR1,A;存十六進制數(shù)到高4位INCR0;指向下一個ASCII碼數(shù)MOVA,R0ACALLASCHXCHDA,R1;存十六進制數(shù)到低4位RETACHCLRC;將A中的ASCII碼數(shù)轉換成十六進制數(shù)并存放在A中的子程序SUBBA,30HCJNEA,0AH,NEXT;判ASCII碼數(shù)是數(shù)字還是字母NEXTJCAH;若為數(shù)字(09),轉移SUBBA,07H;十六進制數(shù)為字母是減7AHRET10將兩字節(jié)ASCII碼,轉換為BCD碼,編成子程序形式。解兩字節(jié)ASCII碼轉換為BCD碼,用壓縮BCD碼的形式表示正好占用一個字節(jié)。子程序ASCBCD如下;功能將兩字節(jié)ASCII碼,轉換為BCD碼,若ASCII碼數(shù)為非法BCD碼(即AF),則在相應半字中置入“”符號,以示區(qū)別;入口參數(shù)(R1)為ASCII碼的首地址;出口參數(shù)(R0)為轉換后的BCD碼的地址ASCBCDMOVA,R1;取一個ASCII碼ACALLACB;調用ACB子程序SWAPA;BCD碼的放在A的高4位MOVAR0,A;存BCD碼到高4位INCR1MOVA,R1ACALLACBXCHDA,R0RETACBCLRC;將A中的ASCII碼轉換為BCD碼的子程序SUBBA,30HCJNEA,0AH,L1L1JCL2;是BCD碼數(shù)則轉L2MOVA,24H;非法BCD碼數(shù),則送入“”符號L2RET11將兩位十進制數(shù)的BCD碼,轉換為ASCII,編成子程序形式。解子程序BCAC如下;功能將兩位十進制數(shù)的BCD碼,轉換為ASCII;入口參數(shù)R1存放BCD碼數(shù)的地址;出口參數(shù)(R0)和(R0)1存放結果的地址BCASMOVA,R1;取BCD碼數(shù)MOVR2,A;暫存BCD碼數(shù)在R2中ANLA,0FH;屏蔽高4位ADDA,30H;低4位BCD碼轉換成為ASCII碼MOVR0,A;存入第一個ASCII碼MOVA,R2SWAPA;取原BCD碼,把高4位交換到低4位ANLA,0FH;屏蔽高4位INCR0MOVR0,A;存入第二個ASCII碼RET12將20H單元中的8位無符號二進制數(shù)轉換為BCD碼,存入21H、22H。解程序設計如下;功能將20H單元中的8位無符號二進制數(shù)轉換為BCD碼;入口參數(shù)20H單元中存放要轉換的二進制數(shù);出口參數(shù)21H單元存放的是百位BCD碼,22H單元存放的是十位和個位BCD碼,高半字節(jié)放十位,低半字節(jié)放個位。;占用寄存器A,BBINBCDMOVA,20H;取數(shù)MOVB,64HDIVAB;除以100,A為百位數(shù)MOV21H,A;存入21H單元MOVA,0AHXCHA,B;余數(shù)B送ADIVAB;除以10,得十位和個位SWAPA;十位數(shù)放于高半字節(jié)ADDA,B;個位數(shù)放于低半字節(jié)MOV22H,A;十位、個位存22H單元RET13用查表程序求08之間整數(shù)的平方。解設08之間的整數(shù)存放在R0單元中,查表結果存在R1中MOVR0,DATAMOVA,R0MOVDPTR,TABMOVCA,ADPTRMOVR1,ATABDB0,1,4,9,16,25,36,49,6414編寫程序,實現(xiàn)下列邏輯函數(shù)的功能。其中X、Y、Z、F都是位單元地址。FXYZY解XBIT20H0YBIT20H1ZBIT20H2FBIT20H3TEMPBIT20H4MOVC,XANLC,Y;CXYMOVF,C;存XY在F中MOVC,YANLC,/Z;CYZMOVTEMP,C;暫存Y在TEMP中MOVC,ZANLC,/Y;CZORLC,TEMPCPLCORLC,F(xiàn)MOVF,C15有一16位二進制數(shù)存放于50H、51H單元,50H存高位,編程實現(xiàn)全部左移一位。解CLRCMOVA,51HRLCAMOV51H,AMOVA,50HRLCAMOV50H,ASJMP16完成兩字節(jié)壓縮BCD碼的加法。(30H31H)(40H41H)(30H31H)解MOVA,31HADDA,41H;低字節(jié)相加DAA;十進制調整MOV31H,A;存結果低字節(jié)MOVA,30HADDCA,40HDAAMOV30H,ASJMP17編程實現(xiàn)(R3R2)10(R3R2)解本題可以采用乘法指令或者用循環(huán)移位指令實現(xiàn),此處采用用乘法指令。MOVA,R2MOVB,0AHMULAB;被乘數(shù)低8位乘以10,即R210MOVR2,A;MOVR4,B;R210的高8位暫存于R4中MOVA,R3;MOVB,0AHMULAB;被乘數(shù)高8位乘以10,即R310ADDA,R4;R310的低8位與R210的高8位之和送R3MOVR3,AMOVR4,BSJMP習題5解答51MCS51型單片機有幾個中斷源有幾級中斷優(yōu)先級各中斷源中斷標志是怎樣產(chǎn)生的答MCS51單片機的有5個中斷源2個外部中斷源,即和;3個內部中斷源,兩個片內0INT1定時器/計數(shù)器溢出中斷T0和T1,1個片內全雙工串行口中斷源。有兩級中斷優(yōu)先級即高優(yōu)先級和低先級,實現(xiàn)兩級中斷服務程序嵌套,同一優(yōu)先級的中斷源,由硬件查詢來確定優(yōu)先序列,從高到低依次為外部中斷、定時器T0溢出中斷、外部中斷定時器、I1INTT1溢出中斷、串行口中斷。各中斷源請求的中斷的標志分別由特殊功能寄存器TCON和SCON的相應位鎖存,這些標志位的產(chǎn)生如下TF1定時器T1的溢出中斷請求標志位。當計數(shù)器T1產(chǎn)生溢出時,由硬件使TF1置1,并向CPU發(fā)出中斷請求。TF0定時器T0的溢出中斷請求標志位。含義與TF1相同。IE1外部中斷1(即)的中斷請求標志位。當檢測到外部中斷引腳(P32)上存在有效的中斷INT請求信號時,由硬件使IE1置1。IE0外部中斷的中斷請求標志位,其含義與IE1類同0TI串行口發(fā)送中斷請求標志位。CPU將一個數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,每發(fā)送完一幀串行數(shù)據(jù)后,硬件置位TI(TI1)。RI串行口接收中斷請求標志位。在串行口允許接收時,每接收完一個串行幀,硬件置位RI。52編寫程序將設為脈沖下降沿觸發(fā)的高優(yōu)先級中斷源。INT解用位操作SETBIT1;設為邊沿觸發(fā)方式1SETBPX1;設高優(yōu)先級中斷源I用字節(jié)操作MOVTCON,04H;設為邊沿觸發(fā)方式INTMOVIP,04H;設高優(yōu)先級中斷源153試編程實現(xiàn)將設為高優(yōu)先級中斷,且為電平觸發(fā)方式,T0設為低優(yōu)先級中斷計數(shù)器,串1I行口中斷為高優(yōu)先級中斷,其余中斷源設為禁止狀態(tài)。解MOVTMOD,04H;設T0為計數(shù)器狀態(tài)MOVTCON,00H;設外部中斷1為電平觸發(fā)方式MOVIE,96H;開放外部中斷1、T0和串行口中斷MOVIP,14H;設和串行口為高優(yōu)先級,T0設為低優(yōu)先級INT54在MCS51型單片機中,哪些中斷標志可以在響應后自動撤除哪些需要用戶撤除如何撤除答CPU在響應中斷請求后會自動清除的中斷標志的有定時器T0、T1的溢出中斷請求標志TF0、TF1;邊沿觸發(fā)方式下的外部、的中斷請求標志IE0、IE1。INT01CPU響應中斷后不會自動清除,只能在中斷服務程序中用軟件清除的有串行口的接收、發(fā)送中斷標志RI、TI,用“CLR中斷請求標志位”指令清除;在電平觸發(fā)方式下的外部中斷標志IE0和IE1,則是根據(jù)引腳和的電平而變化的,CPU無法直接干預,需在引腳外INT加硬件(如D觸發(fā)器)使其自動撤消外部中斷請求。55MCS51型單片機響應中斷后,各中斷源的中斷入口地址是什么答中斷源中斷入口地址外部中斷00003H定時器T0中斷000BH外部中斷10013H定時器T1中斷001BH串行口中斷0023H56簡述MCS51型單片機中斷響應全過程。答當有中斷源發(fā)出中斷請求、允許中斷位開放、無同級或更高級中斷正在被服務、當前的指令周期已經(jīng)結束時,CPU按優(yōu)先級順序查詢中斷標志,如查詢到某個中斷標志為1CPU響應中斷請求,CPU響應中斷后即轉至中斷服務程序的入口,執(zhí)行中斷服務程序。57試比較用單片機的可編程定時器實現(xiàn)時鐘計時與用硬件電路實現(xiàn)時鐘計時有什么不同。答不可編程的硬件定時對于時間較長的定時,常使用硬件電路完成。硬件定時方法的特點是定時功能全部由硬件電路完成,不占用CPU時間。但需通過改變電路中的元件參數(shù)來調節(jié)定時時間,在使用上不夠靈活方便。單片機的可編程定時器定時這種定時方法是通過對系統(tǒng)時鐘脈沖的計數(shù)來實現(xiàn)的。計數(shù)值通過程序設定,改變計數(shù)值,也就改變了定時時間,使用起來既靈活又方便。此外,由于采用計數(shù)方法實現(xiàn)定時,因此可編程序定時器都兼有計數(shù)功能,可以對外來脈沖進行計數(shù)。58簡述MCS51型單片機定時/計數(shù)器的4種工作方式及其特點。答MCS51單片機有T0和T1兩個定時/計數(shù)器,T0有4種工作方式,T1有3種工作方式,如下表工作方式適用定時器功能說明方式0T0、T113位定時器/計數(shù)器方式1T0、T116位定時器/計數(shù)器方式2T0、T1自動重裝初值的8位定時器/計數(shù)器方式3T0僅適用于T0,分為2個8位計數(shù)器TL0和TH0,TL0可工作于定時或計數(shù)狀態(tài),而TH0則固定為定時狀態(tài)。方式3對T1則停止計數(shù)59若MCS51型單片機的時鐘頻率為12MHZ,試計算用4種工作方式定時300S所需的初始值。解機器周期T121/FOSC121/121S,以定時器T0為例。定時時間T2XT0初值T方式0X13,則T0初值213300S/1S81923007892D1111011010100B所以TH00F6H,TL014H方式1X16,則T0初值216300S/1S6553630065236D0FED4H所以TH00FEH,TL00D4H方式2和方式3X8,最長定時時間TMAX2801S256S300S所以方式2和方式3不能實現(xiàn)510當T0工作在方式3下,TR1和TF1已被T0占用,如何控制T1的開啟和關閉解T0設置為工作方式3,T0被分成兩個獨立的8位計數(shù)器TH0和TL0。其中TH0被固定為定時方式,并占用T1的狀態(tài)控制位TR1、TF1。在這種情況下,T1可工作于方式0、1、2,作為串行口的波特率發(fā)生器。這時控制T1的啟停由設置工作方式02(自動啟動T1計數(shù))和寫入T1的方式字為方式3(停止計數(shù))來實現(xiàn)。511已知8051型單片機的系統(tǒng)時鐘頻率為6MHZ,試利用定時器T0在P11輸出周期為300S的正方波。解設T0工作在方式0,欲產(chǎn)生300S的等寬正方波脈沖,只需在P10端以150S為周期交替輸出高低電平即可實現(xiàn),為此定時時間應為150S。使用6MHZ晶振,則一個機器周期為2S。設待求的計數(shù)初值為X,則(213X)2S150S求解得X8117D1111110110101B。十六進制表示,高8位為0FDH,低5位為15H。其中高8位放入TH0,即TH00FDH;低5位放入TL0,即TL015H。TMOD寄存器初始化把T0設定為方式0,則M1M000;為實現(xiàn)定時功能,應使C/0;為實現(xiàn)用TR0控制T0的運行,TGATE0。因此TMOD寄存器應初始化為00H。采用軟件查詢方式程序如下程序如下ORG0000HLJMPMAINORG1000HMAINMOVTMOD,00H;設置T0為工作方式0MOVIE,00H;禁止中斷SETBTR0;啟動定時LOOPMOVTH0,0FDH;設置計數(shù)初值MOVTL0,15HJNBTF0,;查詢計數(shù)溢出CLRTF0;計數(shù)溢出標志位清“0”CPLP11;輸出取反AJMPLOOP;重復循環(huán)END本題也可用中斷方式,讀者可參考例58自己完成。512設單片機的系統(tǒng)時鐘頻率為12MHZ,試編程輸出頻率為100KHZ,占空比為210的矩形波。解信號頻率為100KHZ,則周期為1/100KHZ10S,占空比為210即高電平為2S,低電平為8S的方波,設采用定時器T0工作在方式2,P10輸出該矩形波。定時2S(28X)12/122,X2540FEH定時8S(28X)12/128,X2480F8H程序如下ORG0000HLJMPMAINORG000BHLJMPPULSEMAINMOVTOMD,02H;T0方式2MOVTH0,0F8H;定時8SMOVTL0,0F8HSETBET0;開中斷SETBEACLRP10;輸出低電平CLRF0;F00,輸出低電平標志SETBTR0;啟動定時器SJMP;等待中斷PULSEJNBF0,NEXT1;中斷服務程序MOVTH0,0FEH;定時2SMOVFL0,0FEHSJMPNEXT2NEXT1MOVTH0,0F8H;定時8SMOVTL0,0F8HNEXT2CPLF0CPLP10END513設8031型單片機的時鐘頻率為6MHZ,請編寫程序在P10輸出周期為2S的方波的程序。解1、輸出周期為2S的方波,采用T0定時時間應為1S。因定時時間較長,先求T0各種工作方式的最長定時時間TMAX方式0時,計數(shù)器為13位,TMAX213121/6MHZ16384MS方式1時,計數(shù)器為16位,TMAX216121/6MHZ131072MS方式2時,計數(shù)器為8位,TMAX28121/6MHZ512S本題定時為1S,可選方式1,每隔100MS中斷一次,中斷10次為1S。2、求計數(shù)初值X為(216X)12/6100103所以X15536D3CB0H故TH03CH,TL00B0H3、對于中斷10次,可采用T1工作于計數(shù)方式,也可采用循環(huán)程序的方法實現(xiàn),本題采用循環(huán)程序法。4、確定方式控制字(T0工作于方式1)TMOD01H5、程序如下ORG0000HAJMPMAIN;轉向主程序ORG000BH;定時器T0的中斷入口地址AJMPTSER;轉向中斷服務程序主程序ORG1000HMAINMOVSP,60H;設堆棧指針MOVR0,0AH;設循環(huán)次數(shù)MOVTMOD,01H;設置T0為工作方式1MOVTH0,3CH;設置計數(shù)初值MOVTL0,0B0HSETBEA;開中斷SETBET0;T0允許中斷SETBTR0;啟動定時器1HERESJMPHERE;等待中斷中斷服務程序TSERMOVTH0,03CH;重新設置計數(shù)初值MOVTL0,0B0HDJNZR0,LOOPCPLP10;輸出取反LOOPRETI;中斷返回END514利用8051型單片機的定時器測量某正單脈沖寬度,采用何種工作方式可以獲得最大的量程若系統(tǒng)時鐘頻率為6MHZ,那么最大允許的脈沖寬度是多少答門控位GATE1時,僅當X0、1為高電平時,計數(shù)器才對計數(shù)。利用這一特性,INTX12/FOSC可測量輸入到引腳的脈沖寬度(機器周期數(shù))。采用方式1(16位計數(shù)器)可獲得最大的量程,且I要求脈沖寬應小于65536個機器周期。當6MHZ時,允許測量的最大脈寬為65OSCF53612/6S13107MS。515試編寫程序將內部RAM以30H為起點地址的X個數(shù)傳送到外RAM以BUF為起點地址的區(qū)域,要求每隔500MS傳送一個數(shù)據(jù),設8031型單片機的時鐘頻率為6MHZ。解設用T0方式1來定時100MS,循環(huán)5次為500MS。定時100MS的初值X為(216X)12/6100103則X155363CB0H即TH03C,TL00B0H參考程序如下ORG1000HMOVR0,30H;源數(shù)據(jù)塊首址MOVR1,X;數(shù)據(jù)塊長度MOVDPTR,BUF;目標數(shù)據(jù)塊首址LOOPMOVA,R0MOVXDPTR,ALCALLDEY500;調500MS延時子程序INCR0;修改源地址指針I(yè)NCDPTR;修改目標地址指針DJNZR1,LOOP;未傳送完則繼續(xù)DEY500MOVR2,5;500MS延時子程序MOVTMOD,01HSETBTR0LLMOVTL0,0B0HMOVTH0,3CHJNBTF0,CLRTF0DJNZR2,LLRETEND習題6解答61在MCS51單片機系統(tǒng)中,外接程序存儲器和數(shù)據(jù)存儲器共用16位地址線和8位數(shù)據(jù)線,為什么不會發(fā)生沖突答MCS51單片機采用不同控制信號CPU訪問片外ROM時,外部ROM用選通;訪問PSEN外部RAM或擴展I/O口時,由(讀)信號和(寫)信號選通。因此,盡管程序存儲器地址和數(shù)RDWR據(jù)存儲器地址空間重疊,但不會發(fā)生混亂。62用兩片EPROM2716給8051單片機擴展一個4KB的外部程序存儲器,要求地址空間與8051的內部ROM相銜接,請畫出邏輯連接圖。解外部ROM的邏輯連接如圖所示,8051內部ROM的4KB地址空間為0000H0FFFH,兩片EPROM2716擴展的外部ROM4KB地址空間分別為IC11000H17FFH,IC21800H1FFFH。D0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7OEG74LS3736227164KBPSENP00P01P02P03P04P05P06P07P20P21P22ALEP23P248051A0A1A2A3A4A5A6A7A8A9A10OED0D1D2D3D4D5D6D7CEIC12716A0A1A2A3A4A5A6A7A8A9A10OED0D1D2D3D4D5D6D7CEIC227161163試用一片EPROM2716和一片RAM6116組成一個既有程序存儲器又有數(shù)據(jù)存儲器的存儲器擴展系統(tǒng),請畫出邏輯連接圖,并說明各芯片的地址范圍。解2716是2KB的EPROM,6116是2KB的RAM,兩者都需要11根地址線。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論