问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机 音乐程序编写 歌曲《小星星》

发布网友 发布时间:2022-04-20 14:55

我来回答

1个回答

热心网友 时间:2023-09-15 21:50

只有音乐发声汇编程序,没有加入LED灯,供参考。数据代码已改为小星星发声
;**********************************************
ORG
0000H
SJMP
MAIN
ORG
0BH
AJMP
TIME0
;*************主程序************************
MAIN:
MOV
SP,#60
MOV
TMOD,#01H
;T0定时工作方式
MOV
IE,#82H
;CPU
中断允许,T0中断允许
START0:
MOV
30H,#00H
;TABLE
相对地址指针
NEXT:
MOV
A,30H
 
MOV
DPTR,#TABLE
;到TABLE处取
简谱码
 节拍

MOVC
A,@A+DPTR
MOV
R2,A
;取到的简谱码
 节拍码
暂存于R2中
JZ
ENDF
;取到
00
结束
ANL
A,#0FH
;否,取低四位
节拍

MOV
R5,A
;将节拍码存于R5中
MOV
A,R2
;简谱码
 节拍

给A
SWAP
A
;高4位

低4位
交换
ANL
A,#0FH
;取简谱

JNZ
SING
;取到的简谱
码不是0,则去发声
CLR
TR0
;取到0
则不发声
SJMP
DLY1
;节拍延时子程序(
随节拍码变化,延时时间不同)
;---------------发声-----------------------
SING:
DEC
A
;取到的简谱码减1 
;(简谱码计数值16位数据存储首地址从TABLE1
《相对地址》0处开始放起,所以要减1)
MOV
22H,A
;存入(22H)中
RL
A
;乘2
因为取的数据占两字节(16位)
;所以指针增加量要乘2
MOV
DPTR,#TABLE1
;...........简谱码转换为相应定时器16位计数值.............
MOVC
A,@A+DPTR
;到TABLE1取相应的高字节计数值
MOV
TH0,A
;高字节计数值存入TH0和(21H)中
MOV
21H,A
MOV
A,22H
;减1的简谱码给A
RL
A
;乘2
因为取的数据占两字节(16位)
;所以指针增加量要乘2
INC
A
;A
增加
取下一个字节计数值
;...........简谱码转换为相应定时器16位计数值.............
MOVC
A,@A+DPTR
;到TABLE1取相应的低字节计数值
MOV
TL0,A
;低字节计数值存入TL0和(20H)中
MOV
20H,A
SETB
TR0
;启动T0定时器让喇叭发出不同频率声音
;---------------节拍延时-------------------
DLY1:
ACALL
DELAY
;基本单位时间为1/4拍
187ms
INC
30H
;取下一个简谱码
 节拍

SJMP
NEXT
;---------------歌放完结束---------------
ENDF:
CLR
TR0
;关闭T0定时器
AJMP
START0
;反复循环
;****T0中断子程序(用来驱动喇叭发出不同频率声音)**************
TIME0:
PUSH
ACC
PUSH
PSW
MOV
TL0,20H
;重装计数值
MOV
TH0,21H
CPL
P3.7
;驱动发声
POP
PSW
POP
ACC
RETI
;******************节拍延时187ms****************************
DELAY:
MOV
R7,#187
;187ms延时子程序
DLY2:
MOV
R4,#02
DLY3:
MOV
R3,#248
DJNZ
R3,$
DJNZ
R4,DLY3
DJNZ
R7,DLY2
DJNZ
R5,DELAY
RET
;*******音符T值表(用来让定时器发出不同的频率)**DW
表示一个
计数值
占两个字节存储单元***************
TABLE1:
DW
64260,64400,64524,64580,64684
;低音SO
低音LA
低音SI
 /中音DO
中音RE 
DW
64777,64820,64898,64968,65030
;中音MI
中音FA
中音SO
中音LA
中音SI
DW
65058,65110,65157,65178,65217
;高音DO
高音RE
高音MI
高音FA
高音SO
;*********简谱码
 节拍码(高4位简谱码
,低4位节拍码)*************
TABLE:
DB
44H,44H,84H,84H
 
;
1
1
5
5
 
 
 
 
DB
094H,094H,88h
                 
 ;
