本帖最后由 lmn2005 于 2023-9-7 12:49 编辑
近日应用了SC92F84H3的触摸功能,调试正常,就是有一个问题,不知道怎样解决。请各位大佬指教,谢谢!
while (1)
{
/*<UserCodeStart>*/ /*<SinOne-Tag><14>*/
if(SOCAPI_TouchKeyStatus & 0x80)
{
/*<UserCodeStart>*//*<SinOne-Tag><22>*/
SOCAPI_TouchKeyStatus &= 0x7f;
/*<UserCodeEnd>*//*<SinOne-Tag><22>*/
/*<UserCodeStart>*//*<SinOne-Tag><18>*/
exKeyValueFlag = TouchKeyScan();
/*<UserCodeEnd>*//*<SinOne-Tag><18>*/
/*<UserCodeStart>*//*<SinOne-Tag><35>*/
if(exKeyValueFlag & TK17) i++;
//UserCode();
/*<UserCodeEnd>*//*<SinOne-Tag><35>*/
/*<UserCodeStart>*//*<SinOne-Tag><36>*/
TouchKeyRestart();
/*<UserCodeEnd>*//*<SinOne-Tag><36>*/
}
TM1636_display(i/100, i/10%10, i%10,25, 0);//显示
/***User program***/
/*<UserCodeEnd>*/ /*<SinOne-Tag><14>*/
/*<Begin-Inserted by EasyCodeCube for Condition>*/
}
如果使用上面的代码来获取触控信号并处理数据(i++)时,每次i加1的幅度太大、速度太快,长按触摸开关时,i在不断增加,当然i都在取值范围内。
如果采用下面的代码,效果也不如愿以偿:
while (1)
{
/*<UserCodeStart>*/ /*<SinOne-Tag><14>*/
if(SOCAPI_TouchKeyStatus & 0x80)
{
/*<UserCodeStart>*//*<SinOne-Tag><22>*/
SOCAPI_TouchKeyStatus &= 0x7f;
/*<UserCodeEnd>*//*<SinOne-Tag><22>*/
/*<UserCodeStart>*//*<SinOne-Tag><18>*/
exKeyValueFlag = TouchKeyScan();
/*<UserCodeEnd>*//*<SinOne-Tag><18>*/
/*<UserCodeStart>*//*<SinOne-Tag><35>*/
if(exKeyValueFlag & TK17)
{
while(TouchKeyScan()& TK17);//等待按键弹起
i++;
}
//UserCode();
/*<UserCodeEnd>*//*<SinOne-Tag><35>*/
/*<UserCodeStart>*//*<SinOne-Tag><36>*/
TouchKeyRestart();
/*<UserCodeEnd>*//*<SinOne-Tag><36>*/
}
TM1636_display(i/100, i/10%10, i%10,25, 0);//显示
/***User program***/
/*<UserCodeEnd>*/ /*<SinOne-Tag><14>*/
/*<Begin-Inserted by EasyCodeCube for Condition>*/
}
如果采用上述代码来获取触控信号并处理数据的话,变量 i 加1的速度却显得太慢,也就是在按键弹起后,不随即加1,大约要延迟1秒以上才加1,不像普通轻触开关的速度。
请问大佬,像这种情况,该如何修改代码,才能使触控的效果与普通轻触开关一样,按一下、上来,i 才随即加1不延迟?
|