本帖最后由 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不延迟?
|