📄 yinyue.asm
字号:
;注意,音乐输出脚P1.0
;%%%%%%%%%%%%%%%%%%%%%
; ;定时/计数器1中断服务子程序
;%%%%%%%%%%%%%%%%%%%%%
DS100: PUSH A
PUSH PSW
MOV TL1,COUNT5
MOV TH1,COUNT6
CPL P1.0
POP PSW
POP A
RETI
;%%%%%%%%%%%%%%%%%%%%%
; ;音乐子程序
;%%%%%%%%%%%%%%%%%%%%%
YY01: SETB ET1 ; ;打开定时/计数器1
CLR TF1
SETB TR1 ; ;定时/计数器1开始运行
YY02: MOV COUNT8,#00H
YY03: MOV A,COUNT8
MOV DPTR,#TABY01
MOVC A,@A+DPTR
MOV R2,A
JZ YY06
ANL A,#0FH
MOV COUNT9,A
MOV A,R2
SWAP A ; ;高低半字节交换
ANL A,#0FH
JNZ YY04
CLR TR1
AJMP YY05
YY04: INC A
MOV COUNT7,A
RL A
MOV DPTR,#TABY00
MOVC A,@A+DPTR
MOV TH1,A
MOV COUNT6,A
MOV A,COUNT7
RL A
INC A
MOVC A,@A+DPTR
MOV TL1,A
MOV COUNT5,A
SETB TR1
;%%%%%%%%%%%%%%%%%%%%%
MOV A,COUNT9 ;当音时间等于或超过4拍时,低4位数不能表示大于16的时间量,
CJNE A,#0,YY05 ;此时将该低4位设置为零,其真正的时间量乘以2,再加1,
INC COUNT8 ; ;得出的数放在下一整个地址,这样可以保证下一地址的数低4位
MOV A,COUNT8 ;数绝对不为零,以免再次指向下一地址二出现错误,
MOV DPTR,#TABY01 ;编写是千万注意!!!
MOVC A,@A+DPTR
DEC A
RR A
MOV COUNT9,A
;%%%%%%%%%%%%%%%%%%%%%
YY05: LCALL YYS01
INC COUNT8
AJMP YY03
YY06: CLR TR1 ; ;定时/计数器1停止运行
CLR ET1 ; ;关闭定时/计数器1
RET
;%%%%%%%%%%%%%%%%%%%%%
; ;音乐延时(约186毫秒)
;%%%%%%%%%%%%%%%%%%%%%
YYS01: MOV R6,#248
YYS02: MOV R7,#250
YYS03: NOP
DJNZ R7,YYS03
DJNZ R6,YYS02
DJNZ COUNT9,YYS01
RET
;==================================================
; ;音乐数据表
;==================================================
TABY00: DW 63628,63836,64021,64103 ;低音1-4
DW 64260,64400,64524,64580 ;低音5-7,中音1
DW 64684,64777,64820,64898 ;中音2-5
DW 64968,65030,65058,65110 ;中音6-7,高音1-2
DW 65157,65178,65217,65252 ;高音3-6
DW 65283 ;高音7
TABY01: ;2002年的第一场雪,注意音乐数据不能超过256个!!!
DB 04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,A2H,82H,82H,02H,82H,A2H
DB A2H,A2H,A2H,A4H,A2H,A2H,72H,82H,84H,04H,04H
DB 02H,0B2H,0B2H,0B2H,0B4H,0B2H,0B2H,0C4H,0B2H,A4H,0B5H
DB 02H,72H,72H,72H,72H,72H,62H,042H,A4H,A2H,A2H,A2H,82H,84H
DB 04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,A4H,B6H,02H,72H
DB 72H,72H,72H,72H,62H,42H,A4H,A2H,A2H,A2H,82H,84H
DB 04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,C2H,A2H,082H,084H
DB 02H,72H,72H,62H,74H,72H,62H,084H,72H,82H,62H,42H,42H
DB 02H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,0C2H,A2H,82H,84H
DB 02H,72H,72H,72H,72H,72H,62H,42H,A4H,A2H,A2H,72H,82H,84H
DB 02H,0B2H,0B2H,0B2H,0B2H,0B4H,0B2H,0C4H,0B2H,A4H,86H
DB 02H,72H,72H,62H,72H,72H,72H,62H,84H,72H,82H,62H,42H,44H
DB 02H,72H,72H,72H,72H,72H,62H,42H,62H,62H,62H,43H,31H,16H
DB 02H,72H,72H,72H,72H,72H,62H,42H,72H,82H,82H,8AH
DB 02H,72H,72H,72H,72H,72H,62H,42H,62H,62H,62H,43H,31H,16H
DB 02H,72H,72H,72H,72H,72H,62H,42H,A2H,0B2H,0B2H,0B2H,00H
TABY02: ;遇上你是我的缘
DB 12H,42H,63H,71H,63H,41H,44H,62H,42H,B2H,81H,71H,82H,86H
DB 82H,B2H,A2H,81H,A1H,72H,74H,41H,61H,78H,12H,42H,63H,71H
DB 63H,41H,44H,62H,42H,B2H,81H,61H,71H,81H,74H,82H
DB 12H,72H,72H,82H,62H,12H,32H,41H,61H,40H,21H,42H,42H,B2H,A2H
DB B8H,81H,C2H,C1H,B1H,C1H,A1H,B1H,88H,43H,41H,72H,62H
DB 76H,82H,42H,82H,62H,41H,31H,48H,42H,81H,71H,72H,01H,81H
DB 62H,41H,31H,14H,42H,82H,A2H,01H,B1H,A2H,81H,71H,84H
DB 82H,81H,81H,A2H,81H,81H,F2H,E3H,F1H,E1H,D1H,E6H,D2H
DB C2H,02H,C1H,B1H,C1H,A1H,88H,82H,A2H,B2H,D1H,D1H
DB C5H,B1H,C1H,A1H,86H,A4H,BDH,82H,A2H,B2H,D1H,D1H
DB C2H,02H,C1H,B1H,C1H,A1H,86H,E1H,F3H,B0H,2DH
DB 88H,A1H,B7H,B0H,21H,00H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -