4844|2

446

帖子

0

TA的资源

裸片初长成(高级)

楼主
 

一个音乐程序的问题,请大家看看 [复制链接]

流程见图 程序如下 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 P2.5 ;P2.5是音乐输出引脚 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 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H end
此帖出自单片机论坛
点赞 关注
 

回复
举报

446

帖子

0

TA的资源

裸片初长成(高级)

沙发
 

回复: 一个音乐程序的问题,请大家看看

此帖出自单片机论坛
 
 

回复

446

帖子

0

TA的资源

裸片初长成(高级)

板凳
 

回复: 一个音乐程序的问题,请大家看看

流程中的B清0是什么意思啊, 程序中我怎么找不到这个B呢? 请高手指点一下 谢谢
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表