表2  七个音符频率与计数值的对照表
音符 频率(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
采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:
TABLE DW 64580,64684,64777,64820,64898,64968,65030
3、歌曲:兰花草:
表3   歌曲音符频率与计数值的对照表
音符 简谱码 T值
低音M 1 64021
低音FA 2 64103
低音SO 3 64260
低音LA 4 64400
低音TI 5 64524
中音DO 6 64580
中音RE 7 64684
中音M 8 64777
中音FA 9 64820
中音SO A 64898
中音LA B 64968
中音TI C 65030
#5 831 D 65934
不发音 0 
4、软件设计如下:
ORG  00H              ;主程序起始地址
JB      P2.0 , START     ;键盘与歌曲选择为“1”选择歌曲为“0”键盘
JMP  MAIN              ;跳至键盘主程序
           ORG 000BH                  ;TIMER0中断起始地址
           LJMP BREAK                  ;跳至TIMER0中断子程序
           ORG  01BH               ;TIMER0中断起始地址
          LJMP     TIM0                 ;跳至TIMER1中断子程
MAIN:  MOV TMOD,#01H                    ;设置TIMER0在MODE1
        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,#TABLE2             ;指向表头
       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