永发信息网

如何将51单片机的音乐程序与其他程序融合,同时运行?初学者求助~希望可以回答详细~谢谢~

答案:4  悬赏:0  手机版
解决时间 2021-04-06 20:27
  • 提问者网友:十年饮冰
  • 2021-04-06 06:35
如何将51单片机的音乐程序与其他程序融合,同时运行?初学者求助~希望可以回答详细~谢谢~
最佳答案
  • 五星知识达人网友:零点过十分
  • 2021-04-06 07:33
音乐程序一般要用到定时器,所以要融合其他程序,需要是具体情况而定,这里凭空而谈是说不清楚的。
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-04-06 11:10
多线程?用定时计数器试试,两个函数 隔一个时间短运行一个快速切换。先声明我没有试过啊,不知道能不能成功啊
  • 2楼网友:往事隔山水
  • 2021-04-06 10:07
有几句话想对初学者说,51都是从main函数开始逐条语句执行指令的,永远没有两条指令同时执行的情况(这里指的是程序语句,那种给了定时器初值让定时器定时的如TL0++的不算),就算是中断被触发后,也是先停止正在做的事情去相应中断服务函数。
所以你要好好地想一下你的程序流程,最好能画个程序流程图出来让有经验的人帮你看一下是否合理。你说的音乐程序指的是哪种的?蜂鸣器奏乐?语音芯片播放?还是解码芯片对存储卡解码的哪种?每一种都有自己的机制,程序跑法也不一样。
你的其他程序指的又是什么?它们之间在时间上有没有什么冲突?这都是你要考虑的。初学者,还是从简单的程序开始学吧,打好基础才是最重要的。追问我了解了,我的音乐程序是蜂鸣器奏乐,单独运行可以播放音乐,另外的一个程序是一个游戏代码,想在打游戏的时候同时播放音乐,不过音乐程序中已经运用了定时器中断,所以想用软件中断实现背景音乐~具体怎么融合这两个程序,使它们在一个单片机上运行呢?追答是蜂鸣器的话,就是输出各种频率的方波来实现发声咯,所以要保证 (1/定时器的最小定时时间 )小于你要是输出的方波的频率,否则有些声调就没法输出了。除此之外,每个调与调之间还有时间间隔的,这个时间也要大于定时器的最小定时时间。既然你已经有了现成的程序,那这两个问题都解决了,我估计它是用两个定时器来实现的。
接下来看看你的游戏程序需不需要用到同一个定时器,如果需要就改一下,注意中断的优先级追问恩,单独的音乐程序已经用了两个定时器实现了,单独的游戏程序也已经写好了,没有用到定时器,现在想把这个音乐作为背景音乐加入游戏中,用一个单片机实现这两个程序的融合,应该只能用软件实现中断了,该怎么写程序呢?
  • 3楼网友:傲气稳了全场
  • 2021-04-06 09:00
在一个函数delay的时候切换就好了,单片机一般的处理量都不大。
时间大部分都用在delay上了。利用好delay的时间就可以模拟出同时运行的效果。
一般是调用延时的时候保存当前函数的执行地址,切换到另外一个函数执行。这样循环就可以模拟出同时运行的效果。追问知道你的大概意思了,但是用delay处理的话,处理量应该很大吧~追答担心处理量大的话还可以用中断切换处理。
这就模仿OS了。
OS就是利用好delay的时间还有定时切换。追问恩,你说的是软件中断吧?把音乐程序与游戏程序定时切换,造成类似于视觉暂留的效果吧?关键是定时切换,这个怎么编程呢?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