6
6
5
-
 
 
 
 
DB
74H,74H,63H,63H                ;
 4
4
3

DB
52H,52H,48h
                       ;
 2
2
1-
DB
84H,84H,74H,74H
                ;
5
5
4
4
DB
64H,64H,58h                         ;
3
3
2-
DB
84H,84H,74H,74H
                ;
5
5
4
4
DB
64H,64H,58h
                        ;
3
3
2-
DB
44H,44H,84H,84H
              
 ;
1
1
5
5
 
 
 
  
DB
094H,094H,88h                     ;
6
6
5
-
 
 
DB
74H,74H,63H,63H                 ;
 4
4
3

DB
52H,52H,48h                         ;
 2
2
1-
END
加入了LED灯,水平有限,效果有点不太好
;**********************************************
ORG
0000H
SJMP
MAIN
ORG
0BH
AJMP
TIME0
;*************主程序************************
MAIN:
MOV
SP,#60
MOV
TMOD,#01H
;TO定时工作方式
MOV
IE,#82H
;CPU
中断允许,TO中断允许
START0:
MOV
30H,#00H
;TABLE
相对地址指针
NEXT:
MOV
A,30H
 
MOV
DPTR,#TABLE
;到TABLE处取
简谱码
 节拍

MOVC
A,@A+DPTR
MOV
R2,A
;取到的简谱码
 节拍码
暂存于R2中
JZ
ENDF
;取到
00
结束
ANL
A,#0FH
;否,取低四位
节拍

MOV
R5,A
;将节拍码存于R5中
MOV
A,R2
;简谱码
 节拍

给A
SWAP
A
;高4位

低4位
交换
ANL
A,#0FH
;取简谱

JNZ
SING
;取到的简谱
码不是0,则去发声
CLR
TR0
;取到0
则不发声
SJMP
DLY1
;节拍延时子程序(
随节拍码变化,延时时间不同)
;---------------发声-----------------------
SING:
DEC
A
;取到的简谱码减1 
;(简谱码计数值16位数据存储首地址从TABLE1
《相对地址》0处开始放起,所以要减1)
MOV
22H,A
;存入(22H)中
RL
A
;乘2
因为取的数据占两字节(16位)
;所以指针增加量要乘2
MOV
DPTR,#TABLE1
;...........简谱码转换为相应定时器16位计数值.............
MOVC
A,@A+DPTR
;到TABLE1取相应的高字节计数值
MOV
TH0,A
;高字节计数值存入TH0和(21H)中
MOV
21H,A
MOV
A,22H
;减1的简谱码给A
RL
A
;乘2
因为取的数据占两字节(16位)
;所以指针增加量要乘2
INC
A
;A
增加
取下一个字节计数值
;...........简谱码转换为相应定时器16位计数值.............
MOVC
A,@A+DPTR
;到TABLE1取相应的低字节计数值
MOV
TL0,A
;低字节计数值存入TL0和(20H)中
MOV
20H,A
SETB
TR0
;启动T0定时器让喇叭发出不同频率声音
;---------------节拍延时-------------------
DLY1:
ACALL
DELAY
;基本单位时间为1/4拍
187ms
INC
30H
;取下一个简谱码
 节拍

CPL
P1.0
  LED灯
闪烁
CPL
P1.1
 
CPL
P1.2
CPL
P1.3
CPL
P1.4
CPL
P1.5
CPL
P1.6
CPL
P1.7
SJMP
NEXT
;---------------歌放完结束---------------
ENDF:
CLR
TR0
;关闭T0定时器
AJMP
START0
;反复循环
;****T0中断子程序(用来驱动喇叭发出不同频率声音)**************
TIME0:
PUSH
ACC
PUSH
PSW
MOV
TL0,20H
;重装计数值
MOV
TH0,21H
CPL
P3.7
;驱动发声
POP
PSW
POP
ACC
RETI
;******************节拍延时187ms****************************
DELAY:
MOV
R7,#187
;187ms延时子程序
DLY2:
MOV
R4,#02
DLY3:
MOV
R3,#248
DJNZ
R3,$
DJNZ
R4,DLY3
DJNZ
R7,DLY2
DJNZ
R5,DELAY
RET
;*******音符T值表(用来让定时器发出不同的频率)**DW
表示一个
计数值
占两个字节存储单元***************
TABLE1:
DW
64260,64400,64524,64580,64684
;低音SO
低音LA
低音SI
 /中音DO
中音RE 
DW
64777,64820,64898,64968,65030
;中音MI
中音FA
中音SO
中音LA
中音SI
DW
65058,65110,65157,65178,65217
;高音DO
高音RE
高音MI
高音FA
高音SO
;*********简谱码
 节拍码(高位简谱码
,低位节拍码)*************
TABLE:
DB
44H,44H,84H,84H
 
;
1
1
5
5
 
 
 
 
DB
094H,094H,88h
;
6
6
5
-
 
 
 
 -表示有节拍
DB
74H,74H,63H,63H
;
 4
4
3

DB
52H,52H,48h
;
 2
2
1-
DB
84H,84H,74H,74H
;
5
5
4
4
DB
64H,64H,58h
;
3
3
2-
DB
84H,84H,74H,74H
;
5
5
4
4
DB
64H,64H,58h
;
3
3
2-
DB
44H,44H,84H,84H
 
;
1
1
5
5
 
 
 
  
DB
094H,094H,88h
;
6
6
5
-
 
 
DB
74H,74H,63H,63H
;
 4
4
3

DB
52H,52H,48h
;
 2
2
1-
END

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
房产证是房管局具体哪个部门在办理 电脑绿灯闪烁无法开机电脑主机绿灯一直亮但是开不开机没有反应_百度... 联想19寸显示器出现绿色一闪一闪 显示器绿灯闪烁,没图像 为什么我的联想显示器的指示灯总是闪烁??? 梦见一个小乞丐撒尿到头来的预兆 国服3.22战斗贼如何打出《高》DPS 国服3.22盗贼天赋,武器选择 魔兽世界3.22版本,战斗贼输出循环,请详细一点儿,谢谢,还有,红色宝石全部... 当老板需要具备哪些品质和能力 汪苏泷小星星数字简谱不要图片 地球上的小星星主演叫什么 我的QQ空间从主页面打不开了就是点那个小星星也不... 求僵尸道长1080。求资源 某滑雪道为曲线轨道,滑雪道长s=2.5*103m 道长送分行动——翻译篇 求道长妖娆by萧因百度云 求僵尸道长1,2下载 都市版英雄无敌by原猛虎道长精心小说,免费txt可下载 求《一闪一闪亮晶晶》的全部歌词。 哈尔滨第24届世界大学生冬运会某滑雪道为曲线轨道... lol的l是什么意思?(关于爱情的) 法语的LOL 是什么意思啊? 朋友发微信给我:对呀LOL是什么意思 LOL其实是什么意思啊? <3、LOL什么意思啊??? 网络术语:LOL和GG是啥意思啊? 为什么国外玩家喜欢在游戏胜利或者兴奋的时候打“gg... lol到底什么意思啊,不是游戏的那个 LOL 是什么意思?好像是一个表情。 僵尸道长 1-2季全集高清完整版视频免费在线观看,... 2我的QQ空间和资讯打不开点QQ版面上的小星星没反应... qq空间为什么打不开 一点空间那个小星星 他出现一... 高分跪求小星星教材里面的英文版小猫钓鱼的全内容。急 求创造营2019周震南的小星星mp3 标志是一个银色的大星星上面附着一个还是两个蓝色... 各位道长打坐姿势是怎么做到的 A3000H数字或拼音字体上有小星星的图案怎么回事 qq浏览器怎么设置关闭页面自动返回前一个页面 qq浏览器搜索后直接返回首页 下载好的QQ浏览器,一用就反回主屏幕? 你好,我的手机很正常,但打开QQ浏览器时,进入网... 为什么qq浏览器文档打开退出后返回最上面? qq浏览器老是莫名其妙的不停返回上个页面 为什么qq浏览器文档打开退出后返回到置顶?如何取... qq浏览器不能返回上一步 qq浏览器如何在淘宝商品页面添加返利和优惠券选项? QQ浏览器:返回数据不能格式化:syntaxError:缺少... 苹果手机的qq浏览器怎么返回,按home键退出,再进... 魅蓝qq浏览器怎么返回首页