導航:首頁 > 編程語言 > 編程製作小星星音樂

編程製作小星星音樂

發布時間:2024-12-17 17:35:20

單片機 音樂程序編寫 歌曲《小星星》

只有音樂發聲匯編程序,沒有加入LED燈,供參考。數據代碼已改為小星星發聲

;**********************************************

ORG 0000H

SJMP MAIN

ORG 0BH

AJMP TIME0


;*************主程序************************


MAIN: MOV SP,#60

MOV TMOD,#01H ;T0定時工作方式

MOV IE,#82H ;CPU 中斷允許,T0中斷允許


START0: MOV 30H,#00H ;TABLE 相對地址指針

NEXT: MOV A,30H

MOV DPTR,#TABLE ;到TABLE處取 簡譜碼 節拍 碼

MOVC A,@A+DPTR

MOV R2,A ;取到的簡譜碼 節拍碼 暫存於R2中


JZ ENDF ;取到 00 結束

ANL A,#0FH ;否,取低四位 節拍 碼

MOV R5,A ;將節拍碼存於R5中

MOV A,R2 ;簡譜碼 節拍 碼 給A

SWAP A ;高4位 與 低4位 交換

ANL A,#0FH ;取簡譜 碼

JNZ SING ;取到的簡譜 碼不是0,則去發聲

CLR TR0 ;取到0 則不發聲

SJMP DLY1 ;節拍延時子程序( 隨節拍碼變化,延時時間不同)


;---------------發聲-----------------------

SING: DEC A ;取到的簡譜碼減1

;(簡譜碼計數值16位數據存儲首地址從TABLE1 《相對地址》0處開始放起,所以要減1)

MOV 22H,A ;存入(22H)中

RL A ;乘2 因為取的數據占兩位元組(16位)

;所以指針增加量要乘2


MOV DPTR,#TABLE1

;...........簡譜碼轉換為相應定時器16位計數值.............

MOVC A,@A+DPTR ;到TABLE1取相應的高位元組計數值

MOV TH0,A ;高位元組計數值存入TH0和(21H)中

MOV 21H,A

MOV A,22H ;減1的簡譜碼給A

RL A ;乘2 因為取的數據占兩位元組(16位)

;所以指針增加量要乘2

INC A ;A 增加 取下一個位元組計數值


;...........簡譜碼轉換為相應定時器16位計數值.............

MOVC A,@A+DPTR ;到TABLE1取相應的低位元組計數值

MOV TL0,A ;低位元組計數值存入TL0和(20H)中

MOV 20H,A

SETB TR0 ;啟動T0定時器讓喇叭發出不同頻率聲音


;---------------節拍延時-------------------

DLY1: ACALL DELAY ;基本單位時間為1/4拍 187ms

INC 30H ;取下一個簡譜碼 節拍 碼

SJMP NEXT


;---------------歌放完結束---------------

ENDF: CLR TR0 ;關閉T0定時器

AJMP START0 ;反復循環



;****T0中斷子程序(用來驅動喇叭發出不同頻率聲音)**************

TIME0: PUSH ACC

PUSH PSW

MOV TL0,20H ;重裝計數值

MOV TH0,21H

CPL P3.7 ;驅動發聲

POP PSW

POP ACC

RETI



;******************節拍延時187ms****************************

DELAY: MOV R7,#187 ;187ms延時子程序

DLY2: MOV R4,#02

DLY3: MOV R3,#248

DJNZ R3,$

DJNZ R4,DLY3

DJNZ R7,DLY2

DJNZ R5,DELAY

RET



;*******音符T值表(用來讓定時器發出不同的頻率)**DW 表示一個 計數值 占兩個位元組存儲單元***************


TABLE1: DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI /中音DO 中音RE

DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI

DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO



;*********簡譜碼 節拍碼(高4位簡譜碼 ,低4位節拍碼)*************


TABLE: DB 44H,44H,84H,84H ; 1 1 5 5

DB 094H,094H,88h ; 6 6 5 -


DB 74H,74H,63H,63H; 4 4 3 3

DB 52H,52H,48h ; 2 2 1-


DB 84H,84H,74H,74H ; 5 5 4 4

DB 64H,64H,58h; 3 3 2-


DB 84H,84H,74H,74H ; 5 5 4 4

DB 64H,64H,58h ; 3 3 2-


DB 44H,44H,84H,84H ; 1 1 5 5

DB 094H,094H,88h; 6 6 5 -


DB 74H,74H,63H,63H; 4 4 3 3

DB 52H,52H,48h; 2 2 1-


END


閱讀全文

與編程製作小星星音樂相關的資料

熱點內容
oppo怎麼把文件夾變大 瀏覽:104
希臘pdf下載 瀏覽:726
蘋果手機和安卓耳機藍牙怎麼連接 瀏覽:14
怎麼樣伺服器開啟啊 瀏覽:449
fft命令 瀏覽:301
js代碼核心編譯 瀏覽:675
平滑曲線命令 瀏覽:631
條件編譯函數名為什麼要有下劃線 瀏覽:803
linux下運行python腳本 瀏覽:138
蘋果電腦c語言怎麼編譯 瀏覽:479
聽一下伺服器是什麼意思 瀏覽:201
erp加密哪家強 瀏覽:207
phpyii2框架 瀏覽:758
windowsgdi編程 瀏覽:626
人渣租伺服器能幹什麼 瀏覽:383
安卓怎麼使用不卡頓 瀏覽:218
1加7怎麼升級安卓11 瀏覽:931
王者榮耀蘋果怎麼轉安卓過來 瀏覽:903
如何關閉安卓手機智能美顏 瀏覽:313
sm2如何加密解密 瀏覽:647