C51單片機(jī)一看就會(huì)的精品課件_第1頁(yè)
C51單片機(jī)一看就會(huì)的精品課件_第2頁(yè)
C51單片機(jī)一看就會(huì)的精品課件_第3頁(yè)
C51單片機(jī)一看就會(huì)的精品課件_第4頁(yè)
C51單片機(jī)一看就會(huì)的精品課件_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第10章 單片機(jī)系統(tǒng)開(kāi)發(fā),教學(xué)目標(biāo) 10.1 單片機(jī)系統(tǒng)設(shè)計(jì)步驟 10.2 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)工具 10.3 單片機(jī)開(kāi)發(fā)系統(tǒng)應(yīng)用實(shí)例 10.4 課程設(shè)計(jì) 本章小結(jié) 思考題與習(xí)題,1. 了解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的過(guò)程和要求;知道單片機(jī)應(yīng)用系統(tǒng)硬件設(shè)計(jì)的內(nèi)容和要求;知道單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)的步驟和要求;理解軟件設(shè)計(jì)與硬件設(shè)計(jì)的關(guān)系。 2. 了解單片機(jī)開(kāi)發(fā)工具的主要作用;了解單片機(jī)開(kāi)發(fā)系統(tǒng)的分類;知道單片機(jī)開(kāi)發(fā)系統(tǒng)的功能;理解單片機(jī)應(yīng)用系統(tǒng)軟、硬件調(diào)試的方法。,教學(xué)目標(biāo),3. 理解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例:數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì)、數(shù)字式音樂(lè)盒設(shè)計(jì)設(shè)計(jì)步驟、設(shè)計(jì)方案、硬件設(shè)計(jì)、軟件設(shè)計(jì)等知識(shí)。舉一反三

2、,具備簡(jiǎn)單常用單片機(jī)系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)能力。,10.1 單片機(jī)系統(tǒng)設(shè)計(jì)步驟,一個(gè)完備的單片機(jī)應(yīng)用系統(tǒng)包括硬件和軟件兩大部分,硬件是軀體,軟件是靈魂。只有系統(tǒng)的軟、硬件緊密配合、協(xié)調(diào)一致才能發(fā)揮其高性能作用。在單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程中,涉及多種開(kāi)發(fā)技術(shù)和工具,需要反復(fù)修改調(diào)整軟、硬件,以便盡可能提高系統(tǒng)的工作效率。 單片機(jī)應(yīng)用系統(tǒng)的功能不同,其硬件和軟件結(jié)構(gòu)也不相同,但研制、開(kāi)發(fā)的方法和步驟基本一致。,10.1.1 總體設(shè)計(jì),1. 可行性調(diào)研 可行性調(diào)研的目的,是分析完成該項(xiàng)目的可能性。進(jìn)行這方面的工作,可參考國(guó)內(nèi)外有關(guān)資料,看是否有人進(jìn)行過(guò)類似的工作。如果有,則可分析他人是如何進(jìn)行的,有什么優(yōu)缺

3、點(diǎn),有何值得借鑒的地方;如果沒(méi)有,則需作進(jìn)一步的研究,此時(shí)的重點(diǎn)應(yīng)放在能否實(shí)現(xiàn)目標(biāo)這個(gè)環(huán)節(jié),首先從理論上進(jìn)行分析,探討實(shí)現(xiàn)的可能性,所,要求的客觀條件是否具備(環(huán)境、測(cè)試手段、儀器設(shè)備、資金、人員等),然后結(jié)合實(shí)際情況,確定能否立項(xiàng)的問(wèn)題。,2. 擬制設(shè)計(jì)任務(wù)書 設(shè)計(jì)者首先應(yīng)對(duì)系統(tǒng)的任務(wù)、控制對(duì)象、工作環(huán)境作周密的調(diào)查研究,必要時(shí)還要勘察工業(yè)現(xiàn)場(chǎng),明確系統(tǒng)的各項(xiàng)指標(biāo)。進(jìn)而編寫設(shè)計(jì)任務(wù)書,整個(gè)系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)都要圍繞著如何達(dá)到技術(shù)指標(biāo)來(lái)進(jìn)行。,3. 建立數(shù)學(xué)模型 設(shè)計(jì)任務(wù)書擬定后,接下來(lái)應(yīng)對(duì)被控對(duì)象的物理過(guò)程和計(jì)算任務(wù)進(jìn)行全面分析,并從中抽象出數(shù)學(xué)表達(dá)式,即建立數(shù)學(xué)模型。數(shù)學(xué)模型的形式是多種多樣的

4、,可以是一系列的數(shù)學(xué)表達(dá)式,可以是數(shù)學(xué)推理和判斷,也可以是運(yùn)行狀態(tài)的模擬等。數(shù)學(xué)模型要能真實(shí)描述客觀控制過(guò)程,要精確而簡(jiǎn)單。,4. 總體方案設(shè)計(jì),在上述基礎(chǔ)上,對(duì)系統(tǒng)各部分構(gòu)成進(jìn)行總體規(guī)劃。主要考慮以下幾個(gè)問(wèn)題: 系統(tǒng)組成:根據(jù)系統(tǒng)功能,確定系統(tǒng)主要由哪些功能模塊構(gòu)成:如鍵盤、顯示、輸入/輸出通道、通信等。 單片機(jī)選型:根據(jù)系統(tǒng)的精度和速度要求合理選擇單片機(jī)機(jī)型??梢跃C合考慮單片機(jī)的實(shí)用性、性價(jià)比、開(kāi)發(fā)工具和研發(fā)人員的熟悉程,等方面因素。 軟硬件功能分配:確定哪些功能由硬件實(shí)現(xiàn),哪些功能由軟件完成。在不影響系統(tǒng)技術(shù)指標(biāo)的前提下,提倡盡量用軟件實(shí)現(xiàn)。,10.1.2 硬件設(shè)計(jì),根據(jù)總體方案畫出硬件

5、電路原理圖,然后在單片機(jī)開(kāi)發(fā)儀或?qū)嶒?yàn)板上搭出電路,并且在調(diào)試和運(yùn)行軟件中隨時(shí)加以修改和補(bǔ)充,最后制作印制電路板并裝成樣機(jī)。,為使硬件設(shè)計(jì)合理,系統(tǒng)的電路設(shè)計(jì)應(yīng)注意以下幾個(gè)方面: 盡可能選擇標(biāo)準(zhǔn)化、模塊化的典型電路,提高設(shè)計(jì)的成功率和結(jié)構(gòu)的靈活性。,盡量選用功能強(qiáng)、集成度高的電路或芯片。 選擇通用性強(qiáng)、市場(chǎng)貨源充足的元器件。 系統(tǒng)擴(kuò)展及各功能模塊在設(shè)計(jì)滿足應(yīng)用系統(tǒng)功能要求基礎(chǔ)上,應(yīng)適當(dāng)留有余地。 盡量采用新技術(shù)。 充分考慮各部分的驅(qū)動(dòng)能力。 系統(tǒng)的抗干擾設(shè)計(jì)。,10.1.3 軟件設(shè)計(jì),在進(jìn)行應(yīng)用系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相互結(jié)合。當(dāng)系統(tǒng)硬件電路確定后,軟件的任務(wù)也就明確了。

6、 系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計(jì)的。一般地講,軟件的功能可分為兩大類:一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量、計(jì)算、顯示、打印、輸出控制等;另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系,統(tǒng)軟件中充當(dāng)組織調(diào)度角色。由于應(yīng)用系統(tǒng)種類繁多,程序編制者風(fēng)格不一,因此應(yīng)用軟件因系統(tǒng)而異。盡管如此,作為優(yōu)秀的系統(tǒng)軟件還是有其共同點(diǎn)及規(guī)律的。,1. 程序的總體設(shè)計(jì) 程序總體設(shè)計(jì)是指從系統(tǒng)的高度考慮程序結(jié)構(gòu)、數(shù)據(jù)形式和程序功能的實(shí)現(xiàn)方法和手段。,在擬定總體設(shè)計(jì)方案時(shí),設(shè)計(jì)者必須合理選擇切合實(shí)際的程序設(shè)計(jì)方法。常用的程序設(shè)計(jì)方法有三種:, 模塊化程序設(shè)計(jì):把一個(gè)復(fù)雜的應(yīng)用程

7、序按整體功能劃分成若干相對(duì)獨(dú)立的程序模塊,各模塊可以單獨(dú)設(shè)計(jì)、編程、調(diào)試,然后裝配起來(lái)聯(lián)調(diào),最終成為一個(gè)有實(shí)用價(jià)值的程序。, 結(jié)構(gòu)化程序設(shè)計(jì):在編程過(guò)程中,對(duì)程序結(jié)構(gòu)進(jìn)行適當(dāng)限制,特別是限制轉(zhuǎn)移指令的使用,用于控制程序的復(fù)雜程序,使程序上下文與執(zhí)行流程保持一致。這是一種比較理想的程序設(shè)計(jì)方法。, 自頂向下程序設(shè)計(jì):從系統(tǒng)一級(jí)的主干程序開(kāi)始,集中精力解決全局問(wèn)題,然后層層細(xì)化逐步求精,最終完成一個(gè)復(fù)雜的程序。,2. 畫程序流程圖 不論采用哪種設(shè)計(jì)方法,程序總體結(jié)構(gòu)確定后,應(yīng)結(jié)合數(shù)學(xué)模型確立各子任務(wù)的具體算法和步驟,畫出流程圖,以方便程序編寫。,3. 程序的編制 在開(kāi)始編寫程序之前,應(yīng)先對(duì)程序地址

8、空間的分配、工作寄存器的安排、數(shù)據(jù)結(jié)構(gòu)、端口地址等進(jìn)行分配。然后再根據(jù)程序流程圖用匯編語(yǔ)言或其他高級(jí)語(yǔ)言編寫程序。,4. 程序的檢查和修改 上機(jī)調(diào)試前,可借助一定的編譯軟件對(duì)程序中的語(yǔ)法錯(cuò)誤查找出來(lái)并修改。,10.1.4 系統(tǒng)的調(diào)試與運(yùn)行,調(diào)試包括硬件調(diào)試、軟件調(diào)試和系統(tǒng)聯(lián)調(diào)。調(diào)試通過(guò)后還要進(jìn)行一段時(shí)間的試運(yùn)行,以驗(yàn)證系統(tǒng)能否經(jīng)受實(shí)際環(huán)境的考驗(yàn)。經(jīng)過(guò)一段時(shí)間的試運(yùn)行就可投入正式運(yùn)行,在正式運(yùn)行中還要建立一套健全的維護(hù)制度,以確保系統(tǒng)的正常工作。,10.2 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)工具,1. 單片機(jī)開(kāi)發(fā)系統(tǒng)的功能 在線仿真功能; 系統(tǒng)調(diào)試功能; 軟件輔助設(shè)計(jì)功能; 程序固化功能。,2. 開(kāi)發(fā)系統(tǒng)的類型

