?? 在接在單片機的p3.3上的小喇叭唱生日快樂歌.txt
字號:
程序運行后在接在單片機的P3.3上的小喇叭唱生日快樂歌
本實驗可直接在本站生產的:成功一號,瀟湘普及版學習套件上直接使用!
本實驗原程序如下:
;*****************************************************
;* Date : 2004.4.20 --------------------------------------------------*
;* Support Mb: 0735-2197559 E-mail:c51cn@163.com -------*
;* Create by :dengdewu http://www.c51.cn 更多例程請登陸網站 *
;* 網站單片機學習資料同步更新,敬請新老朋友隨時關注 --*
;*****************************************************
org 0000h
ajmp main
org 000bh
jmp tim0
org 0030h
main: ;主程序
mov tmod,#01h ;設定時方式
mov ie,#82h ;開中斷
start0:
mov 30h,#00h ;
next:mov a,30h
mov dptr,#table
movc a,@a+dptr ;查表取音調和節拍
mov r2,a
jz end0 ;為零,不進行處理.
anl a,#0fh
mov r5,a ;將節拍存入R5
mov a,r2
swap a
anl a,#0fh
jnz sing ;根據音調決定是否演奏.
clr tr0
jmp d1
sing:dec a
mov 22h,a ;將音調存入22H.
rl a
mov dptr,#table1
movc a,@a+dptr ;根據音調決定定時器初值.
mov th0,a ;放入TH0
mov 21h,a
mov a,22h
rl a
inc a
movc a,@a+dptr
mov tl0,a ;放入TL0
mov 20h,a
setb tr0 ;啟動定時
d1: call delay
inc 30h
jmp next
end0:clr tr0
jmp start0
tim0: ;定時器中斷服務程序
push acc
push psw
mov tl0,20h ;重賦初值.
mov th0,21h
cpl p3.3
pop psw
pop acc
reti
delay:mov r7,#02h ;延時子程序
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -