关于延时程序的问题
使用8h8k64u主控的usb手柄,只有一个按钮,现在想实现按钮按下,虚拟按钮闪烁,也就是亮一下之后延时一段时间灭,此时按钮并没有松开,当按钮松开,虚拟按钮又会闪烁一次,但是加了延时之后usb识别会有延迟并且按钮没反应
延时程序是正常工作的,加在keyPadData |= 0x02; 之前实现按钮按下延时亮,加在后面实现按钮松开延时灭,唯独加在中键实现自动亮灭的时候程序不正常,有大佬知道怎么回事吗
这是有问题的代码 爱吃西红柿 发表于 2024-3-21 13:16
这是有问题的代码
Delay500ms 对程序的运行会产生比较明显的影响。
建议keyPadData |= 0x01;后面加个标志位,通过定时器判断标志位,计时500ms后执行keyPadData &= ~0x01;指令。 乘风飞扬 发表于 2024-3-21 15:21
Delay500ms 对程序的运行会产生比较明显的影响。
建议keyPadData |= 0x01;后面加个标志位,通过定时器 ...
有参考代码吗大哥,研究半天定时器好像不工作,初始化了已经 STC-ISP里面有 也有各种例程 我用的就是isp里面的,这是代码, flag1 = 1;的时候不会执行keyPadData &= ~0x01; 爱吃西红柿 发表于 2024-3-22 13:30
有参考代码吗大哥,研究半天定时器好像不工作,初始化了已经
例如,需要延时位置加标志位与延时时间:
keyPadData |= 0x01;
DelayFlag = 1;
DelayCnt = 50; //50 * 10ms = 500ms
然后在10ms中断定时器函数里面进行计时:
if(DelayFlag)
{
DelayCnt--;
if(DelayCnt == 0)
{
DelayFlag = 0;
keyPadData &= ~0x01;
}
} 你这个逻辑有点问题吧
页:
[1]
2