⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm8_tsl_rc_services.ls

📁 STM8-触摸例程
💻 LS
📖 第 1 页 / 共 2 页
字号:
 783  00e9 cd000e        	call	_TSL_DeltaCalculation
 785                     ; 318         if ( Delta == 0 )  // No Fast ECS !
 787  00ec be00          	ldw	x,_Delta
 788                     ; 319           ECS_Fast_Enable = 0;
 790  00ee 270f          	jreq	LC002
 791                     ; 322           if ( Delta < 0 )
 793  00f0 2a09          	jrpl	L352
 794                     ; 324             if ( ECS_Fast_Direction > 0 )  // No Fast ECS !
 796  00f2 9c            	rvf	
 797  00f3 7b06          	ld	a,(OFST-5,sp)
 798                     ; 325               ECS_Fast_Enable = 0;
 800  00f5 2c08          	jrsgt	LC002
 801                     ; 327               ECS_Fast_Direction = -1;
 803  00f7 a6ff          	ld	a,#255
 804  00f9 200a          	jp	LC001
 805  00fb               L352:
 806                     ; 331             if ( ECS_Fast_Direction < 0 )  // No Fast ECS !
 808  00fb 7b06          	ld	a,(OFST-5,sp)
 809  00fd 2a04          	jrpl	L362
 810                     ; 332               ECS_Fast_Enable = 0;
 812  00ff               LC002:
 815  00ff 0f07          	clr	(OFST-4,sp)
 817  0101 2004          	jra	L542
 818  0103               L362:
 819                     ; 334               ECS_Fast_Direction = + 1;
 821  0103 a601          	ld	a,#1
 822  0105               LC001:
 823  0105 6b06          	ld	(OFST-5,sp),a
 824  0107               L542:
 825                     ; 306     for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
 827  0107 3c00          	inc	_KeyIndex
 830  0109 b600          	ld	a,_KeyIndex
 831  010b a10a          	cp	a,#10
 832  010d 25c7          	jrult	L532
 833  010f               L142:
 834                     ; 385     if ( !ECSTimeStepCounter && !ECSTempoCounter )
 836  010f b600          	ld	a,_ECSTimeStepCounter
 837  0111 26a4          	jrne	L522
 839  0113 b600          	ld	a,_ECSTempoCounter
 840  0115 267f          	jrne	L522
 841                     ; 387       ECSTimeStepCounter = ECSTimeStep;
 843  0117 450000        	mov	_ECSTimeStepCounter,_ECSTimeStep
 844                     ; 389       if (ECS_Fast_Enable)
 846  011a 7b07          	ld	a,(OFST-4,sp)
 847  011c 2704          	jreq	L172
 848                     ; 391         K_Filter = ECS_K_Fast;
 850  011e b600          	ld	a,_ECS_K_Fast
 851  0120 6b05          	ld	(OFST-6,sp),a
 852  0122               L172:
 853                     ; 394       K_Filter_Complement = (u8)((0xFF ^ K_Filter) + 1);
 855  0122 7b05          	ld	a,(OFST-6,sp)
 856  0124 43            	cpl	a
 857  0125 4c            	inc	a
 858  0126 6b07          	ld	(OFST-4,sp),a
 859                     ; 396       if ( K_Filter )
 861  0128 7b05          	ld	a,(OFST-6,sp)
 862  012a 276a          	jreq	L522
 863                     ; 399         for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
 865  012c 3f00          	clr	_KeyIndex
 866  012e               L572:
 867                     ; 401           TSL_SetStructPointer();
 869  012e cd0000        	call	_TSL_SetStructPointer
 871                     ; 402           if ( pKeyStruct->State.whole == IDLE_STATE )
 873  0131 92c600        	ld	a,[_pKeyStruct.w]
 874  0134 a102          	cp	a,#2
 875  0136 2656          	jrne	L303
 876                     ; 404             IIR_Result = ((u32)(pKeyStruct->Channel.Reference) << 8) + pKeyStruct->Channel.ECSRefRest;
 878  0138 be00          	ldw	x,_pKeyStruct
 879  013a 90ae0100      	ldw	y,#256
 880  013e ee08          	ldw	x,(8,x)
 881  0140 cd0000        	call	c_umul
 883  0143 be00          	ldw	x,_pKeyStruct
 884  0145 e60b          	ld	a,(11,x)
 885  0147 cd0000        	call	c_ladc
 887  014a 96            	ldw	x,sp
 888  014b 1c0008        	addw	x,#OFST-3
 889  014e cd0000        	call	c_rtol
 891                     ; 405             IIR_Result = K_Filter_Complement * IIR_Result;
 893  0151 7b07          	ld	a,(OFST-4,sp)
 894  0153 b703          	ld	c_lreg+3,a
 895  0155 3f02          	clr	c_lreg+2
 896  0157 3f01          	clr	c_lreg+1
 897  0159 3f00          	clr	c_lreg
 898  015b 96            	ldw	x,sp
 899  015c 1c0008        	addw	x,#OFST-3
 900  015f cd0000        	call	c_lgmul
 902                     ; 406             IIR_Result += K_Filter * ((u32)(pKeyStruct->Channel.LastMeas) << 8);
 904  0162 7b05          	ld	a,(OFST-6,sp)
 905  0164 b703          	ld	c_lreg+3,a
 906  0166 3f02          	clr	c_lreg+2
 907  0168 3f01          	clr	c_lreg+1
 908  016a 3f00          	clr	c_lreg
 909  016c 96            	ldw	x,sp
 910  016d 5c            	incw	x
 911  016e cd0000        	call	c_rtol
 913  0171 be00          	ldw	x,_pKeyStruct
 914  0173 ee05          	ldw	x,(5,x)
 915  0175 cd0000        	call	c_umul
 917  0178 96            	ldw	x,sp
 918  0179 5c            	incw	x
 919  017a cd0000        	call	c_lmul
 921  017d 96            	ldw	x,sp
 922  017e 1c0008        	addw	x,#OFST-3
 923  0181 cd0000        	call	c_lgadd
 925                     ; 407             pKeyStruct->Channel.Reference = (u16)(IIR_Result >> 16);
 927  0184 be00          	ldw	x,_pKeyStruct
 928  0186 1608          	ldw	y,(OFST-3,sp)
 929  0188 ef08          	ldw	(8,x),y
 930                     ; 408             pKeyStruct->Channel.ECSRefRest = (u8)(IIR_Result >> 8);
 932  018a 7b0a          	ld	a,(OFST-1,sp)
 933  018c e70b          	ld	(11,x),a
 934  018e               L303:
 935                     ; 399         for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
 937  018e 3c00          	inc	_KeyIndex
 940  0190 b600          	ld	a,_KeyIndex
 941  0192 a10a          	cp	a,#10
 942  0194 2598          	jrult	L572
 943  0196               L522:
 944                     ; 292   while ( Local_TickECS10ms-- )
 946  0196 b600          	ld	a,_Local_TickECS10ms
 947  0198 3a00          	dec	_Local_TickECS10ms
 948  019a 4d            	tnz	a
 949  019b 2703cc00ba    	jrne	L322
 950                     ; 431 }
 953  01a0 5b0b          	addw	sp,#11
 954  01a2 81            	ret	
