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

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

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

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

大小: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%

      發表評論

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

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

      ?
      主站蜘蛛池模板: 久久亚洲国产午夜精品理论片| 久久青青成人亚洲精品| 九九热在线免费观看| 伊人狼人在线| 国漫在线观看| 日本污视频网站| 五月婷婷在线观看| 日日舔夜夜操| 午夜精品区| av2014天堂网| 国产91久久最新观看地址| 经典三级第一页| 毛片123| 欧美色天使| 日本一区二区精品88| 男人的天堂网在线| 欧美一级色| 欧美人与禽| 欧美日韩在线成人看片a| 久久精品综合网| 最新午夜| 亚洲影视自拍揄拍愉拍| 又黄又粗暴的120秒免费gif视频| 天天爽夜夜爽夜夜爽| 夜夜操夜夜操| 精品久久天干天天天按摩| 久久亚洲国产午夜精品理论片 | 天天色资料| 午夜免费福利影院| 人与性www| 明日花绮罗在线观看| 国产caoni111在线观看视频| 人人爱天天做夜夜爽毛片| 久久天天躁夜夜躁狠狠躁2015| 91大神精品长腿在线观看网站| 69xxx视频| 羞羞视频靠逼视频大全| 女人十六毛片| 在线电影天堂| 亚欧美色| 色综合综合色综合色综合|