單片機習(xí)題課_20130609_第1頁
單片機習(xí)題課_20130609_第2頁
單片機習(xí)題課_20130609_第3頁
單片機習(xí)題課_20130609_第4頁
單片機習(xí)題課_20130609_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2.6、程序狀態(tài)字寄存器PSW的作用是什么?常用狀態(tài)標(biāo)志有哪些位?作用是什么? 答:程序狀態(tài)字PSW是8位寄存器,用于存放程序運行的狀態(tài)信息,PSW中各位狀態(tài)通常是在指令執(zhí)行的過程中自動形成的,但也可以由用戶根據(jù)需要采用傳送指令加以改變。各個標(biāo)志位的意義如下: PSW.7(Cy):進位標(biāo)志位。 PSW.6(AC):輔助進位標(biāo)志位,又稱為半進位標(biāo)志位。 PSW.5(F0):用戶標(biāo)志位。 PSW.4、PSW.3(RS1和 RS0):寄存器組選擇位。 PSW.2(OV):溢出標(biāo)志位。 PSW.1(空缺位):此位未定義。 PSW.0(P):奇偶校驗位。2.9 單片機程序存儲器的尋址范圍是多少?程序計數(shù)

2、器PC的值代表什么?程序存儲器ROM用于存放編好的程序和表格常數(shù),它以16位的程序存儲器PC作為地址指針來尋址,因此尋址空間為64KB,地址為:0000H-FFFFH.PC中的內(nèi)容是將要執(zhí)行的下一條指令的地址,因此他指示的最大容量是64KB。2.10 開機復(fù)位后,CPU使用是的哪組工作寄存器?它們的地址是什么?CPU如何確定和改變當(dāng)前工作寄存器組?答:開機復(fù)位后,CPU使用的是第0組工作寄存器。它們的地址是00H07H。CPU通過對程序狀態(tài)字PSW中RS1、RS0的設(shè)置來確定和改變當(dāng)前工作寄存器組。如:RS1、RS0為00則指向第0組;為01則指向第1組;為10則指向第2組;為11則指向第3組

3、。2.11 MCS-51單片機片內(nèi)256B的數(shù)據(jù)存儲器可分為幾個區(qū)?分別起什么作用?答:MCS-51單片機片內(nèi)數(shù)據(jù)存儲器可分為二個區(qū):00H7FH單元組成的低128B的片內(nèi)RAM區(qū)、80HFFH單元組成的高128B的專用寄存器區(qū)。其中低128B的RAM區(qū)又分為:00H1FH單元為工作寄存器區(qū)、20H2FH單元為位尋址區(qū)、30H7FH單元為用戶RAM區(qū)。工作寄存器區(qū)可作通用寄存器用,用戶RAM區(qū)可作堆棧和數(shù)據(jù)緩沖用。專用寄存器區(qū)又稱特殊功能寄存器,使用80HFFH單元。2.14、MCS-51的4個并行I/O 口在使用分工?及注意事項 P0、P1、P2、P3均可用作一般的I/O口使用,但在實際應(yīng)用

4、中,P0口和P2口多用于構(gòu)建系統(tǒng)的數(shù)據(jù)總線和地址總線。具體來講,P0口用作構(gòu)建高8位數(shù)據(jù)總線和低8位地址總線,而P2口用于構(gòu)建高8位地址總線。至于P3口,多發(fā)揮其第二功能的作用。真正用作一般I/O口的往往是P1口。注意事項:注意事項:(1 )P3口用作第二功能輸出信號時,也應(yīng)先把對應(yīng)的鎖存口用作第二功能輸出信號時,也應(yīng)先把對應(yīng)的鎖存器置器置1(2)作為輸入口使用,必須先寫1,再讀引腳狀態(tài)。 (3)由于P0口為內(nèi)置場效應(yīng)管上拉,作為輸出口時,上拉的場效應(yīng)截止,輸出引腳與電源Vcc之間呈現(xiàn)開路狀態(tài),因此,為了保證輸出口能夠輸出標(biāo)準(zhǔn)的高低電平,其輸出引腳應(yīng)上拉電阻。2.17、什么是單片機的機器周期、

5、狀態(tài)周期、振蕩周期和指令周期?它們之間是什么關(guān)系? 答:某條指令的執(zhí)行周期由若干個機器周期(簡稱M周期)構(gòu)成,一個機器周期包含6個狀態(tài)周期(又稱時鐘周期,簡稱S周期),而一個狀態(tài)周期又包含兩個振蕩周期(P1和P2,簡稱P周期)。也就是說,指令執(zhí)行周期有長有短,但一個機器周期恒等于6個狀態(tài)周期或12個振蕩周期,即1M=6S=12P。第3章3.6使內(nèi)部30H的內(nèi)容與外部1200H單元的內(nèi)容進行交換。 MOV 40H,30H ;備份30HMOV DPTR,#1200H MOVX A,DPTR MOV 30H,AMOV A ,40H MOVX DPTR,A 3.7 已知X=15 試編程計算(X+20)

6、*10, 并將計算結(jié)果存入片內(nèi)RAM 40H開始的單元內(nèi),低位字節(jié)在前,高位字節(jié)在后(要求首先將題目中的十進制數(shù)全部轉(zhuǎn)換成16進制數(shù)再編程序)。程序清單如下: ORG0030HSTART: MOVA, #0FH ;(A)X ADD A,#14H; MOV B,#0AHMUL A,B MOV 41H, B ;(41H)A*B的高字節(jié) MOV 40H, A ;(40H)A*B的低字節(jié) SJMP$習(xí)題3.9:試編寫一段程序,將30H開始的10個單元的內(nèi)容傳送到50H開始的10個單元中去。MOV R2,#0AHMOV R0,#30HMOV R1,#50HLOOP:MOV A,R0MOV R1,AINC

7、R0INCR1DJNZ R2,LOOPSJMP $10習(xí)題3.11:試編寫一段程序,使P1口交替輸出高、低電平,中間要有一定的延時,并不斷循環(huán)。要求將延時部分作為子程序。START: MOV A,#0FFH ;讓ACC的內(nèi)容為11111111LOOP: MOV P1,A ;讓P1口輸出ACC的內(nèi)容CALL DELAY ;調(diào)用延時子程序CPL A LJMP LOOP ;跳到LOOP處執(zhí)行=0.1s延時子程序(12MHz晶振): DELAY: MOV R7,#200 ;單周期指令(1us)D1: MOV R6,#250 ;單周期指令(1us) DJNZ R6,$ ;雙周期指令(2us)/該指令自身

8、執(zhí)行R6次 DJNZ R7,D1 ;雙周期指令(2us)/D1執(zhí)行R7次 RET ;雙周期指令(2us)T=1+(1+2*R6+2)*R7+2 =100603us 0.1s11習(xí)題3.12:試編寫一段程序,要求從P1.0到P1.7依次輸出高電平,中間要有一定的延時,并不斷循環(huán)。要求將延時部分作為子程序。START: MOV A,#0FEH ;讓ACC的內(nèi)容為11111110LOOP: MOV P1,A ;讓P1口輸出ACC的內(nèi)容 RR A ;讓ACC的內(nèi)容左移 CALL DELAY ;調(diào)用延時子程序 LJMP LOOP ;跳到LOOP處執(zhí)行=0.1s延時子程序(12MHz晶振): DELAY:

9、 MOV R7,#200 ;單周期指令(1us)D1: MOV R6,#250 ;單周期指令(1us) DJNZ R6,$ ;雙周期指令(2us)/該指令自身執(zhí)行R6次 DJNZ R7,D1 ;雙周期指令(2us)/D1執(zhí)行R7次 RET ;雙周期指令(2us)T=1+(1+2*R6+2)*R7+2 =100603us 0.1s12習(xí)題3.13:已知在內(nèi)部RAM30H34H中存放著5個無符號數(shù),試編寫一段程序,找出其中最大的數(shù),將它存放于35H處。 MOV R2,#04H ; 循環(huán)次數(shù) MOV R0,#30H ;片內(nèi)ram初始地址 MOV A,R0 ;A存放最大值 SUB: INC R0 ;取

10、下一個地址的數(shù)據(jù) MOV B,R0 CJNE A,B,NEXT ;不等則轉(zhuǎn) NEXT: JC NEXT1 ;如果A小于B,則轉(zhuǎn)NEXT1 DJNZ R2,SUB ;A大于等于B,則循環(huán)次數(shù)減一,轉(zhuǎn)到sub循環(huán)JMP LAST ;循環(huán)結(jié)束后,存放最大值 NEXT1: MOV A,B ;A小于b,則將b賦值給a,a始終存放最大數(shù) DJNZ R2,SUB ;循環(huán)次數(shù)減一,轉(zhuǎn)到sub循環(huán) JMP LAST ;循環(huán)結(jié)束后,存放最大值 LAST: MOV 35H,A ;將最大值存入35h SJMP $13習(xí)題3.14:試編寫一段程序,將存放于外部RAM1000H起的10個無符號數(shù)相加,并將結(jié)果存放在內(nèi)部R

11、AM的60H(低位)和61H(高位)單元中。MOVR2,#0AHMOVDPTR,#1000HMOV60H,#0MOV61H,#0LOOP: MOVX A,DPTRADDA,60HJNCNEXTINC61HNEXT:MOV60H,AINCDPTRDJNZR2,LOOPSJMP$1415 (1)計算計數(shù)初始值 因為系統(tǒng)的晶振頻率為 ,則機器周期 。周期10us 設(shè)計數(shù)初始值為X: (2)設(shè)置工作方式 方式0:M1M0=00; 定時器模式: ; 定時/計數(shù)器啟動不受外部控制: GATE=0; 因此,(TMOD)=00H。MHz12oscfs112oscMfTususTtX152213Md130TC/

12、4.7 編程用定時的方法,在P1.0口上產(chǎn)生頻率為100Khz的方波,設(shè)單片機的晶振為12Mhz。第4章程序清單(中斷編程): ORG 0000H LJMP MAIN ORG 000BH LJMP CTC0 ORG 0030H MAIN:MOV TMOD,#02H MOV TL1,#251 MOV TH1,#251 SETB EA SETB ET0 SETB TR0 SJMP $ CTC0:CPL P1.0 RETI1617 例9:設(shè)MCS-51單片機系統(tǒng)時鐘頻率為6MHZ,請利用定時/計數(shù)器產(chǎn)生1秒的定時。使指示燈以1秒為間隔閃爍。 解:MCS-51單片機的定時/計數(shù)器T0和T1作為定時/計

13、數(shù)器使用時,所得到的定時時間比較短,當(dāng)系統(tǒng)晶振頻率為6MHz時,最長的延時時間約為131ms(方式1)。因此,直接由定時/計數(shù)器定時無法實現(xiàn)這么長時間的延時。18 方法一:采用2個定時/計數(shù)器聯(lián)合使用的方案實現(xiàn)1秒 的定時。 首先采用定時/計數(shù)器T0以方式1產(chǎn)生100ms的定時,從P1.0引腳輸出周期為200ms的連續(xù)方波信號。然后,把此信號作為定時/計數(shù)器T1的外部計數(shù)輸入信號輸入到引腳T1(P3.5),設(shè)置T1為計數(shù)模式,以方式2計數(shù),T1計數(shù)5次即可實現(xiàn)1秒的定時。指示燈L由P1.2控制。5.4 定時器/計數(shù)器的編程應(yīng)用舉例19 (2)計數(shù)初始值計算 單片機系統(tǒng)的晶振頻率為6MHz,需要

14、定時100ms,定時/計數(shù)器T0的計數(shù)初始值X1為: 轉(zhuǎn)換為二進制數(shù)X1 3CB0H。 對于定時/計數(shù)器T1來說,每計數(shù)5次需要計數(shù)器溢出,采用方式2時,計數(shù)初始值為: ,轉(zhuǎn)換為二進制數(shù)。 1553621010021316XFBH02X5.4 定時器/計數(shù)器的編程應(yīng)用舉例20P1.2P1.0T18051RL產(chǎn)生1秒定時及指示燈驅(qū)動顯示的原理5.4 定時器/計數(shù)器的編程應(yīng)用舉例21例4.4 利用定時器T1的工作方式2對外部信號計數(shù),要求每計滿100次,將P1.0端狀態(tài)取反。編寫程序如下:ORG0000HAJMPMAINORG000BHCPLP1.1ORG001BHCPLP1.0RETIMAIN:

15、SETB EA SETB IT0SETB IT1MOVTMOD,#61H;T0 定時,t1計數(shù)MOVTH1,#9CHMOVTL1,#9CHMOVTH0,#9CHMOVTL0,#9CHSETBTR1SETBTR0SJMP$22 方法二:采用定時/計數(shù)器T0以方式1定時100ms,定時/計數(shù)器T0溢出10次后,即可實現(xiàn)1秒的定時。 這種方法的優(yōu)點在于節(jié)省了MCS-51單片機寶貴的定時/計數(shù)器資源,用存儲單元作為計數(shù)器。當(dāng)實現(xiàn)較長時間的延時時,延時時間為定時/計數(shù)器溢出次數(shù)乘以它的定時時間。 5.4 定時器/計數(shù)器的編程應(yīng)用舉例23ORG0000HAJMPMAINORG000BHAJMP T0INT

16、ORG001BHCPLP1.0RETIMAIN: SETB EA SETB IT0SETB IT1MOVTMOD,#01H;T0 定時MOVTH0,#XXHMOVTL0,#XXH MOV A,#00H; MOV R0,#00HSETBTR1SETBTR0SJMP$T0INT: INC ACJNE A,#0AH,EXITCPL P1.0 MOV A,#00H; INC R0 CJNE R0,#60,EXIT CPL P1.1 MOV R0,#00HEXIT: MOV TH0,#XXHMOVTL0,#XXHRETI第5章5.1 MCS-51單片機進行系統(tǒng)擴展時要使用哪些總線?請說明各總線的構(gòu)成。2

17、425答: 單片機系統(tǒng)的擴展是建立在地址總線(AB)、數(shù)據(jù)總線(DB)和控制總線(CB)基礎(chǔ)上的。1、數(shù)據(jù)總線(DB): P0口作為數(shù)據(jù)總線。傳送數(shù)據(jù),雙向,CPU的位數(shù)和外部數(shù)據(jù)總線的位數(shù)一致。而數(shù)據(jù)可能是指令代碼、狀態(tài)量或控制量,也可能是真正的數(shù)據(jù)。2、地址總線(AB): 傳送CPU發(fā)出的地址信息,單向,寬度為16位,由P0口作為低八位地址總線,P2口作為高八位地址總線3、控制總線(CB): 傳送使微機協(xié)調(diào)工作的定時、控制信號,雙向,但對于每一條具體的控制線,都有固定的功能。MCS-51單片機與擴展相關(guān)的控制總線如下: (1)ALE用來實現(xiàn)低8位地址的鎖存。 (2) EA 外部程序存儲器選

18、擇控制信號。 (3)PSEN擴展外部程序存儲器讀控制信號。 (4)WR擴展的外部數(shù)據(jù)存儲器和外部I/O口的寫控制信號,是P3.6的第2功能,單片機輸出的信號; (5)RD擴展的外部數(shù)據(jù)存儲器和外部I/O的讀控制信號,是P3.7的第2功能,單片機輸出的信號。 5.3程序存儲器與外部數(shù)據(jù)存儲器使用同一地址總線,且地址范圍相同,為什么訪問這兩個存儲器空間的時候不會發(fā)生沖突?解:程序存儲器與外部數(shù)據(jù)存儲器使用同一地址總線,它們的地址空間是完全重疊的,但由于單片機對兩種存儲器設(shè)計了兩種不同的控制信號和指令,故不會發(fā)生地址沖突。單片機訪問外部程序存儲器時,使用PSEN控制對外部程序存儲器單元的讀取操作,即使程序存儲器和數(shù)據(jù)存儲器的單元地址完全相同,也不會造成訪問沖突。讀取外部數(shù)據(jù)存儲器由下列指令實現(xiàn)MOVX。讀取程序存儲器由下列指令實現(xiàn)MOVC。 26第6章27 6.3 LED數(shù)碼顯示器的靜態(tài)顯示和動態(tài)顯示各有什么特點?靜態(tài)顯示靜態(tài)顯示的優(yōu)點是顯示程序簡單,顯示亮度高且穩(wěn)定,不刷新顯示內(nèi)容時不需CPU干預(yù),可節(jié)約CPU時間。但缺點是顯示位數(shù)較多需要占用較多的系統(tǒng)口線,而擴展IO口線將提高硬件成本。故靜態(tài)顯示一般用于顯示位數(shù)較少的系統(tǒng)中。動態(tài)顯示動態(tài)顯示雖然電路簡單,但是程序較復(fù)雜。實際使用時,要在主程序中反復(fù)調(diào)用顯示子

溫馨提示

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

評論

0/150

提交評論