1000                     ; 445 void TSL_SCKey_DES(void)
1000                     ; 446 {
1001                     	switch	.text
1002  01a3               _TSL_SCKey_DES:
1004  01a3 89            	pushw	x
1005       00000002      OFST:	set	2
1008                     ; 450   if ( pKeyStruct->Setting.b.LOCKED )
1010  01a4 be00          	ldw	x,_pKeyStruct
1011  01a6 e602          	ld	a,(2,x)
1012  01a8 2b1d          	jrmi	L25
1013                     ; 451     return;
1015                     ; 453   DESGroupMask = pKeyStruct->DESGroup;
1017  01aa e604          	ld	a,(4,x)
1018  01ac 6b01          	ld	(OFST-1,sp),a
1019                     ; 455   for ( KeyToCheck = 0; KeyToCheck < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyToCheck++ )
1021  01ae 4f            	clr	a
1022  01af 6b02          	ld	(OFST+0,sp),a
1023  01b1               L333:
1024                     ; 457     if ( KeyToCheck != KeyIndex )
1026  01b1 b100          	cp	a,_KeyIndex
1027  01b3 2714          	jreq	L143
1028                     ; 460       if ( sSCKeyInfo[KeyToCheck].DESGroup & DESGroupMask )
1030  01b5 97            	ld	xl,a
1031  01b6 a60f          	ld	a,#15
1032  01b8 42            	mul	x,a
1033  01b9 e604          	ld	a,(_sSCKeyInfo+4,x)
1034  01bb 1501          	bcp	a,(OFST-1,sp)
1035  01bd 270a          	jreq	L143
1036                     ; 462         if ( sSCKeyInfo[KeyToCheck].Setting.b.LOCKED )
1038  01bf e602          	ld	a,(_sSCKeyInfo+2,x)
1039  01c1 2a06          	jrpl	L143
1040                     ; 464           goto ExitToIdle;
1041                     ; 487 ExitToIdle:   // The DES is verified at PRE DETECT state only !
1041                     ; 488   pKeyStruct->Channel.IntegratorCounter++;  // Increment integrator to never allow DETECT state
1043  01c3 be00          	ldw	x,_pKeyStruct
1044  01c5 6c0a          	inc	(10,x)
1045                     ; 489   return;
1046  01c7               L25:
1049  01c7 85            	popw	x
1050  01c8 81            	ret	
1051  01c9               L143:
1052                     ; 455   for ( KeyToCheck = 0; KeyToCheck < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyToCheck++ )
1054  01c9 0c02          	inc	(OFST+0,sp)
1057  01cb 7b02          	ld	a,(OFST+0,sp)
1058  01cd a10a          	cp	a,#10
1059  01cf 25e0          	jrult	L333
1060                     ; 484   pKeyStruct->Setting.b.LOCKED = 1;
1062  01d1 be00          	ldw	x,_pKeyStruct
1063  01d3 e602          	ld	a,(2,x)
1064  01d5 aa80          	or	a,#128
1065  01d7 e702          	ld	(2,x),a
1066                     ; 485   return;
1068  01d9 20ec          	jra	L25
1096                     ; 503 void TSL_SCKey_DetectionTimeout(void)
1096                     ; 504 {
1097                     	switch	.text
1098  01db               _TSL_SCKey_DetectionTimeout:
1102                     ; 505   if ( Local_TickFlag.b.DTO_1sec )
1104  01db 720100000d    	btjf	_Local_TickFlag,#0,L753
1105                     ; 507     if ( DetectionTimeout )
1107  01e0 b600          	ld	a,_DetectionTimeout
1108  01e2 2709          	jreq	L753
1109                     ; 509       pKeyStruct->Counter--;
1111  01e4 be00          	ldw	x,_pKeyStruct
1112  01e6 6a03          	dec	(3,x)
1113                     ; 510       if ( !pKeyStruct->Counter )
1115  01e8 2603          	jrne	L753
1116                     ; 512         TSL_SCKey_SetCalibrationState( );
1118  01ea cd0076        	call	_TSL_SCKey_SetCalibrationState
1120  01ed               L753:
1121                     ; 516 }
1124  01ed 81            	ret	
1137                     	xdef	_TSL_SCKey_DetectionTimeout
1138                     	xdef	_TSL_SCKey_DES
1139                     	xdef	_TSL_ECS
1140                     	xdef	_TSL_SCKey_SetDisabledState
1141                     	xdef	_TSL_SCKey_SetErrorState
1142                     	xdef	_TSL_SCKey_SetPreRecalibrationState
1143                     	xdef	_TSL_SCKey_BackToDetectedState
1144                     	xdef	_TSL_SCKey_SetPostDetectState
1145                     	xdef	_TSL_SCKey_SetDetectedState
1146                     	xdef	_TSL_SCKey_SetPreDetectState
1147                     	xdef	_TSL_SCKey_BackToIdleState
1148                     	xdef	_TSL_SCKey_SetIdleState
1149                     	xdef	_TSL_DeltaCalculation
1150                     	xdef	_TSL_SetStructPointer
1151                     	xref.b	_ECSTempoPrescaler
1152                     	xref.b	_ECSTempoCounter
1153                     	xref.b	_ECSTimeStepCounter
1154                     	xref.b	_Local_TickFlag
1155                     	xref.b	_Local_TickECS10ms
1156                     	xref.b	_Delta
1157                     	xref.b	_KeyIndex
1158                     	xdef	_TSL_SCKey_SetCalibrationState
1159                     	xref.b	_ECS_K_Slow
1160                     	xref.b	_ECS_K_Fast
1161                     	xref.b	_ECSTemporization
1162                     	xref.b	_ECSTimeStep
1163                     	xref.b	_RecalibrationIntegrator
1164                     	xref.b	_EndDetectionIntegrator
1165                     	xref.b	_DetectionIntegrator
1166                     	xref.b	_DetectionTimeout
1167                     	xref.b	_sSCKeyInfo
1168                     	xref.b	_pKeyStruct
1169                     	xref.b	_TSL_TickCount_ECS_10ms
1170                     	xref.b	c_lreg
1171                     	xref.b	c_x
1172                     	xref.b	c_y
1191                     	xref	c_lgadd
1192                     	xref	c_lmul
1193                     	xref	c_lgmul
1194                     	xref	c_rtol
1195                     	xref	c_ladc
1196                     	xref	c_umul
1197                     	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -