




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、練習練習練習第二章 單片機結構及原理1、MCS-51單片機內部包含哪些主要功能部件?它們的作用是什么?答:(1)一個8bit CPU是微處理器的核心,是運算和邏輯計算的中心。(2)片內震蕩器及時鐘電路:提供標準時鐘信號,所有動作都依據此進行。(3)4K ROM程序存貯器:存貯程序及常用表格。(4)128B RAM 數據存貯器:存貯一些中間變量和常數等。(5)兩個16bit定時器/計數器:完全硬件定時器(6)32根可編程I/O口線:標準8位雙向(4個)I/O接口,每一條I/O線都能獨立地作輸入或輸出。(7)一個可編程全雙工串行口。 (8)五個中斷源。2、什么是指令?什么是程序?答:指令是規定計算
2、機執行某種操作的命令。程序是根據任務要求有序編排指令的集合。3、如何認識89S51/52存儲器空間在物理結構上可以劃分為4個空間,而在邏輯上又可以劃分為3個空間?答:89S51/52存儲器空間在物理結構上設有個存儲器空間:片內程序存儲器、片外程序存儲器、片內數據存儲器、片外數據存儲器。在邏輯上有個存儲器地址空間:片內、片外統一的64KB程序存儲器地址空間,片內256數據存儲器地址空間,片外64的數據存儲器地址空間。4、開機復位后,CPU使用的是哪組工作寄存器?他們的地址是多少?CPU如何確定和改變當前工作寄存器組?答:開機復位后,CPU使用的是第0組工作寄存器,地址為00H07H,CPU通過改
3、變狀態字寄存器PSW中的RS0和RS1來確定工作寄存器組。5、什么是堆棧?堆棧有何作用?在程序設計時,有時為什么要對堆棧指針SP重新賦值?如果CPU在操作中要使用兩組工作寄存器,SP應該多大?答:堆棧是一個特殊的存儲區,主要功能是暫時存放數據和地址,通常用來保護斷點和現場。堆棧指針SP復位后指向07H單元,00H1FH為工作寄存器區,20H2FH為位尋址區,這些單元有其他功能,因此在程序設計時,需要對SP重新賦值。如果CPU在操作中要使用兩組工作寄存器,SP應該至少設置為0FH。6、89S51/52的時鐘周期、機器周期、指令周期是如何分配的?當振蕩頻率為8MHz時,一個單片機周期為多少微秒?答
4、:時鐘周期為時鐘脈沖頻率的倒數,他是單片機中最基本的、最小的時間單位。機器周期是指完成一個基本操作所需要的時間,一個機器周期由12個時鐘周期組成。指令周期是執行一條指令所需要的時間,由若干個機器周期組成。 若fosc=8MHz,則一個機器周期=1/8×12s=1.5s7、89S51/52擴展系統中,片外程序存儲器和片外數據存儲器共處同一地址空間為什么不會發生總線沖突?答:訪問片外程序存儲器和訪問數據存儲器使用不同的指令用來區分同一地址空間。8、程序狀態字寄存器PSW的作用是什么?常用狀態標志有哪些位?作用是什么?答:程序狀態字PSW是8位寄存器,用于存放程序運行的狀態信息,PSW中各
5、位狀態通常是在指令執行的過程中自動形成的,但也可以由用戶根據需要采用傳送指令加以改變。各個標志位的意義如下:PSW.7(Cy):進位標志位。PSW.6(AC):輔助進位標志位,又稱為半進位標志位。PSW.5(F0):用戶標志位。PSW.4、PSW.3(RS1和 RS0):寄存器組選擇位。PSW.2(OV):溢出標志位。PSW.1(空缺位):此位未定義。PSW.0(P):奇偶校驗位。9、位地址7CH和字節地址7CH有何區別?位地址7CH具體在內存中什么位置?答:字節地址7CH是片內數據存儲器中的一個地址單元,該地址單元中可以存放8位二進制數,位地址7CH是內部數據存儲器中位尋址區中的一位,該地址
6、單元中可以存放1位二進制數。位地址7CH具體在片內數據存儲器字節地址為2FH中的第4位(2FH.4)。10、89S51/52中4個I/O端口的作用是什么?89S51/52的片外三總線是如何分配的?答:I/O端口是單片機與外界聯系的重要通道,實現與外部設備的信息的傳輸。總線分配:片外數據總線(8根)通過P0口輸出,片外地址總線(16根)通過P0口(低8位)和P2口(高8位)輸出,片外控制總線(PSEN ,ALE , RD ,WR ,EA)主要通過P3口。11、89S51/52中4個I/O端口在結構上有何異同?89S51/52單片機的個I/O口在結構上是基本相同的,但又各具特點。這四個端口都是位雙
7、向口,每個端口都包括一個鎖存器、一個輸出驅動器和輸入緩沖器。在無片外擴展存儲器的系統中,這四個端口的每一位都可以作為雙向通用I/O端口使用。在作為一般的通用I/O輸入時,都必須先向鎖存器寫入“”,使輸出驅動場效應管FET截止,以免誤讀數據。各自特點如下:(1)P0口為雙向8位三態I/O口,它既可作為通用I/O口,又可作為外部擴展時的數據總線及低8位地址總線的分時復用口。作為通用I/O口時,輸出數據可以得到鎖存,不需外接專用鎖存器;輸入數據可以得到緩沖,增加了數據輸入的可靠性。每個引腳可驅動8個TTL負載。(數字電路按工藝有肖特基雙極晶體管和CMOS工藝兩種,使用雙極晶體管的數字電路稱TTL數字
8、電路,單片機輸出端帶負載能力,意思就是單片機的P3端口只能并聯4個TTL型集成電路輸入端。)(2)P1口為8位準雙向I/O口,內部具有上拉電阻,一般作通用I/O口使用,它的每一位都可以分別定義為輸入線或輸出線,作為輸入時,鎖存器必須置1。每個引腳可驅動4個TTL負載。(3)P2口為8位準雙向I/O口,內部具有上拉電阻,可直接連接外部I/O設備。它與地址總線高8位復用,可驅動4個TTL負載。一般作為外部擴展時的高8位地址總線使用。(4)P3口為8位準雙向I/O口,內部具有上拉電阻,它是雙功能復用口,每個引腳可驅動4個TTL負載。作為通用I/O口時,功能與P1口相同,常用第二功能。12、復位的作用
9、是什么?有幾種復位方法?復位后單片機的狀態如何?答:復位是單片機的初始化操作。單片機在RST引腳產生兩個機器周期(即24個時鐘周期)以上的高電平即可實現復位。主要的復位方法有上電自動復位和按鍵手動復位兩種。按鍵手動復位又分:按鍵電平復位和按鍵脈沖復位。第三章 指令系統1、簡述下列名詞術語的基本概念:指令、指令系統、程序、匯編語言指令答:指令:規定單片機進行某種操作的命令稱為指令。指令系統:單片機能夠執行的各種指令的集合。程序:一系列指令的有序集合稱為程序。匯編語言指令:用助記符形式來表示機器指令。2、80C51單片機有哪幾種尋址方式?這幾種尋址方式是如何尋址的?答:共7種尋址方式,分別為:寄存
10、器尋址,直接尋址,寄存器間接尋址,立即尋址,變址尋址,位尋址和相對尋址。寄存器尋址方式:由指令指出某一寄存器的內容做為操作數。直接尋址方式:指令中操作數直接以單元地址的形式給出。寄存器間接尋址方式 :寄存器間接尋址方式,寄存器中存放的則是操作數的地址,即操作數是通過寄存器間接得到的。立即尋址方式:操作數在指令中直接給出。變址尋址方式:變址尋址是為了訪問程序存儲器中的數據和表格。MCS51的變址尋址是以DPTR或PC作基址寄存器,以累加器A作變址寄存器,并以兩者內容相加形成的16位地址做為操作數地址,以達到訪問數據和表格的目的。位尋址方式:指對片內RAM的位尋址區和某些可尋址的特殊功能寄存器進行
11、位操作的尋址方式。相對尋址方式:相對尋址方式是為解決程序轉移而專門設置的,為轉移指令所采用。3、要訪問特殊功能寄存器和片外數據寄存器,應采用哪些尋址方式?答:訪問特殊功能寄存器可以采用直接尋址、寄存器尋址和位尋址(針對可以進行位尋址的特殊功能寄存器)方式。訪問片外數據存儲器可采用寄存器間接尋址方式。4、80C51單片機的指令系統可以分為哪幾類?說明各指令的功能。答:51單片機指令系統按功能可分為5類:(1)數據傳送指令 主要進行數據的傳送、交換等;(2)算術運算指令 主要進行基本的加減乘除運算;(3)邏輯運算指令 主要實現邏輯運算與移位運算; (4)控制轉移指令 主要是實現對程序流程的控制;(
12、5)位操作指令 5、外部數據傳送指令有哪幾條?有和區別?答:外部數據傳送指令有讀指令和寫指令兩類,每類指令的尋址范圍不同,分別為:讀外部存儲器指令:MOVXA,Ri;尋址范圍為256字節MOVXA,DPTR;尋址范圍為64K字節寫外部存儲器指令:MOVXRi,A;尋址范圍為256字節MOVXDPTR,A;尋址范圍為64K字節6、在89S51片內RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,請分別分析下段程序按序執行后的結果。MOVA,40H;A=48HMOV R0,A;R0=48HMOVP1,#0FFH;P1=FFHMOVR0,30H;(48H)
13、=38HMOVDPTR,#1246H;DPTR=1246HMOV40H,38H;(40H)=40HMOVR0,30H;R0=38HMOV90H,R0;(90H)=38HMOV 48H,#30H;(48H)=30HMOVA,R0;A=40HMOVP2,P1;P2=38H7、略8、DAA 指令的作用是什么?怎樣使用?答:對十進制BCD數作加法時進行調整,當結果的低4位A0A3>9,或半進位AC=1,則A0A36,否則不加;當結果的高4位A4A7>9,或進位CY=1,則A4A76,否則不加;這條指令是在進行BCD碼加法運算時,跟在“ADD”和“ADDC”指令之后,用來對BCD碼的加法運算
14、結果自動進行修正,使其仍為BCD碼表示形式。9、試編程將片外數據存儲器60H中的內容傳送到片內RAM54H單元中。答:MOVR0,#60HMOVXA,R0MOV54H,A10、試編程將寄存器R7的內容傳送到R1中去。答:MOVA,R7MOVR1,A11、已知當前PC值為210H,請用兩種方法將程序存儲器2F0H中的常數送入累加器A中。答:(1)以程序計數器PC作為基址寄存器MOVA,#0E0HMOVCA,A+PC(2)以數據指針DPTR作為基址寄存器MOVDPTR,#02F0HMOVA,#00HMOVCA,A+DPTR12、試說明下段程序中每條指令的作用,并分析當指令執行完后,R0中的內容是什
15、么?MOVR0,#0A7H;R0=A7H,立即數送寄存器R0XCHA,R0;A=A7H,累加器A中的數據與R0中的數據進行交換SWAPA;A=7AH,累加器A中的高低四位進行交換XCHA,R0;R0=7AH,數據交換回R013、請用兩種方法實現累加器A與寄存器B的內容交換。答:(1)MOVR0,A MOVA,B MOVB,R0(2)MOVR0,B XCHA,R014、試編程將片外RAM中40H單元的內容與R1的內容交換。答:MOVR0,#40HMOVXA,R0XCHA,R1MOVXR0,A15、已知:A=0C9H,B=8DH,CY=1。執行指令 ADDCA,B結果如何? A=57H,CY=1,
16、OV=1,AC=1,P=1執行指令 SUBBA,B結果如何? A=3BH,CY=0,AC=1,OV=116、試編程將片外RAM中30H和31H單元中的內容相乘,結果存放在32H(低位)和33H(高位)單元中。答:MOVR0,#30HMOVXA,R0MOVB,AINCR0MOVXA,R0MULABINCR0MOVXR0,AMOVA,BINCR0MOVXR0,A17、試用3種方法將累加器A中的無符號數乘2.答:(1)MOVR0,A ADD A,R0(2)MOVB,#2 MULAB(3)RLA18、分析依次執行下列指令的結果:MOV30H,#0A4H;(30H)=A4HMOVA,#0D6H;A=D6
17、HMOVR0,#30H;R0=30HMOVR2,#47H;R2=47HANLA,R2;A=46HORLA,R0 ;A=E6HSWAPA;A=6EHCPLA;A=91HXRLA,#0FFH;A=6EHORL30H,A;(30H)=EEH19、求下列指令執行后,累加器A及PSW中進位CY、奇偶位P和溢出位OV的值。(1)當A=5BH時;ADDA,#8CH(2)當A=5BH時;ANLA,#7AH(3)當A=5BH時;XRLA,#7FH(4)當A=5BH,CY=1時;SUBBA,#0E8H答:(1)A=E7H,CY=1,P=0,OV=0 (2)A=5AH ,P=0 (3)A=24H ,P=0(4)A=
18、72H,CY=1,P=0,OV=020、把累加器A中的低4位數據送到外部數據存儲器的2000H單元。答:ANLA,#OFHMOVDPTR,#2000HMOVXDPTR,A21、試說明指令CJNE R1,#7AH,10H的作用,若本指令地址為250H,其轉移地址是多少?答:指令作用:如果以R1內容為地址的單元中的數據等于7AH,則程序順序執行,否則轉移后繼續執行。若本指令地址為250H,則轉移地址為250H03H10H= 263H。22、將累加器A中的數據由0遞增,加到50,結果在累加器A中。答:CLRAMOV R0,#50L1:INCADJNZR0,L123、試說明壓棧指令和彈棧指令的作用及執
19、行過程。答:壓棧(入棧或進棧)指令的作用是將數據存入堆棧中,其執行過程是先將堆棧指針SP的內容加1,然后將直接地址單元中的數據壓入SP指向的單元中。若數據已推入堆棧,則SP指向最后推入數據所在的存儲單元(即指向棧頂)。彈棧(出棧)指令的作用是將數據從堆棧中取出,其執行過程為先將堆棧指針SP所指出單元的內容送入直接尋址單元中,然后將SP的內容減1,此時SP指向新的棧頂。24、下述程序執行后,SP=?,A=?,B=?。ORG2000HMOVSP,#40HMOVA,#30HLCALL250H;下條指令地址2008H送41H、42H,SP=42HADDA,#10HMOVB,A;地址為200AHL1:S
20、JMPL1ORG250HMOVDPTR,#200AHPUSHDPL;SP+1=43H,DPL(43H)PUSHDPH;SP+1=44H,DPH(44H)RET;200AHPC答:上述程序執行后,SP=42H,A=30H,B=30H。25、發光二極管點亮規律:先是第1和第8個亮,延時一段時間后,第2和第7個亮,延時后,再是第3和第6個亮,延時后,最后是第4和第5個點亮,延時后循環。26、若系統晶振頻率為6MHz,求子程序DELAY的延時時間,若想加長或縮短時間,應該怎樣修改?答:DELAY:MOVR2,#0FAHL1:MOVR3,#0FAHL2:DJNZR3,L2DJNZ R2,L1RET總時間
21、計算:T=4s(250×4s4s)×2504s=251.008ms估算:T=250×4s×250=250ms若想加長延時時間,可以增加循環次數或再加一重循環;若想減小延時時間,可以減少循環次數或較少一重循環。27、P1口連接8個共陽極連接的發光二極管,是編制燈亮移位程序。答:MOVA,#0FEHL1:MOVP1,ARLALCALLDELAY;DELAY子程序同上題SJMPL128、試編一程序,將外部數據存儲器2100H單元中的高4位置“1”,其余位清“0”。答:MOVDPTR,#2100HMOVXA,DPTRORLA,#0F0HANLA,#0F0HMOV
22、XDPTR,A29、試編程將片內數據存儲器40H單元的第0為和第7位置1,其余取反。答:MOVA,40HCPLASETBACC.0SETBACC.7MOV40H,A30、將A.5與80H位相與的結果,通過P1.4輸出。MOVC,80HANLC,ACC.5MOVP1.4,C31、請用位操作指令,求下列邏輯方程。(1)MOVC,B.0ORLC,P2.1ANLC,ACC.0ORLC,/P3.2MOVP1.7,C(2)MOVC,P1.3ANLC,ACC.2MOV20H,CMOVC,B.5ANLC,/P1.1ORLC,20HMOVPSW.5,C(3)MOVC,B.4ANLC,/P1.5MOV20H,CM
23、OVC,P1.0ANLC,/ACC.7ORLC,20H (è下一行)MOVP2.3,C第四章 匯編語言程序設計1、編程將片內40H60H單元中的內容送到以3000H為首的存儲區內。答:MOVR1,#40HMOVR2,#21HMOVDPTR,#3000HL1:MOVA,R1MOVXDPTR,AINCR1INCDPTRDJNZR2,L12、編程計算下列算式的程序(1)23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,B;溢出處理ADDCA,#00HXCHA,BADDA,#03H;A中為結果低位,B中為高位(2)CDH+15H-38H-46H
24、=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H(3)1234H+8347H=MOVA,#34HADDA,#47HMOV30H,AMOVA,#12HADDCA,#83HMOV31,A;30H存結果低位,31H存結果高位(4)AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,#04HMOV32H,A;30H為低位,32H為高位3、設有兩個4位BCD碼,分別存放在23H、22H單元和33H、32H單元中,求他們的和,并送入43H、42H單元中(
25、低位在低字節,高位在高字節)。答:MOVA,22HADDA,32HMOV42H,AMOVA,23HADDCA,33HMOV43H,A4、略5、編程計算片內RAM區50H59H單元中數的平均值,結果存放在5AH中。答:MOVR0,#8MOVR1,#50HMOVA,#00HL1:ADDA,R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、編寫計算下式的程序。設乘積和平方結果均小于255。a 、b值分別存在片外3001H和3002H單元中,結果存于片外3000H單元中。(1) MOVDPTR,#3001HMOVXA,DPTRMOV30H,A;a暫存30H單元INCDPLMO
26、VXA,DPTRCJNEA,30H,L1;是否a=bMOVA,#25SJMPSAVEL1:JNCL2MOVB,30HMULABSJMPSAVEL2:MOVB,AMOVA,30HDIVABSAVE:MOVDPTR,#3000HMOVXDPRT,A(2) MOVDPTR,#3001HMOVXA,DPTRMOV30H,AINCDPTRMOVXA,DPTRADDA,30HMOVB,AMULAB; (ab)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,#10SAVE:MOVDPTR,#3000HMOVCDPTR,A7、設
27、有兩個長度均為15的數組,分別存放在以200H和210H為首地址的存儲區中,試編程求其對應項之和,結果存放到以220H為首地址的存儲區中。答:MOVDPH,#02HMOVR1,#15MOVR2,#00H; 數組1首地址低位MOVR3,#10H; 數組2首地址低位MOVR4,#20H; 和首地址低位L1:MOVDPL,R2MOVXA,DPTRMOVR1,AMOVDPL,R3MOVXA,DPTRADDA,R1MOVDPL,R4MOVXDTPR,AINCR2INCR3INCR4DJNZR1,L1SJMP$8、設有100個無符號數,連續存放在以2000H為首地址的存儲區中,試編程統計正數、負數和零的個
28、數。答:MOV30H,#00H;正數計數器MOV31H,#00H;負數計數器MOV32H,#00H;零計數器MOVDPTR,#2000HMOVR1,#100L4:MOVXA,DPTRINCDPTRCJNEA,#0,L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1,L4SJMP$9、將片外數據存儲器地址為1000H1030H的數據塊,全部搬遷到片內RAM 30H60H中,并將原數據塊區域全部清零。答:MOV R0,#30HMOV R2,#31HMOV DPTR ,#1000HLP:MOVX A,DPTRMOV R0,AAND A,#00HMO
29、VX DPTR,AINC R0INC DPTRDJNZ R2,LPSJMP$10、試編寫一子程序,是R1、R0指向的兩個片外RAM連續單元中的高4位二進制數,合并成一個字節,裝入累加器A中。已知R0指向低地址,并要求該單元高四位放在A中高四位。答:MOVXA,R1ANLA,#0F0HSWAPAMOVR2,AMOVXA,R0ANLA,#0F0HORLA,R211、試編程把以2040H為首地址的連續50個單元的無符號數按降序排列,存放到以3000H為首地址的存儲區中。答:MOVR2,#50MOVR3,#20HMOVR4,#40H;源地址MOVR5,#30HMOVR6,#00H;目的地址SEND:M
30、OVDPH,R3;SEND將2040H數據塊移入3000H存儲區MOVDPL,R4MOVXA,DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,SENDMOVR2,#49;重復次數CMP1:MOVDPTR,#3000HMOVR3,#49;比較次數CMP2:MOVXA,DPTRMOVB,AINCDPTRMOVXA,DPTRCJNEA,B,L1L1:JCNOMOVEMOV30H,ACLRCMOVA,DPLSUBBA,#01HMOVDPL,AMOVA,30HMOVXDPTR
31、,AINCDPTRMOVA,BMOVXDPTR,ANOMOVE:DJNZR3,CMP2;50個數重復一遍?DJNZR2,CMP1;排序結束?LJMP$12、試編一查表程序,從首地址為2000H,長度為100的數據塊中找出ASCII碼為A,將其地址送到20A0H和20A1H單元中。答:MOVDPTR,#2000HMOVR2,#100GO_ON:MOVXA,DPTRCJNEA,#41H,IFENDMOVA,DPHMOVB,DPLMOVDPTR,#20A0HMOVXDPTR,AINCDPTRXCHA,BMOVXDPTR,ASJMPOVERIFEND:INCDPTRDJNZR2,GO_ONOVER:S
32、JMPOVER13、設在200H204H單元中,存放5個壓縮BCD碼,編程將他們轉換成ASCII碼,存放到以205H單元為首地址的存儲區。答:MOVR2,#05HMOVR3,#02HMOVR4,#00HMOVR5,#02HMOVR6,#05HCHLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVB,ASWAPAANLA,#0FHORLA,#30HMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVA,BANLA,#0FHORLA,#30HMOVXDPTR,AMOVR5,DPHMOVR6,DPLDJNZR
33、2,CHLP14、有一無符號數據塊長度在30H單元中,其首地址為31H單元,求出數據塊中最大值,并存入40H中。答:MOVR0,#31HMOVR1,30HMOV40H,#00HLOOP:MOVA,R0CJNEA,40H,L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H,AAGAIN:INCR0DJNZR1,LOOPSJMP$15、略16、在以2000H為首地址的存儲區內,存放20個用ASCII碼表示的09之間的數,試編程,將它們轉換成BCD碼,并以壓縮BCD碼的形式存在3000H3009H單元中。答:MOVR2,#10MOVR3,#20HMOVR4,#00HMOVR5
34、,#30HMOVR6,#00HLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRANLA,#0FHSWAPAXCHA,BINCDPTRMOVXA,DPTRANLA,#0FHORLA,BINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、試編程實現下列邏輯表達式功能。設P1.7P1.0為8個變量的輸入端,而其中P1.7又作為變量的輸出端。;輸入端定義X0EQUP1.0X1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQU
35、P1.5X6EQUP1.6X7EQUP1.7(1)MOVC,X0ANLC,X1ANLC,/X2ORLC,X3MOV00H,CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP1.7,C(2)MOVC,X0ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略 19、略20、試編寫延時1s、1min、1h子程序。;單片機時鐘fosc=12MHz,計算為近似值;1s延時子程序DLY_1S:MOVR0,#
36、10L3:MOVR1,#200L2:MOVR2,#250L1:DJNZR2,L1DJNZR1,L2DJNZR0,L3RET;延時1minDLY_1M:MOVR3,#60L4:LCALLDLY_1SDJNZR3,L4RET;延時1hDLY_1H:MOVR4,#60L5:LCALLDLY_1MDJNZR4,L5RET21、用程序實現c=a2+b2。設a、b均小于10,a存在31H單元中,b存在32H單元中,c存33H單元。答:ORG1000HSR:MOVA,31HACALLSQRMOVR1,AMOVA,32HACALLSQRADDA,R1MOV33H,ASJMP$;求平方子程序如下(采用查平方表的
37、方法)SQR:INCAMOVCA, A+PC RETTABLE:DB 0, 1, 4, 9, 16DB 25,36,49,64,81END22、如何實現將內存單元40H60H的數逐個對應傳到片外2540H2560H單元中?答:MOVR0,#40HMOVDPTR,#2540HMOVR2,#21HL1:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR2,L1SJMP$23、參考21題24、參考21題25、參考實驗程序26、參考實驗程序第五章 定時/計數器1、89S51單片機內部有幾個定時/計數器,他們有哪些專用寄存器組成?答:89S51單片機內部有兩個16位定時/計數器,為定時
38、器0(T0)和定時器1(T1)。在定時器/計數器的16位的計數器是由兩個8位的專用寄存器TH0、TL0,TH1、TL1組成。2、89S51單片機的定時/計數器有哪幾種工作方式,各有什么特點?答:定時器/計數器有四種工作方式:方式0,方式1,方式2,方式3。其中,方式3只適用于T0。以T0為例:方式0,16位寄存器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位組成一個13位計數器;方式1,和方式0的工作相同,唯一的差別是TH0和TL0組成一個16位計數器;方式2,把TL0配置成一個可以自動恢復初值的8位計數器,TH0作為常數緩沖器。TH0由軟件預置值。當TL0產生溢出時,一方面
39、使溢出標志TF0置1,同時把TH0中的8位數據重新裝入TL0中;方式3,將使TL0和TH0成為兩個相互獨立的8位計數器,TL0利用T0本身的一些控制,它的操作與方式0和方式1類似。而TH0被規定為只用作定時器功能,對機器周期計數,并借用了T1的控制位TR1和TF1。在這種情況下TH0控制了T1的中斷。這時T1還可以設置為方式02,用于任何不需要中斷控制的場合,或者用作串行口的波特率發生器。3、定時/計數器用作定時方式時,其定時時間與哪些因素有關?作為計數時,對外界計數頻率有何限制?答:定時/計數器作定時時,其計數脈沖由系統振蕩器產生的內部時鐘信號12分頻后提供。定時時間與時鐘頻率和定時初值有關
40、。定時/計數器作計數時,由于確認1次負跳變要花2個機器周期,即24個振蕩周期,因此外部輸入的計數脈沖的最高頻率為系統振蕩器頻率的1/24。4、當定時器T0用作方式3時,由于TR1位已被T0占用,如何控制定時器T1的開啟和關閉?答:定時器T0用作方式3時,由于TR1位已被T0占用,此時通過控制位C/T切換其定時或計數器工作方式。當設置好工作方式時,定時器T1自動開始運行,若要停止,只需送入一個置定時器T1為方式3的方式字。5、已知89S51單片機系統時鐘頻率為24MHz,請利用定時器T0和P1.2輸出矩形脈沖。矩形波高電平寬度50µs,低電平寬度350µs。答:ORG 100
41、0HMOV TMOD,02H ;設置工作方式MOV TH0,09CH;設置定時器初值MOV TL0,09CHSETB TR0;啟動定時器LOOP:SETBP1.2;P1.0輸出高電平MOVR0,07HDEL:JBC TF0,REP;定時是否到?AJMP DELREP:SETBP1.2;P1.0輸出低電平DJNZR0,DELAJMP LOOPEND6、在89S51單片機中,已知時鐘頻率為12MHz,請編程使P1.0和P1.1分別輸出周期為2ms和500s的方波。答:選擇方式2,用定時器T1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBTR1L1:MOVR2,#04H
42、L2:JNBTF1,$CLRTF1,CPLP1.1DJNZR2,L2CPLP1.0LJMPL17、設系統時鐘為24MHz,試用定時器T0做外部計數器,編程實現每計到1000個脈沖,是T1開始2ms定時,定時時間到后,T0又開始計數,循環往復。答:MOVTMOD,#15H;T1定時方式1,T0計數方式1L1:MOVTH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,# HMOVTL1,# HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略9、略第六章 80C51的串行接口1、什么是串行異步通信?他有哪些特點?有哪幾種
43、幀格式?答:串行通信即所傳輸數據的各位按順序一位一位的發送或接收。串行通信分為同步和異步兩種方式。在異步通信中數據或字符是一幀一幀地傳送的。幀定義為一個字符的完整的通信格式,通常也稱為幀格式。它的主要特點:由于異步通信每傳送一幀有固定的格式,通信雙方只需按約定的幀格式來發送和接收數據,所以硬件結構比同步通信方式簡單;此外它還能利用校驗位檢測錯誤。幀格式的一般形式是先用一個起始位“0”表示字符的開始,然后是數據位,其后是奇偶校驗位,最后是停止位,用以表示字符結束。2、某異步通信接口按方式3傳送,已知其每分鐘傳送3600個字符,計算其傳送波特率。答:設每個字符由1個起始位、8個數據位、1個可編程位
44、和1個結束位組成,其傳送波特率為: 11b×3600/60s=660bps3、80C51單片機的串行口由哪些基本功能部件組成?答: 80C51單片機的串行口基本功能部件主要有:兩個數據緩沖寄存器SBUF,一個串行口控制寄存器SCON,一個輸入移位寄存器。4、80C51單片機的串行口有幾種工作方式?幾種幀格式?如何設置不同方式的波特率?答:80C51單片機的串行口有四種工作方式,由串行口控制寄存器中的SM0、SM1控制。80C51單片機的串行通信有8位、10位、11位三種幀格式。波特率設置:4種工作方式波特率的計算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可
45、變的,均由定時器T1的溢出率控制。具體計算如下:方式0:波特率固定為時鐘頻率的1/12,不受SMOD的影響。(SMOD為波特率倍增位)方式1的波特率=2SMOD/32×定時器T1的溢出率 方式2的波特率=2SMOD/64×fosc方式3的波特率=2SMOD/32×定時器T1的溢出率5、為什么定時器T1用作串行口波特率發生器時,常采用工作方式2?答:在串行通信中,收發雙方對發送或接收的數據速率(即波特率)要有一定的約定。串口有四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,有定時器T1的溢出率控制。定時器T1用作串行口波特率發生器
46、時,因為工作方式2是自動重裝載方式,因而定時器T1作波特率發生器常采用工作方式2.6、已知定時器T1設置成方式2,用作波特率發生器,系統時鐘頻率為24MHz,求可能產生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFH,TL1=0FFH波特率最高=2/32×24M/(12×(256255)bps=0.125Mbps最低波特率:TH1=00H,TL1=00H波特率最低=1/32×24M/(12×(2560)bps=244bps9、串行口異步通信時,ASCII碼“3”的字符格式(10位)如何?答:串行口異步通信時,10位的數據幀結構為:一個起始位(
47、0),8個數據位(先低位后高位),一個停止位(1)。故ASCII碼“3” 的字符格式為:0110011001B。10、若選用定時器T1作波特率發生器,設fosc=6MHz,計數初值為0FDH,SMOD=1,求波特率是多少?答:若選用定時器T1作波特率發生器,波特率由下式確定:波特率=(定時器T1溢出率)/n公式中:n為32或16,取決于特殊功能寄存器PCON中的SMOD位的狀態。若SMOD=0,則n=32。若SMOD=1,則n=16。定時器T1溢出率=定時器T1的溢出次數/秒。由題可知:fosc=6MHz,計數初值為0FDH,SMOD=1,故第七章 中斷系統1、什么是中斷?在單片機中中斷能實現
48、哪些功能?答:中斷是通過硬件來改變CPU程序運行方向。計算機在執行程序過程中,由于CPU以外的原因,有必要盡快終止當前程序的執行,而去執行相應的處理程序,待處理結束后,在回來繼續執行被終止的原程序。這種程序在執行過程中由于外界的原因而被中間打斷的情況成為“中斷”。中斷能實現的功能:(1)能實現中斷及返回。(2)能實現優先權的排隊。(3)能實現中斷的嵌套。2、什么是中斷優先級?中斷優先級處理的原則是什么?答:通常,在系統中會有多個中斷源,有時會出現兩個或更多個中斷源同時提出中斷請求的情況,這就要求計算機能區分各個中斷源的請求,有能確定首先為哪一個中斷源服務。為了解決這一問題,通常給各中斷源規定了優先級別,稱為優先權或中斷優先級。中斷優先級處理原則:兩個或兩個以上的中斷源同時提出中斷申請時,計算機首先為中斷優先權最高的中斷服務,服務結束以后,再響應級別較低的中斷源。3、80C51有幾個中斷源,各中斷標志如何產生的,又如何清“0”的?CPU響應中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB45067-2024特種設備重大事故隱患判定準則》全新解讀
- 直播策劃與運營實務(第二版) 課件全套 陳芳 項目1-8 走進直播 - 直播的全方位配合
- 2024年中級經濟師考試題庫(必刷)
- 2024年一級建造師之一建工程法規題庫附答案(綜合題)
- 語文綜合知識點測試試題及答案
- 預防人身傷害教育
- 面神經炎中醫護理個案
- 護理安全及風險防范管理
- 4種垃圾桶分類知識介紹
- 歷史-考研歷史模擬試卷2
- 食品的營養課件
- 2012年臨床執業醫師資格考試試題及答案
- 電位計算精品課件
- 35kV輸電線路工程旋挖鉆孔專項施工方案
- 人教版音樂八年紀下冊《京劇《鍘美案》選段》課件1
- 高考英語專題復習作文第1期:倡議書課件
- 中子源介紹課件
- 葡萄溝》作業
- 參考文獻的標注規范
- 武松打虎劇本
- 精品資料(2021-2022年收藏)遼寧省建筑材料檢測費標準
評論
0/150
提交評論