您当前的位置:五五电子网电子知识单片机-工控设备51单片机89c51六首歌曲的音乐门铃程序 正文
89c51六首歌曲的音乐门铃程序

89c51六首歌曲的音乐门铃程序

点击数:7539 次   录入时间:03-04 11:53:18   整理:http://www.55dianzi.com   51单片机

buzzer        equ        p2.4
KEY        EQU        P3.7

            org          00h                  ;主程序起始地址
            jmp          start                ;跳动主程序
            org          0bh                  ;timer0中断起始地址
            jmp          tim0                 ;跳至timer0在mode1
start:       MOV           tmod,#00000001b      ;设timer0在mode1
             MOV           ie,#10000010b        ;中断使能
            jb           KEY,$               ;第一次按to?
            call         delay1               ;消除抖动
            jnb          KEY,$               ;to放开?
             MOV           31h,#00              ;按to次数计数指针初值为00h
start0:             
             MOV           30h,#low song        ;取简谱码指针(第1首)
next:        MOV           a,30h
             MOV           dptr,#table
             MOV c         a,@a+dptr            ;至相关页码,高4位为音符的高低
             MOV           r2,a                 ;低4位为音符的节拍
            jz           end0                 ;检查简谱码是否已结束(有无00?)
            anl          a,#0fh               ;取节拍(低4位) 
             MOV           r5,a                 ;存入r5,节拍的时间
             MOV           a,r2
            swap         a 
            anl          a,#0fh               ;取音频值(高4位)
            jnz          sing                 ;是否为0,是0则不发音
            clr          tr0
            jmp          d1
sing:       dec          a                    ;因0不列入
             MOV           22h,a                ;存入(22h)
            rl           a                    ;乘2
             MOV           dptr,#table
             MOV c         a,@a+dptr            ;至table取码,取t的值
             MOV           th0,a                ;取到的高位字节存入th0
             MOV           21h,a                ;取到的高位字节存入(21h)
             MOV           a,22h                ;再载入取到的音符码
            rl           a                    ;乘2

[1] [2] [3] [4] [5]  下一页


本文关键字:程序  音乐  歌曲  51单片机单片机-工控设备 - 51单片机