久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
音樂盒設(shè)計 驅(qū)動蜂鳴器
[打印本頁]
作者:
xky199719
時間:
2017-12-14 20:02
件3:音樂程序
shuzhi EQU 3fh ;選曲目的地址
song EQU p1.2 ;揚聲器播放
play EQU p3.0 ;播放停止鍵
addone EQU p3.1 ;曲目加一鍵
subone EQU p3.2 ;曲目減一鍵
dul EQU P1 ;段選
wel EQU P2 ;位選
ORG 0000H
LJMP START
ORG 000BH ;定時器0溢出中斷入口地址
AJMP cont
ORG 0013H ;外部中斷一入口地址
AJMP pause ;指向外部中斷程序
ORG 0100H
START:
MOV SP,#50H
MOV TH0,#0DBH ;定時器賦初值
MOV TL0,#0FFH
MOV TMOD,#01H ;設(shè)定T1工作于方式2
MOV IE,#86H ;開中斷
MOV TCON,#00H
MOV R0,#00H
MOV shuzhi,#00H
(是否順序播放音樂)
MAIN:
JNB play,first ;判斷P3.0鍵是否按下
SJMP MAIN
first:
ACALL del20
JNB play,first
MOV shuzhi,#00H
MOV dul,#06H ;共陰數(shù)碼管顯示1
MOV wel,#80H
MOV DPTR,#dat1 ;dat1首地址賦給DPTR
ACALL music0
ACALL next
RET
next:
INC shuzhi
MOV A,shuzhi
CJNE A,#01,LOOP3 ;A是否=1,不等就跳轉(zhuǎn)到LOOP3
MOV DPTR,#dat2 ;表2首地址送DPTR
MOV dul,#5BH ;顯示數(shù)值2
MOV wel,#80H
ACALL music0
INC A
LOOP3:
CJNE A,#02,LOOP4 ;A是否=2,不等就跳轉(zhuǎn)到LOOP4
MOV DPTR,#dat3 ;表3首地址送DPTR
MOV dul,#4FH ;顯示數(shù)值3
MOV wel,#80H
ACALL music0
INC A
LOOP4:
CJNE A,#03,next
ACALL first
RET
(按鍵播放上一首音樂)
last:
DEC shuzhi
MOV a,shuzhi
CJNE a,#02,last1
MOV dptr,#dat3
MOV dul,#4Fh
MOV wel,#80h
ACALL music0
last1: cjne a,#01,last2
MOV dptr,#dat2
MOV dul,#5Bh
MOV wel,#80h
ACALL music0
last2: cjne a,#00,last
MOV dptr,#dat1
MOV dul,#06h
MOV wel,#80h
ACALL music0
RET
music0:
MOV 20h,#00h ;中斷計數(shù)單元清0
music1: clr a
MOVC a,@a+dptr ;查表取音階常數(shù)
JZ end0 ;累加器判0看是否是結(jié)束符
CJNE a,#0ffh,music5 ;是休止符?
LJMP music3 ;產(chǎn)生100ms停頓
music5:
NOP
key:
JNB play,k0 ;判斷P3.0鍵是否按下
JNB addone,k1 ;判斷P3.2鍵是否按下
JNB subone,k2 ;判斷P3.1鍵是否按下
MOV r6,a ;音階常數(shù)送R6
INC dptr ;DPTR+1
MOV a,#0
MOVC a,@a+dptr ;取常數(shù)送R7
MOV r7,a
SETB tr0 ;啟動定時器T0
music2: nop
CJNE r0,#0,$
CPL song ;輸出電平取反
MOV a, r6
MOV r3,a ;音階常數(shù)送R3
LCALL del20
MOV a, r7 ;節(jié)拍常數(shù)送A
CJNE a,20h,music2 ;節(jié)拍時間到否
MOV 20h,#00h ;為取下一音階作準(zhǔn)備
INC DPTR
LJMP music1
music3:
NOP ;休止100ms
CLR tr0 ;關(guān)閉定時器
MOV r2, #14h
music4: NOP
MOV r3, #250 ;R3=250
LCALL del20
DJNZ r2, music4
INC dptr ;為取下一音階作準(zhǔn)備
LJMP music1
end0: MOV r2, #200 ;歌曲結(jié)束后,延時1s后繼續(xù)
music6: MOV r3, #250
LCALL del20
DJNZ r2,music6
(按鍵選擇)
k1: ACALL del20 ;調(diào)用延時子程序
JNB addone,k1 ;判斷P3.2鍵是否釋放
ACALL next
k2: ACALL del20
JNB subone,k2 ;判斷P3.1鍵是否釋放
ACALL last
k0: ACALL del20
JNB play,k0 ;判斷3.0鍵是否釋放
LJMP start
RET
del20: MOV r4,#05h ;延時子程序
del4: NOP
DJNZ r4,del4
DJNZ r3,del20
RET
cont: INC 20h ;計數(shù)單元+1
MOV th0,#0dbh ;重新10ms定時初值
MOV tl0,#0ffh
RETI ;跳出中斷
(停止播放)
pause: ACALL del20
JNB p3.0,pause ;判斷P3.0鍵是否有釋放
MOV a,r0 ;把R0的值給A
CPL a ;A值取反
MOV r0,a
RETI
dat1:
db 3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh
db 3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh
db 26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,30h,20h,33h,10h,33h,10h
db 3bh,60h,40h,20h,4ch,80h,0ffh
db 3bh,20h,3bh,20h,30h,20h,33h,20h,3bh,80h,0ffh
db 3bh,20h,3bh,20h,26h,20h,2bh,20h,26h,80h,0ffh
db 26h,20h,26h,20h,20h,20h,26h,20h,2bh,20h,2bh,20h,2bh,20h,30h,20h
db 33h,20h,3bh,20h,3bh,20h,40h,2bh,3bh,80h,0ffh
db 19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh
db 20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh
db 19h,20h,1ch,40h,26h,20h,19h,20h,1ch,40h,26h,20h,0ffh
db 20h,20h,1ch,20h,1ch,20h,20h,20h,26h,80h,0ffh
db 2bh,20h,2bh,40h,3bh,20h,2bh,20h,2bh,40h,2bh,20h,0ffh
db 26h,20h,2bh,20h,2bh,20h,30h,20h,2bh,80h,0ffh
db 2bh,20h,2bh,40h,3bh,20h,30h,20h,30h,40h,2bh,20h,0ffh
db 33h,20h,3bh,20h,3bh,20h,40h,20h,3bh,80h,0ffh,0ffh
dat2:
db 18h,30h,1ch,10h,20h,40h,1ch,10h
db 18h,10h,20h,10h,1ch,10h,18h,40h
db 1ch,20h,20h,20h,1ch,20h,18h,20h
db 20h,80h,0ffh,20h,30h,1ch,10h,18h
db 20h,15h,20h,1ch,20h,20h,20h,26h
db 40h,20h,20h,2bh,20h,26h,20h,20h
db 20h,30h,80h,0ffh,20h,20h,1ch,10h
db 18h,10h,20h,20h,26h,20h,2bh,20h
db 30h,20h,2bh,40h,20h,20h,1ch,10h
db 18h,10h,20h,20h,26h,20h,2bh,20h
db 30h,20h,2bh,40h,20h,30h,1ch,10h
db 18h,20h,15h,20h,1ch,20h,20h,20h
db 26h,40h,20h,20h,2bh,20h,26h,20h
db 20h,20h,30h,80h,20h,30h,1ch,10h
db 20h,10h,1ch,10h,20h,20h,26h,20h
db 2bh,20h,30h,20h,2bh,40h,20h,15h
db 1fh,05h,20h,10h,1ch,10h,20h,20h
db 26h,20h,2bh,20h,30h,20h,2bh,40h
db 20h,30h,1ch,10h,18h,20h,15h,20h
db 1ch,20h,20h,20h,26h,40h,20h,20h
db 2bh,20h,26h,20h,20h,20h,30h,30h
db 20h,30h,1ch,10h,18h,40h,1ch,20h
db 20h,20h,26h,40h,13h,60h,18h,20h
db 15h,40h,13h,40h,18h,80h,00h
dat3:
db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
db 20h,10h,2bh,10h,26h,30h,30h,80h,00h
END
復(fù)制代碼
作者:
279592094
時間:
2017-12-14 20:30
/************************************************************************
[文件名] C51音樂程序(八月桂花)
[功能] 通過單片機演奏音樂
/**********************************************************************/
#include <REG52.H>
#include <INTRINS.H>
//本例采用89C52, 晶振為12MHZ
//關(guān)于如何編制音樂代碼, 其實十分簡單,各位可以看以下代碼.
//頻率常數(shù)即音樂術(shù)語中的音調(diào),而節(jié)拍常數(shù)即音樂術(shù)語中的多少拍;
//所以拿出譜子, 試探編吧!
sbit Beep = P2^1 ;
unsigned char n=0; //n為節(jié)拍常數(shù)變量
unsigned char code music_tab[] ={
0x18, 0x30, 0x1C , 0x10, //格式為: 頻率常數(shù), 節(jié)拍常數(shù), 頻率常數(shù), 節(jié)拍常數(shù),
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};
void int0() interrupt 1 //采用中斷0 控制節(jié)拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay (unsigned char m) //控制頻率延時
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //豪秒延時子程序
{
while(--a); //采用while(--a) 不要采用while(a--); 各位可編譯一下看看匯編結(jié)果就知道了!
}
void main()
{ unsigned char p,m; //m為頻率常數(shù)變量
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到結(jié)束符,延時1秒,回到開始再來一遍
else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延時100ms,繼續(xù)取下一音符
else {m=music_tab[i++], n=music_tab[i++];} //取頻率常數(shù) 和 節(jié)拍常數(shù)
TR0=1; //開定時器1
while(n!=0) Beep=~Beep,delay(m); //等待節(jié)拍完成, 通過P1口輸出音頻(可多聲道哦!)
TR0=0; //關(guān)定時器1
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人欧美日韩一区二区三区
|
九九热这里只有精品6
|
日本一区二区三区视频在线
|
国产伦一区二区三区视频
|
日韩视频在线免费观看
|
国产日韩免费视频
|
久久国产精品-国产精品
|
岛国在线免费观看
|
草久久免费视频
|
成人在线播放网址
|
久久久久国产精品一区二区
|
精品一二
|
欧美日韩成人在线
|
亚洲精品www久久久 www.蜜桃av
|
中文字幕一区二区三区不卡
|
成人不卡
|
久久精品色欧美aⅴ一区二区
|
亚洲成人一二区
|
久久久区
|
高清av在线
|
狠狠综合久久av一区二区老牛
|
精品视频在线观看
|
亚洲国产精品成人无久久精品
|
亚洲一区二区三区在线播放
|
亚洲精品成人
|
综合久久99
|
亚洲一区欧美
|
亚洲成人一级片
|
国产精品成人一区二区三区夜夜夜
|
亚洲国产成人精品久久久国产成人一区
|
在线成人精品视频
|
国产精品伦一区二区三级视频
|
97视频在线观看免费
|
欧美 日韩 国产 在线
|
99亚洲精品
|
少妇一级淫片免费放播放
|
91精品国产91久久久久久丝袜
|
五月婷婷丁香婷婷
|
中文字幕在线一区二区三区
|
亚洲一区成人
|
精品久久精品
|