c51单片机音乐门铃C语言程序,89c51六首歌曲的音乐门铃程序
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
inc a ;加1
MOV c a,@a+dptr ;至table取相对的低位字节计数值
MOV tl0,a ;取到的低位字节存入tl0
MOV 20h,a ;取到的低位字节存入(20h)
setb tr0 ;启动timer0
d1: call delay
inc 30h ;取简谱码指针加1
jmp next
end0: clr tr0 ;停止计数器
MOV a,31h ;载入计次指针
xrl a,#00h ;是否按第1次?
jnz end1 ;不是则跳至end1
jb KEY,$ ;按第2次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song1 ;第2首歌指针
jmp next
end1:
MOV a,31h ;载入计次指针
xrl a,#01h ;是否按第2次?
jnz end2 ;不是则跳至end2
jb KEY,$ ;按第3次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song2 ;第3首歌指针
jmp next
end2:
MOV a,31h ;载入计次指针
xrl a,#02h ;是否按第3次?
jnz end3 ;不是则跳至end3
jb KEY,$ ;按第4次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song3 ;第4首歌指针
jmp next
end3:
MOV a,31h ;载入计次指针
xrl a,#03h ;是否按第4次?
jnz end4 ;不是则跳至end4
jb KEY,$ ;按第5次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song4 ;第5首歌指针
jmp next
end4:
MOV a,31h ;载入计次指针
xrl a,#01h ;是否按第5次?
jnz end5 ;不是则跳至end2
jb KEY,$ ;按第6次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song5 ;第6首歌指针
jmp next
end5:
jmp start ;回到第1次位置
tim0: push aCC ;将a的值暂存于堆栈
push psw ;将psw的值暂存于堆栈
setb rs0 ;设工作寄存器库1,rs0=1,rs1=0
clr rs1
MOV tl0,20h ;重设计数值
MOV th0,21h
cpl buzzer ;将p10位反相
clr rs0
pop psw ;至堆栈取回psw的值
pop acc ;至堆栈取回a的值
reti ;返回主程序
delay: MOV r7,#02 ;125秒
d2: MOV r4,#125
d3: MOV r3,#248
djnz r3,$
djnz r4,d3
djnz r7,d2
djnz r5,delay ;决定节拍
ret
delay1: MOV r4,#20
d4: MOV r3,#248
djnz r3,$
djnz r4,d4
ret org 300h
table:
dw 64260,64400,64524,64580
dw 64684,64777,64820,64898
dw 64968,65030,65058,65110
dw 65157,65178,65217
song: ;第一首歌 哈 巴 狗
;1
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
;2
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
db 00h
song1: ;第2首歌 生 日 快 乐
;1
db 82h,01h,81h,94h,84h
db 0b4h,0a4h,04h
db 82h,01h,81h,94h,84h
db 0c4h,0b4h,04h
;2
db 82h,01h,81h,0f4h,0d4h
db 0b4h,0a4h,94h
db 0e2h,01h,0e1h,0d4h,0b4h
db 0c4h,0b4h,04h
db 00h
song2: ;第3首歌 不 倒 翁
;1
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
;2
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
db 00h
song3: ;第4首歌 妹妹背着洋娃娃
;1
db 84h,02h,82h,64h,54h
db 64h,54h,48h
db 64h,02h,52h,44h,24h
db 14h,24h,18h
;2
db 24h,02h,22h,42h,24h
db 44h,54h,68h
db 54h,02h,52h,84h,84h
db 54h,64h,48h
db 00h
song4: ;第5首歌 两只老虎
;1
db 44h,54h,64h,44h
db 44h,54h,64h,44h
db 64h,74h,88h
db 64h,74h,88h
;2
db 82h,92h,82h,72h,64h,44h
db 82h,92h,82h,72h,64h,44h
db 44h,84h,48h
db 44h,14h,48h,00H
song5: ;第6首歌 三只小猫
;1
db 62h,82h,82h,62h,98h
db 92h,0b2h,0b2h,82h,98h
db 62h,82h,82h,52h,68h
db 92h,0b2h,0b2h,82h,98h
;2
db 62h,82h,82h,62h,92h,92h,94h
db 92h,0b2h,0b2h,92h,84h,94h
db 0b8h,0b4h,04h
db 00h
end
89c51六首歌曲的音乐门铃程序
c51单片机音乐门铃C语言程序,89c51六首歌曲的音乐门铃程序相关推荐
- c51单片机音乐门铃C语言程序,单片机六首歌曲的音乐门铃程序
单片机六首歌曲的音乐门铃程序 来源:-- 作者:-- 浏览:1346 时间:2016-08-10 14:18 标签: 摘要: buzzer equ p2.4 KEY ...
- c语言单片机计时程序,C51单片机秒表计时(C语言)
<C51单片机秒表计时(C语言)>由会员分享,可在线阅读,更多相关<C51单片机秒表计时(C语言)(4页珍藏版)>请在人人文库网上搜索. 1.南开大学滨海学院C51嵌入式软件设 ...
- 51单片机c语言秒表,C51单片机秒表计时(C语言).doc
C51单片机秒表计时(C语言).doc 南开大学滨海学院C51嵌入式软件设计(C语言) 题目计时秒表 l 功能描述本设计实现在99秒内的秒表计时,一个按键实现开始.暂停.复位.l 原理概述P1接四位七 ...
- C51单片机————汇编与C语言
C51单片机-----汇编与C语言 如有错误,请留言指正!!!
- 邓紫棋歌曲计算机音乐数字,邓紫棋播放量最高的十首歌曲
邓紫棋(G.E.M.)国内人气最高的女歌手之一.2008年10月,16岁的邓紫棋发行首张音乐EP<G.E.M.>正式进入歌坛,三年之后她便在香港红馆举办了5场个人演唱会.2014年参加&l ...
- 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...
- 关于星空的java小程序_有关星空的小程序有哪些?有关星空的小程序分享!
有关星空的小程序分享 星空指南小程序,目前小程序越来越多了,涉及的领域也越来越多,所有就有一款关于星空的小程序给大家分享,快来木蚂蚁资讯频道看看吧. 星空指南小程序分类:星空小程序.天文小程序 星空指 ...
- 如何将一首网易云音乐,生成一个音乐二维码?
有人说,阿黛尔的[Someone like you]这首歌名的中文翻译是:终有弱水替沧海,再无相思寄巫山: 有人说,他家的猫听了马克西姆的[出埃及记]后,再也没有回来: 有人说,他失恋了,听火星哥的[ ...
- 89c51c语言程序,89C51单片机计算器C语言程序.doc
89C51单片机计算器C语言程序 89C51单片机[计算器]C语言程序 89C51单片机[计算器]C语言程序2010-12-15 16:54/*89C51单片机[计算器]C语言程序*/ /*P2位选P ...
- c51单片机c语言程序,C51单片机的C语言程序设计.ppt
<C51单片机的C语言程序设计.ppt>由会员分享,可在线阅读,更多相关<C51单片机的C语言程序设计.ppt(44页珍藏版)>请在人人文库网上搜索. 1.2020/8/7,1 ...
最新文章
- Gradle学习目录
- 算法训练 最小乘积(基本型) (蓝桥杯水题)
- 需求分析之UML用例图学习
- c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍
- pymol怎么做底物口袋表面_汽车表面有划痕怎么办?建议大家这样做,自己动手就解决...
- 15-07-06 定闹钟
- Security+ 学习笔记11 应用程序攻击
- 电脑桌面背景色及分辨率设置问题-仅供参考
- java实现格拉布斯准则_格拉布斯准则附件.pdf
- html添加购买按钮,萤火小程序商城给前端和商品组件增加“购买”按钮的方法...
- 计算机专业题库,计算机专业综合练习题库(附答案)
- 离职“招黑”的6种行为,最后一个太惹人反感!
- 服务器上自动备份数据库突然不备份了
- 测试大佬带你揭秘功能测试的内幕
- 每次打开Photoshop显示失败恢复文件清理方法
- OPC DA调研报告
- 为了防老板偷窥,程序员开源了这个神器
- 错误:The ‘pycocotools>=2.0‘ distribution was not found and is required by the application
- HDU-2140 Michael Scofield's letter 水题
- 智汀家庭云与Home Assistant如何接入HomeKit,并连接米家设备
热门文章
- u盘复制文件第二台计算机无文件夹,u盘做成启动盘后拷贝进去的文件不见了怎么办...
- win10计算机无动作后锁屏,怎么让win10不锁屏_让win10不锁屏的操作方法
- python求方程的根_python计算方程式根的方法
- php 冷门与常用函数
- 《天下强汉》6、西汉历史的最后一抹辉煌——绝域名将陈汤
- 【STM32F429】第7章 ThreadX GUIX移植到STM32F429(MDK AC5)
- 微积分基础之图形面积(体积)计算
- 敏捷项目管理术语大全
- cad图纸问号怎么转换文字_打开cad2016图纸字体和符号显示问号怎么办?
- elixer学习笔记