1942 lines
74 KiB
Plaintext
1942 lines
74 KiB
Plaintext
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE TS_API
|
||
OBJECT MODULE PLACED IN .\hex\ts_api.obj
|
||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE TS_Lib\Sources\ts_api.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||
- PRINT(.\lst\ts_api.lst) TABS(2) OBJECT(.\hex\ts_api.obj)
|
||
|
||
line level source
|
||
|
||
1 #ifndef _TK_API_C_
|
||
2 #define _TK_API_C_
|
||
3
|
||
4 /*********************************************************************************************************
|
||
-************/
|
||
5 #include "ca51f5_config.h"
|
||
6 #include "includes\ca51f5sfr.h"
|
||
7 #include "includes\ca51f5xsfr.h"
|
||
8 #include "includes\gpiodef_f5.h"
|
||
9
|
||
10 #include "Library\Includes\tmc.h"
|
||
11 #include "Library\Includes\system_clock.h"
|
||
12 #include "Library\includes\uart.h"
|
||
13 #include "includes\system.h"
|
||
14
|
||
15 #include "Library\includes\delay.h"
|
||
16 #include <intrins.h>
|
||
17 /*********************************************************************************************************
|
||
-************/
|
||
18 #include "TS_Lib\Includes\ts_configuration.h"
|
||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 120 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 121 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 122 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 123 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 124 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
19 #include "TS_Lib\Includes\ts_def.h"
|
||
20 #include "TS_Lib\Includes\ts_api.h"
|
||
21 #include "TS_Lib\Includes\ts_service.h"
|
||
22 /*********************************************************************************************************
|
||
-************/
|
||
23
|
||
24 #include "rf_send.h"
|
||
25
|
||
26 void Debug_init(void);
|
||
27 void Debug_ParamLoad(void);
|
||
28 #if SUPPORT_KEY
|
||
29 #if TK_SENSITIVE_AUTO_TRIM_EN
|
||
void TK_TouchThdTrim(unsigned char ch);
|
||
#endif
|
||
32 code unsigned int TS_KEY_CH_INFO_SEQ[][2]=
|
||
33 {
|
||
34 KEY_SEQ
|
||
35 };
|
||
36 #if TK_SENSITIVE_AUTO_TRIM_EN
|
||
code unsigned int TK_BASELINE_VALUE_INFO_SEQ[]=
|
||
{
|
||
TK_BASELINE_VALUE_SEQ
|
||
};
|
||
#endif
|
||
42 #endif
|
||
43 #if SUPPORT_WHEEL_SLIDER
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 2
|
||
|
||
44 code unsigned char TS_WHEEL_SLIDER_CH_SEQ[]=
|
||
45 {
|
||
46 WHEEL_SLIDER0_SEQ,
|
||
47 };
|
||
48 code unsigned char WHEEL_SLIDER0_MAX_MIN_TAB[]={WHEEL_SLIDER0_CH_MIN_RATE};
|
||
49 #else
|
||
code unsigned char WHEEL_SLIDER0_MAX_MIN_TAB[1]={0};
|
||
#endif
|
||
52 #if SUPPORT_KEY
|
||
53 code TYPE_SN MASK_TAB[]=
|
||
54 {
|
||
55 0x0001,
|
||
56 #if (KEY_CH_COUNT > 1)
|
||
57 0x0002,
|
||
58 #endif
|
||
59 #if (KEY_CH_COUNT > 2)
|
||
60 0x0004,
|
||
61 #endif
|
||
62 #if (KEY_CH_COUNT > 3)
|
||
63 0x0008,
|
||
64 #endif
|
||
65 #if (KEY_CH_COUNT > 4)
|
||
66 0x0010,
|
||
67 #endif
|
||
68 #if (KEY_CH_COUNT > 5)
|
||
69 0x0020,
|
||
70 #endif
|
||
71 #if (KEY_CH_COUNT > 6)
|
||
72 0x0040,
|
||
73 #endif
|
||
74 #if (KEY_CH_COUNT > 7)
|
||
75 0x0080,
|
||
76 #endif
|
||
77 #if (KEY_CH_COUNT > 8)
|
||
0x0100,
|
||
#endif
|
||
80 #if (KEY_CH_COUNT > 9)
|
||
0x0200,
|
||
#endif
|
||
83 #if (KEY_CH_COUNT > 10)
|
||
0x0400,
|
||
#endif
|
||
86 #if (KEY_CH_COUNT > 11)
|
||
0x0800,
|
||
#endif
|
||
89 #if (KEY_CH_COUNT > 12)
|
||
0x1000,
|
||
#endif
|
||
92
|
||
93 };
|
||
94 code unsigned char AREA_CONFIRM_TIME_TAB[]=
|
||
95 {
|
||
96 FINGER_TOUCH_CONFIRM_TIME,
|
||
97 AREA_PNOISE_PLUS_CONFIRM_TIME,
|
||
98 AREA_PNOISE_CONFIRM_TIME,
|
||
99 AREA_NNOISE_CONFIRM_TIME,
|
||
100 AREA_OVERLOW_CONFIRM_TIME,
|
||
101 };
|
||
102 #else
|
||
code unsigned char AREA_CONFIRM_TIME_TAB[1]={0};
|
||
code unsigned int MASK_TAB[1]={0};
|
||
#endif
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 3
|
||
|
||
106 void TS_MS_ISR (void)
|
||
107 {
|
||
108 1 static unsigned char xdata ms_cnt = 0;
|
||
109 1 unsigned char i;
|
||
110 1
|
||
111 1 ms_cnt++;
|
||
112 1 if(ms_cnt >= 4)
|
||
113 1 {
|
||
114 2 ms_cnt = 0;
|
||
115 2 for(i = 0; i < TS_Cnt; i++)
|
||
116 2 {
|
||
117 3 if(TS_AreaConfirmTimer[i])
|
||
118 3 {
|
||
119 4 TS_AreaConfirmTimer[i]--;
|
||
120 4 }
|
||
121 3 }
|
||
122 2 #if SUPPORT_WHEEL_SLIDER
|
||
123 2 if(TSWheelSlider_TouchConfirmTimer)
|
||
124 2 {
|
||
125 3 TSWheelSlider_TouchConfirmTimer--;
|
||
126 3 }
|
||
127 2 #endif
|
||
128 2 #if SUPPORT_KEY
|
||
129 2 #if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||
if(PanalCoverJudgeTimer) PanalCoverJudgeTimer--;
|
||
#endif
|
||
132 2 #endif
|
||
133 2 #if SUPPORT_KEY
|
||
134 2 #if ANTI_SPEAKER_EN
|
||
if(RefChDataTimer) RefChDataTimer--;
|
||
#endif
|
||
137 2 #endif
|
||
138 2 }
|
||
139 1 }
|
||
140 void TS_HS_ISR (void)
|
||
141 {
|
||
142 1 #if SUPPORT_KEY
|
||
143 1 #if (FINGER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
unsigned char i;
|
||
#endif
|
||
146 1 #endif
|
||
147 1 TS_HalfSecCnt++;
|
||
148 1
|
||
149 1 #if SUPPORT_KEY
|
||
150 1 #if (FINGER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||
{
|
||
if(TSKey_LongTouchLimitTimer[i])
|
||
{
|
||
TSKey_LongTouchLimitTimer[i]--;
|
||
}
|
||
}
|
||
#endif
|
||
159 1 #endif
|
||
160 1 #if SUPPORT_WHEEL_SLIDER
|
||
161 1 #if (WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
if(TSWheelSlider_LongTouchLimitTimer)
|
||
{
|
||
TSWheelSlider_LongTouchLimitTimer--;
|
||
}
|
||
#endif
|
||
167 1 #endif
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 4
|
||
|
||
168 1 if(TS_RefCHBaseLineAdjuTimer)
|
||
169 1 {
|
||
170 2 TS_RefCHBaseLineAdjuTimer--;
|
||
171 2 }
|
||
172 1 if(EnterStopScanTimer)
|
||
173 1 {
|
||
174 2 EnterStopScanTimer--;
|
||
175 2 }
|
||
176 1 }
|
||
177 void TS_ISR (void)
|
||
178 {
|
||
179 1 unsigned char i;
|
||
180 1 WORD_UNION TS_Data[6];
|
||
181 1 #if TK_FREQ_JUMP_EN
|
||
static unsigned int xdata TSDataTemp[2][OPENED_TS_COUNT+1];
|
||
unsigned int xdata delta[2];
|
||
unsigned int min_delta;
|
||
unsigned char min_index;
|
||
unsigned char j;
|
||
#endif
|
||
188 1 if(TLFLG & (TLERR|TLKOV|TLLOV))
|
||
189 1 {
|
||
190 2 TLFLG |= TLERR|TLKOV|TLLOV;
|
||
191 2 }
|
||
192 1
|
||
193 1 if(TKIF & TKIF0)
|
||
194 1 {
|
||
195 2 TKIF = TKIF0;
|
||
196 2 TS_Data[0].bVal[0] = TK0MSH;
|
||
197 2 TS_Data[0].bVal[1] = TK0MSL;
|
||
198 2 }
|
||
199 1 if(TKIF & TKIF1)
|
||
200 1 {
|
||
201 2 TKIF = TKIF1;
|
||
202 2 TS_Data[1].bVal[0] = TK1MSH;
|
||
203 2 TS_Data[1].bVal[1] = TK1MSL;
|
||
204 2 }
|
||
205 1 if(TKIF & TKIF2)
|
||
206 1 {
|
||
207 2 TKIF = TKIF2;
|
||
208 2 TS_Data[2].bVal[0] = TK2MSH;
|
||
209 2 TS_Data[2].bVal[1] = TK2MSL;
|
||
210 2 }
|
||
211 1 if(TKIF & TKIF3)
|
||
212 1 {
|
||
213 2 TKIF = TKIF3;
|
||
214 2 TS_Data[3].bVal[0] = TK3MSH;
|
||
215 2 TS_Data[3].bVal[1] = TK3MSL;
|
||
216 2 }
|
||
217 1 if(TKIF & TKIF4)
|
||
218 1 {
|
||
219 2 TKIF = TKIF4;
|
||
220 2 TS_Data[4].bVal[0] = TK4MSH;
|
||
221 2 TS_Data[4].bVal[1] = TK4MSL;
|
||
222 2 }
|
||
223 1 if(TKIF & TKIF5)
|
||
224 1 {
|
||
225 2 TKIF = TKIF5;
|
||
226 2 TS_Data[5].bVal[0] = TK5MSH;
|
||
227 2 TS_Data[5].bVal[1] = TK5MSL;
|
||
228 2 }
|
||
229 1
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 5
|
||
|
||
230 1 for(i = 0; i < 6; i++)
|
||
231 1 {
|
||
232 2 #if TK_FREQ_JUMP_EN
|
||
if(TS_State == TS_DEAL)
|
||
{
|
||
TSDataTemp[NowTKFreqIndex][TS_Index+i] = TS_Data[i].wVal;
|
||
|
||
if(NowTKFreqIndex == 1)
|
||
{
|
||
min_delta = 0xFFFF;
|
||
for(j = 0; j < 2; j++)
|
||
{
|
||
if(TSDataTemp[j][TS_Index+i] > TS_JumpFreqData[j][TS_Index+i]/TS_ACQ_TIMES)
|
||
{
|
||
delta[j] = TSDataTemp[j][TS_Index+i] - TS_JumpFreqData[j][TS_Index+i]/TS_ACQ_TIMES;
|
||
}
|
||
else
|
||
{
|
||
delta[j] = TS_JumpFreqData[j][TS_Index+i]/TS_ACQ_TIMES - TSDataTemp[j][TS_Index+i];
|
||
}
|
||
if(delta[j] < min_delta)
|
||
{
|
||
min_delta = delta[j];
|
||
min_index = j;
|
||
}
|
||
}
|
||
TS_Data[i].wVal = TSDataTemp[min_index][TS_Index+i] + TS_JumpFreqData[1][TS_Index+i]/TS_ACQ_TIMES - TS
|
||
-_JumpFreqData[min_index][TS_Index+i]/TS_ACQ_TIMES;
|
||
}
|
||
|
||
}
|
||
#endif
|
||
261 2 #if TK_FREQ_JUMP_EN
|
||
if(((TS_State == TS_DEAL)&&(NowTKFreqIndex == 1)) ||(TS_State != TS_DEAL))
|
||
#endif
|
||
264 2 {
|
||
265 3 #if (TS_ACQ_TIMES == 1)
|
||
266 3 TS_RawData[TS_Index+i] = TS_Data[i].wVal;
|
||
267 3 #else
|
||
TS_DataSum[TS_Index+i] += TS_Data[i].wVal;
|
||
#endif
|
||
270 3 }
|
||
271 2 if(TS_Index+i == TS_Cnt)
|
||
272 2 {
|
||
273 3 break;
|
||
274 3 }
|
||
275 2
|
||
276 2 }
|
||
277 1 #if TK_FREQ_JUMP_EN
|
||
if(TS_State == TS_DEAL)
|
||
{
|
||
if(NowTKFreqIndex == 1)
|
||
{
|
||
NowTKFreqIndex = 0;
|
||
TKCFG = TKDIV(TKDIV_VAL2)|TKTMS(TKTMS_VAL);
|
||
TKCON |= TKST(1);
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
NowTKFreqIndex = 1;
|
||
TKCFG = TKDIV(TKDIV_VAL)|TKTMS(TKTMS_VAL);
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 6
|
||
|
||
}
|
||
}
|
||
#endif
|
||
294 1 if(TS_Index+6 > TS_Cnt)
|
||
295 1 {
|
||
296 2 #if (TS_ACQ_TIMES == 1)
|
||
297 2 TS_CycleScanDoneFlag = 1;
|
||
298 2 #else
|
||
TS_Acq_Counter++;
|
||
if(TS_Acq_Counter >= TS_ACQ_TIMES)
|
||
{
|
||
for(i = 0; i < TS_Cnt+1; i++)
|
||
{
|
||
TS_RawData[i] = TS_DataSum[i];
|
||
TS_DataSum[i] = 0;
|
||
}
|
||
TS_CycleScanDoneFlag = 1;
|
||
TS_Acq_Counter = 0;
|
||
}
|
||
#endif
|
||
311 2 TS_Index = 0;
|
||
312 2 }
|
||
313 1 else
|
||
314 1 {
|
||
315 2 TS_Index += 6;
|
||
316 2 }
|
||
317 1 TS_ScanStart();
|
||
318 1 if(TS_HalfSecCnt) TS_HalfSecCnt--;
|
||
319 1 if(MainLoopCnt1 != MainLoopCnt2)
|
||
320 1 {
|
||
321 2 MainLoopCnt2 = MainLoopCnt1;
|
||
322 2 WDFLG = 0xA5;
|
||
323 2 }
|
||
324 1 }
|
||
325 void TS_DataFiltering(void)
|
||
326 {
|
||
327 1 unsigned char i;
|
||
328 1 #if (FILTER_COUNT > 1)
|
||
329 1 unsigned char j;
|
||
330 1 unsigned int DataSum,DataMax,DataMin;
|
||
331 1 #endif
|
||
332 1 for(i = 0; i < TS_Cnt+1; i++)
|
||
333 1 {
|
||
334 2 #if (FILTER_COUNT == 1)
|
||
TS_PostData[i] = TS_RawData[i];
|
||
#else
|
||
337 2 TS_FilterPosIdx[i]++;
|
||
338 2 if(TS_FilterPosIdx[i] >= FILTER_COUNT)
|
||
339 2 {
|
||
340 3 TS_FilterPosIdx[i] = 0;
|
||
341 3 }
|
||
342 2 INT3EN = 0;
|
||
343 2 TS_FilterBuf[i][TS_FilterPosIdx[i]] = TS_RawData[i];
|
||
344 2 INT3EN = 1;
|
||
345 2
|
||
346 2 DataSum = 0;
|
||
347 2 DataMax = 0;
|
||
348 2 DataMin = 0xFFFF;
|
||
349 2 for(j = 0; j < FILTER_COUNT; j++)
|
||
350 2 {
|
||
351 3 DataSum += TS_FilterBuf[i][j];
|
||
352 3 #if (FILTER_COUNT > 2)
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 7
|
||
|
||
353 3 if(TS_FilterBuf[i][j] > DataMax)
|
||
354 3 {
|
||
355 4 DataMax = TS_FilterBuf[i][j];
|
||
356 4 }
|
||
357 3 if(TS_FilterBuf[i][j] < DataMin)
|
||
358 3 {
|
||
359 4 DataMin = TS_FilterBuf[i][j];
|
||
360 4 }
|
||
361 3 #endif
|
||
362 3 }
|
||
363 2 #if (FILTER_COUNT == 2)
|
||
TS_PostData[i] = (DataSum)/(FILTER_COUNT);
|
||
#else
|
||
366 2 TS_PostData[i] = (DataSum - DataMax - DataMin)/(FILTER_COUNT-2);
|
||
367 2 #endif
|
||
368 2 #endif
|
||
369 2 }
|
||
370 1 }
|
||
371 #if SUPPORT_KEY
|
||
372 #if ANTI_SPEAKER_EN
|
||
bit TS_RefChAbnormalJudge(void)
|
||
{
|
||
unsigned int ref_value,crt_value,delta;
|
||
|
||
if(RefChDataBufIdx == (REF_CH_DATA_BUF_SIZE-1))
|
||
{
|
||
ref_value = RefChDataBuf[0];
|
||
}
|
||
else
|
||
{
|
||
ref_value = RefChDataBuf[RefChDataBufIdx + 1];
|
||
}
|
||
crt_value = TS_PostData[OPENED_TS_COUNT];
|
||
if(ref_value > crt_value)
|
||
{
|
||
delta = ref_value - crt_value;
|
||
}
|
||
else
|
||
{
|
||
delta = crt_value - ref_value;
|
||
}
|
||
if(delta >= REF_CH_ABNORMAL_THD)
|
||
{
|
||
return 1;
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
void TS_RefChCheck(void)
|
||
{
|
||
if(!RefChDataTimer)
|
||
{
|
||
RefChDataTimer = 3;
|
||
RefChDataBufIdx++;
|
||
if(RefChDataBufIdx >= REF_CH_DATA_BUF_SIZE)
|
||
{
|
||
RefChDataBufIdx = 0;
|
||
}
|
||
RefChDataBuf[RefChDataBufIdx] = TS_PostData[OPENED_TS_COUNT];
|
||
}
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 8
|
||
|
||
}
|
||
#endif
|
||
417 #endif
|
||
418 void TS_RunInit(void)
|
||
419 {
|
||
420 1 unsigned char i,j;
|
||
421 1 static unsigned char TS_ScanTimes=0;
|
||
422 1 #if (POWER_ON_WAIT_TK_STABLE_EN || TK_FREQ_JUMP_EN)
|
||
static unsigned char TS_Init_Step_Sub;
|
||
#endif
|
||
425 1 if(TS_Init_Step == 0)
|
||
426 1 {
|
||
427 2 #if (TS_ACQ_TIMES > 1)
|
||
for(i = 0; i < TS_Cnt; i++)
|
||
{
|
||
TS_DataSum[i] = 0;
|
||
}
|
||
TS_Acq_Counter = 0;
|
||
#endif
|
||
434 2 #if TK_FREQ_JUMP_EN
|
||
NowTKFreqIndex = 0;
|
||
TKCFG = TKDIV(TKDIV_VAL2)|TKTMS(TKTMS_VAL);
|
||
TS_Init_Step_Sub = 0;
|
||
#endif
|
||
439 2 TS_CycleScanDoneFlag = 0;
|
||
440 2 TS_HalfSecCnt = 0;
|
||
441 2 TS_Index = 0;
|
||
442 2 TS_ScanStart();
|
||
443 2 #if POWER_ON_WAIT_TK_STABLE_EN
|
||
TS_Init_Step = 1;
|
||
TS_Init_Step_Sub = 0;
|
||
TS_ScanTimes = 5;
|
||
#else
|
||
448 2 TS_Init_Step = 2;
|
||
449 2 TS_ScanTimes = 50;
|
||
450 2 #endif
|
||
451 2 }
|
||
452 1 #if POWER_ON_WAIT_TK_STABLE_EN
|
||
else if(TS_Init_Step == 1)
|
||
{
|
||
if(TS_CycleScanDoneFlag)
|
||
{
|
||
TS_CycleScanDoneFlag = 0;
|
||
if(TS_Init_Step_Sub == 0)
|
||
{
|
||
if(--TS_ScanTimes)
|
||
{
|
||
return;
|
||
}
|
||
for(i = 0; i < TS_Cnt+1; i++)
|
||
{
|
||
TS_PostData[i] = TS_RawData[i];
|
||
}
|
||
TS_Init_Step_Sub = 1;
|
||
TS_AreaConfirmTimer[0] = 40;
|
||
}
|
||
else if(TS_Init_Step_Sub == 1)
|
||
{
|
||
if(!TS_AreaConfirmTimer[0])
|
||
{
|
||
int delta;
|
||
for(i = 0; i < TS_Cnt+1; i++)
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 9
|
||
|
||
{
|
||
delta = (int)TS_PostData[i] - (int)TS_RawData[i];
|
||
if((delta > NOISE_THRESHOLD) || (delta < -NOISE_THRESHOLD))
|
||
{
|
||
TS_Init_Step_Sub = 0;
|
||
return;
|
||
}
|
||
}
|
||
TS_Init_Step = 2;
|
||
TS_ScanTimes = 10;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
492 1 else if(TS_Init_Step == 2)
|
||
493 1 {
|
||
494 2 if(TS_CycleScanDoneFlag)
|
||
495 2 {
|
||
496 3 TS_CycleScanDoneFlag = 0;
|
||
497 3 if(--TS_ScanTimes)
|
||
498 3 {
|
||
499 4 return;
|
||
500 4 }
|
||
501 3 #if TK_FREQ_JUMP_EN
|
||
if(TS_Init_Step_Sub == 0)
|
||
{
|
||
for(i = 0; i < TS_Cnt+1; i++)
|
||
{
|
||
TS_JumpFreqData[0][i] = TS_RawData[i];
|
||
}
|
||
TS_Init_Step_Sub++;
|
||
|
||
NowTKFreqIndex = 1;
|
||
TKCFG = TKDIV(TKDIV_VAL)|TKTMS(TKTMS_VAL);
|
||
TS_ScanTimes = 3;
|
||
return;
|
||
}
|
||
#endif
|
||
516 3 TS_RefCHBaseLineAdjuTimer = 0;
|
||
517 3 for(i = 0; i < TS_Cnt+1; i++)
|
||
518 3 {
|
||
519 4 for(j = 0; j < FILTER_COUNT; j++)
|
||
520 4 {
|
||
521 5 TS_FilterBuf[i][j] = TS_RawData[i];
|
||
522 5 }
|
||
523 4 TS_FilterPosIdx[i] = 0;
|
||
524 4
|
||
525 4 #if TK_FREQ_JUMP_EN
|
||
TS_JumpFreqData[1][i] = TS_RawData[i];
|
||
#endif
|
||
528 4
|
||
529 4 if(i == TS_Cnt) break;
|
||
530 4 TS_BaseLineData[i] = TS_RawData[i];
|
||
531 4 TS_FirstAreaData[i] = TS_RawData[i];
|
||
532 4 #if TK_BASE_TRIM_WHILE_KEY_PRESSED
|
||
RefChDataBak[i] = TS_RawData[OPENED_TS_COUNT];
|
||
TS_BaseLineDataBak[i] = TS_BaseLineData[i];
|
||
#endif
|
||
536 4 #if (SUPPORT_KEY && SUPPORT_WHEEL_SLIDER)
|
||
537 4 if(i < KEY_CH_COUNT)
|
||
538 4 {
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 10
|
||
|
||
539 5 #if TK_SENSITIVE_AUTO_TRIM_EN
|
||
TK_TouchThdTrim(i);
|
||
#else
|
||
542 5 TSKey_FingerThd[i] = TS_KEY_CH_INFO_SEQ[i][1];
|
||
543 5 #endif
|
||
544 5 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
545 5 }
|
||
546 4 else
|
||
547 4 {
|
||
548 5 TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
549 5 }
|
||
550 4 #elif SUPPORT_KEY
|
||
#if TK_SENSITIVE_AUTO_TRIM_EN
|
||
TK_TouchThdTrim(i);
|
||
#else
|
||
TSKey_FingerThd[i] = TS_KEY_CH_INFO_SEQ[i][1];
|
||
#endif
|
||
TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
#elif SUPPORT_WHEEL_SLIDER
|
||
TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
#endif
|
||
560 4 }
|
||
561 3 #if SUPPORT_KEY
|
||
562 3 #if ANTI_SPEAKER_EN
|
||
for(i = 0; i < REF_CH_DATA_BUF_SIZE; i++)
|
||
{
|
||
RefChDataBuf[i] = TS_PostData[OPENED_TS_COUNT];
|
||
}
|
||
RefChDataBufIdx = 0;
|
||
#endif
|
||
569 3 #endif
|
||
570 3 #if (DEBUG)
|
||
Debug_ParamLoad();
|
||
#endif
|
||
573 3 TS_State = TS_DEAL;
|
||
574 3 }
|
||
575 2 }
|
||
576 1 }
|
||
577 #if SUPPORT_KEY
|
||
578 #if TK_SHARE_LED_EN
|
||
void TKLED_Set(unsigned char ch,unsigned char mode)
|
||
{
|
||
unsigned char real_ch,idx,mask_bit;
|
||
switch(mode)
|
||
{
|
||
case LED_ON:
|
||
case LED_OFF:
|
||
real_ch = TS_KEY_CH_INFO_SEQ[ch][0];
|
||
idx = real_ch>>3;
|
||
mask_bit = (real_ch&0x07);
|
||
if(mode == LED_ON)
|
||
{
|
||
if(idx == 0) TLDAT0 |= 1<<mask_bit;
|
||
else TLDAT1 |= 1<<mask_bit;
|
||
}
|
||
else
|
||
{
|
||
if(idx == 0) TLDAT0 &= ~(1<<mask_bit);
|
||
else TLDAT1 &= ~(1<<mask_bit);
|
||
}
|
||
break;
|
||
case LED_ALL_OFF:
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 11
|
||
|
||
TLDAT0 = 0;
|
||
TLDAT1 = 0;
|
||
break;
|
||
}
|
||
}
|
||
void TKLED_Update(void)
|
||
{
|
||
static TYPE_SN xdata PrevTKSN = 0;
|
||
unsigned char i;
|
||
if(PrevTKSN == KeysFlagSN) return;
|
||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||
{
|
||
if(KeysFlagSN & MASK_TAB[i])
|
||
{
|
||
TKLED_Set(i,LED_ON);
|
||
}
|
||
else
|
||
{
|
||
TKLED_Set(i,LED_OFF);
|
||
}
|
||
}
|
||
PrevTKSN = KeysFlagSN;
|
||
}
|
||
#endif
|
||
625 #if TK_SENSITIVE_AUTO_TRIM_EN
|
||
void TK_TouchThdTrim(unsigned char ch)
|
||
{
|
||
unsigned int b1,b2,th1,c;
|
||
unsigned long int cal_tmp1;
|
||
unsigned int cal_tmp2;
|
||
|
||
b1 = TK_BASELINE_VALUE_INFO_SEQ[ch];
|
||
th1 = TS_KEY_CH_INFO_SEQ[ch][1];
|
||
b2 = TS_BaseLineData[ch];
|
||
cal_tmp1 = ((unsigned long int)b1*(unsigned long int)b2);
|
||
c = (unsigned int)(cal_tmp1/(b1-th1)) - b2;
|
||
cal_tmp2 = (unsigned int)(cal_tmp1/(b1+c));
|
||
TSKey_FingerThd[ch] = b2 - cal_tmp2;
|
||
}
|
||
#endif
|
||
641 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
unsigned char AntiWaterModeGetMaxDeltaCh(void)
|
||
{
|
||
unsigned char i;
|
||
unsigned long int CalcTemp1;
|
||
unsigned int CalcTemp2,CalcTemp3;
|
||
int Delta;
|
||
int max_delta;
|
||
char max_index;
|
||
max_delta = 0;
|
||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||
{
|
||
if(i == 0)
|
||
{
|
||
Delta = (int)TS_BaseLineData[i] - (int)TS_PostData[i];
|
||
}
|
||
else
|
||
{
|
||
CalcTemp1 = (unsigned long int)TS_PostData[i] * (unsigned long int)TS_BaseLineData[0];
|
||
CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[i]);
|
||
CalcTemp3 = TS_PostData[i] + TS_BaseLineData[0] - CalcTemp2;
|
||
CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 12
|
||
|
||
Delta = (int)TS_BaseLineData[0] - (int)CalcTemp2;
|
||
}
|
||
if(max_delta < Delta)
|
||
{
|
||
max_delta = Delta;
|
||
max_index = i;
|
||
}
|
||
}
|
||
return max_index;
|
||
}
|
||
#endif
|
||
674 #endif
|
||
675 #if SUPPORT_KEY
|
||
676 void TSKey_DataDeal(void)
|
||
677 {
|
||
678 1 unsigned char i;
|
||
679 1 unsigned char TouchArea,NowArea;
|
||
680 1 #if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||
unsigned char PanalToggleCount = 0;
|
||
#endif
|
||
683 1 for(i = 0; i < KEY_CH_COUNT; i++)
|
||
684 1 {
|
||
685 2 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
if(KeyPressedFlag)
|
||
{
|
||
if(PressedKeyIndex != i)
|
||
{
|
||
TS_FirstAreaData[i] = TS_BaseLineData[i];
|
||
TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
continue;
|
||
}
|
||
}
|
||
#endif
|
||
696 2 TouchArea = TS_GetDataArea(i,TS_FirstAreaData[i],NOISE_THRESHOLD,(bit)(PreKeysFlagSN & MASK_TAB[i]));
|
||
697 2 NowArea = TS_GetDataArea(i,TS_PostData[i],NOISE_THRESHOLD,(bit)(PreKeysFlagSN & MASK_TAB[i]));
|
||
698 2
|
||
699 2 if((NowArea != AREA_PNOISE)&&(NowArea != AREA_NNOISE))
|
||
700 2 {
|
||
701 3 TS_StableFlag = 0;
|
||
702 3 }
|
||
703 2 #if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||
if((NowArea == AREA_PNOISE_PLUS) || (NowArea == AREA_FINGER_TOUCH))
|
||
{
|
||
PanalToggleCount++;
|
||
}
|
||
#endif
|
||
709 2 if(TouchArea == AREA_FINGER_TOUCH)
|
||
710 2 {
|
||
711 3 if(NowArea == AREA_FINGER_TOUCH)
|
||
712 3 {
|
||
713 4 if(!(PreKeysFlagSN & MASK_TAB[i]))
|
||
714 4 {
|
||
715 5 if(!TS_AreaConfirmTimer[i])
|
||
716 5 {
|
||
717 6 PreKeysFlagSN |= MASK_TAB[i];
|
||
718 6 #if (FINGER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
TSKey_LongTouchLimitTimer[i] = FINGER_LONG_TOUCH_TIME_LIMIT;
|
||
#endif
|
||
721 6 TS_AreaConfirmTimer[i] = FINGER_TOUCH_RELEASE_CONFIRM_TIME;
|
||
722 6 }
|
||
723 5 }
|
||
724 4 else
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 13
|
||
|
||
725 4 {
|
||
726 5 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
if(i != AntiWaterModeGetMaxDeltaCh())
|
||
{
|
||
goto ANTI_WATER_MODE_KEY_RELEASE;
|
||
}
|
||
#endif
|
||
732 5
|
||
733 5 #if TK_BASE_TRIM_WHILE_KEY_PRESSED
|
||
TS_BaseLineData[i] = ((unsigned long int)TS_BaseLineDataBak[i]*TS_PostData[OPENED_TS_COUNT])/RefChDat
|
||
-aBak[i];
|
||
#endif
|
||
736 5
|
||
737 5 TS_AreaConfirmTimer[i] = FINGER_TOUCH_RELEASE_CONFIRM_TIME;
|
||
738 5 #if (FINGER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
if(!TSKey_LongTouchLimitTimer[i])
|
||
{
|
||
PreKeysFlagSN &= ~MASK_TAB[i];
|
||
TS_FirstAreaData[i] = TS_PostData[i];
|
||
TS_BaseLineData[i] = TS_PostData[i];
|
||
#if TK_SENSITIVE_AUTO_TRIM_EN
|
||
TK_TouchThdTrim(i);
|
||
#endif
|
||
TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
#if SUPPORT_ANTI_WATER_FUNCTION
|
||
KeyPressedFlag = 0;
|
||
break;
|
||
#endif
|
||
}
|
||
#endif
|
||
754 5 }
|
||
755 4 }
|
||
756 3 else
|
||
757 3 {
|
||
758 4 if(PreKeysFlagSN & MASK_TAB[i])
|
||
759 4 {
|
||
760 5 if(!TS_AreaConfirmTimer[i])
|
||
761 5 {
|
||
762 6 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
ANTI_WATER_MODE_KEY_RELEASE:
|
||
KeyPressedFlag = 0;
|
||
#endif
|
||
766 6 PreKeysFlagSN &= ~MASK_TAB[i];
|
||
767 6
|
||
768 6 TS_FirstAreaData[i] = TS_BaseLineData[i];
|
||
769 6 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
770 6 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
break;
|
||
#endif
|
||
773 6 }
|
||
774 5 }
|
||
775 4 else
|
||
776 4 {
|
||
777 5 TS_FirstAreaData[i] = TS_PostData[i];
|
||
778 5 TS_AreaConfirmTimerSet(i,NowArea);
|
||
779 5 }
|
||
780 4 }
|
||
781 3 continue;
|
||
782 3 }
|
||
783 2 else
|
||
784 2 {
|
||
785 3 if(NowArea == AREA_FINGER_TOUCH)
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 14
|
||
|
||
786 3 {
|
||
787 4 TS_FirstAreaData[i] = TS_PostData[i];
|
||
788 4 TS_AreaConfirmTimerSet(i,AREA_FINGER_TOUCH);
|
||
789 4 continue;
|
||
790 4 }
|
||
791 3 }
|
||
792 2 if(PreKeysFlagSN != 0)
|
||
793 2 {
|
||
794 3 TS_FirstAreaData[i] = TS_BaseLineData[i];
|
||
795 3 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
796 3 continue;
|
||
797 3 }
|
||
798 2 if(TS_AreaDeviateDetection(TS_FirstAreaData[i],TS_PostData[i],NOISE_THRESHOLD)) //�ж�ƫ���Ƿ��������
|
||
-���
|
||
799 2 {
|
||
800 3 if(!TS_AreaConfirmTimer[i])
|
||
801 3 {
|
||
802 4 TS_FirstAreaData[i] = TS_PostData[i];
|
||
803 4 TS_BaseLineData[i] = TS_PostData[i];
|
||
804 4
|
||
805 4 #if TK_SENSITIVE_AUTO_TRIM_EN
|
||
TK_TouchThdTrim(i);
|
||
#endif
|
||
808 4
|
||
809 4 #if TK_BASE_TRIM_WHILE_KEY_PRESSED
|
||
RefChDataBak[i] = TS_PostData[OPENED_TS_COUNT];
|
||
TS_BaseLineDataBak[i] = TS_BaseLineData[i];
|
||
#endif
|
||
813 4 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||
814 4 }
|
||
815 3 }
|
||
816 2 else
|
||
817 2 {
|
||
818 3 TS_FirstAreaData[i] = TS_PostData[i];
|
||
819 3 TS_AreaConfirmTimerSet(i,NowArea);
|
||
820 3 }
|
||
821 2 }
|
||
822 1 #if SUPPORT_ANTI_WATER_FUNCTION
|
||
if(KeysFlagSN == 0)
|
||
{
|
||
if(PreKeysFlagSN != 0)
|
||
{
|
||
PressedKeyIndex = AntiWaterModeGetMaxDeltaCh();
|
||
PreKeysFlagSN = MASK_TAB[PressedKeyIndex];
|
||
#if (FINGER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
TSKey_LongTouchLimitTimer[PressedKeyIndex] = FINGER_LONG_TOUCH_TIME_LIMIT;
|
||
#endif
|
||
TS_AreaConfirmTimer[PressedKeyIndex] = FINGER_TOUCH_RELEASE_CONFIRM_TIME;
|
||
KeyPressedFlag = 1;
|
||
}
|
||
}
|
||
#endif
|
||
837 1 #if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||
if(!PanalCoverJudgeFlag)
|
||
{
|
||
if(PreKeysFlagSN != 0)
|
||
{
|
||
if(KeysFlagSN == 0)
|
||
{
|
||
PanalCoverJudgeFlag = 1;
|
||
PanalCoverJudgeTimer = PANAL_COVER_JUDGE_TIME;
|
||
}
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 15
|
||
|
||
else
|
||
{
|
||
if((PanalToggleCount >= JUDGE_TK_NUM)||(TS_RefChAbnormalJudge()))
|
||
{
|
||
PreKeysFlagSN = 0;
|
||
PanalCoverJudgeFlag = 0;
|
||
TS_BaseLineForceUpdate();
|
||
}
|
||
KeysFlagSN = PreKeysFlagSN;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
KeysFlagSN = PreKeysFlagSN;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(!PanalCoverJudgeTimer)
|
||
{
|
||
PanalCoverJudgeFlag = 0;
|
||
KeysFlagSN = PreKeysFlagSN;
|
||
}
|
||
else
|
||
{
|
||
if((PanalToggleCount >= JUDGE_TK_NUM)||(TS_RefChAbnormalJudge()))
|
||
{
|
||
PreKeysFlagSN = 0;
|
||
PanalCoverJudgeFlag = 0;
|
||
TS_BaseLineForceUpdate();
|
||
}
|
||
}
|
||
}
|
||
#else
|
||
881 1 #if ANTI_SPEAKER_EN
|
||
if((PreKeysFlagSN != 0)&&(KeysFlagSN == 0))
|
||
{
|
||
if(TS_RefChAbnormalJudge())
|
||
{
|
||
PreKeysFlagSN = 0;
|
||
|
||
#if SUPPORT_ANTI_WATER_FUNCTION
|
||
KeyPressedFlag = 0;
|
||
#endif
|
||
TS_BaseLineForceUpdate();
|
||
}
|
||
}
|
||
#endif
|
||
895 1 KeysFlagSN = PreKeysFlagSN;
|
||
896 1
|
||
897 1 #endif
|
||
898 1 if(KeysFlagSN != 0)
|
||
899 1 {
|
||
900 2 ActiveTouchType = 1;
|
||
901 2 }
|
||
902 1 else
|
||
903 1 {
|
||
904 2 ActiveTouchType = 0;
|
||
905 2 }
|
||
906 1 }
|
||
907 #endif
|
||
908 #if SUPPORT_WHEEL_SLIDER
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 16
|
||
|
||
909 void TS_WheelSliderDeal(void)
|
||
910 {
|
||
911 1 unsigned char i;
|
||
912 1 unsigned int Delta,Position;
|
||
913 1 bit WheelSliderTogFlag = 0;
|
||
914 1 TS_BaseCh = KEY_CH_COUNT;
|
||
915 1 if(!W_S_RefChSet)
|
||
916 1 {
|
||
917 2 W_S_RefChSet = 1;
|
||
918 2 SetWheelSliderRefCh(WHEEL_SLIDER0_CH_COUNT);
|
||
919 2 }
|
||
920 1
|
||
921 1 #if PRINT_WHEEL_SLIDER_DATA_EN
|
||
TK_Debug_UartPutChar('s');
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('i');
|
||
TK_Debug_UartPutChar('d');
|
||
TK_Debug_UartPutChar('e');
|
||
TK_Debug_UartPutChar('r');
|
||
TK_Debug_UartPutChar(' ');
|
||
TK_Debug_UartPutChar('d');
|
||
TK_Debug_UartPutChar('a');
|
||
TK_Debug_UartPutChar('t');
|
||
TK_Debug_UartPutChar('a');
|
||
TK_Debug_UartPutChar(':');
|
||
TK_Debug_UartPutChar(0xaa);
|
||
for(i = TS_BaseCh; i < TS_BaseCh + WHEEL_SLIDER0_CH_COUNT; i++)
|
||
{
|
||
if(TS_BaseLineData[i] > TS_PostData[i])
|
||
{
|
||
Delta = (int)TS_BaseLineData[i] - (int)TS_PostData[i];
|
||
}
|
||
else
|
||
{
|
||
Delta = 0;
|
||
}
|
||
TK_Debug_UartPutChar(30+i);
|
||
TK_Debug_UartPutChar(30+TS_PostData[i]>>8);
|
||
TK_Debug_UartPutChar(30+TS_PostData[i]);
|
||
TK_Debug_UartPutChar(30+TS_BaseLineData[i]>>8);
|
||
TK_Debug_UartPutChar(30+TS_BaseLineData[i]);
|
||
TK_Debug_UartPutChar(30+Delta>>8);
|
||
TK_Debug_UartPutChar(30+Delta);
|
||
}
|
||
#endif
|
||
954 1 #if (WHEEL_OR_SLIDER_DEF0 == SLIDER)
|
||
Position = SliderTouchJudge(WHEEL_SLIDER0_CH_COUNT,WHEEL_SLIDER0_TOUCH_THD);
|
||
#elif (WHEEL_OR_SLIDER_DEF0 == WHEEL)
|
||
957 1 Position = WheelTouchJudge(WHEEL_SLIDER0_CH_COUNT,WHEEL_SLIDER0_TOUCH_THD);
|
||
958 1 #endif
|
||
959 1 if(Position != -1)
|
||
960 1 {
|
||
961 2 TS_StableFlag = 0;
|
||
962 2 }
|
||
963 1 if(WheelSliderState == WHEEL_SLIDER_NO_TOUCH)
|
||
964 1 {
|
||
965 2 if(!WheelSliderTouchFlag)
|
||
966 2 {
|
||
967 3 if(Position != -1)
|
||
968 3 {
|
||
969 4 WheelSliderTouchFlag = 1;
|
||
970 4 TSWheelSlider_TouchConfirmTimer = WHEEL_SLIDER_TOUCH_CONFIRM_TIME;
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 17
|
||
|
||
971 4 }
|
||
972 3 else
|
||
973 3 {
|
||
974 4 for(i = TS_BaseCh; i < TS_BaseCh + WHEEL_SLIDER0_CH_COUNT; i++)
|
||
975 4 {
|
||
976 5 if(TS_FirstAreaData[i] > TS_PostData[i])
|
||
977 5 {
|
||
978 6 Delta = TS_FirstAreaData[i] - TS_PostData[i];
|
||
979 6 }
|
||
980 5 else
|
||
981 5 {
|
||
982 6 Delta = TS_PostData[i] - TS_FirstAreaData[i];
|
||
983 6 }
|
||
984 5 if(Delta <= WHEEL_SLIDER0_NOISE_THD)
|
||
985 5 {
|
||
986 6 if(!TS_AreaConfirmTimer[i])
|
||
987 6 {
|
||
988 7 TS_FirstAreaData[i] = TS_PostData[i];
|
||
989 7 TS_BaseLineData[i] = TS_PostData[i];
|
||
990 7 TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
991 7 }
|
||
992 6 }
|
||
993 5 else
|
||
994 5 {
|
||
995 6 TS_FirstAreaData[i] = TS_PostData[i];
|
||
996 6 TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
997 6 }
|
||
998 5 }
|
||
999 4 }
|
||
1000 3 }
|
||
1001 2 else
|
||
1002 2 {
|
||
1003 3 if(Position != -1)
|
||
1004 3 {
|
||
1005 4 if(!TSWheelSlider_TouchConfirmTimer)
|
||
1006 4 {
|
||
1007 5 WheelSliderState = WHEEL_SLIDER_TOUCH;
|
||
1008 5 #if (WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
TSWheelSlider_LongTouchLimitTimer = WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT;
|
||
#endif
|
||
1011 5 }
|
||
1012 4 }
|
||
1013 3 else
|
||
1014 3 {
|
||
1015 4 WheelSliderTouchFlag = 0;
|
||
1016 4 for(i = TS_BaseCh; i < TS_BaseCh + WHEEL_SLIDER0_CH_COUNT; i++)
|
||
1017 4 {
|
||
1018 5 TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
1019 5 }
|
||
1020 4 }
|
||
1021 3 }
|
||
1022 2 }
|
||
1023 1 else if(WheelSliderState == WHEEL_SLIDER_TOUCH)
|
||
1024 1 {
|
||
1025 2 #if (WHEEL_SLIDER_LONG_TOUCH_TIME_LIMIT > 0)
|
||
if(!TSWheelSlider_LongTouchLimitTimer)
|
||
{
|
||
for(i = TS_BaseCh; i < TS_BaseCh + WHEEL_SLIDER0_CH_COUNT; i++)
|
||
{
|
||
TS_FirstAreaData[i] = TS_PostData[i];
|
||
TS_BaseLineData[i] = TS_PostData[i];
|
||
}
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 18
|
||
|
||
WheelSliderTouchFlag = 0;
|
||
goto WHEEL_SLIDER_RELEASE;
|
||
}
|
||
#endif
|
||
1037 2 if(WheelSliderTouchFlag)
|
||
1038 2 {
|
||
1039 3 if(Position == -1)
|
||
1040 3 {
|
||
1041 4 WheelSliderTouchFlag = 0;
|
||
1042 4 TSWheelSlider_TouchConfirmTimer = WHEEL_SLIDER_TOUCH_RELEASE_CONFIRM_TIME;
|
||
1043 4 }
|
||
1044 3 }
|
||
1045 2 else
|
||
1046 2 {
|
||
1047 3 if(Position == -1)
|
||
1048 3 {
|
||
1049 4 if(!TSWheelSlider_TouchConfirmTimer)
|
||
1050 4 {
|
||
1051 5 //WHEEL_SLIDER_RELEASE:
|
||
1052 5 WheelSliderState = WHEEL_SLIDER_NO_TOUCH;
|
||
1053 5 WheelSliderCapRateFilter = 0;
|
||
1054 5 WheelSliderPosition = -1;
|
||
1055 5 for(i = TS_BaseCh; i < TS_BaseCh + WHEEL_SLIDER0_CH_COUNT; i++)
|
||
1056 5 {
|
||
1057 6 TS_AreaConfirmTimer[i] = WHEEL_SLIDER_BASELINE_UPDATE_TIME;
|
||
1058 6 }
|
||
1059 5 }
|
||
1060 4 }
|
||
1061 3 else
|
||
1062 3 {
|
||
1063 4 WheelSliderTouchFlag = 1;
|
||
1064 4 }
|
||
1065 3 }
|
||
1066 2 }
|
||
1067 1 if(WheelSliderState == WHEEL_SLIDER_TOUCH)
|
||
1068 1 {
|
||
1069 2 if(Position != -1)
|
||
1070 2 {
|
||
1071 3 WheelSliderPosition = Position;
|
||
1072 3 }
|
||
1073 2 #if PRINT_WHEEL_SLIDER_POSITION_EN
|
||
TK_Debug_UartPutChar('s');
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('i');
|
||
TK_Debug_UartPutChar('d');
|
||
TK_Debug_UartPutChar('e');
|
||
TK_Debug_UartPutChar('r');
|
||
TK_Debug_UartPutChar(' ');
|
||
TK_Debug_UartPutChar('p');
|
||
TK_Debug_UartPutChar('o');
|
||
TK_Debug_UartPutChar('s');
|
||
TK_Debug_UartPutChar('i');
|
||
TK_Debug_UartPutChar(':');
|
||
TK_Debug_UartPutChar(WheelSliderPosition/100+0x30);
|
||
TK_Debug_UartPutChar((WheelSliderPosition%100)/10+0x30);
|
||
TK_Debug_UartPutChar((WheelSliderPosition%10)+0x30);
|
||
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
#endif
|
||
1093 2 #if PRINT_WHEEL_SLIDER_RATE_EN
|
||
{
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 19
|
||
|
||
unsigned char DeltaRate;
|
||
DeltaRate = WheelSliderCapRateFilter/4;
|
||
TK_Debug_UartPutChar(WheelSliderMaxIdx + 0x30);
|
||
TK_Debug_UartPutChar(' ');
|
||
|
||
TK_Debug_UartPutChar(DeltaRate/100+0x30);
|
||
TK_Debug_UartPutChar((DeltaRate%100)/10+0x30);
|
||
TK_Debug_UartPutChar((DeltaRate%10)+0x30);
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
}
|
||
#endif
|
||
1107 2 }
|
||
1108 1 else
|
||
1109 1 {
|
||
1110 2 WheelSliderPosition = -1;
|
||
1111 2 }
|
||
1112 1
|
||
1113 1 if(WheelSliderPosition != -1)
|
||
1114 1 {
|
||
1115 2 ActiveTouchType = 2;
|
||
1116 2 }
|
||
1117 1 else
|
||
1118 1 {
|
||
1119 2 ActiveTouchType = 0;
|
||
1120 2 }
|
||
1121 1 }
|
||
1122 #endif
|
||
1123
|
||
1124 void TS_init(void)
|
||
1125 {
|
||
1126 1 unsigned char i,ch_idx;
|
||
1127 1 #if (DEBUG)
|
||
Debug_init();
|
||
#endif
|
||
1130 1
|
||
1131 1 TS_Cnt = OPENED_TS_COUNT;
|
||
1132 1 ch_idx = 0;
|
||
1133 1 for(i = 0;i < OPENED_TS_COUNT; i++)
|
||
1134 1 {
|
||
1135 2 #if (SUPPORT_KEY && SUPPORT_WHEEL_SLIDER)
|
||
1136 2 if(i < KEY_CH_COUNT)
|
||
1137 2 {
|
||
1138 3 TS_CH[ch_idx++] = TS_KEY_CH_INFO_SEQ[i][0];
|
||
1139 3 }
|
||
1140 2 else
|
||
1141 2 {
|
||
1142 3 TS_CH[ch_idx++] = TS_WHEEL_SLIDER_CH_SEQ[i-KEY_CH_COUNT];
|
||
1143 3 }
|
||
1144 2 #elif SUPPORT_KEY
|
||
TS_CH[ch_idx++] = TS_KEY_CH_INFO_SEQ[i][0];
|
||
#elif SUPPORT_WHEEL_SLIDER
|
||
TS_CH[ch_idx++] = TS_WHEEL_SLIDER_CH_SEQ[i];
|
||
#endif
|
||
1149 2 }
|
||
1150 1 CKCON |= ILCKE;
|
||
1151 1 TMCON = TME(1);
|
||
1152 1 TMSNU = 0;
|
||
1153 1 INT3EN =1;
|
||
1154 1
|
||
1155 1 TS_IO_init();
|
||
1156 1
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 20
|
||
|
||
1157 1
|
||
1158 1 TKCFG = TKDIV(TKDIV_VAL)|TKTMS(TKTMS_VAL);
|
||
1159 1 #if (TK_CHARGE_REF_SELECT == SOURCE_VDD)
|
||
TKCON = TKST(0)|TKIE(1)|TMEN(0)|TWKE(0)|VRS(VRS_VAL);
|
||
TKPWC = TKPC(TK_PC_VAL)|VDS(0)|VIRS(0)|TKPWS(0)|TKCVS(0);
|
||
#elif (TK_CHARGE_REF_SELECT == SOURCE_INNER)
|
||
1163 1 TKCON = TKST(0)|TKIE(1)|TMEN(0)|TWKE(0)|VRS(0);
|
||
1164 1 TKPWC = TKPC(TK_PC_VAL)|VDS(VDS_VAL)|VIRS(VIRS_VAL)|TKPWS(1)|TKCVS(1);
|
||
1165 1 #endif
|
||
1166 1
|
||
1167 1 #if SUPPORT_KEY
|
||
1168 1 #if TK_SHARE_LED_EN
|
||
TLEN0 = 0xFF;
|
||
TLDAT0 = 0x00;
|
||
TLEN1 = 0x1F;
|
||
TLDAT1 = 0x00;
|
||
|
||
TLCON = TLEIE(0)|TLKIE(0)|TLLIE(0)|TLLVS(0)|TLPOL(0);
|
||
TLCKS = TLCKS(2);
|
||
|
||
TLCNTKH = 0x00;
|
||
TLCNTKL = 0x20;
|
||
|
||
TLCNTLH = LED_DRV_CNT/256;
|
||
TLCNTLL = LED_DRV_CNT%256;
|
||
|
||
TLDIV = 0;
|
||
TLCOMS = 0x01;
|
||
P01F = 6;
|
||
P01C &= (1<<5);
|
||
#endif
|
||
1188 1 #endif
|
||
1189 1 INT3EN = 1;
|
||
1190 1
|
||
1191 1 TS_CycleScanDoneFlag = 0;
|
||
1192 1 #if SUPPORT_KEY
|
||
1193 1 KeysFlagSN = 0;
|
||
1194 1 PreKeysFlagSN = 0;
|
||
1195 1 #endif
|
||
1196 1 ActiveTouchType = 0;
|
||
1197 1 #if SUPPORT_KEY
|
||
1198 1 #if SUPPORT_COVER_PANAL_AFTER_POWERON
|
||
PanalCoverJudgeFlag = 0;
|
||
#endif
|
||
1201 1 #endif
|
||
1202 1 #if SUPPORT_TOUCH_SLEEP_MODE
|
||
1203 1 EnterStopScanTimer = ENTER_STOP_MODE_TIME;
|
||
1204 1 TS_SleepEn = 1;
|
||
1205 1 TS_SleepMode = 0;
|
||
1206 1 #endif
|
||
1207 1 #if SUPPORT_WHEEL_SLIDER
|
||
1208 1 W_S_RefChSet = 0;
|
||
1209 1
|
||
1210 1 WheelSliderState = WHEEL_SLIDER_NO_TOUCH;
|
||
1211 1 WheelSliderTouchFlag = 0;
|
||
1212 1 WheelSliderPosition = -1;
|
||
1213 1 WheelSliderCapRateFilter = 0;
|
||
1214 1 #endif
|
||
1215 1 TS_State = TS_INIT;
|
||
1216 1 TS_Init_Step = 0;
|
||
1217 1
|
||
1218 1 #if SUPPORT_KEY
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 21
|
||
|
||
1219 1 #if ANTI_SPEAKER_EN
|
||
RefChDataTimer = 0;
|
||
#endif
|
||
1222 1 #endif
|
||
1223 1
|
||
1224 1 MainLoopCnt1 = MainLoopCnt2 = 0;
|
||
1225 1 #if SUPPORT_KEY
|
||
1226 1 #if GENERATE_TS_KEY_EN
|
||
TK_State = TK_STATE_RELEASE;
|
||
TS_Key = 0;
|
||
#endif
|
||
1230 1 #endif
|
||
1231 1 }
|
||
1232
|
||
1233 extern unsigned char flagSend;
|
||
1234 void TS_Action(void)
|
||
1235 {
|
||
1236 1 switch(TS_State)
|
||
1237 1 {
|
||
1238 2 case TS_INIT:
|
||
1239 2 TS_RunInit();
|
||
1240 2 break;
|
||
1241 2 case TS_DEAL:
|
||
1242 2 if(TS_CycleScanDoneFlag)
|
||
1243 2 {
|
||
1244 3 TS_CycleScanDoneFlag = 0;
|
||
1245 3
|
||
1246 3 MainLoopCnt1 = MainLoopCnt2 + 1;
|
||
1247 3
|
||
1248 3 #if SUPPORT_KEY
|
||
1249 3 #if ANTI_SPEAKER_EN
|
||
TS_RefChCheck();
|
||
#endif
|
||
1252 3 #endif
|
||
1253 3 TS_DataFiltering();
|
||
1254 3 TS_StableFlag = 1;
|
||
1255 3
|
||
1256 3 // if(flagSend &&(RF_Time>5))
|
||
1257 3 // {
|
||
1258 3 // flagSend = 0;
|
||
1259 3 // RF_Time=0;
|
||
1260 3 // EA = 0;
|
||
1261 3 // RF_send(15);
|
||
1262 3 // EA = 1;
|
||
1263 3 // }
|
||
1264 3
|
||
1265 3
|
||
1266 3 #if SUPPORT_KEY
|
||
1267 3 if(ActiveTouchType != 2)
|
||
1268 3 {
|
||
1269 4 TSKey_DataDeal();
|
||
1270 4 }
|
||
1271 3 #endif
|
||
1272 3 #if (DEBUG)
|
||
Debug_ParamLoad();
|
||
#endif
|
||
1275 3 #if SUPPORT_WHEEL_SLIDER
|
||
1276 3 if(ActiveTouchType != 1)
|
||
1277 3 {
|
||
1278 4 TS_WheelSliderDeal();
|
||
1279 4 }
|
||
1280 3 #endif
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 22
|
||
|
||
1281 3 #if SUPPORT_TOUCH_SLEEP_MODE
|
||
1282 3 if(!TS_StableFlag || !TS_SleepEn || (PCON & BIT2)) // �ڷ���ģʽ������STOPģʽ
|
||
1283 3 {
|
||
1284 4 EnterStopScanTimer = ENTER_STOP_MODE_TIME;
|
||
1285 4 }
|
||
1286 3 if(!EnterStopScanTimer&&TS_SleepEn)
|
||
1287 3 {
|
||
1288 4 #if ENTER_SLEEP_PRINT_EN
|
||
1289 4 TK_Debug_UartPutChar('s');
|
||
1290 4 TK_Debug_UartPutChar('l');
|
||
1291 4 TK_Debug_UartPutChar('e');
|
||
1292 4 TK_Debug_UartPutChar('e');
|
||
1293 4 TK_Debug_UartPutChar('p');
|
||
1294 4 TK_Debug_UartPutChar('\r');
|
||
1295 4 TK_Debug_UartPutChar('\n');
|
||
1296 4 Delay_ms(1);
|
||
1297 4 #endif
|
||
1298 4 TS_EnterSleepMode();
|
||
1299 4 #if ENTER_SLEEP_PRINT_EN
|
||
1300 4 TK_Debug_UartPutChar('e');
|
||
1301 4 TK_Debug_UartPutChar('x');
|
||
1302 4 TK_Debug_UartPutChar('i');
|
||
1303 4 TK_Debug_UartPutChar('t');
|
||
1304 4 TK_Debug_UartPutChar('\r');
|
||
1305 4 TK_Debug_UartPutChar('\n');
|
||
1306 4 #endif
|
||
1307 4 }
|
||
1308 3 #endif
|
||
1309 3 }
|
||
1310 2 if(TS_HalfSecCnt >= 5)
|
||
1311 2 {
|
||
1312 3 TKCON = 0;
|
||
1313 3 TKIF = 0x3F;
|
||
1314 3 TS_init();
|
||
1315 3 }
|
||
1316 2 break;
|
||
1317 2 default:
|
||
1318 2 break;
|
||
1319 2 }
|
||
1320 1 #if SUPPORT_KEY
|
||
1321 1 #if TK_SHARE_LED_EN
|
||
TKLED_Update();
|
||
#endif
|
||
1324 1 #if GENERATE_TS_KEY_EN
|
||
TS_GetKey();
|
||
#endif
|
||
1327 1 #endif
|
||
1328 1 }
|
||
1329 #if SUPPORT_TOUCH_SLEEP_MODE
|
||
1330 void TS_SetChannel(unsigned char index,unsigned char ch);
|
||
1331 void TS_SleepScanStart(void)
|
||
1332 {
|
||
1333 1 unsigned char i;
|
||
1334 1 for(i = 0; i < 6; i++)
|
||
1335 1 {
|
||
1336 2 if(TS_Index + i < TS_Cnt)
|
||
1337 2 {
|
||
1338 3 TS_SetChannel(i,(TS_CH[TS_Index+i])+1);
|
||
1339 3 }
|
||
1340 2 else
|
||
1341 2 {
|
||
1342 3 TS_SetChannel(i,0);
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 23
|
||
|
||
1343 3 }
|
||
1344 2 }
|
||
1345 1 TKCON |= TKST(1);
|
||
1346 1 }
|
||
1347 void TS_EnterSleepMode(void)
|
||
1348 {
|
||
1349 1 //ʡ��ģʽ��������
|
||
1350 1 #define STOP_TKDIV_VAL 0
|
||
1351 1 #define STOP_TKTMS_VAL 15 //�ŵ�ʱ��
|
||
1352 1 #define STOP_VRS_VAL 7 //�Ƚ�����ֵ
|
||
1353 1 unsigned char TS_SampleComplete = 0,i;
|
||
1354 1 unsigned int xdata WakeUp_PThdVal[OPENED_TS_COUNT];
|
||
1355 1 unsigned int xdata WakeUp_NThdVal[OPENED_TS_COUNT];
|
||
1356 1 WORD_UNION TS_Data;
|
||
1357 1
|
||
1358 1 TKCON = 0;
|
||
1359 1 TKIF = 0x3F;
|
||
1360 1
|
||
1361 1 TS_SleepMode = 1;
|
||
1362 1 #if SUPPORT_KEY
|
||
1363 1 #if TK_SHARE_LED_EN
|
||
TLEN0 = 0x00;
|
||
TLDAT0 = 0x00;
|
||
TLEN1 = 0x00;
|
||
TLDAT1 = 0x00;
|
||
P01F = HIGH_Z|PU_EN;
|
||
P01C &= (1<<5); //ѡ��������
|
||
#endif
|
||
1371 1 #endif
|
||
1372 1 TMCON &= ~TME(1);
|
||
1373 1 TMCON |= TMF;
|
||
1374 1
|
||
1375 1 TKCON = (TKCON&0xF8) | VRS(STOP_VRS_VAL);
|
||
1376 1 TKCON &= ~TKIE(1);
|
||
1377 1 TKCFG = TKDIV(STOP_TKDIV_VAL)|TKTMS(STOP_TKTMS_VAL);
|
||
1378 1
|
||
1379 1 #if (OPENED_TS_COUNT%6 == 0)
|
||
1380 1 TKMTS = (SLEEP_MODE_SCAN_INTERVAL_TIME*6)/(OPENED_TS_COUNT);
|
||
1381 1 #else
|
||
TKMTS = (SLEEP_MODE_SCAN_INTERVAL_TIME)/((OPENED_TS_COUNT/6)+1);
|
||
#endif
|
||
1384 1
|
||
1385 1 TKPWC = TKPC(1)|VDS(0)|VIRS(0)|TKPWS(0)|TKCVS(0); //ʡ����ΪVDD����
|
||
1386 1
|
||
1387 1 #ifdef LVD_RST_ENABLE
|
||
1388 1 LVDCON = 0;
|
||
1389 1 #endif
|
||
1390 1 I2CCON = 0;
|
||
1391 1 CKCON = 0;
|
||
1392 1
|
||
1393 1 MECON |= BIT6;
|
||
1394 1 PWCON = (PWCON&0xF0)|0x07;
|
||
1395 1
|
||
1396 1 TS_Index = 0;
|
||
1397 1 TS_SleepScanStart();
|
||
1398 1 WDFLG = 0xA5;
|
||
1399 1
|
||
1400 1 TMCON = TME(1);
|
||
1401 1 TMSNU = 127;
|
||
1402 1
|
||
1403 1 while(1)
|
||
1404 1 {
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 24
|
||
|
||
1405 2 if(TS_SampleComplete)
|
||
1406 2 {
|
||
1407 3 CKCON &= ~IHCKE;
|
||
1408 3 CKCON = (CKCON&0xFE) | CKSEL_IRCL;
|
||
1409 3 EA = 0;
|
||
1410 3 PCON |= (1<<1);
|
||
1411 3 _nop_();
|
||
1412 3 _nop_();
|
||
1413 3 _nop_();
|
||
1414 3 CKCON |= IHCKE;
|
||
1415 3 CKCON = (CKCON&0xFE) | CKSEL_IRCH;
|
||
1416 3 EA = 1;
|
||
1417 3 }
|
||
1418 2 if(TS_HalfSecCnt >= 5)
|
||
1419 2 {
|
||
1420 3 break;
|
||
1421 3 }
|
||
1422 2 if(TKIF != 0)
|
||
1423 2 {
|
||
1424 3 if(TS_HalfSecCnt) TS_HalfSecCnt--;
|
||
1425 3 for(i = 0; i < 6; i++)
|
||
1426 3 {
|
||
1427 4 if(TKIF & (1<<i))
|
||
1428 4 {
|
||
1429 5 TKIF = (1<<i);
|
||
1430 5 if(i == 0)
|
||
1431 5 {
|
||
1432 6 TS_Data.bVal[0] = TK0MSH;
|
||
1433 6 TS_Data.bVal[1] = TK0MSL;
|
||
1434 6 }
|
||
1435 5 else if(i == 1)
|
||
1436 5 {
|
||
1437 6 TS_Data.bVal[0] = TK1MSH;
|
||
1438 6 TS_Data.bVal[1] = TK1MSL;
|
||
1439 6 }
|
||
1440 5 else if(i == 2)
|
||
1441 5 {
|
||
1442 6 TS_Data.bVal[0] = TK2MSH;
|
||
1443 6 TS_Data.bVal[1] = TK2MSL;
|
||
1444 6 }
|
||
1445 5 else if(i == 3)
|
||
1446 5 {
|
||
1447 6 TS_Data.bVal[0] = TK3MSH;
|
||
1448 6 TS_Data.bVal[1] = TK3MSL;
|
||
1449 6 }
|
||
1450 5 else if(i == 4)
|
||
1451 5 {
|
||
1452 6 TS_Data.bVal[0] = TK4MSH;
|
||
1453 6 TS_Data.bVal[1] = TK4MSL;
|
||
1454 6 }
|
||
1455 5 else if(i == 5)
|
||
1456 5 {
|
||
1457 6 TS_Data.bVal[0] = TK5MSH;
|
||
1458 6 TS_Data.bVal[1] = TK5MSL;
|
||
1459 6 }
|
||
1460 5 if(TS_SampleComplete == 0)
|
||
1461 5 {
|
||
1462 6 WakeUp_PThdVal[TS_Index+i] = TS_Data.wVal - SLEEP_TOUTH_THD;
|
||
1463 6 WakeUp_NThdVal[TS_Index+i] = TS_Data.wVal + SLEEP_TOUTH_THD;
|
||
1464 6 }
|
||
1465 5 else
|
||
1466 5 {
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 25
|
||
|
||
1467 6 if((TS_Data.wVal <= WakeUp_PThdVal[TS_Index+i])||(TS_Data.wVal >= WakeUp_NThdVal[TS_Index+i]))
|
||
1468 6 {
|
||
1469 7 goto SLEEP_EXIT;
|
||
1470 7 }
|
||
1471 6 }
|
||
1472 5 }
|
||
1473 4 }
|
||
1474 3 if(TS_Index+6 < TS_Cnt)
|
||
1475 3 {
|
||
1476 4 TS_Index += 6;
|
||
1477 4 }
|
||
1478 3 else
|
||
1479 3 {
|
||
1480 4 TS_Index = 0;
|
||
1481 4 if(TS_SampleComplete == 0)
|
||
1482 4 {
|
||
1483 5 TS_SampleComplete = 1;
|
||
1484 5 TKCON |= TMEN(1);
|
||
1485 5 }
|
||
1486 4 }
|
||
1487 3 TS_SleepScanStart();
|
||
1488 3 WDFLG = 0xA5;
|
||
1489 3 }
|
||
1490 2 }
|
||
1491 1 SLEEP_EXIT:
|
||
1492 1 TKCON = 0;
|
||
1493 1 TKIF = 0x3F;
|
||
1494 1 PWCON = (PWCON&0xF0)|0x0D;
|
||
1495 1
|
||
1496 1 TKCFG = TKDIV(TKDIV_VAL)|TKTMS(TKTMS_VAL);
|
||
1497 1 #if (TK_CHARGE_REF_SELECT == SOURCE_VDD)
|
||
TKCON = TKST(0)|TKIE(1)|TMEN(0)|TWKE(0)|VRS(VRS_VAL);
|
||
TKPWC = TKPC(TK_PC_VAL)|VDS(0)|VIRS(0)|TKPWS(0)|TKCVS(0);
|
||
#elif (TK_CHARGE_REF_SELECT == SOURCE_INNER)
|
||
1501 1 TKCON = TKST(0)|TKIE(1)|TMEN(0)|TWKE(0)|VRS(0);
|
||
1502 1 TKPWC = TKPC(TK_PC_VAL)|VDS(VDS_VAL)|VIRS(VIRS_VAL)|TKPWS(1)|TKCVS(1);
|
||
1503 1 #endif
|
||
1504 1 #if SUPPORT_KEY
|
||
1505 1 #if TK_SHARE_LED_EN
|
||
TLEN0 = 0xFF;
|
||
TLEN1 = 0x1F;
|
||
P01F = 6;
|
||
#endif
|
||
1510 1 #endif
|
||
1511 1 CKCON |= ILCKE;
|
||
1512 1 TMCON &= ~TME(1);
|
||
1513 1 TMCON |= TMF;
|
||
1514 1 Delay_50us(1);
|
||
1515 1 TMCON = TME(1);
|
||
1516 1 TMSNU = 0;
|
||
1517 1 TS_Index = 0;
|
||
1518 1 TS_ScanStart();
|
||
1519 1 EnterStopScanTimer = ENTER_STOP_MODE_TIME;
|
||
1520 1 TS_SleepMode = 0;
|
||
1521 1 #ifdef LVD_RST_ENABLE
|
||
1522 1 LVDCON = 0xE3; //����LVD��λ��ѹΪ2V
|
||
1523 1 #endif
|
||
1524 1 }
|
||
1525 #endif
|
||
1526 /*********************************************************************************************************
|
||
-************/
|
||
1527 #if SUPPORT_KEY
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 26
|
||
|
||
1528 #if GENERATE_TS_KEY_EN
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
typedef struct
|
||
{
|
||
unsigned char TogKeyNum;
|
||
unsigned char TogKeyList[2];
|
||
}
|
||
T_TogKeyInfo;
|
||
#endif
|
||
code unsigned char TS_KEY_TAB[]=
|
||
{
|
||
K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13
|
||
};
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
void TS_GetTogKeyInfor(T_TogKeyInfo *pKeyInfo)
|
||
{
|
||
unsigned char i,index;
|
||
pKeyInfo->TogKeyNum = 0;
|
||
index = 0;
|
||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||
{
|
||
if(KeysFlagSN & MASK_TAB[i])
|
||
{
|
||
pKeyInfo->TogKeyNum++;
|
||
|
||
if(pKeyInfo->TogKeyNum <= 2)
|
||
{
|
||
pKeyInfo->TogKeyList[index++] = TS_KEY_TAB[i];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
#if PRINT_TS_KEY_EN
|
||
void Hex2CharPrint(unsigned int integar)
|
||
{
|
||
unsigned char CharBuf[4];
|
||
unsigned char i, temp;
|
||
for(i = 0; i < 4; i++)
|
||
{
|
||
temp = (unsigned char)(integar&0x0F);
|
||
if(temp >= 0x0A)
|
||
{
|
||
CharBuf[i] = (temp - 0x0A) + 'A';
|
||
}
|
||
else
|
||
{
|
||
CharBuf[i] = temp + '0';
|
||
}
|
||
integar >>= 4;
|
||
}
|
||
TK_Debug_UartPutChar('0');
|
||
TK_Debug_UartPutChar('x');
|
||
TK_Debug_UartPutChar(CharBuf[2]);
|
||
TK_Debug_UartPutChar(CharBuf[1]);
|
||
TK_Debug_UartPutChar(CharBuf[0]);
|
||
}
|
||
#endif
|
||
void TS_GetKey(void)
|
||
{
|
||
static unsigned int KeyBak;
|
||
static bit LongFlag;
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 27
|
||
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
T_TogKeyInfo KeyInfo;
|
||
TS_GetTogKeyInfor(&KeyInfo);
|
||
#else
|
||
static unsigned char KeyidxBak;
|
||
unsigned char i;
|
||
#endif
|
||
TS_Key = 0;
|
||
if(TK_State == TK_STATE_RELEASE)
|
||
{
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
if(KeyInfo.TogKeyNum != 0)
|
||
{
|
||
if(KeyInfo.TogKeyNum == 1)
|
||
{
|
||
KeyBak = (unsigned int)KeyInfo.TogKeyList[0];
|
||
TK_State = TK_STATE_SINGLE_KEY_PRESS;
|
||
}
|
||
else if(KeyInfo.TogKeyNum == 2)
|
||
{
|
||
KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1];
|
||
TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||
}
|
||
TS_Key = KeyBak;
|
||
LongFlag = 0;
|
||
TS_LongKeyTimer = TS_LONG_START_TIME;
|
||
}
|
||
#else
|
||
if(KeysFlagSN != 0)
|
||
{
|
||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||
{
|
||
if(KeysFlagSN & MASK_TAB[i])
|
||
{
|
||
KeyidxBak = i;
|
||
KeyBak = TS_KEY_TAB[i];
|
||
break;
|
||
}
|
||
}
|
||
TS_Key = KeyBak;
|
||
LongFlag = 0;
|
||
TS_LongKeyTimer = TS_LONG_START_TIME;
|
||
TK_State = TK_STATE_SINGLE_KEY_PRESS;
|
||
}
|
||
#endif
|
||
}
|
||
else if(TK_State == TK_STATE_SINGLE_KEY_PRESS)
|
||
{
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
if(KeyInfo.TogKeyNum == 1)
|
||
{
|
||
if(KeyBak == (unsigned int)KeyInfo.TogKeyList[0])
|
||
{
|
||
if(!TS_LongKeyTimer)
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
LongFlag = 1;
|
||
TS_Key = KeyBak | KEY_LONG_START;
|
||
}
|
||
else
|
||
{
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 28
|
||
|
||
TS_Key = KeyBak | KEY_LONG;
|
||
}
|
||
TS_LongKeyTimer = TS_LONG_TIME;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
TS_Key = KeyBak | KEY_BREAK;
|
||
}
|
||
else
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG_BREAK;
|
||
}
|
||
TK_State = TK_STATE_RELEASE;
|
||
}
|
||
}
|
||
else if(KeyInfo.TogKeyNum == 2)
|
||
{
|
||
KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5) | (unsigned int)KeyInfo.TogKeyList[1];
|
||
TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||
TS_Key = KeyBak;
|
||
LongFlag = 0;
|
||
TS_LongKeyTimer = TS_LONG_START_TIME;
|
||
}
|
||
else if(KeyInfo.TogKeyNum == 0)
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
TS_Key = KeyBak | KEY_BREAK;
|
||
}
|
||
else
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG_BREAK;
|
||
}
|
||
TK_State = TK_STATE_RELEASE;
|
||
}
|
||
#else
|
||
if(KeysFlagSN & MASK_TAB[KeyidxBak])
|
||
{
|
||
if(!TS_LongKeyTimer)
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
LongFlag = 1;
|
||
TS_Key = KeyBak | KEY_LONG_START;
|
||
}
|
||
else
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG;
|
||
}
|
||
TS_LongKeyTimer = TS_LONG_TIME;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
TS_Key = KeyBak | KEY_BREAK;
|
||
}
|
||
else
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 29
|
||
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG_BREAK;
|
||
}
|
||
TK_State = TK_STATE_RELEASE;
|
||
}
|
||
#endif
|
||
}
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
else if(TK_State == TK_STATE_DOUBLE_KEY_PRESS)
|
||
{
|
||
if(KeyInfo.TogKeyNum == 2)
|
||
{
|
||
if(KeyBak == ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1])
|
||
{
|
||
if(!TS_LongKeyTimer)
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
LongFlag = 1;
|
||
TS_Key = KeyBak | KEY_LONG_START;
|
||
}
|
||
else
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG;
|
||
}
|
||
TS_LongKeyTimer = TS_LONG_TIME;
|
||
}
|
||
}
|
||
}
|
||
else if(KeyInfo.TogKeyNum == 0)
|
||
{
|
||
if(!LongFlag)
|
||
{
|
||
TS_Key = KeyBak | KEY_BREAK;
|
||
}
|
||
else
|
||
{
|
||
TS_Key = KeyBak | KEY_LONG_BREAK;
|
||
}
|
||
TK_State = TK_STATE_RELEASE;
|
||
}
|
||
}
|
||
#endif
|
||
#if PRINT_TS_KEY_EN
|
||
if(TS_Key != 0)
|
||
{
|
||
if((TS_Key & 0xFF00) == 0)
|
||
{
|
||
#if GENERATE_DOUBLE_KEY_EN
|
||
if(TS_Key > 0x1F)
|
||
{
|
||
TK_Debug_UartPutChar('d');
|
||
TK_Debug_UartPutChar('o');
|
||
TK_Debug_UartPutChar('u');
|
||
TK_Debug_UartPutChar('b');
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('e');
|
||
}
|
||
else
|
||
{
|
||
TK_Debug_UartPutChar('s');
|
||
TK_Debug_UartPutChar('i');
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 30
|
||
|
||
TK_Debug_UartPutChar('n');
|
||
TK_Debug_UartPutChar('g');
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('e');
|
||
}
|
||
TK_Debug_UartPutChar(' ');
|
||
#endif
|
||
TK_Debug_UartPutChar('k');
|
||
TK_Debug_UartPutChar('e');
|
||
TK_Debug_UartPutChar('y');
|
||
TK_Debug_UartPutChar(' ');
|
||
TK_Debug_UartPutChar('=');
|
||
TK_Debug_UartPutChar(' ');
|
||
Hex2CharPrint(TS_Key);
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
}
|
||
else if(TS_Key & KEY_BREAK)
|
||
{
|
||
TK_Debug_UartPutChar('k');
|
||
TK_Debug_UartPutChar('e');
|
||
TK_Debug_UartPutChar('y');
|
||
TK_Debug_UartPutChar(' ');
|
||
TK_Debug_UartPutChar('u');
|
||
TK_Debug_UartPutChar('p');
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
}
|
||
else if(TS_Key & KEY_LONG_START)
|
||
{
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('o');
|
||
TK_Debug_UartPutChar('n');
|
||
TK_Debug_UartPutChar('g');
|
||
TK_Debug_UartPutChar(' ');
|
||
TK_Debug_UartPutChar('s');
|
||
TK_Debug_UartPutChar('t');
|
||
TK_Debug_UartPutChar('a');
|
||
TK_Debug_UartPutChar('r');
|
||
TK_Debug_UartPutChar('t');
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
}
|
||
else if(TS_Key & KEY_LONG)
|
||
{
|
||
TK_Debug_UartPutChar('l');
|
||
TK_Debug_UartPutChar('o');
|
||
TK_Debug_UartPutChar('n');
|
||
TK_Debug_UartPutChar('g');
|
||
TK_Debug_UartPutChar('\r');
|
||
TK_Debug_UartPutChar('\n');
|
||
}
|
||
}
|
||
#endif
|
||
}
|
||
#endif
|
||
1832 #endif
|
||
1833 /*********************************************************************************************************
|
||
-************/
|
||
1834
|
||
1835 /*********************************************************************************************************
|
||
-************/
|
||
C51 COMPILER V9.60.7.0 TS_API 07/03/2025 11:27:52 PAGE 31
|
||
|
||
1836 #endif
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 2294 ----
|
||
CONSTANT SIZE = 53 ----
|
||
XDATA SIZE = 296 48
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = 9 30
|
||
IDATA SIZE = 16 ----
|
||
BIT SIZE = 5 1
|
||
EDATA SIZE = ---- ----
|
||
HDATA SIZE = ---- ----
|
||
XDATA CONST SIZE = ---- ----
|
||
FAR CONST SIZE = ---- ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|