如何将51单片机的音乐程序与其他程序融合,同时运行?初学者求助~希望可以回答详细~谢谢~
展开全部
在一个函数delay的时候切换就好了,单片机一般的处理量都不大。
时间大部分都用在delay上了。利用好delay的时间就可以模拟出同时运行的效果。
一般是调用延时的时候保存当前函数的执行地址,切换到另外一个函数执行。这样循环就可以模拟出同时运行的效果。
时间大部分都用在delay上了。利用好delay的时间就可以模拟出同时运行的效果。
一般是调用延时的时候保存当前函数的执行地址,切换到另外一个函数执行。这样循环就可以模拟出同时运行的效果。
更多追问追答
追问
知道你的大概意思了,但是用delay处理的话,处理量应该很大吧~
追答
担心处理量大的话还可以用中断切换处理。
这就模仿OS了。
OS就是利用好delay的时间还有定时切换。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有几句话想对初学者说,51都是从main函数开始逐条语句执行指令的,永远没有两条指令同时执行的情况(这里指的是程序语句,那种给了定时器初值让定时器定时的如TL0++的不算),就算是中断被触发后,也是先停止正在做的事情去相应中断服务函数。
所以你要好好地想一下你的程序流程,最好能画个程序流程图出来让有经验的人帮你看一下是否合理。你说的音乐程序指的是哪种的?蜂鸣器奏乐?语音芯片播放?还是解码芯片对存储卡解码的哪种?每一种都有自己的机制,程序跑法也不一样。
你的其他程序指的又是什么?它们之间在时间上有没有什么冲突?这都是你要考虑的。初学者,还是从简单的程序开始学吧,打好基础才是最重要的。
所以你要好好地想一下你的程序流程,最好能画个程序流程图出来让有经验的人帮你看一下是否合理。你说的音乐程序指的是哪种的?蜂鸣器奏乐?语音芯片播放?还是解码芯片对存储卡解码的哪种?每一种都有自己的机制,程序跑法也不一样。
你的其他程序指的又是什么?它们之间在时间上有没有什么冲突?这都是你要考虑的。初学者,还是从简单的程序开始学吧,打好基础才是最重要的。
更多追问追答
追问
我了解了,我的音乐程序是蜂鸣器奏乐,单独运行可以播放音乐,另外的一个程序是一个游戏代码,想在打游戏的时候同时播放音乐,不过音乐程序中已经运用了定时器中断,所以想用软件中断实现背景音乐~具体怎么融合这两个程序,使它们在一个单片机上运行呢?
追答
是蜂鸣器的话,就是输出各种频率的方波来实现发声咯,所以要保证 (1/定时器的最小定时时间 )小于你要是输出的方波的频率,否则有些声调就没法输出了。除此之外,每个调与调之间还有时间间隔的,这个时间也要大于定时器的最小定时时间。既然你已经有了现成的程序,那这两个问题都解决了,我估计它是用两个定时器来实现的。
接下来看看你的游戏程序需不需要用到同一个定时器,如果需要就改一下,注意中断的优先级
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程?用定时计数器试试,两个函数 隔一个时间短运行一个快速切换。先声明我没有试过啊,不知道能不能成功啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询