📄 stm8_tsl_singlechannelkey.ls
字号:
1 ; C Compiler for STM8 (COSMIC Software)
2 ; Parser V4.9.2 - 29 Jun 2010
3 ; Generator V4.3.5 - 02 Jul 2010
80 ; 53 void TSL_SCKey_Init(void)
80 ; 54 {
82 switch .text
83 0000 _TSL_SCKey_Init:
87 ; 55 for (KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++)
89 0000 3f00 clr _KeyIndex
90 0002 L53:
91 ; 57 TSL_SetStructPointer();
93 0002 cd0000 call _TSL_SetStructPointer
95 ; 58 pKeyStruct->State.whole = DISABLED_STATE;
97 0005 a680 ld a,#128
98 0007 92c700 ld [_pKeyStruct.w],a
99 ; 59 pKeyStruct->DetectThreshold = SCKEY_DETECTTHRESHOLD_DEFAULT;
101 000a be00 ldw x,_pKeyStruct
102 000c a628 ld a,#40
103 000e e70c ld (12,x),a
104 ; 60 pKeyStruct->EndDetectThreshold = SCKEY_ENDDETECTTHRESHOLD_DEFAULT;
106 0010 be00 ldw x,_pKeyStruct
107 0012 a61e ld a,#30
108 0014 e70d ld (13,x),a
109 ; 61 pKeyStruct->RecalibrationThreshold = SCKEY_RECALIBRATIONTHRESHOLD_DEFAULT;
111 0016 be00 ldw x,_pKeyStruct
112 0018 a680 ld a,#128
113 001a e70e ld (14,x),a
114 ; 55 for (KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++)
116 001c 3c00 inc _KeyIndex
119 001e b600 ld a,_KeyIndex
120 0020 a102 cp a,#2
121 0022 25de jrult L53
122 ; 63 }
125 0024 81 ret
156 ; 76 void TSL_SCKEY_P1_Acquisition(void)
156 ; 77 {
157 switch .text
158 0025 _TSL_SCKEY_P1_Acquisition:
162 ; 120 sTouchIO.PORT_ADDR = (GPIO_TypeDef *)(SCKEY_P1_PORT_ADDR);
164 0025 ae5005 ldw x,#20485
165 0028 bf00 ldw _sTouchIO,x
166 ; 121 for (KeyIndex = 0; KeyIndex < SCKEY_P1_KEY_COUNT; KeyIndex++)
168 002a 3f00 clr _KeyIndex
169 002c L35:
170 ; 123 TSL_SetStructPointer();
172 002c cd0000 call _TSL_SetStructPointer
174 ; 124 if ((pKeyStruct->State.whole != ERROR_STATE) && (pKeyStruct->State.whole != DISABLED_STATE))
176 002f 92c600 ld a,[_pKeyStruct.w]
177 0032 a108 cp a,#8
178 0034 273e jreq L16
180 0036 92c600 ld a,[_pKeyStruct.w]
181 0039 a180 cp a,#128
182 003b 2737 jreq L16
183 ; 126 sTouchIO.AcqMask = Table_SCKEY_BITS[KeyIndex];
185 003d b600 ld a,_KeyIndex
186 003f 5f clrw x
187 0040 97 ld xl,a
188 0041 d60000 ld a,(_Table_SCKEY_BITS,x)
189 0044 b702 ld _sTouchIO+2,a
190 ; 127 sTouchIO.DriveMask = (u8)(sTouchIO.AcqMask | SCKEY_P1_DRIVEN_SHIELD_MASK);
192 0046 b602 ld a,_sTouchIO+2
193 0048 aa02 or a,#2
194 004a b703 ld _sTouchIO+3,a
195 ; 128 sTouchIO.Measurement = &sSCKeyInfo[KeyIndex].Channel.LastMeas;
197 004c b600 ld a,_KeyIndex
198 004e 97 ld xl,a
199 004f a60f ld a,#15
200 0051 42 mul x,a
201 0052 01 rrwa x,a
202 0053 ab05 add a,#_sSCKeyInfo+5
203 0055 2401 jrnc L01
204 0057 5c incw x
205 0058 L01:
206 0058 5f clrw x
207 0059 97 ld xl,a
208 005a bf04 ldw _sTouchIO+4,x
209 ; 129 sTouchIO.RejectedNb = &sSCKeyInfo[KeyIndex].Channel.LastMeasRejectNb;
211 005c b600 ld a,_KeyIndex
212 005e 97 ld xl,a
213 005f a60f ld a,#15
214 0061 42 mul x,a
215 0062 01 rrwa x,a
216 0063 ab07 add a,#_sSCKeyInfo+7
217 0065 2401 jrnc L21
218 0067 5c incw x
219 0068 L21:
220 0068 5f clrw x
221 0069 97 ld xl,a
222 006a bf06 ldw _sTouchIO+6,x
223 ; 130 sTouchIO.Type = SCKEY_TYPE;
225 006c 3f08 clr _sTouchIO+8
226 ; 131 TSL_IO_Acquisition(SCKEY_ACQ_NUM, SCKEY_ADJUST_LEVEL);
228 006e ae0301 ldw x,#769
229 0071 cd0000 call _TSL_IO_Acquisition
231 0074 L16:
232 ; 121 for (KeyIndex = 0; KeyIndex < SCKEY_P1_KEY_COUNT; KeyIndex++)
234 0074 3c00 inc _KeyIndex
237 0076 b600 ld a,_KeyIndex
238 0078 a102 cp a,#2
239 007a 25b0 jrult L35
240 ; 135 }
243 007c 81 ret
281 ; 296 void TSL_SCKey_Process(void)
281 ; 297 {
282 switch .text
283 007d _TSL_SCKey_Process:
287 ; 298 TSL_SetStructPointer();
289 007d cd0000 call _TSL_SetStructPointer
291 ; 300 TSL_DeltaCalculation();
293 0080 cd0000 call _TSL_DeltaCalculation
295 ; 302 switch (pKeyStruct->State.whole)
297 0083 92c600 ld a,[_pKeyStruct.w]
299 ; 353 break;
300 0086 4a dec a
301 0087 2751 jreq L57
302 0089 4a dec a
303 008a 271a jreq L36
304 008c a002 sub a,#2
305 008e 272d jreq L76
306 0090 a004 sub a,#4
307 0092 2759 jreq L77
308 0094 a009 sub a,#9
309 0096 273d jreq L37
310 0098 a003 sub a,#3
311 009a 271c jreq L56
312 009c a010 sub a,#16
313 009e 2730 jreq L17
314 00a0 a05c sub a,#92
315 00a2 274e jreq L101
316 00a4 L721:
318 00a4 20fe jra L721
319 00a6 L36:
320 ; 305 case IDLE_STATE:
320 ; 306 if (TSL_SCKey_CheckErrorCondition())
322 00a6 cd0241 call _TSL_SCKey_CheckErrorCondition
324 00a9 4d tnz a
325 00aa 2705 jreq L121
326 ; 308 TSL_SCKey_SetErrorState();
328 00ac cd0000 call _TSL_SCKey_SetErrorState
330 ; 309 break;
332 00af 2044 jra L711
333 00b1 L121:
334 ; 311 TSL_SCKey_IdleTreatment();
336 00b1 ad5f call _TSL_SCKey_IdleTreatment
338 ; 312 TSL_SCKey_CheckDisabled();
340 00b3 cd0221 call _TSL_SCKey_CheckDisabled
342 ; 313 break;
344 00b6 203d jra L711
345 00b8 L56:
346 ; 315 case PRE_DETECTED_STATE:
346 ; 316 TSL_SCKey_PreDetectTreatment();
348 00b8 cd0149 call _TSL_SCKey_PreDetectTreatment
350 ; 317 break;
352 00bb 2038 jra L711
353 00bd L76:
354 ; 319 case DETECTED_STATE:
354 ; 320 if (TSL_SCKey_CheckErrorCondition())
356 00bd cd0241 call _TSL_SCKey_CheckErrorCondition
358 00c0 4d tnz a
359 00c1 2705 jreq L321
360 ; 322 TSL_SCKey_SetErrorState();
362 00c3 cd0000 call _TSL_SCKey_SetErrorState
364 ; 323 break;
366 00c6 202d jra L711
367 00c8 L321:
368 ; 325 TSL_SCKey_DetectedTreatment();
370 00c8 cd0175 call _TSL_SCKey_DetectedTreatment
372 ; 326 TSL_SCKey_CheckDisabled();
374 00cb cd0221 call _TSL_SCKey_CheckDisabled
376 ; 327 break;
378 00ce 2025 jra L711
379 00d0 L17:
380 ; 329 case POST_DETECTED_STATE:
380 ; 330 TSL_SCKey_PostDetectTreatment();
382 00d0 cd019c call _TSL_SCKey_PostDetectTreatment
384 ; 331 break;
386 00d3 2020 jra L711
387 00d5 L37:
388 ; 333 case PRE_CALIBRATION_STATE:
388 ; 334 TSL_SCKey_PreRecalibrationTreatment();
390 00d5 cd01c4 call _TSL_SCKey_PreRecalibrationTreatment
392 ; 335 break;
394 00d8 201b jra L711
395 00da L57:
396 ; 337 case CALIBRATION_STATE:
396 ; 338 if (TSL_SCKey_CheckErrorCondition())
398 00da cd0241 call _TSL_SCKey_CheckErrorCondition
400 00dd 4d tnz a
401 00de 2705 jreq L521
402 ; 340 TSL_SCKey_SetErrorState();
404 00e0 cd0000 call _TSL_SCKey_SetErrorState
406 ; 341 break;
408 00e3 2010 jra L711
409 00e5 L521:
410 ; 343 TSL_SCKey_CalibrationTreatment();
412 00e5 cd01ec call _TSL_SCKey_CalibrationTreatment
414 ; 344 TSL_SCKey_CheckDisabled();
416 00e8 cd0221 call _TSL_SCKey_CheckDisabled
418 ; 345 break;
420 00eb 2008 jra L711
421 00ed L77:
422 ; 347 case ERROR_STATE:
422 ; 348 TSL_SCKey_CheckDisabled();
424 00ed cd0221 call _TSL_SCKey_CheckDisabled
426 ; 349 break;
428 00f0 2003 jra L711
429 00f2 L101:
430 ; 351 case DISABLED_STATE:
430 ; 352 TSL_SCKey_CheckEnabled();
432 00f2 cd022d call _TSL_SCKey_CheckEnabled
434 ; 353 break;
436 00f5 L711:
437 ; 363 TSL_TempGlobalSetting.whole |= pKeyStruct->Setting.whole;
439 00f5 be00 ldw x,_pKeyStruct
440 00f7 ee01 ldw x,(1,x)
441 00f9 01 rrwa x,a
442 00fa ba01 or a,_TSL_TempGlobalSetting+1
443 00fc 01 rrwa x,a
444 00fd ba00 or a,_TSL_TempGlobalSetting
445 00ff 01 rrwa x,a
446 0100 bf00 ldw _TSL_TempGlobalSetting,x
447 ; 364 TSL_TempGlobalState.whole |= pKeyStruct->State.whole;
449 0102 b600 ld a,_TSL_TempGlobalState
450 0104 92ca00 or a,[_pKeyStruct.w]
451 0107 b700 ld _TSL_TempGlobalState,a
452 ; 365 pKeyStruct->Setting.b.CHANGED = 0;
454 0109 be00 ldw x,_pKeyStruct
455 010b e602 ld a,(2,x)
456 010d a4f7 and a,#247
457 010f e702 ld (2,x),a
458 ; 366 }
461 0111 81 ret
491 ; 379 void TSL_SCKey_IdleTreatment(void)
491 ; 380 {
492 switch .text
493 0112 _TSL_SCKey_IdleTreatment:
497 ; 383 if (pKeyStruct->Channel.LastMeasRejectNb > MAX_REJECTED_MEASUREMENTS)
499 0112 be00 ldw x,_pKeyStruct
500 0114 6d07 tnz (7,x)
501 0116 2701 jreq L341
502 ; 385 return;
505 0118 81 ret
506 0119 L341:
507 ; 390 if (Delta <= pKeyStruct->RecalibrationThreshold)
509 0119 9c rvf
510 011a be00 ldw x,_pKeyStruct
511 011c e60e ld a,(14,x)
512 011e 5f clrw x
513 011f 4d tnz a
514 0120 2a01 jrpl L02
515 0122 53 cplw x
516 0123 L02:
517 0123 97 ld xl,a
518 0124 b300 cpw x,_Delta
519 0126 2f04 jrslt L541
520 ; 392 TSL_SCKey_SetPreRecalibrationState();
522 0128 cd0000 call _TSL_SCKey_SetPreRecalibrationState
524 ; 393 return;
527 012b 81 ret
528 012c L541:
529 ; 398 if (Delta >= pKeyStruct->DetectThreshold)
531 012c 9c rvf
532 012d be00 ldw x,_pKeyStruct
533 012f e60c ld a,(12,x)
534 0131 5f clrw x
535 0132 4d tnz a
536 0133 2a01 jrpl L22
537 0135 53 cplw x
538 0136 L22:
539 0136 97 ld xl,a
540 0137 b300 cpw x,_Delta
541 0139 2c0d jrsgt L741
542 ; 403 TSL_SCKey_SetPreDetectState();
544 013b cd0000 call _TSL_SCKey_SetPreDetectState
546 ; 404 if (!DetectionIntegrator)
548 013e 3d00 tnz _DetectionIntegrator
549 0140 2606 jrne L741
550 ; 406 pKeyStruct->Channel.IntegratorCounter++;
552 0142 be00 ldw x,_pKeyStruct
553 0144 6c0a inc (10,x)
554 ; 407 TSL_SCKey_PreDetectTreatment();
556 0146 ad01 call _TSL_SCKey_PreDetectTreatment
558 0148 L741:
559 ; 410 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -