init
This commit is contained in:
@@ -0,0 +1,412 @@
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE TS_SEVICE
|
||||
OBJECT MODULE PLACED IN .\hex\ts_sevice.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TS_Lib\Sources\ts_sevice.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\t
|
||||
-s_sevice.lst) TABS(2) OBJECT(.\hex\ts_sevice.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef TS_SERVICE_C
|
||||
2 #define TS_SERVICE_C
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f5_config.h"
|
||||
5 #include "includes\ca51f5sfr.h"
|
||||
6 #include "includes\ca51f5xsfr.h"
|
||||
7 #include "includes\gpiodef_f5.h"
|
||||
8 /*********************************************************************************************************
|
||||
-************/
|
||||
9 #include "TS_Lib\Includes\ts_def.h"
|
||||
10 #include "TS_Lib\Includes\ts_api.h"
|
||||
11 #include "TS_Lib\Includes\ts_service.h"
|
||||
12 /*********************************************************************************************************
|
||||
-************/
|
||||
13 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
14 //´¥Ãþ¹Ü½Å³õʼ»¯
|
||||
15 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
16 code unsigned char *pXSFR[]=
|
||||
17 {
|
||||
18 &P31F,
|
||||
19 &P30F,
|
||||
20 &P07F,
|
||||
21 &P06F,
|
||||
22 &P05F,
|
||||
23 &P04F,
|
||||
24 &P03F,
|
||||
25 &P02F,
|
||||
26 &P01F,
|
||||
27 &P00F,
|
||||
28 &P34F,
|
||||
29 &P33F,
|
||||
30 &P32F,
|
||||
31 };
|
||||
32 void TS_IO_init(void)
|
||||
33 {
|
||||
34 1 unsigned char i;
|
||||
35 1 unsigned char *pPinS;
|
||||
36 1 GPIO_Init(P35F,P35_CAP_SETTING);
|
||||
37 1
|
||||
38 1 for(i = 0; i < TS_Cnt; i++)
|
||||
39 1 {
|
||||
40 2 pPinS = pXSFR[TS_CH[i]];
|
||||
41 2 *pPinS = 4;
|
||||
42 2 }
|
||||
43 1 }
|
||||
44 void TS_SetChannel(unsigned char index,unsigned char ch)
|
||||
45 {
|
||||
46 1 switch(index)
|
||||
47 1 {
|
||||
48 2 case 0:
|
||||
49 2 TK0CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
50 2 break;
|
||||
51 2 case 1:
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 2
|
||||
|
||||
52 2 TK1CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
53 2 break;
|
||||
54 2 case 2:
|
||||
55 2 TK2CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
56 2 break;
|
||||
57 2 case 3:
|
||||
58 2 TK3CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
59 2 break;
|
||||
60 2 case 4:
|
||||
61 2 TK4CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
62 2 break;
|
||||
63 2 case 5:
|
||||
64 2 TK5CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
65 2 break;
|
||||
66 2 }
|
||||
67 1 }
|
||||
68 void TS_ScanStart(void)
|
||||
69 {
|
||||
70 1 unsigned char i,j;
|
||||
71 1 for(i = 0; i < 6; i++)
|
||||
72 1 {
|
||||
73 2 if(TS_Index + i >= TS_Cnt)
|
||||
74 2 {
|
||||
75 3 TS_SetChannel(i,14);
|
||||
76 3 for(j = i+1; j < 6; j++)
|
||||
77 3 {
|
||||
78 4 TS_SetChannel(j,0);
|
||||
79 4 }
|
||||
80 3 break;
|
||||
81 3 }
|
||||
82 2 TS_SetChannel(i,(TS_CH[TS_Index+i])+1);
|
||||
83 2 }
|
||||
84 1 TKCON |= TKST(1);
|
||||
85 1 }
|
||||
86 unsigned char TS_GetDataArea(unsigned char ts_ch,unsigned int ts_data,int NoiseThd,bit key_pressed_flag)
|
||||
87 {
|
||||
88 1 int Delta;
|
||||
89 1 int FingerThd;
|
||||
90 1
|
||||
91 1 Delta = (int)TS_BaseLineData[ts_ch] - (int)ts_data;
|
||||
92 1 FingerThd = TSKey_FingerThd[ts_ch];
|
||||
93 1
|
||||
94 1 if(key_pressed_flag)
|
||||
95 1 {
|
||||
96 2 FingerThd = (FingerThd*9)/10;
|
||||
97 2 }
|
||||
98 1
|
||||
99 1 if(Delta >= FingerThd) return AREA_FINGER_TOUCH;
|
||||
100 1 else if(Delta > NoiseThd) return AREA_PNOISE_PLUS;
|
||||
101 1 else if(Delta >= 0) return AREA_PNOISE;
|
||||
102 1 else if(Delta >= -NoiseThd) return AREA_NNOISE;
|
||||
103 1 else return AREA_OVER_LOW;
|
||||
104 1 }
|
||||
105 unsigned char TS_AreaDeviateDetection(unsigned int cmp_data,unsigned int real_data,int range)
|
||||
106 {
|
||||
107 1 int Delta;
|
||||
108 1 Delta = (int)cmp_data - (int)real_data;
|
||||
109 1 if((Delta <= range) && (Delta >= -range))
|
||||
110 1 {
|
||||
111 2 return 1;
|
||||
112 2 }
|
||||
113 1 else
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 3
|
||||
|
||||
114 1 {
|
||||
115 2 return 0;
|
||||
116 2 }
|
||||
117 1 }
|
||||
118 void TS_BaseLineForceUpdate(void)
|
||||
119 {
|
||||
120 1 unsigned char i;
|
||||
121 1
|
||||
122 1 for(i = 0; i < TS_Cnt; i++)
|
||||
123 1 {
|
||||
124 2 TS_FirstAreaData[i] = TS_PostData[i];
|
||||
125 2 TS_BaseLineData[i] = TS_PostData[i];
|
||||
126 2 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||||
127 2 }
|
||||
128 1 }
|
||||
129
|
||||
130 void TS_AreaConfirmTimerSet(unsigned char ts_ch, unsigned char area)
|
||||
131 {
|
||||
132 1 TS_AreaConfirmTimer[ts_ch] = AREA_CONFIRM_TIME_TAB[area];
|
||||
133 1 }
|
||||
134 void SetWheelSliderRefCh(unsigned char Slider_Cnt)
|
||||
135 {
|
||||
136 1 unsigned char i,j;
|
||||
137 1 unsigned int MinVal;
|
||||
138 1 MinVal = 0xFFFF;
|
||||
139 1 for(i = TS_BaseCh,j=0; i < TS_BaseCh + Slider_Cnt; i++,j++)
|
||||
140 1 {
|
||||
141 2 if(TS_BaseLineData[i] < MinVal)
|
||||
142 2 {
|
||||
143 3 WheelSliderRefCh = j;
|
||||
144 3 MinVal = TS_BaseLineData[i];
|
||||
145 3 }
|
||||
146 2 }
|
||||
147 1 }
|
||||
148 #define WHEEL_SLIDER_POSITION_FILTER_COUNT 4
|
||||
149 int WheelTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
150 {
|
||||
151 1 unsigned char i;
|
||||
152 1 unsigned long int CalcTemp1;
|
||||
153 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
154 1 unsigned char DeltaRate;
|
||||
155 1 int Delta;
|
||||
156 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
157 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
158 1 int Position,PosOffset;
|
||||
159 1
|
||||
160 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
161 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
162 1 {
|
||||
163 2 if(i == WheelSliderRefCh)
|
||||
164 2 {
|
||||
165 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
166 3 }
|
||||
167 2 else
|
||||
168 2 {
|
||||
169 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
170 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
171 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
172 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
173 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 4
|
||||
|
||||
174 3 }
|
||||
175 2 if(Delta < 0) Delta = 0;
|
||||
176 2
|
||||
177 2
|
||||
178 2 if(Delta > MaxDelta1)
|
||||
179 2 {
|
||||
180 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
181 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
182 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
183 3 }
|
||||
184 2 else if(Delta > MaxDelta2)
|
||||
185 2 {
|
||||
186 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
187 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
188 3 }
|
||||
189 2 // else if(Delta > MaxDelta3)
|
||||
190 2 // {
|
||||
191 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
192 2 // }
|
||||
193 2 }
|
||||
194 1
|
||||
195 1 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
196 1 {
|
||||
197 2 return -1;
|
||||
198 2 }
|
||||
199 1
|
||||
200 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
201 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
202 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
203 1
|
||||
204 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
205 1
|
||||
206 1 MaxDelta1 += CalcTemp2;
|
||||
207 1 MaxDelta2 += CalcTemp2;
|
||||
208 1
|
||||
209 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
210 1 if(WheelSliderCapRateFilter == 0)
|
||||
211 1 {
|
||||
212 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
213 2 }
|
||||
214 1 else
|
||||
215 1 {
|
||||
216 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
217 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
218 2 }
|
||||
219 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
220 1 WheelSliderMaxIdx = Maxidx1;
|
||||
221 1
|
||||
222 1 {
|
||||
223 2 bit dir_flag;
|
||||
224 2 Position = Maxidx1*64;
|
||||
225 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
226 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
227 2
|
||||
228 2 if((Maxidx1 == 0) && (Maxidx2 == (WHEEL_SLIDER0_CH_COUNT_V-1))) dir_flag = 0;
|
||||
229 2 else if((Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1)) && (Maxidx2 == 0)) dir_flag = 1;
|
||||
230 2 else if(Maxidx1 < Maxidx2) dir_flag = 1;
|
||||
231 2 else dir_flag = 0;
|
||||
232 2
|
||||
233 2 if(dir_flag)
|
||||
234 2 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 5
|
||||
|
||||
235 3 Position += PosOffset;
|
||||
236 3 }
|
||||
237 2 else
|
||||
238 2 {
|
||||
239 3 if(Position == 0)
|
||||
240 3 {
|
||||
241 4 Position = WHEEL_SLIDER0_CH_COUNT_V*64-1;
|
||||
242 4 }
|
||||
243 3 Position -= PosOffset;
|
||||
244 3 }
|
||||
245 2 }
|
||||
246 1 return Position;
|
||||
247 1 }
|
||||
248 int SliderTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
249 {
|
||||
250 1 unsigned char i;
|
||||
251 1 unsigned long int CalcTemp1;
|
||||
252 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
253 1 unsigned char DeltaRate;
|
||||
254 1 int Delta;
|
||||
255 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
256 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
257 1 int Position,PosOffset;
|
||||
258 1
|
||||
259 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
260 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
261 1 {
|
||||
262 2 if(i == WheelSliderRefCh)
|
||||
263 2 {
|
||||
264 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
265 3 }
|
||||
266 2 else
|
||||
267 2 {
|
||||
268 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
269 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
270 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
271 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
272 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
273 3 }
|
||||
274 2 if(Delta < 0) Delta = 0;
|
||||
275 2
|
||||
276 2
|
||||
277 2 if(Delta > MaxDelta1)
|
||||
278 2 {
|
||||
279 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
280 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
281 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
282 3 }
|
||||
283 2 else if(Delta > MaxDelta2)
|
||||
284 2 {
|
||||
285 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
286 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
287 3 }
|
||||
288 2 // else if(Delta > MaxDelta3)
|
||||
289 2 // {
|
||||
290 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
291 2 // }
|
||||
292 2 }
|
||||
293 1 if(((Maxidx1 == 0)||(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))))
|
||||
294 1 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 6
|
||||
|
||||
295 2 if((MaxDelta1) < (WHEEL_SLIDER0_TOUCH_THD_V>>1))
|
||||
296 2 {
|
||||
297 3 return -1;
|
||||
298 3 }
|
||||
299 2 }
|
||||
300 1 else
|
||||
301 1 {
|
||||
302 2 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
303 2 {
|
||||
304 3 return -1;
|
||||
305 3 }
|
||||
306 2 }
|
||||
307 1
|
||||
308 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
309 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
310 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
311 1
|
||||
312 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
313 1
|
||||
314 1 MaxDelta1 += CalcTemp2;
|
||||
315 1 MaxDelta2 += CalcTemp2;
|
||||
316 1
|
||||
317 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
318 1 if(WheelSliderCapRateFilter == 0)
|
||||
319 1 {
|
||||
320 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
321 2 }
|
||||
322 1 else
|
||||
323 1 {
|
||||
324 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
325 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
326 2 }
|
||||
327 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
328 1 WheelSliderMaxIdx = Maxidx1;
|
||||
329 1
|
||||
330 1 Position = Maxidx1*64;
|
||||
331 1 if(Maxidx1 == 0)
|
||||
332 1 {
|
||||
333 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[0])
|
||||
334 2 {
|
||||
335 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[0];
|
||||
336 3 }
|
||||
337 2 Position = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[0])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[0]);
|
||||
338 2 }
|
||||
339 1 else if(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))
|
||||
340 1 {
|
||||
341 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])
|
||||
342 2 {
|
||||
343 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1];
|
||||
344 3 }
|
||||
345 2 Position -= ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])*32)/(128-WHEEL_SLIDER0_
|
||||
-MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1]);
|
||||
346 2 }
|
||||
347 1 else
|
||||
348 1 {
|
||||
349 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
350 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
351 2 if(Maxidx1 < Maxidx2)
|
||||
352 2 {
|
||||
353 3 Position += PosOffset;
|
||||
354 3 }
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 7
|
||||
|
||||
355 2 else
|
||||
356 2 {
|
||||
357 3 Position -= PosOffset;
|
||||
358 3 }
|
||||
359 2 }
|
||||
360 1 return Position;
|
||||
361 1 }
|
||||
362 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 1853 ----
|
||||
CONSTANT SIZE = 39 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 45
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- 2
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
Reference in New Issue
Block a user