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

📄 music.asm

📁 这是一个由单片机控制的蜂鸣器演唱《老鼠爱大米》的源代码。
💻 ASM
字号:
/*******************************************************************************
*  标题:  单片机开发系统演示程序 -  老鼠爱大米                                 *
*  日期:  2007-1-1                                                             *
*  版本:  1.0                                                                  *
*  作者:  微控电子 - Caai                                                      *
*  邮箱:  microcontroller@163.com                                              *
*  QQ  : 676371312                                                            *
********************************************************************************
*  描述:                                                                       *
*         单片机模拟声音                          		               *
********************************************************************************
*  跳线设置:J34 从左向右数第6短接    	     		                       *
*                                                                              *
*                                                                              *
********************************************************************************
* 【版权】 Copyright(C)微控电子    All Rights Reserved                         *
* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
*******************************************************************************/ 
PP EQU P3.6

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
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表头地址送DPTR
MOV 20H,#00H ;中断计数器清0
MUSIC1:
NOP
CLR A ;;A;清零
MOVC A,@A+DPTR ;查表取代码
JZ END0 ;是00H,则结束
CJNE A,#0FFH,MUSIC5 ;;如果是休止符,往下执行
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A ;;R6=18H音符的频率
INC DPTR ;DPTR;;加一
MOV A,#0
MOVC A,@A+DPTR ;取节拍代码送R7
MOV R7,A ;;R7=30H音符发音的时间
SETB TR0 ;启动计数 
MUSIC2:
NOP
CPL PP ;音乐输出口控制
MOV A,R6
MOV R3,A ;;R3=R6=18H
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?
;不等,则继续循环
MOV 20H,#00H ;等于,则取下一代码
INC DPTR
LJMP MUSIC1
MUSIC3:
NOP ;休止100毫秒
CLR TR0 
MOV R2,#0DH ;R2=13
MUSIC4:
NOP
MOV R3,#0FFH ;R3=255
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#0FFH ;歌曲结束,延时1秒后继续
MUSIC6:
MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL:
NOP
DEL3: 
MOV R4,#02H
DEL4: 
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
NOP

DAT:
DB 30H,20H,2BH,10H,26H,10H
DB 26H,20H,26H,20H,2BH,20H,30H,10H,2BH,10H,2BH,60H,30H,10H,2BH,10H
DB 26H,20H,26H,20H,2BH,20H,30H,20H,30H,60H,40H,10H,39H,10H
DB 40H,40H,40H,10H,40H,10H,39H,10H,30H,10H,30H,60H,30H,20H
DB 30H,20H,30H,20H,30H,10H,2BH,10H,2BH,40H,30H,20H,2BH,10H,26H,10H
DB 26H,20H,26H,20H,20H,20H,1CH,10H,2BH,10H,2BH,40H,26H,20H,2BH,10H,30H,10H
DB 30H,20H,30H,20H,2BH,20H,26H,10H,20H,10H,20H,60H,40H,10H,40H,10H
DB 39H,20H,30H,10H,30H,10H,30H,10H,26H,30H,2BH,20H,30H,20H,30H,20H,2BH,10H,30H,10H
DB 30H,0C0H,26H,20H,26H,10H,20H,10H
DB 20H,20H,20H,10H,20H,10H,20H,20H,20H,10H,1CH,10H,1CH,40H,26H,20H,2BH,20H
DB 30H,20H,30H,20H,30H,20H,2BH,10H,26H,10H,26H,60H,26H,10H,20H,10H
DB 20H,20H,20H,20H,20H,20H,1CH,10H,18H,10H,18H,20H,1CH,20H,20H,20H,26H,20H
DB 2BH,20H,30H,20H,30H,20H,39H,10H,2BH,10H,2BH,60H,26H,10H,20H,10H
DB 20H,20H,20H,20H,20H,10H,1CH,20H,20H,10H,1CH,40H,26H,20H,2BH,20H
DB 30H,20H,30H,20H,30H,20H,2BH,10H,26H,10H,26H,60H,26H,10H,20H,10H
DB 20H,20H,20H,20H,20H,20H,1CH,10H,18H,10H,18H,20H,1CH,20H,20H,20H,26H,10H,2BH,10H
DB 2BH,20H,2BH,20H,2BH,80H,30H,10H,26H,20H,24H,10H
DB 26H,20H,2BH,20H,2BH,80H,26H,20H,2BH,10H,30H,10H


DB 30H,40H,26H,20H,2BH,10H,30H,10H,30H,40H,26H,20H,2BH,20H
DB 26H,20H,30H,20H,26H,20H,1CH,10H,20H,10H,20H,60H,26H,10H,20H,10H
DB 1CH,20H,1CH,10H,20H,10H,20H,20H,1CH,10H,20H,10H,20H,40H,26H,10H,2BH,10H,30H,20H
DB 2BH,20H,2BH,10H,26H,10H,2BH,20H,30H,10H,2BH,10H,2BH,40H,26H,20H,2BH,10H,30H,10H
DB 30H,40H,26H,20H,2BH,10H,30H,10H,30H,40H,26H,20H,2BH,20H
DB 26H,20H,30H,20H,26H,10H,1CH,20H,20H,10H,20H,60H,26H,10H,20H,10H
DB 1CH,20H,1CH,20H,18H,20H,20H,10H,1CH,10H,20H,30H,20H,10H,26H,10H,2BH,10H,30H,20H
DB 2BH,40H,2BH,10H,30H,10H,2BH,10H,26H,10H,2BH,40H,26H,20H,26H,20H,2BH,60H,30H,20H,30H,0C0H
DB 00H


END

⌨️ 快捷键说明

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