9、 通用型單片機(jī)開(kāi)發(fā)系統(tǒng); 實(shí)用型開(kāi)發(fā)系統(tǒng); 通用機(jī)開(kāi)發(fā)系統(tǒng); 模擬開(kāi)發(fā)系統(tǒng)。,10.3.1 數(shù)碼管數(shù)字時(shí)鐘電路的設(shè)計(jì),1. 設(shè)計(jì)要求 (1) 以AT89C51單片機(jī)為核心器件,構(gòu)成一個(gè)數(shù)字式電子時(shí)鐘。 (2) 用6位數(shù)碼管分別顯示時(shí)、分、秒,采用24小時(shí)計(jì)時(shí)方式。 (3) 時(shí)鐘具有顯示時(shí)間、調(diào)整時(shí)間、省電狀態(tài)(數(shù)碼管不亮,時(shí)鐘不停)三種功能。,10.3 單片機(jī)開(kāi)發(fā)系統(tǒng)應(yīng)用實(shí)例,2. 總體設(shè)計(jì) (1) 6位數(shù)碼管采用動(dòng)態(tài)顯示方式,段選線用P1口控制,位選線用P2口低6位控制。 (2) 功能鍵由P2.7引入。 (3) 為節(jié)省硬件,采用定時(shí)計(jì)數(shù)器產(chǎn)生時(shí)間基準(zhǔn)。,3. 硬件設(shè)計(jì) 根據(jù)總體設(shè)計(jì),硬件電路

10、框圖如圖10.1所示。,硬件電路由4部分組成:?jiǎn)纹瑱C(jī)、時(shí)鐘與復(fù)位電路、LED顯示及驅(qū)動(dòng)電路、按鍵輸入電路。 電路原理圖如下:,4. 軟件設(shè)計(jì),片內(nèi)RAM 50H55H作為顯示緩沖區(qū),共6個(gè)單元分別存放秒、分、時(shí)的BCD碼個(gè)位在低地址單元,十位在高地址單元。時(shí)鐘的基本單位為秒,定時(shí)器T0定時(shí)50ms,定時(shí)20次即為1S。秒、分逢60進(jìn)位,時(shí)逢24回零。 按鍵具有以下功能:當(dāng)按下時(shí)間小于1S,進(jìn)入省電狀態(tài)(時(shí)鐘繼續(xù)運(yùn)行,但不顯示);按下時(shí)間大于1S,進(jìn)入調(diào)分狀態(tài),時(shí)鐘停止,等待繼,續(xù)按鍵,若再次按鍵時(shí)間小于0.5S,分加1;若大于0.5S,進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,按鍵時(shí)間小于0.5S,

11、時(shí)加1,若大于0.5S,退出時(shí)鐘調(diào)整,時(shí)鐘按新設(shè)置的時(shí)間運(yùn)行。 在時(shí)鐘調(diào)整狀態(tài)下,當(dāng)前被調(diào)整的時(shí)間每0.3S閃爍顯示,定時(shí)器T1定時(shí)閃爍時(shí)間間隔0.3S。,(1) 主程序設(shè)計(jì) 主程序流程圖如下:,圖10.3 主程序流程圖,主程序如下: ORG 0000H AJMP MAINT ORG 000BH AJMP INT01 ORG 001BH AJMP INT11 MAINT:MOV R0,#7FH CLR A WZ1: MOV R0,A DJNZ R0,WZ1,MOV SP,#30H MOV 5AH,#0AH MOV TMOD,#11H MOV TL0,#0B0H MOV TH0,#3CH MOV

12、 TL1,#0B0H MOV TH1,#3CH SETB EA SETB ET0 SETB TR0 MOV R4,#14H,MAINT1:LCALL XZCX JNB P2.7,SJTZ0 SJMP MAINT1 SJTZ0: LCALL XSZCX JNB P2.7,SJTZ1 SJMP MAINT1 SJTZ1: CLR ET0 CLR TR0 LCALL YS1S JB P2.7, KMTES MOV R2, #06H,SETB ET1 SETB TR1 XYZ2: JNB P2.7, XYZ1 CLR 01H XYZ4: JB P2.7, XYZ3 LCALL YS05S JNB P2

13、.7, XYZHH MOV R0, #53H LCALL ADD1 MOV A, R3 CLR C,CJNE A, #60H, QWE QWE: JC XYZ4 CLR A MOV R0, A DEC R0 MOV R0, A CLR C AJMP XYZ4 KMTES: SETB ET0 SETB TR0 KMA: JB P2.7, $,LCALL XSZCX JB P2.7, KMA KMA1: JNB P2.7,$ LJMP MAINT1 XYZHH: JNB P2.7, XYZ5 SETB 01H XYZ6: JB P2.7, XYZ7 LCALL YS05S JNB P2.7, XY

14、ZOUT MOV R0, #55H LCALL ADD1,MVO A, R3 CLR C CJNE A, #24H, KMB1 KMB1: JC XYZ6 CLR A MOV R0, A DEC R0 MOV R0, A AJMP XYZ6 XYZOUT: JNB P2.7, XYZOUT1 LCALL XSZCX,JNB P2.7,XYZOUT MOV 20H,#00H MOV 56H,52H MOV 57H,53H MOV 58H,54H MOV 59H,55H CLR TR1 CLR ET1 SETB TR0 SETB ET0 LJMP MAINT1,XYZ1: LCALL XSZCX

15、AJMP XYZ2 XYZ3: LCALL XSZCX AJMP XYZ4 XYZ5: LCALL XSZCX AJMP XYZHH XYZ7: LCALL XSZCX AJMP XYZ6 XYZOUT1: LCALL XSZCX AJMP XYZOUT,(2) 顯示子程序設(shè)計(jì) XSZCX: MOV R1, #50H MOV R5, #0FEH MAXY: MOV A, R5 MOV P2, A MOV A, R1 MOV DPTR, #ABC MOVC A, A+DPTR MOV P1, A LCALL YS1MS INC R1,MOV A, R5 JNB ACC.5, ENDOUT RL

16、A MOV R5, A AJMP MAXY ENDOUT: MOV P2, #0FFH MOV P1, #0FFH RET,(3) T0中斷服務(wù)程序設(shè)計(jì) INT01: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV A, #0B7H ADD A, TL0 MOV TL0, A MOV A, #3CH ADDC A, TH0 MOV TH0, A,SETB TR0 DJNZ R4, INT0U AD1: MOV R4, #14H MOV R0, #51H LCALL ADD1 MOV A, R3 CLR C CJNE A, #60H, AD2 AD2: JC INT0

17、U CLR A MOV R0, A,DEC R0 MOV R0, A MOV R0, #57H ACALL ADD1 MOV A, R3 CLR C CJNE A, #60H, AD3 AD3:JC INT0U CLR A MOV R0, A DEC R0,MOV R0, A MOV R0, #59H ACALL ADD1 MOV A, R3 CLR C CJNE A, #24H, AD4 AD4: JC INT0U CLR A MOV R0, A DEC R0 MOV R0, A,INT0U: MOV 52H, 56H MOV 53H, 57H MOV 54H, 58H MOV 55H, 5

18、9H POP PSW POP ACC SETB ET0 RETI,(4) T1中斷服務(wù)程序設(shè)計(jì) INT11: PUSH ACC PUSH PSW MOV TL1, #0B0H MOV TH1, #3CH DJNZ R2, INT1U MOV R2, #06H CPL 02H JB 02H, CCC1 MOV 52H, 56H MOV 53H, 57H,MOV 54H, 58H MOV 55H, 59H INT1U: POP PSW POP ACC RETI CCC1: JB 01H, CCC2 MOV 52H, 5AH MOV 53H, 5AH MOV 54H, 58H MOV 55H, 59

19、H AJMP INT1U,CCC2: MOV 52H, 56H MOV 53H, 57H MOV 54H, 5AH MOV 55H, 5AH AJMP INT1U,(5) 加1子程序 ADD1: MOV A, R0 DEC R0 SWAP A ORL A, R0,ADD A,#01H DA A MOV R3,A ANL A,#0FH MOV R0,A MOV A,R3 INC R0 SWAP A ANL A,#0FH MOV R0,A RET,(6) 延時(shí)子程序 YS1MS: MOV R6,#14H YS1: MOV R7,#19H YS2: DJNZ R7,YS2 DJNZ R6,YS1 R

20、ET YS1S: LCALL YS05S LCALL YS05S RET,YS05S: MOV R3, #51H YS05S1: LCALL XSZCX DJNZ R3, YS05S1 RET ABC: DB 0C0H, 0F9H, 0A4H DB 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 90H, 0FFH END,點(diǎn)擊觀看仿真演示,10.3.2 數(shù)字式音樂(lè)盒設(shè)計(jì),本節(jié)以一個(gè)音樂(lè)盒為例,通過(guò)設(shè)計(jì)一個(gè)音樂(lè)盒,了解用單片機(jī)產(chǎn)生音頻的方法及音樂(lè)程序的設(shè)計(jì)。 音樂(lè)盒的音符范圍:C調(diào)低音1高音7,內(nèi)部存儲(chǔ)一首歌曲,循環(huán)播放。,1. 基本樂(lè)理知識(shí) 在音樂(lè)中使用的各個(gè)固定頻率的音

21、叫音級(jí),常用符號(hào)C、D、E、F、G、A、B表示。兩音之間音高的距離叫音程。表12-1列出C調(diào)高、中、低音對(duì)應(yīng)的頻率值。 樂(lè)曲即是由不同的音符組成的,而每個(gè)音符都有其特定的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了。音符頻率,的產(chǎn)生可以使用定時(shí)計(jì)數(shù)器產(chǎn)生 ,T0工作于定時(shí)方式1,晶振為12MHz。則T0定時(shí)時(shí)間為某音符周期的1/2,定時(shí)時(shí)間到則將輸出取反,就可以得到固定頻率的方波信號(hào)。 低音1:頻率=262,定時(shí)時(shí)間=T/2=1/2*262(S) T0初值=65536-1000000/52463628。 低音2:頻率=294,定時(shí)時(shí)間=T/2=1/2*294(S) T0

22、初值=65536-1000000/58863835。,2. 總體設(shè)計(jì) 選擇AT89C2051單片機(jī),通過(guò)T0的定時(shí)中斷,配合P3.0引腳輸出音頻頻率。P3.0引腳輸出,經(jīng)音頻放大后接揚(yáng)聲器。系統(tǒng)組成框圖如圖10.4所示。,音符持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。1/8拍=0.05s,1/4拍=0.1s,以此類推,1拍就是0.4S。 節(jié)拍的產(chǎn)生,可以用定時(shí)器T1或延時(shí)方法產(chǎn)生,以1/8拍為基準(zhǔn)。若某個(gè)音符節(jié)拍為1/4拍,則延時(shí)兩次即可。,3. 硬件設(shè)計(jì) 電路原理圖如下:,4. 軟件設(shè)計(jì) 為了產(chǎn)生音頻信號(hào),需先對(duì)音符進(jìn)行編碼。在程序中安排一張定時(shí)初值表,程序通過(guò)音符編碼查表得到對(duì)應(yīng)的定時(shí)初值。編

23、碼如下表所示。,以1/8拍為延時(shí)單位,對(duì)節(jié)拍也進(jìn)行編碼如下。,有了上述兩張編碼表,任何一首樂(lè)曲都可以用其編碼來(lái)表示。例如:生日快樂(lè)歌曲譜如下: C 1=3/4,對(duì)此進(jìn)行編碼,音符編碼在前,節(jié)拍編碼在后,得曲譜簡(jiǎn)碼表如下: SONG:DB 0CH,04H,00H,02H,0CH,02H,0DH,08H DB 0CH,08H, 0FH,08H,0EH,08H,00H,08H,0CH DB 04H,00H,02H,0CH,02H,0DH,08H,0CH,08H DB 10H,08H, 0FH,08H,00H,08H,0CH,04H,00H DB 02H,0CH,02H,13H,08H,11H,08H

24、,0FH,08H DB 0EH,08H,0DH,08H,12H,04H,00H,02H,12H DB 02H,11H, 08H,0FH,08H,10H,08H,0FH,08H DB 00H,08H,0FFH ;結(jié)束符,(1) 主程序框圖,(2) T0中斷服務(wù)程序框圖,圖10.6 主程序與中斷服務(wù)程序框圖,程序清單:,ORG 0000H LJMP MUSIC ORG 000BH LJMP SERT0 ORG 0030H MUSIC: MOV TMOD,#01H ; T0定時(shí)方式1 SETB EA SETB ET0 ; 開(kāi)T0中斷 SETB P3.0 ; 不發(fā)音,STA: MOV 30H,#00H

25、 ;簡(jiǎn)碼指針清0 NEXT:MOV DPTR,#SONG ;DPTR指向簡(jiǎn)碼表首址 MOV A,30H ;簡(jiǎn)碼指針?biāo)虯 INC 30H ;指針加1,指向節(jié)拍碼 MOVC A,A+DPTR ;取簡(jiǎn)碼 MOV R2,A ;暫存簡(jiǎn)碼 CPL A JNZ NEXT1 ;簡(jiǎn)碼結(jié)束否? CLR TR0 ;T0停止 SJMP STA,NEXT1:MOV A, R2 ; 簡(jiǎn)碼送A JNZ SING ; 是發(fā)音符,轉(zhuǎn)SING CLR TR0 ; 不發(fā)音 SJMP D1 ; 轉(zhuǎn)節(jié)拍控制 SING: DEC A ; 根據(jù)音符碼取定時(shí)初值 RL A MOV 22H, A MOV DPTR, #STAB MOVC A,

26、 A+DPTR MOV TH0, A ;送高字節(jié)定時(shí)初值,MOV 21H,A ;保存至21H MOV A,22H INC A MOVC A,A+DPTR MOV TL0,A ;送低字節(jié)定時(shí)初值 MOV 20H,A ;保存 SETB ET0 ;開(kāi)T0中斷 SETB TR0 ;啟動(dòng)T0 D1:MOV A,30H ;簡(jiǎn)碼指針?biāo)虯 INC 30H ;簡(jiǎn)碼指針加1,指向下一簡(jiǎn)碼 MOV DPTR,#SONG,MOVC A, A+DPTR ;取節(jié)拍碼 MOV R5, A ;節(jié)拍碼送R5 LCALL DELAY ;調(diào)節(jié)拍控制 CLR TR0 ;節(jié)拍到,停止T0 SJMP NEXT ;轉(zhuǎn)下一簡(jiǎn)碼發(fā)音控制 ;節(jié)

27、拍控制子程序 DELAY:MOV R3,#100 D2: MOV R4,#250 D3: DJNZ R4,D3 DJNZ R3,D2 DJNZ R5,DELAY ;節(jié)拍數(shù)到否? RET,;T0中斷服務(wù)程序 SERT0: CLR TR0 ;停止T0 MOV TL0,20H ;重裝初值 MOV TH0,21H CPL P3.0 ;音頻信號(hào)取反 SETB TR0 ;啟動(dòng)T0 RETI ;中斷返回,;祝你生日快樂(lè)歌簡(jiǎn)碼表 SONG:DB 0CH,04H,00H,02H,0DH,08H,0CH,08H DB 0FH,08H,0EH,08H,00H,08H,0CH,04H,00H DB 02H,0CH,02H,0DH,08H,0CH,08H,10H,08H DB 0FH,08H,00H,08H,0CH,04H,00H,02H,0CH DB 02H,13H,08H,11H,08H,0FH,08H,0EH,08H DB 0DH,08H,12H,04H,00H,02H,12H,02H,11H DB 08H,0FH,08H,1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論