时钟芯片程序中按键按下声音有变长的意外的情况出现

2020-03-12 19:48发布

我写了时钟芯片程序显示时间,按下按键声音短促,但是按键按着按着会出现声音变长的情况,我自己觉得display函数运行时间太长的原因,我把这个display函数给屏蔽后蜂鸣器声音就不会出现声音加长的情况!
请问遇到这种情况我该怎么处理?

key_scanf函数是写在主函数里面,按键是机械按键,蜂鸣器是无源的

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
ayb_ice
2020-03-14 23:52

是的,把beep放在中断里面就不会出现蜂鸣声音变长的情况!但是我一直觉得中断函数要少执行指令,快速出栈 ...


这有什么问题呢,每次中断简单处理下时间到了没有而已(几条指令而已),又没让你在中断里等待BEEP响完才退出

u8 ucBeepTime;

void ISR_10ms(void)
{
        if (ucBeepTime)
        {
                if (--ucBeepTime == 0)
                {
                        BEEP_OFF();
                }
        }
}

void TestBeep(void)
{
        if (KEY1)
        {
                BEEP_ON();
                ucBeepTime = 100;
        }
}


一周热门 更多>