关于忙检测的一个解决办法!

[复制链接]
 楼主| wangjiahao88 发表于 2016-9-5 10:34 | 显示全部楼层 |阅读模式
事件触发中,包含while等待的处理


//氧浓度设置
void YangNongDu_Set(void)
{
    if(KEY==KEY_O2_SONG)
    {
        KEY=0;
        O2_SET=O2_SET+1;

        if(O2_SET>5)
        {
            O2_SET=1;
        }

        AT24C64_Write_Byte(_EE_O2_SET,O2_SET);
        O2_SET=AT24C64_Read_Byte(_EE_O2_SET);
                                
        Play_O2();

    }
}

 楼主| wangjiahao88 发表于 2016-9-5 10:35 | 显示全部楼层
void Play_O2(void)
{
    Pley_Voice(LL_Sound,Play_Enable[VOL_SET]);
    while(!BUSY);

    Pley_Voice(Sound_O2_LL[O2_SET-1],Play_Enable[VOL_SET]);
    while(!BUSY);
}
 楼主| wangjiahao88 发表于 2016-9-5 10:35 | 显示全部楼层
******************************************************************
请各位高手与网友指点一下,我按下一个按键,松手判断以后,对数据进行了一些简单处理,并且存入到了EEROM。同时进行语音播报。
但是我发现,数据进行了运算之后,并不能立刻进行显示,而是等待语音播放完毕之后才进行显示。
显示周期是100ms.请各位高手给予指点,该怎么写好这个构架。
 楼主| wangjiahao88 发表于 2016-9-5 10:36 | 显示全部楼层
我后来得到了一个处理办法,就是,按键事件里面,语音播放之前,多加一遍显示的变量与显示的函数,这样也不会受while读忙检测了!
 楼主| wangjiahao88 发表于 2016-9-5 10:37 | 显示全部楼层
大家有什么解决之道,一起探讨吧!谢谢!
 楼主| wangjiahao88 发表于 2016-9-5 10:39 | 显示全部楼层
请问,使用rots,可以解决这个问题吗?
merry_zsp 发表于 2016-9-5 15:38 | 显示全部楼层
因为你的语音播放占用了内存,只能等播放完毕了
 楼主| wangjiahao88 发表于 2016-9-5 17:29 | 显示全部楼层
是啊!语音播放占用了内存,只能等播放完毕了
Creas_Tall 发表于 2016-9-6 17:36 | 显示全部楼层
按键放在中断中,中断中改变声音播放的方式。
 楼主| wangjiahao88 发表于 2016-9-7 09:34 | 显示全部楼层
按键,已经是在中断里面完成的。
magicoctoy 发表于 2016-9-8 15:19 | 显示全部楼层
换好的语音播放芯片就可以解决了,你这个肯定是便宜的语音播放芯片。
tomyoct 发表于 2016-9-10 21:48 | 显示全部楼层
试试新唐的ISD960的芯片,这个自带MCU,很方便的。
chrise23 发表于 2016-9-11 16:33 | 显示全部楼层
程序中最好不要用while这类的检测,碰到特殊情况,会把板子卡死的。
MTCN2013 发表于 2016-9-11 20:01 | 显示全部楼层
    Pley_Voice(LL_Sound,Play_Enable[VOL_SET]);
    while(!BUSY);

    Pley_Voice(Sound_O2_LL[O2_SET-1],Play_Enable[VOL_SET]);
    while(!BUSY);

问题在于你的这个while检测。去掉它试试。
叶覃 发表于 2016-9-11 23:12 | 显示全部楼层
首页的那一段函数,应该是放在中断中的,中断中不能带有延时函数,或者while的函数,对时间要求很严格的
huafei123 发表于 2016-9-12 10:53 | 显示全部楼层
需要测试指令执行的时间,估计是你中断中程序执行的时间太长了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

500

主题

7585

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部

500

主题

7585

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部