在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>匯編編程>

蜂鳴器奏樂-多種音樂分享

大?。?/span>0.1 MB 人氣: 2017-09-06 需要積分:0

1、蜂鳴器奏樂(祝你平安)

ORG 0000H
LJMP START
ORG 000BH
INC 20H ;中斷服務,中斷計數器加1
MOV TH0,#0D8H
MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
RETI
START:
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表頭地址送DPTR
MOV 20H,#00H ;中斷計數器清0
MOV B,#00H ;表序號清0
MUSIC1:
NOP
CLR A
MOVC A,@A+DPTR ;查表取代碼
JZ END0 ;是00H,則結束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取節拍代碼送R7
MOV R7,A
SETB TR0 ;啟動計數
MUSIC2:
NOP
CPL P3.7
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?
;不等,則繼續循環
MOV 20H,#00H ;等于,則取下一代碼
INC DPTR
; INC B
LJMP MUSIC1
MUSIC3:
NOP
CLR TR0 ;休止100毫秒
MOV R2,#0DH
MUSIC4:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#64H ;歌曲結束,延時1秒后繼續
MUSIC6:
MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL:
NOP
DEL3:
MOV R4,#02H
DEL4:
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
NOP
DAT:
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
?

2、蜂鳴器奏樂(八月桂花香)

;**********************************************************
?? ORG 0000H
?? LJMP START
?? ORG 000BH???????????? ;中斷入口
?? INC 20H?????????????? ;中斷服務程序,中斷計數器加1
?? MOV TH0,#0D8H
?? MOV TL0,#0EFH???????? ;12M晶振,形成10毫秒中斷
?? RETI
START:
?? MOV SP,#50H
?? MOV TH0,#0D8H
?? MOV TL0,#0EFH
?? MOV TMOD,#01H
?? MOV IE,#82H
MUSIC0:
?? NOP
?? MOV DPTR,#DAT??????? ;表頭地址送DPTR
?? MOV 20H,#00H???????? ;中斷計數器清0
?? MOV B,#00H?????????? ;表序號清0
MUSIC1:
?? NOP
?? CLR A
?? MOVC A,@A+DPTR?????? ;查表取代碼
?? JZ END0????????????? ;是00H,則結束
?? CJNE A,#0FFH,MUSIC5
?? LJMP MUSIC3
MUSIC5:
?? NOP
?? MOV R6,A
?? INC DPTR
?? MOV A,B
?? MOVC A,@A+DPTR?????? ;取節拍代碼送R7
?? MOV R7,A
?? SETB TR0???????????? ;啟動計數
MUSIC2:
?? NOP
?? CPL P3.7
?? MOV A,R6
?? MOV R3,A
?? CPL A
?? MOV P1,A???????????? ;顯示(修改者加入的顯示)
?? CPL A
?? LCALL DEL
?? MOV A,R7
?? CJNE A,20H,MUSIC2??? ;中斷計數器(20H)=R7否?
??????????????????????? ;不等,則繼續循環
?? MOV 20H,#00H???????? ;等于,則取下一代碼
?? INC DPTR
?? LJMP MUSIC1
MUSIC3:
?? NOP
?? CLR TR0????????????? ;休止100毫秒
?? MOV R2,#0DH
MUSIC4:
?? NOP
?? MOV R3,#0FFH
?? LCALL DEL
?? DJNZ R2,MUSIC4
?? INC DPTR
?? LJMP MUSIC1
END0:
?? NOP
?? MOV R2,#64H????????? ;歌曲結束,延時1秒后繼續
MUSIC6:
?? MOV R3,#00H
?? LCALL DEL
?? DJNZ R2,MUSIC6
?? LJMP MUSIC0
DEL:
?? NOP
DEL3:
?? MOV R4,#05H
DEL4:
?? NOP
?? DJNZ R4,DEL4
?? NOP
?? DJNZ R3,DEL3
?? RET
DAT:
DB 18H, 30H, 1CH, 10H
DB 20H, 40H, 1CH, 10H
DB 18H, 10H, 20H, 10H
DB 1CH, 10H, 18H, 40H
DB 1CH, 20H, 20H, 20H
DB 1CH, 20H, 18H, 20H
DB 20H, 80H, 0FFH,20H
DB 30H, 1CH, 10H, 18H
DB 20H, 15H, 20H, 1CH
DB 20H, 20H, 20H, 26H
DB 40H, 20H, 20H, 2BH
DB 20H, 26H, 20H, 20H
DB 20H, 30H, 80H, 0FFH
DB 20H, 20H, 1CH, 10H
DB 18H, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 20H, 1CH, 10H
DB 18H, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 30H, 1CH, 10H
DB 18H, 20H, 15H, 20H
DB 1CH, 20H, 20H, 20H
DB 26H, 40H, 20H, 20H
DB 2BH, 20H, 26H, 20H
DB 20H, 20H, 30H, 80H
DB 20H, 30H, 1CH, 10H
DB 20H, 10H, 1CH, 10H
DB 20H, 20H, 26H, 20H
DB 2BH, 20H, 30H, 20H
DB 2BH, 40H, 20H, 15H
DB 1FH, 05H, 20H, 10H
DB 1CH, 10H, 20H, 20H
DB 26H, 20H, 2BH, 20H
DB 30H, 20H, 2BH, 40H
DB 20H, 30H, 1CH, 10H
DB 18H, 20H, 15H, 20H
DB 1CH, 20H, 20H, 20H
DB 26H, 40H, 20H, 20H
DB 2BH, 20H, 26H, 20H
DB 20H, 20H, 30H, 30H
DB 20H, 30H, 1CH, 10H
DB 18H, 40H, 1CH, 20H
DB 20H, 20H, 26H, 40H
DB 13H, 60H, 18H, 20H
DB 15H, 40H, 13H, 40H
DB 18H, 80H, 00H
?? end
?

