《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

音乐机器人编程(ASM)
程序匠人 发表于 2005-8-17 18:27:00  阅读全文 | 回复(0) | 引用通告 | 编辑

      音乐机器人编程

      作者:佚名    文章来源:www.CETINet.com  
      功能有选曲,当电子琴演奏,加减速,原速,通过红外遥控,遥控器是牡丹彩电的用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:

 

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!