musich equ 40h ;音乐定时高位数据
musicl equ 41h ;音乐定时低位数据
musicstart equ 42h ;音乐开始首地址
beep bit P3.2
; ************************ 预定义结束 *******************
org 0000h;程序开始
jmp main;跳转到主程序
org 001bh;定时器T1中断入口地址
jmp timer1;定时器服务程序
org 0030h;主程序代码开始
main:
mov sp,#30h;设置堆栈
lcall music;调用音乐程序
jmp main;重新开始
musdelay:
mov r0,#20;短时间延时
d:
djnz r0,d;延时时间 20uS
ret;返回
; ************ 定时器 服务程序 *******************
timer1:
clr tr1;停止定时器工作
mov th1,musich;重新设置定时初值
mov tl1,musicl;
cpl beep;从蜂鸣器输出声音
setb tr1;开始定时工作
reti;中断返回
;****************************************************
;************ 音乐播放程序 *********************
music:
mov tmod,#10h;设置定时器T1工作方式1
setb ea;总的中断