3、蜂鳴器奏樂(生日快樂)

;本程序實現蜂鳴器演奏歌曲功能
;樂曲名稱:生日快樂
;///////////////////////////////////////////
?BUZZER EQU P3.7
?org?0000h??;主程序起始地址
?ajmp?main??;跳至主程序
?org?000bh??;timer0中斷起始地址
?jmp?tim0??;跳至timer0中斷子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
?org?0030h
main:
?mov?tmod,#01h?;設timer0在MODE1
?mov?ie,#82h??;中斷使能
start0:
?mov?30h,#00h?;取簡譜碼指針
next:?mov?a,30h??;簡譜碼指針載入A
?mov?dptr,#table?;至table取簡譜碼
?movc?a,@a+dptr
?mov?r2,a??;取到的簡譜碼暫存于R2
?jz?end0??;是否取到00(結束碼)?
?anl?a,#0fh??;不是,則取低4位(節拍碼)
?mov?r5,a??;將節拍碼存入R5
?mov?a,r2??;將取到的簡譜碼再載入A
?swap?a??;高低四位交換
?anl?a,#0fh??;取低四位(音符碼)
?jnz?sing??;取到的音符碼是否為零?
?clr?tr0??;是,則不發音
?jmp?d1
sing:?dec?a??;取到的音符碼減1(不含0).
?mov?22h,a??;存入(22H).
?rl?a??;乘2
?mov?dptr,#table1?;至table1取相對的高位字節計數值
?movc?a,@a+dptr
?mov?th0,a??;取到的高位字節存入TH0
?mov?21h,a??;取到的高位字節存入(21H)
?mov?a,22h??;再載入取的的音符碼
?rl?a??;乘2
?inc?a??;加1
?movc?a,@a+dptr?;至table1取相對的低位字節計數值
?mov?tl0,a??;取到的高位字節存入TL0??
?mov?20h,a?????????? ;取到的高位字節存入(20H)
?setb?tr0??;啟動timer0
d1:?call?delay??;基本單位時間1/4拍187毫秒
?inc?30h??;取簡譜碼指針加1
?jmp?next??;取下一個碼
end0:?clr?tr0??;停止timer0
?jmp?start0??;重復循環
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;time0中斷服務子程序用來產生相應的音調脈沖頻率。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
tim0:
?push?acc??;將A的值暫存于堆棧
?push?psw??;將psw的值暫存于堆棧
?mov?tl0,20h??;重設計數值
?mov?th0,21h
?cpl?BUZZER??;將蜂鳴器反相
?pop?psw??;至堆棧取回psw的值
?pop?acc??;至堆棧取回a的值
?reti???;返回主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay:?mov?r7,#02h??;187毫秒
d2:?mov?r4,#187
d3:?mov?r3,#248
?djnz?r3,$
?djnz?r4,d3
?djnz?r7,d2
?djnz?r5,delay?;決定節拍
?ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
table1:
?dw?64260,64400,64524,64580
?dw?64684,64777,64820,64898
?dw?64968,65030,65058,65110
?dw?65157,65178,65217
table:
?;1
?db?82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
?;2
?db?82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h
?;3
?db?82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
?;4
?db?82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00
?end
?

4、蜂鳴器奏樂

