基于電子琴畢業(yè)設計畢業(yè)設計_第1頁
基于電子琴畢業(yè)設計畢業(yè)設計_第2頁
基于電子琴畢業(yè)設計畢業(yè)設計_第3頁
基于電子琴畢業(yè)設計畢業(yè)設計_第4頁
基于電子琴畢業(yè)設計畢業(yè)設計_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

附錄3:主要程序 BEEPBITP3.7 ;定義蜂鳴器BEEP為P3.7 ON_OFFBITF0 ;定義按鍵標志位ON_OFF為F0 SOUND_BUFFEQU30H ;定義音符緩沖區(qū)SOUND_BUFF為30H,用來存放按鍵號 SOUND_BAKEQU31H ;定義音符備用緩沖區(qū)SOUND_BAK為31H,用來備份按鍵號 ORG0000H ;程序從0000H開始 AJMPMAIN ;跳轉(zhuǎn)到主程序MAIN ORG0BH ;定時器T0中斷入口地址 AJMPTIME0 ;跳轉(zhuǎn)至定時器T0中斷服務程序 ORG030H ;主程序從030H開始 ;以下是主程序MAIN: MOVSP,#5FH ;設置堆棧指針為5FH MOVTMOD,#01H ;設定時器T0工作模式1 SETBET0 ;開定時器T0中斷 SETBTR0 ;啟動定時器T0START: CLREA ;關斷總中斷 SETBBEEP ;關斷蜂鳴器NEXT1: CALLKEY ;調(diào)按鍵判斷子程序 JBON_OFF,NEXT1 ;若ON_OFF=1,說明無鍵按下,繼續(xù)掃描 ACALLKEY_PROC ;調(diào)按鍵處理子程序,求出按鍵號并存放到SOUND_BUFF MOVSOUND_BAK,SOUND_BUFF ;將第1次SOUND_BUFF中的按鍵號備份到SOUND_BAK中 ACALLDELAY_10ms ;調(diào)10ms延時子程序 CALLKEY ;再次調(diào)按鍵判斷子程序 JBON_OFF,NEXT1 ;若ON_OFF=1,說明無鍵按下,繼續(xù)掃描 ACALLKEY_PROC ;調(diào)按鍵處理子程序,再次求出按鍵號存放到SOUND_BUFF MOVA,SOUND_BUFF ;將第2次得到的按鍵號(存放在SOUND_BUFF中)送A CJNEA,SOUND_BAK,NEXT1 ;比較第1次(存放在SOUND_BAK)和第2次(存放在SOUND_BUFF) ;存放的按鍵號是否相等,若不等,跳轉(zhuǎn)到NEXT1繼續(xù)掃描 ACALLSOUND ;若兩次掃描的鍵號相同,則調(diào)用音符處理子程序,查找出相應音符 SETBEA ;打開總中斷NEXT2: CALLKEY ;調(diào)用按鍵判斷子程序,開始判斷按鍵是否釋放 JNBON_OFF,NEXT2 ;若ON_OFF=0,說明按鍵仍然按下,跳轉(zhuǎn)到NEXT2繼續(xù)等待 AJMPSTART ;若ON_OFF=1,說明按鍵釋放,跳轉(zhuǎn)到START,繼續(xù)循環(huán) ;按鍵判斷子程序(判斷鍵盤有無鍵按下,并確認按鍵特征碼)KEY: SETBON_OFF ;ON_OFF為1,表示無鍵按下 MOVP1,#0F0H ;置列線為0,行線為1 MOVA,P1 ;讀取P1,求出行線的特征碼1 ANLA,#0F0H ;屏蔽低4位列線 MOVB,A ;送A的內(nèi)容存放到B,即特征碼1送B MOVP1,#0FH ;置列線為1,行線為0 MOVA,P1 ;讀取P1,求出列線的特征碼2 ANLA,#0FH ;屏蔽高4位行線 ORLA,B ;將特征碼1(B)與特征碼2(A)相或后送A,求出特征碼 CJNEA,#0FFH,KEY_FLAG ;若A的內(nèi)容與FFH不等(有鍵按下),則跳轉(zhuǎn)到KEY_PROC AJMPKEY_RET ;若A的內(nèi)容不等FFH(沒有鍵按下),跳轉(zhuǎn)到KEY_RETKEY_FLAG: CLRON_OFF ;ON_OFF清0,表示有鍵按下,且鍵已彈起KEY_RET: RET ;以下是按鍵處理子程序(根據(jù)按鍵特征碼,查表求出按鍵順序碼,即按鍵號)KEY_PROC: MOVB,A ;若有鍵按下,將A的內(nèi)容(特征碼)送B MOVDPTR,#TAB1 ;將TAB1的地址送DPTR MOVR3,#0FFH ;將FFH送R3(以方便0號鍵查表),R3用來存放鍵值的順序碼KEY_PROC1: INCR3 ;R3(鍵值順序碼)加1 MOVA,R3 ;R3(鍵值順序碼)送A MOVCA,@A+DPTR ;查表 CJNEA,B,KEY_PROC2 ;若A與B的值不等(未找到),跳轉(zhuǎn)到KEY_PROC2 MOVA,R3 ;若A與B的值相等(找到),則取順序碼 MOVSOUND_BUFF,A ;將A的內(nèi)容送音符緩沖SOUND_BUFFKEY_PROC2:CJNEA,#00H,KEY_PROC1 ;若A與00H(結(jié)束碼)不等,則跳轉(zhuǎn)到KEY_PROC1,繼續(xù)查 RET ;子程序返回 ;以下是順序碼0~F的特征碼TAB1: DB 0EEH,0EDH,0EBH,0E7H ;順序碼0,1,2,3的特征碼 DB 0DEH,0DDH,0DBH,0D7H ;順序碼4,5,6,7的特征碼 DB 0BEH,0BDH,0BBH,0B7H ;順序碼8,9,A,B的特征碼 DB 07EH,07DH,07BH,77H ;順序碼C,D,E,F的特征碼 DB 00H ;00H為結(jié)束碼 ;以下是音符處理子程序SOUND: MOVA,SOUND_BUFF ;將音符緩沖區(qū)SOUND_BUFF的內(nèi)容送A RLA ;向左移1位乘2 MOVDPTR,#TAB2 ;將TAB2的地址送DPTR MOVCA,@A+DPTR ;到標號TAB2處取音符 MOVTH0,A ;取到的高位字節(jié)存入TH0 MOV21H,A ;取到的高位字節(jié)存入21H MOVA,SOUND_BUFF ;再載入取碼指針值 RLA ;向左移1位乘2 INCA ;加1 MOVCA,@A+DPTR ;至表取低位字節(jié)計數(shù)值 MOVTL0,A ;取到的低位字節(jié)存入TL0 MOV20H,A ;取低位字節(jié)存入20H RET ;以下是定時器T0中斷服務程序TIME0: PUSHACC ;將A的值入棧 PUSHPSW ;將PSW的值入棧 MOVTL0,20H ;將20H的計數(shù)初值送TL0 MOVTH0,21H ;將21H的計數(shù)初值送TH0 CPLBEEP ;將BEEP(P3.7)反相 POPPSW ;PSW的值出棧 POPACC ;A的值出棧 RETI ;返回主程序 ;以下是字符定時值TAB2: DB0FAH,1AH,0FAH,6AH ;低音3、4的定時值 DB0FBH,00H,0FBH,8CH ;低音5、6的定時值 DB0FCH,0EH,0FCH,4AH ;低音7和中音1的定時值 DB0FCH,0AEH,0FDH,08H ;中音2、3的定時值 DB0FDH,30H,0FDH,80H ;中音4、5的定時值 DB0FDH,0C6H,0FEH,02H ;中音6、7的定時值 DB0FEH,2AH,0FEH,5CH ;高音1、2的定時值 DB0FEH,84H,0FEH,98H ;高音3、4的定時值 ;以下是10ms延時子程序DELAY_10ms: MOVR7,#50 ;立即數(shù)50送R7D2: MOVR6,#100 ;立即數(shù)100送R6D1: DJNZR6,D1 ;R6中的內(nèi)容減1,若不為0,轉(zhuǎn)到D1 DJNZR7,D2 ;R7中的內(nèi)容減1,若不為0,轉(zhuǎn)到D2 RET ;延時子程序返回 END ;程序結(jié)束參考文獻[1]胡漢才:單片機原理及其接口技術,北京清華大學出版社,2004,P142-P145[2]蘇家健、曹柏榮、汪志鋒:單片機原理及應用技術,高等教育出版社,2004.9,P3-P7[3]陳明熒:單片機課程設計實訓教材,北京清華大學出版社,2003.9,P231-P235[4]劉永明、賀民譯:[美]AshishWilfredMeetaGuptaKartikBhatnagar,php專業(yè)項目實例開發(fā),水利水電出版社,2003,P79-P83[5]趙鑫、蔣亮、齊兆群:數(shù)字電路設計,北京機械工業(yè)出版社,2005.6,P27-P31[6]龔妮麗:音樂美學論綱,中國社會科學出版社,2002.12,P47-P51[7]楊恢先、黃輝先:單片機原理及應用,人民郵電出版社,2006,P114-P117[8]徐新艷:單片機原理應用與實踐,北京高等教育出版社,2005.3,P64-P67[9]張靖武、周靈彬:單片機原理、應用與PROTEUS仿真,2008.8,P71-P74[10]謝自美:電子線路設計·實驗·測試,華中理工大學出版社,1992,P131-P137致謝本研究及學位論文是在我的導師的親切關懷和悉心指導下完成的。他嚴肅的科學態(tài)度,嚴謹?shù)闹螌W精神,精益求精的工作作風,深深地感染和激勵著我。從課題的選擇到項目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論