新聞中心

單片機(jī)音樂(lè)程序

作者: 時(shí)間:2013-03-08 來(lái)源:網(wǎng)絡(luò) 收藏

利用(或單板機(jī))奏樂(lè)大概是無(wú)線電愛(ài)好者感興趣的問(wèn)題之一。本文從的基本發(fā)間實(shí)驗(yàn)出發(fā),談?wù)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/音樂(lè)程序">音樂(lè)程序的設(shè)計(jì)原理,并給出具體實(shí)例,以供參考。下面提供2個(gè)列子,大家根據(jù) 需要自行選擇

最小系統(tǒng),兩位LED數(shù)碼管由串口輸出接兩個(gè)164驅(qū)動(dòng),Lout,Rout為左右聲道輸出,
SET, ALT0, ALT1為三個(gè)按鍵,也可自己在開(kāi)始的I/O定義改成你想用的I/O口;12M晶振
若用89C51則只可裝下約14首歌曲,用則可裝下近40曲

源程序
; Electronic Music
; Version 4.50
; Copyright (c) XAJ 2001
;============================
LOUT BIT P1.0 ;左聲道輸出
ROUT BIT P1.2 ;右聲道輸出
SET BIT P3.3 ;SET按鍵
ALT0 BIT P3.6 ;ALT0按鍵
ALT1 BIT P3.7 ;ALT1按鍵

;REPNUM EQU 09H重復(fù)段編號(hào)
STATU EQU 0AH;狀態(tài)寄存器
LDYDSR EQU 0BH;左低音度數(shù)
RDYDSR EQU 0CH;右低音度數(shù)
LDYAR EQU 0DH;左低音協(xié)助
RDYAR EQU 0EH;右低音協(xié)助
JPCLK EQU 0FH;節(jié)拍時(shí)鐘
GENCLK EQU 10H;通用時(shí)鐘
SNSDCLK EQU 11H;搜、存顯示時(shí)鐘
GEN16T0 EQU 12H;通用16位時(shí)鐘
GEN16T1 EQU 13H;
SETST0 EQU 14H;設(shè)置狀態(tài)
SETST1 EQU 15H; 定時(shí)時(shí)鐘
DISNUM0 EQU 16H;顯示數(shù)值
DISNUM1 EQU 17H;寄存器(2位)
CSN EQU 18H;當(dāng)前曲曲號(hào)
REP0L EQU 19H;0號(hào)重復(fù)段地址
REP0H EQU 1AH;
REP1L EQU 1BH;1號(hào)重復(fù)段地址
REP1H EQU 1CH;
REP2L EQU 1DH;2號(hào)重復(fù)段地址
REP2H EQU 1EH
REP3L EQU 1FH;3號(hào)重復(fù)段地址
REP3H EQU 23H;
COSPEEDN EQU 24H;
SPENR EQU 25H;

LOCF BIT 00H;左聲道開(kāi)關(guān)標(biāo)志
ROCF BIT 01H;右聲道開(kāi)關(guān)標(biāo)志
SECHSTOF BIT 02H;搜索、存儲(chǔ)標(biāo)志
NEXTSF BIT 03H;下一曲標(biāo)志
CSBESTOF BIT 04H;當(dāng)前曲鎖存/釋放
CUYFD BIT 05H;當(dāng)前音符顯示
KSETF BIT 06H;SET鍵按下標(biāo)志
KALT0F BIT 07H;ALT0鍵按下標(biāo)志
KALT1F BIT 08H;ALT1鍵按下標(biāo)志
SPEEDF BIT 09H;速度增/減標(biāo)志
TONEF BIT 0AH;音調(diào)增/減標(biāo)志
YPBIT BIT 0BH;音頻邏輯輸出
KBDISF BIT 0CH;鍵盤(pán)顯示標(biāo)志
REP0F BIT 0DH;0號(hào)重復(fù)段控制
REP1F BIT 0EH;1號(hào)重復(fù)段控制
REP2F BIT 0FH;2號(hào)重復(fù)段控制
REP3F BIT 10H;3號(hào)重復(fù)段控制

SBOTM EQU 25H;堆棧區(qū)(棧底)
BUFF0 EQU 43H;鎖存曲數(shù)
BUFF EQU 44H;鎖存曲緩沖區(qū)
;============================

;=========BEGIN==============
ORG 0000H
LJMP MAIN
;---------T0INT--------------
ORG 000BH
LJMP T0INT

;---------T1INT--------------
ORG 001BH
LJMP T1INT
;1.音頻發(fā)生器
;---------YPFSQ(01)----------
ORG 0030H
T0INT: MOV TL0,R4
MOV TH0,R5
PUSH PSW
PUSH ACC
PUSH 01H
JB LOCF,ROPER
MOV R1,#00H
MOV A,LDYAR
T0LLOP: RRC A
MOV YPBIT,C
XCH A,R1
CJNE A,LDYDSR,T0LNEXT
MOV C,YPBIT
MOV LOUT,C
INC LDYAR
; INC P0
SJMP ROPER
T0LNEXT: XCH A,R1
INC R1
SJMP T0LLOP
ROPER: JB ROCF,T0RETI
MOV R1,#00H
MOV A,RDYAR
T0RLOP: RRC A
MOV YPBIT,C
XCH A,R1
CJNE A,RDYDSR,T0RNEXT
MOV C,YPBIT
MOV ROUT,C
INC RDYAR
; INC P2
SJMP T0RETI
T0RNEXT: XCH A,R1
INC R1
SJMP T0RLOP
T0RETI: POP 01H
POP ACC
POP PSW
RETI
;2.通用時(shí)鐘


上一頁(yè) 1 2 3 4 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