SPK?EQU?P3.7???; 蜂鳴器所在端口
?ORG?0000H
?JMP?START
?
START:
?MOV?R3,#00H
NEXT:
?MOV?A,R3
?MOV?DPTR,#TABLE
?MOVC?A,@A+DPTR
?JZ?START
?MOV?R7,A
?INC?R3
?MOV?A,R3
?MOVC?A,@A+DPTR
?MOV?R2,A
?ACALL?SONG
?INC?R3
?SJMP?NEXT

;===============================================================================?
;===? 歌曲播放子程序 ===
SONG:
?MOV?A,R2?????; 取出節拍
?RL?A
?JNZ?KEEP
?MOV?A,#01H
KEEP:
?MOV?R2,A
REPEAT:
?ACALL?EIGHTH
?DJNZ?R2,REPEAT
?RET
?
;===============================================================================?
;===? 產生1/8拍延時子程序? ===??
EIGHTH:
?MOV?A,R7?????; 查表取出廷時參數,保存到R4
?MOV?DPTR,#DELAY_T
?MOVC?A,@A+DPTR
?MOV?R4,A
?MOV?A,R7?????; 查表取出1/8拍周期數,保存到R5
?MOV?DPTR,#S_PARA
?MOVC?A,@A+DPTR
?MOV?R5,A
NEXTCYC:
?ACALL?SOUND
?DJNZ?R5,NEXTCYC
?RET
?
;===============================================================================?
;===? 發聲子程序 ===?
SOUND:
?SETB?SPK
?ACALL?SDELAY
?CLR?SPK
?ACALL?SDELAY
?RET
?
;===============================================================================?
;===? 延時子程序? ===
SDELAY:
?MOV?A,R4?????; 廷時值在R4內
?MOV?R0,A
XL2:
?MOV?R1,#03H
DL1:
?NOP
?DJNZ?R1,DL1
?DJNZ?R0,XL2
?RET
;===============================================================================?
;===? 1/8拍周期表? ===
S_PARA:
?DS?1DH
?DB?15H,16H,00
?DB?19H,00H,1CH,00H,1FH,21H,00H,25H
?DB?00H,29H,2CH,00H,31H,34H,37H,00H
?DB?3EH,41H,00H,49H,00H,52H,57H,00H
?DB?62H
?
;===============================================================================?
;===? 延時參數表? ===
DELAY_T:
?DS?1DH
?DB?7EH,77H,00H
?DB?6AH,00H,5EH,00H,54H,4FH,00H,46H
?DB?00H,3FH,3BH,00H,35H,32H,2FH,00H
?DB?2AH,27H,00H,23H,00H,1FH,1DH,0C0H
?DB?1AH
?
;===============================================================================?
;===? 歌曲表? ===
TABLE:
?DW?2202H,2902H,2902H,2902H,2906H,2702H?;我從山中來
?DW?2502H,2702H,2502H,2402H,2208H??;帶著蘭花草
?DW?2E02H,2E02H,2E02H,2E02H,2E06H,2C02H?;種在小園中
?DW?2902H,2C02H,2D02H,2A02H,2908H??;祈禱花開早
?DW?2902H,2E02H,2E02H,2C02H,2906H,2702H?;一日看三回
?DW?2502H,2702H,2502H,2402H,2206H,1D02H?;看得花時過
?DW?1D02H,2502H,2502H,2402H,2206H,2902H?;蘭花卻依然
?DW?2702H,2502H,2402H,2002H,2208H??;苞也無一個
?DW?0000H?????;
?
?END?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 亚洲男人的天堂在线播放 | 性欧美高清极品xx | 日本女人啪啪 | 亚洲一区二区在线视频 | 国产床戏无遮掩视频播放 | 高清性色生活片欧美在线 | sss欧美一区二区三区 | 高清欧美一级在线观看 | 永久免费在线观看视频 | 6080午夜| 日韩xx00 | 美女被强插 | 色在线网 | 夜夜爽夜夜 | 日本一区高清视频 | 五月婷婷综合激情 | 国产一级真人毛爱做毛片 | 国产精品久久久久久久9999 | 午夜啪视频 | 国产精品久久永久免费 | 亚洲成在人线中文字幕 | 亚洲第一视频在线播放 | 在线看av的网址 | 夜夜爱夜夜操 | 国产日本在线播放 | 性大特级毛片视频 | 天天插天天插天天插 | 中国高清性色生活片 | 激情五月激情综合色区 | 成人午夜性视频欧美成人 | 四虎精品永久在线 | 激情综合五月天丁香婷婷 | 99热久久国产精品 | 5252欧美在线观看 | 国产亚洲精品aa在线观看 | 一区二区三区精品国产欧美 | 欧美性猛交aa一级 | 91中文在线 | 国产叼嘿视频免费网站 | 欧美一二三区在线 | 视色在线视频 |