⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music0.asm

📁 我学单片机89C51时编的大部分程序都在里面
💻 ASM
字号:
  ORG     0000H
        LJMP    START
        ORG     000BH
        INC      20H          ;中断服务,中断计数器加1
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH    ;12M晶振,形成10毫秒中断
        RETI
START:
        MOV     SP,#50H
        MOV     TH0,#0D8H
        MOV     TL0,#0EFH
        MOV     TMOD,#01H     ;定时器0模式0
        MOV     IE,#82H        ;相当于SETB ET0;(定时器0开中断) SETB EA;(CPU开中断)
MUSIC0:
        NOP
        MOV     DPTR,#DAT      ;表头地址送DPTR
        MOV     20H,#00H        ;中断计数器清0
        MOV     B,#00H          ;表序号清0
MUSIC1:
        NOP
        CLR     A
        MOVC   A,@A+DPTR      ;查表取代码,取音调从R6,取到的是频率
        JZ       END0            ;是00H,则结束
        CJNE    A,#0FFH,MUSIC5
        LJMP    MUSIC3
MUSIC5:
        NOP
        MOV     R6,A
        INC      DPTR
        MOV     A,B
        MOVC    A,@A+DPTR    ;取节拍代码送R7,取到的是时间
        MOV     R7,A
        SETB     TR0           ;启动计数
MAIN:                          ;主要的取数循环
         NOP
        CPL      P1.0
        MOV     A,R6
        MOV     R3,A
        LCALL   DEL
        MOV     A,R7
        CJNE     A,20H,MAIN     ;中断计数器(20H)=R7否?  A为时间,循环减一来延时
                                   ;不等,则继续循环
        MOV     20H,#00H         ;等于,则取下一代码
        INC     DPTR
;        INC     B
         LJMP    MUSIC1
MUSIC3:
        NOP
        CLR     TR0               ;休止100毫秒
        MOV     R2,#26H
MUSIC4:
        NOP
        MOV     R3,#202H
        LCALL   DEL
        DJNZ    R2,MUSIC4
        INC     DPTR
        LJMP    MUSIC1
END0:
        NOP
        MOV     R2,#205H         ;歌曲结束,延时1秒后继续
MUSIC6:
        MOV     R3,#00H
        LCALL   DEL
        DJNZ    R2,MUSIC6
        LJMP    MUSIC0
DEL:
        NOP
DEL3:
        MOV     R4,#05H
DEL4:
        NOP
        DJNZ    R4,DEL4
        NOP
        DJNZ    R3,DEL3
        RET
        NOP
DAT:
        DB      18H,30H,1CH,10H
        DB      00H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -