音符 频率(HZ) 简谱码(T值) 
中 1 DO 523 64580 
中 2 RE 587 64684 
中 3 M 659 64777 
中 4 FA 698 64820 
中 5 SO 784 64898 
中 6 LA 880 64968 
中 7 SI 988 65030 
采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:
TABLEDW64580,64684,64777,64820,64898,64968,65030
3.软件的设计
3.1设计方案1
源程序:
方案一:产生按键音符
  ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP BREAK
MAIN:  MOV TMOD,#01H       ;设置定时器0的工作方式
        SETB EA
       SETB ET0               ; 设置定时器0中断
       SETB TR0               ; 启动定时器0
WAIT1: LCALL KEY             ; 调用KEY子程序,判断有键按下否?第几个键?
       CLR EA                 ;屏蔽中断
       CJNE R3,#00H,WAIT1     ;如果R3=0,表示有键按下
       MOV A,22H              ;将22H里存放的按键号送给A
       RL A                   ; 因为查表里都是字,所以得乘2查得数据
       MOV DPTR,#TABLE      ;指向表头
       MOVC A,@A+DPTR      ; 查表
       MOV TH0,A             ;将数据高位送TH0
       MOV 21H,A             ; 将高位备份
       MOV A,22H             ;将22H里存放的按键号送给A
       RL A                   ;因为查表里都是字,所以得乘2查得数据
       INC A                  ;取低位数据
       MOVC A,@A+DPTR
       MOV TL0,A
       MOV 20H,A
WAIT2: LCALL KEY
       SETB EA
       CJNE R3,#00H,WAIT1
       JMP WAIT2
KEY:   MOV R3,#00H          ; KEY子程序,判断有键按下否?第几个键?
       MOV R1,#0FFH
       MOV R0,#00H
       MOV A,R1
       MOV P2,A
       MOV A,P2
       CLR C
       CPL C               ;利用标志位CY来判断是哪个键按下
       MOV R2,#08H
WAIT3: RLC A               ;移位判断
       JNC STORE
       INC R0       
       DJNZ R2,WAIT3
STORE: MOV 22H,R0        ; 将按键号存22H,R3=0有键按下
       MOV R3,#00H
       RET
BREAK: PUSH ACC          ;  中断产生方波,从P1.0口输出
       PUSH PSW
       MOV TL0,20H
       MOV TH0,21H
       CPL P1.0
       POP PSW
       POP ACC
       RETI
TABLE: DW 65030,64968,64898,64820,64777,64684,64580 ; 7,6,5,4,3,2,1
       END
3.2设计方案2
方案二:产生按键音符
       ORG 0000H
       SJMP START
       ORG 000BH
       AJMP INT_0
       ORG 0030H
START: MOV P1,#00H
       SETB EA
       SETB ET0                       ;计数器0
       MOV TMOD,#02H
       MOV TH1,#09CH
       MOV TL1,#09CH                 ;定时器初植
       CLR TR0                        ;定时器不允许
SCAN:                                 ;键盘扫描
       MOV A,P2                   ;判断键盘按下,跳到SCAN_1,若未按,继续扫描
       CJNE A,#0FFH,SCAN_1
       NOP