功能有选曲 , 当电子琴演奏,加减速,原速,通过红外遥控,遥控器是牡丹彩电的用89c2051改装的,控制两个电机根据音乐节奏来回的转动,电机与电子爬虫的腿连接,这样爬虫就根据音乐节奏爬动了,
呵呵,有空可以做更多的电机,不足的是音乐较难听:)请大虾们指点!
遥控器代码:
ORG 0000H
JMP INIT
ORG 000BH
JMP INT_T
ORG 0023H
JMP INT_S
CMD EQU 32H
FLAG_OUT EQU 01H
ORG 0030H
;**************主程序******************
INIT: CLR FLAG_OUT
CLR P3.7
MOV TMOD, #2AH ;初始化
MOV TL0, #0F3H
MOV TH0, #0F3H
MOV TL1, #0CCH ;
MOV TH1, #0CCH
MOV SCON, #0C0H
SETB TR1
SETB ES
SETB ET0
SETB PS
SETB EA
; SETB P3.7
; CALL DELAY
;-------------------------------
LOOP: JB TR0, GO_ON
CLR FLAG_OUT
MOV C, FLAG_OUT
MOV P3.7, C
GO_ON: MOV P1, #0FFH
SETB P3.4
SETB P3.5
CLR P1.4
JB P1.0, NEXT_11
MOV CMD, #11
CALL SEND
WAIT_10: JNB P1.0, WAIT_10
JMP LOOP
NEXT_11: JB P1.1, NEXT_12
MOV CMD, #06
CALL SEND
WAIT_11: JNB P1.1, WAIT_11
JMP LOOP
NEXT_12: JB P1.2, NEXT_13
MOV CMD, #01
CALL SEND
WAIT_12: JNB P1.2, WAIT_12
JMP LOOP
NEXT_13: JB P1.3, NEXT_14
MOV CMD, #8
CALL SEND
WAIT_13: JNB P1.3, WAIT_13
JMP LOOP
NEXT_14: JB P3.4, NEXT_15
MOV CMD, #50H
CALL SEND
WAIT_14: JNB P3.4, WAIT_14
JMP LOOP
NEXT_15: JB P3.5, TO_1
MOV CMD, #60H
CALL SEND
WAIT_15: JNB P3.5, WAIT_15
JMP LOOP
TO_1: SETB P1.4
CLR P1.5
JB P1.0, NEXT_21
MOV CMD, #80H
CALL SEND
WAIT_20: JNB P1.0, WAIT_20
JMP LOOP
NEXT_21: JB P1.1, NEXT_22
MOV CMD, #07
CALL SEND
WAIT_21: JNB P1.1, WAIT_21
JMP LOOP
NEXT_22: JB P1.2, NEXT_23
MOV CMD, #02
CALL SEND
WAIT_22: JNB P1.2, WAIT_22
JMP LOOP
NEXT_23: JB P1.3, NEXT_24
MOV CMD, #04
CALL SEND
WAIT_23: JNB P1.3, WAIT_23
JMP LOOP
NEXT_24: JB P3.4, NEXT_25
MOV CMD, #90H
CALL SEND
WAIT_24: JNB P3.4, WAIT_24
JMP LOOP
NEXT_25: JB P3.5, TO_2
MOV CMD, #70H
CALL SEND
WAIT_25: JNB P3.5, WAIT_25
JMP LOOP
TO_2: SETB P1.5
CLR P1.6
JB P1.1, NEXT_31
MOV CMD, #09
CALL SEND
WAIT_30: JNB P1.1, WAIT_30
JMP LOOP
NEXT_31: JB P1.2, NEXT_32
MOV CMD, #03
CALL SEND
WAIT_31: JNB P1.2, WAIT_31
JMP LOOP
NEXT_32: JB P1.3, NEXT_33
MOV CMD, #10H
CALL SEND
WAIT_32: JNB P1.3, WAIT_32
JMP LOOP
NEXT_33: JB P3.4, NEXT_34
MOV CMD, #40H
CALL SEND
WAIT_33: JNB P3.4, WAIT_33
JMP LOOP
NEXT_34: JB P3.5, TO_3
MOV CMD, #20H
CALL SEND
WAIT_34: JNB P3.5, WAIT_34
JMP LOOP
TO_3: SETB P1.6
CLR P1.7
JB P1.1, NEXT_41
MOV CMD, #10
CALL SEND
WAIT_40: JNB P1.1, WAIT_40
JMP LOOP
NEXT_41: JB P1.2, NEXT_42
MOV CMD, #5
CALL SEND
WAIT_41: JNB P1.2, WAIT_41
JMP LOOP
NEXT_42: JB P3.5, OVER
MOV CMD, #30H
CALL SEND
WAIT_42: JNB P3.5, WAIT_42
OVER: JMP LOOP
;**************************************
SEND: MOV A, CMD
MOV C, P
MOV TB8, C
SETB TR0
MOV SBUF, A
CALL DELAY
CALL DELAY
RET
;*****************定时器0中断服务程序***************
INT_T: CPL FLAG_OUT
MOV C, FLAG_OUT
MOV P3.7, C
RETI
;*****************串口中断服务程序******************
INT_S: PUSH A
CLR EA
CLR TI
CLR TR0
CALL DELAY ;等待接收方处理数据
SETB EA
POP A
RETI
;***************延时子程序*********************
DELAY: MOV 30H, #0FFH
D_1: MOV 31H, #08H
D_2: NOP
DJNZ 31H, D_2
DJNZ 30H, D_1
RET
机器人代码:(外部中断用来接红外传感器的,呵呵,现在没接)
ORG 0000H
JMP INIT
ORG 0003H
JMP INT_0
ORG 000BH
JMP INT_T
ORG 0023H
JMP INT_S
;-------------------------------------
FLAG_F EQU 01H ;功能选择,0为播放,1为演奏
FLAG_L EQU 02H ;指示灯选择,0指示灯亮或1亮
FLAG_P EQU 03H ;是否播放标志,0停止,1播放
FLAG_CH EQU 04H ;演奏时是否换音符,1有效
FLAG_LAST EQU 05H ;播放时是否到最后64分音符
FLAG_PRESS EQU 06H ;是否有演奏按键
FLAG_GO EQU 07H ;是否行走标志位(1为行走,0为停止)
STAT_0 EQU 08H ;4位行走状态,对应P1.0--P1.3
STAT_1 EQU 09H
STAT_2 EQU 0AH
STAT_3 EQU 0BH
FLAG_MUTE EQU 0CH
PERIOD_H EQU 30H ;音长(定时器高位)
PERIOD_L EQU 31H ;音长(定时器低位)
COUNTER EQU 32H ;定时器计数(设定定时周期的倍数)
CU_COUNTER EQU 41H ;当前定时器计数
TONE EQU 33H ;音高
SPEED EQU 34H ;乐曲速度
D_1 EQU 35H
D_2 EQU 36H
P_1 EQU 37H
P_2 EQU 38H
NUM EQU 39H ;乐曲的位置(第几首)
POSITION EQU 40H ;乐曲中音符的位置
TAB_H EQU 42H ;当前乐曲的音长表首地址高八位
TAB_L EQU 43H ;当前乐曲的音长表首地址低八位
TAB_TONE_H EQU 44H ;当前乐曲的音高表首地址高八位
TAB_TONE_L EQU 45H ;当前乐曲的音高表首地址低八位
THIS_NUM EQU 46H ;存储当前按键号
PRE_NUM EQU 47H ;存储上次按键号
COUNTER_1 EQU 48H ;判断是否为最后64分音符用,其值等于COUNTER-1
D_L1 EQU 49H
D_L2 EQU 4AH
D_L3 EQU 4BH
P_L1 EQU 4CH
P_L2 EQU 4DH
TAB_1 EQU 4EH ;查表时的高低字节序号存储
TAB_2 EQU 4FH
CMD EQU 50H ;行走命令存储 (1:功能选择、2:加速、3:减速、4:原速、5:停止/前进、
;(6:左转、7:右转、8:朝前) )
COUNTER_LOOP EQU 51H ;定时器循环计数
; STATUS EQU 52H ;行走状态寄存
PERIOD_TEMP EQU 53H
;*****************主程序*************************
ORG 0030H
INIT: ; CALL LONG
CLR P3.7
; SETB P3.7
MOV SP, #54H
CLR FLAG_F ;初始化
CLR FLAG_L
CLR FLAG_P
CLR FLAG_LAST
SETB FLAG_CH
CLR FLAG_PRESS
SETB FLAG_GO
CLR FLAG_MUTE
SETB STAT_0
SETB STAT_1
SETB STAT_2
SETB STAT_3
MOV CMD, #00H
MOV PERIOD_H, #00H
MOV PERIOD_L, #00H
MOV TONE, #00H
MOV SPEED, #00H
MOV COUNTER, #00H
MOV NUM, #00H
MOV POSITION, #00H
;MOV STATUS, #0FFH
MOV D_1, #80
MOV D_2, #79
MOV P_L1, #01H
MOV P_L2, #0FFH
MOV TMOD, #21H ;定时器0为16位计数器定时 ,1为8位自动装载
MOV TH0, #0FFH
MOV TL0, #0FFH
MOV TH1, #0CCH
MOV TL1, #0CCH
MOV SCON, #0D0H
SETB IT0 ;设定外部中断0为负跳变触发
SETB PX0 ;外部中断为高优先级
SETB PS
SETB EA
SETB ET0
SETB EX0 ;开外部中断
SETB ES
SETB TR1
;CALL DELAY
;-------------------------------------------
LOOP: JB FLAG_F, PLAY ;演奏功能跳转
OUT: JNB FLAG_P, LOOP ;播放部分
MOV A, TONE
JZ MUTE
JB FLAG_MUTE, MUTE_1
SETB P3.7
MUTE_1: CJNE A, #1FH, NO_OVER
CLR TR0 ;TONE值等于1FH,乐曲结束,重新赋初值开始
CLR P3.7
ORL P1, #0FH
MOV POSITION, #00H
MOV CU_COUNTER, COUNTER
CALL LONG
MOV TONE, #00
MOV COUNTER_LOOP, #0
SETB TR0
JMP LOOP
NO_OVER:
MUTE: CALL DELAY
CLR P3.7
CALL DELAY
JMP LOOP
;------------------
PLAY: JNB FLAG_PRESS, OVER
SETB P3.7 ;演奏部分
CALL DELAY
CLR P3.7
OVER: CALL DELAY
JMP LOOP
;****************串口中断服务程序******************
INT_S: PUSH A
CLR RI
MOV A, SBUF
JB P, R_1
R_0: JB RB8, TO_OVER
JMP RIGHT
R_1: JNB RB8, TO_OVER
RIGHT: MOV NUM, A ;赋乐曲号
ANL A, #0FH
JNZ SELECT ;选曲跳转
MOV A, NUM
SWAP A
MOV CMD, A
;----------------------------
CJNE A, #01H, IF_2
CLR P3.7
CPL FLAG_F
ORL P1, #0FH
JB FLAG_F, PLAY_SET
SETB FLAG_GO
JMP INT_OVER
PLAY_SET: CLR FLAG_P
CLR TR0
CLR FLAG_GO
CLR FLAG_PRESS
JMP INT_OVER
IF_2: CJNE A, #02H, IF_3
MOV A, PERIOD_H
ADD A, #4
MOV NUM, A
CLR C
SUBB A, #240
JC S_UP
JMP INT_OVER
S_UP: MOV PERIOD_H, NUM
JMP INT_OVER
IF_3: MOV A, CMD
CJNE A, #03H, IF_4
MOV A, PERIOD_H
SUBB A, #9
MOV NUM, A
CLR C
SUBB A, #100
JNC S_DOWN
JMP INT_OVER
S_DOWN: MOV PERIOD_H, NUM
JMP INT_OVER
IF_4: MOV A, CMD
CJNE A, #04H, IF_5
MOV PERIOD_H, PERIOD_TEMP
JMP INT_OVER
IF_5: CJNE A, #05H, IF_9
CPL FLAG_GO
JMP INT_OVER
IF_9: CJNE A, #09H, CMD_OVER
CPL FLAG_MUTE
CMD_OVER:
TO_OVER: JMP INT_OVER
;---------------------------
SELECT: DEC NUM
MOV A, NUM
ANL A, #0F0H
JNZ TO_OVER
MOV A, NUM
CLR C
SUBB A, #11
JNC TO_OVER
MOV A, NUM
RL A
MOV TAB_1, A
MOV TAB_2, TAB_1
INC TAB_2
MOV DPTR, #TAB_SPEED ;查乐曲速度
MOV A, TAB_1
MOVC A, @A+DPTR
MOV PERIOD_L, A
MOV TL0, A
MOV A, TAB_2
MOVC A, @A+DPTR
MOV PERIOD_H, A
MOV PERIOD_TEMP, A
MOV TH0, A
MOV DPTR, #TAB_NUM_T ;查音高位置首地址
MOV A, TAB_1
MOVC A, @A+DPTR
MOV TAB_TONE_H, A
MOV A, TAB_2
MOVC A, @A+DPTR
MOV TAB_TONE_L, A
MOV DPTR, #TAB_NUM_L ;查音长位置首地址
MOV A, TAB_1
MOVC A, @A+DPTR
MOV TAB_H, A
MOV A, TAB_2
MOVC A, @A+DPTR
MOV TAB_L, A
HANDLE: JB FLAG_F, PLAY_0 ;演奏乐曲时跳转
SETB FLAG_P ;允许播放
MOV POSITION, #0H ;赋乐曲位置值为0,即从头开始拨出
MOV COUNTER, #02H
MOV CU_COUNTER, COUNTER ;赋当前定时次数和应定时次数值,使之相等,以使定时器工作时就播放,无需等待
MOV COUNTER_1, COUNTER
DEC COUNTER_1
CLR FLAG_LAST
MOV COUNTER_LOOP, #0
SETB TR0 ;启动定时器0
JMP INT_OVER
PLAY_0: CLR P3.7
SETB FLAG_PRESS
SETB FLAG_CH
MOV DPTR, #TAB_TONE ;查音高表
MOV A, NUM
ADD A, #07
RL A ;音高表每组音高有两个延时值
MOV TAB_1, A
MOVC A, @A+DPTR ;查第一个延时值
MOV D_1, A
MOV A, TAB_1
INC A
MOVC A, @A+DPTR
MOV D_2, A
JB FLAG_L, L_0
SETB FLAG_L
CLR P3.4
SETB P3.3
JMP INT_OVER
L_0: CLR FLAG_L
CLR P3.3
SETB P3.4
INT_OVER: POP A
RETI
;****************定时器0中断服务程序****************
INT_T: PUSH A
CLR TR0
MOV TH0, PERIOD_H
MOV TL0, PERIOD_L
MOV A, CU_COUNTER
CJNE A, COUNTER_1, GO_ON_1
SETB FLAG_LAST
JMP READ
GO_ON_1: CJNE A, COUNTER, GO_ON ;音符时间未到跳转
CLR FLAG_LAST
MOV DPH, TAB_H ;读取音长表首地址
MOV DPL, TAB_L
MOV A, POSITION
MOVC A, @A+DPTR
MOV COUNTER, A
MOV COUNTER_1, A
DEC COUNTER_1
READ: MOV DPH, TAB_TONE_H ;读取音高表首地址
MOV DPL, TAB_TONE_L
MOV A, POSITION ;查音高值
MOVC A, @A+DPTR
JNB FLAG_LAST, NO_LAST
SUBB A, #07
NO_LAST: MOV TONE, A
MOV DPTR, #TAB_TONE ;查与音高相对印的延时值
MOV A, TONE ;查第一个延时值
SUBB A, #06H
RL A
MOVC A, @A+DPTR
MOV D_1, A
MOV A, TONE ;查第二个延时值
SUBB A, #06H
RL A
INC A
MOVC A, @A+DPTR
MOV D_2, A
JB FLAG_LAST, GO_ON_INC
INC POSITION
MOV CU_COUNTER, #01H
MOV A, TONE
JZ INT_T_OVER
JB FLAG_L, LT_0
SETB FLAG_L
CLR P3.4
SETB P3.3
JMP INT_T_OVER
LT_0: CLR FLAG_L
CLR P3.3
SETB P3.4
JMP INT_T_OVER
GO_ON_INC: MOV A, TONE
ADD A, #07
MOV TONE, A
GO_ON: INC CU_COUNTER
INT_T_OVER:
INC COUNTER_LOOP ;行走控制
MOV A, COUNTER_LOOP
CJNE A, #16, IF_GO
ORL P1, #0FH
JMP R
IF_GO: CJNE A, #25, IF_32
MOV A, TONE
; JZ R
MOV A, COUNTER
CLR C
SUBB A, #64
JC YES ;音长大于等于64时停止行走
MOV A, COUNTER
SUBB A, CU_COUNTER
CLR C
SUBB A, #33
JC YES
JMP R
YES: JB FLAG_GO, GO_1 ;不允许行走跳转
ORL P1, #0FH
JMP R
GO_1: JB STAT_0, GO_2 ;行走一步
SETB P1.0
SETB STAT_0
CLR P1.1
CLR STAT_1
JMP R
GO_2: JB STAT_1, GO_3
SETB P1.1
SETB STAT_1
CLR P1.2
CLR STAT_2
JMP R
GO_3: JB STAT_2, GO_4
SETB P1.2
SETB STAT_2
CLR P1.3
CLR STAT_3
JMP R
GO_4: SETB P1.3
SETB STAT_3
CLR P1.0
CLR STAT_0
JMP R
IF_32: MOV A, COUNTER_LOOP
CJNE A, #32, R
MOV COUNTER_LOOP, #00H
R: SETB TR0
POP A
RETI
;******************外部中断0服务程序*******************
INT_0: PUSH A
POP A
RETI
;******************长延时子程序(1S)*******************
LONG: MOV D_L1, P_L1
DL1: MOV D_L2, P_L2
DL2: MOV D_L3, #0FFH
DL3: DJNZ D_L3, DL3
DJNZ D_L2, DL2
DJNZ D_L1, DL1
MOV P_L1, #01H
RET
;*******************延时子程序**********************
DELAY: MOV P_1, D_1
D1: MOV P_2, D_2
D2: DJNZ P_2, D2
DJNZ P_1, D1
RET
;---------------音长表--------------------
;以64分音符为一个单位,即1为64分音符、2为32分...
TAB_L0: DB 32,16,16,32,16,16,32,16,16,24,8,64 ;《DINGO BELL 》
DB 16,16,32,16,16,32,16,16,16,16,64
DB 16,16,32,16,16,32,16,16,24,8,64
DB 16,16,32,16,16,32,16,16,16,16,32,32
TAB_L1: DB 32,32,32,32,32,32,32,32,32,32,32,32,32,48,16,64 ;欢乐颂
DB 32,32,32,32,32,32,32,32,32,32,32,32,48,16,64
DB 32,32,32,32,32,16,16,32,32,32,16,16,32,32,32,32,32,64
DB 32,32,32,32,32,32,32,32,32,32,32,32,16,16,64
TAB_L2: DB 32,32,16,16,16,16,32,32,32,32,16,16,16,16,32,32,32 ;小步舞曲
DB 32,16,16,16,16,32,16,16,16,16,32,16,16,16,16,32,64,32
DB 32,16,16,16,16,32,32,32,32,16,16,16,16,32,32,32
DB 32,16,16,16,16,32,16,16,16,16,32,16,16,16,16,64,32,32
TAB_L3: DB 32,16,16,32,16,16,32,16,16,16,16,16,16,32 ;小蜜蜂
DB 16,16,32,16,16,32,16,16,16,16,64
DB 16,16,16,16,16,16,32,16,16,16,16,16,16,32
DB 16,16,32,16,16,32,16,16,16,16,32
TAB_L4: DB 32,16,16,32,32,32,64,16,16,32,32,32,64 ;生日快乐
DB 16,16,32,32,32,32,64,16,16,32,32,32,64
TAB_L5: DB 32,32,16,16,64,32,32,64,32,16,16,32,16,16,96+32 ;送别
DB 32,16,16,48,16,32,32,64,32,16,16,48,16,128
DB 32,32,64,32,16,16,64,16,16,16,16,16,16,16,16,96+32
DB 32,16,16,48,16,32,32,64,32,16,16,48,16,96,32
TAB_L6: DB 32,32,32,64,32,32,64,32,32,32,32,32,16,16,64 ;樱花
DB 32,32,32,32,32,16,16,64,32,32,32,32,32,16,16,64
DB 32,32,32,32,32,16,16,64,32,32,64,32,32,64,
DB 32,32,16,16,32,96
TAB_L7: DB 32,32,16,16,32,16,16,16,32,16,64,32,16,16,32,16,16,16,32,16,64 ;虹彩妹妹
DB 32,16,16,16,16,16,16,16,32,16,64,32,16,16,32,32,16,32,16,48
TAB_L8: DB 32,16,16,48,16, 16,16,16,32,16,16,16, 32,16,16,16,16,16,16, 128+32 ;童年
DB 16,16,32,16,16, 16,16,16,32,16,16,16, 32,16,16,16,16,16,16, 128
DB 16,16,16,32,16,16,16, 32,16,16,16,16,16,16, 32,16,16,16,16,16,16, 128
DB 16,32,16,32,32, 16,32,16,16,16,16,16, 16,32,16,16,16,16,16, 128
TAB_L9: DB 32,00H
TAB_L10: DB 32,00H
;---------------播放音符表(0表示休止,1FH为结束标志)----------------
;从6开始,6——低6,7——低7,8——1,9——2 ,10——3,11——4,12——5,13——6,14——7,15——高1
; 16——高2,17——高3,18——高4,19——高5,20——高6
TAB_TONE0: DB 0,10+7,10+7,10+7, 10+7,10+7,10+7, 10+7,12+7,8+7,9+7, 10+7 ;《DINGO BELL 》
DB 11+7,11+7,11+7, 11+7,10+7,10+7, 10+7,9+7, 9+7,10+7, 9+7
DB 10+7,10+7,10+7, 10+7,10+7,10+7, 10+7,12+7,8+7,9+7, 10+7
DB 11+7,11+7,11+7, 11+7,10+7,10+7, 12+7,12+7,11+7,9+7, 8+7
DB 1FH
TAB_TONE1: DB 0,17,17,18,19,19,18,17,16,15,15,16,17,17,16,16 ;欢乐颂
DB 17,17,18,19,19,18,17,16,15,15,16,17,16,15,15
DB 16,16,17,15,16,17,18,17,15,16,17,18,17,16,15,16,12,17
DB 17,18,19,19,18,17,16,15,15,16,17,16,12,15,15
DB 1FH
TAB_TONE2: DB 0,19,15,16,17,18,19,15,15,20,18,19,20,21,22,15,15 ;小步舞曲
DB 18,19,18,17,16,17,18,17,16,15,14,15,16,17,15,17,16,0
DB 19,15,16,17,18,19,15,15,20,18,19,20,21,22,15,15
DB 18,19,18,17,16,17,18,17,16,15,16,17,16,15,14,15
DB 1FH
TAB_TONE3: DB 0,19,17,17,18,16,16,15,16,17,18,19,19,19 ;小蜜蜂
DB 19,17,17,18,16,16,15,16,17,19,17
DB 16,16,16,16,16,17,18,17,17,17,17,17,18,19
DB 19,17,17,18,16,16,15,16,17,19,15
DB 1FH
TAB_TONE4: DB 0,12,12,13,12,15,14,12,12,13,12,16,15 ;生日快乐
DB 12,12,19,17,15,14,13,18,18,17,15,16,15
DB 1FH
TAB_TONE5: DB 0,19,17,19,22,20,22,19,19,15,16,17,16,15,16 ;送别
DB 19,17,19,22,21,20,22,19,19,16,17,18,14,15
DB 20,22,22,21,20,21,22,20,21,22,20,20,19,17,15,16
DB 19,17,19,22,21,20,22,19,19,16,17,18,14,15
DB 1FH
;从6开始,6——低6,7——低7,8——1,9——2 ,10——3,11——4,12——5,13——6,14——7,15——高1
; 16——高2,17——高3,18——高4,19——高5,20——高6
TAB_TONE6: DB 0,20,20,21,20,20,21,20,21,22,21,20,21,20,18 ;樱花
DB 17,15,17,18,17,17,15,14,20,21,22,21,20,21,20,18
DB 17,15,17,18,17,17,15,14,20,20,21,20,20,21
DB 17,18,21,20,18,17
DB 1FH
TAB_TONE7: DB 0,20,19,17,20,19,17,20,20,19,20,20,19,17,20,19,17,16,16,15,16 ;虹彩妹妹
DB 17,17,19,20,22,20,19,17,17,19,15,17,17,17,17,17,13,13,12,13
DB 1FH
TAB_TONE8: DB 0,10,12,12,10, 13,13,14,13,13,13,12, 15,15,15,15,13,15,13, 12
DB 10,12,12,12,10, 13,13,14,13,13,13,12, 15,15,15,15,13,13,15,16
DB 19,19,19,19,19,17,16, 15,15,15,13,15,13,15, 16,16,16,16,15,17,16, 16
DB 17,17,17,17,16,15,15,15,16,15,13,12, 12,12,12,13,12,16,17,15
DB 1FH
TAB_TONE9: DB 0,00H
DB 1FH
TAB_TONE10: DB 0,00H
DB 1FH
;-------(实际音高表,每个音高包括两个延时值)-----------------
;第一个音符为6,7。。。
TAB_TONE: DB 29, 41, 11, 99, 131,6, 233,2, 13, 62
DB 14, 54, 233,1, 89, 5, 79, 5, 18, 27 ;( 高1)
DB 15, 29, 18, 21, 17, 21, 12, 27, 103, 1
DB 13, 19, 10,24 , 11,19
;----------------------乐曲播放速度表-----------------------
TAB_SPEED: DB 00H , 0C3H, 84H, 0E0H, 84H, 0D0H, 0EFH, 0CDH, 84H, 0CDH
DB 00H, 0C7H, 84H, 0CDH, 84H, 0CFH, 84H, 0CDH, 84H, 6DH
;-----------------------乐曲初值地址表----------------------------
TAB_NUM_L: DW TAB_L0, TAB_L1, TAB_L2, TAB_L3, TAB_L4, TAB_L5
DW TAB_L6, TAB_L7, TAB_L8, TAB_L9, TAB_L10
TAB_NUM_T: DW TAB_TONE0, TAB_TONE1, TAB_TONE2, TAB_TONE3, TAB_TONE4
DW TAB_TONE5, TAB_TONE6, TAB_TONE7, TAB_TONE8, TAB_TONE9
DW TAB_TONE10
E: