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

📄 stm8_tsl_multichannelkey.ls

📁 STM8s
💻 LS
📖 第 1 页 / 共 5 页
字号:
1035  0262 e62b          	ld	a,(43,x)
1036  0264 5f            	clrw	x
1037  0265 4d            	tnz	a
1038  0266 2a01          	jrpl	L63
1039  0268 53            	cplw	x
1040  0269               L63:
1041  0269 97            	ld	xl,a
1042  026a b300          	cpw	x,_Delta
1043  026c 2e04          	jrsge	L503
1044                     ; 1350       ConditionLeaveDetect = 0;
1046  026e 0f01          	clr	(OFST+0,sp)
1047                     ; 1351       break;
1049  0270 2008          	jra	L303
1050  0272               L503:
1051                     ; 1329   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1053  0272 3c00          	inc	_ChannelIndex
1056  0274 b600          	ld	a,_ChannelIndex
1057  0276 a105          	cp	a,#5
1058  0278 25d2          	jrult	L772
1059  027a               L303:
1060                     ; 1355   if (ConditionLeaveDetect)
1062  027a 0d01          	tnz	(OFST+0,sp)
1063  027c 270f          	jreq	L703
1064                     ; 1357     pMCKeyStruct->Channel[0].IntegratorCounter--;
1066  027e be00          	ldw	x,_pMCKeyStruct
1067  0280 6a0a          	dec	(10,x)
1068                     ; 1358     if (!pMCKeyStruct->Channel[0].IntegratorCounter)
1070  0282 be00          	ldw	x,_pMCKeyStruct
1071  0284 6d0a          	tnz	(10,x)
1072  0286 2608          	jrne	L313
1073                     ; 1360       TSL_MCKey_SetIdleState();
1075  0288 cd0000        	call	_TSL_MCKey_SetIdleState
1077  028b 2003          	jra	L313
1078  028d               L703:
1079                     ; 1366     TSL_MCKey_BackToDetectedState();
1081  028d cd0000        	call	_TSL_MCKey_BackToDetectedState
1083  0290               L313:
1084                     ; 1368 }
1087  0290 84            	pop	a
1088  0291 81            	ret
1130                     ; 1381 void TSL_MCKey_PreRecalibrationTreatment(void)
1130                     ; 1382 {
1131                     	switch	.text
1132  0292               _TSL_MCKey_PreRecalibrationTreatment:
1134  0292 88            	push	a
1135       00000001      OFST:	set	1
1138                     ; 1384   u8 ConditionLeaveCalib = 1;
1140  0293 a601          	ld	a,#1
1141  0295 6b01          	ld	(OFST+0,sp),a
1142                     ; 1387   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1144  0297 3f00          	clr	_ChannelIndex
1145  0299               L333:
1146                     ; 1389     TSL_MCKey_DeltaCalculation(ChannelIndex);
1148  0299 b600          	ld	a,_ChannelIndex
1149  029b cd0000        	call	_TSL_MCKey_DeltaCalculation
1151                     ; 1391     if ((pMCKeyStruct->Channel[ChannelIndex].LastMeasRejectNb <= MAX_REJECTED_MEASUREMENTS) &&
1151                     ; 1392         (Delta <= pMCKeyStruct->RecalibrationThreshold))
1153  029e b600          	ld	a,_ChannelIndex
1154  02a0 97            	ld	xl,a
1155  02a1 a607          	ld	a,#7
1156  02a3 42            	mul	x,a
1157  02a4 72bb0000      	addw	x,_pMCKeyStruct
1158  02a8 6d07          	tnz	(7,x)
1159  02aa 2613          	jrne	L143
1161  02ac 9c            	rvf
1162  02ad be00          	ldw	x,_pMCKeyStruct
1163  02af e62c          	ld	a,(44,x)
1164  02b1 5f            	clrw	x
1165  02b2 4d            	tnz	a
1166  02b3 2a01          	jrpl	L24
1167  02b5 53            	cplw	x
1168  02b6               L24:
1169  02b6 97            	ld	xl,a
1170  02b7 b300          	cpw	x,_Delta
1171  02b9 2f04          	jrslt	L143
1172                     ; 1397       ConditionLeaveCalib = 0;
1174  02bb 0f01          	clr	(OFST+0,sp)
1175                     ; 1398       break;
1177  02bd 2008          	jra	L733
1178  02bf               L143:
1179                     ; 1387   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1181  02bf 3c00          	inc	_ChannelIndex
1184  02c1 b600          	ld	a,_ChannelIndex
1185  02c3 a105          	cp	a,#5
1186  02c5 25d2          	jrult	L333
1187  02c7               L733:
1188                     ; 1402   if (!ConditionLeaveCalib)
1190  02c7 0d01          	tnz	(OFST+0,sp)
1191  02c9 260f          	jrne	L343
1192                     ; 1404     pMCKeyStruct->Channel[0].IntegratorCounter--;
1194  02cb be00          	ldw	x,_pMCKeyStruct
1195  02cd 6a0a          	dec	(10,x)
1196                     ; 1405     if (!pMCKeyStruct->Channel[0].IntegratorCounter)
1198  02cf be00          	ldw	x,_pMCKeyStruct
1199  02d1 6d0a          	tnz	(10,x)
1200  02d3 2608          	jrne	L743
1201                     ; 1407       TSL_MCKey_SetCalibrationState();
1203  02d5 cd0000        	call	_TSL_MCKey_SetCalibrationState
1205  02d8 2003          	jra	L743
1206  02da               L343:
1207                     ; 1412     TSL_MCKey_BackToIdleState();
1209  02da cd0000        	call	_TSL_MCKey_BackToIdleState
1211  02dd               L743:
1212                     ; 1415 }
1215  02dd 84            	pop	a
1216  02de 81            	ret
1243                     ; 1428 void TSL_MCKey_CalibrationTreatment(void)
1243                     ; 1429 {
1244                     	switch	.text
1245  02df               _TSL_MCKey_CalibrationTreatment:
1249                     ; 1431   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1251  02df 3f00          	clr	_ChannelIndex
1252  02e1               L163:
1253                     ; 1434     if (pMCKeyStruct->Channel[ChannelIndex].LastMeasRejectNb <= MAX_REJECTED_MEASUREMENTS)
1255  02e1 b600          	ld	a,_ChannelIndex
1256  02e3 97            	ld	xl,a
1257  02e4 a607          	ld	a,#7
1258  02e6 42            	mul	x,a
1259  02e7 72bb0000      	addw	x,_pMCKeyStruct
1260  02eb 6d07          	tnz	(7,x)
1261  02ed 2659          	jrne	L763
1262                     ; 1436       pMCKeyStruct->Channel[ChannelIndex].Reference += pMCKeyStruct->Channel[ChannelIndex].LastMeas;
1264  02ef b600          	ld	a,_ChannelIndex
1265  02f1 97            	ld	xl,a
1266  02f2 a607          	ld	a,#7
1267  02f4 42            	mul	x,a
1268  02f5 72bb0000      	addw	x,_pMCKeyStruct
1269  02f9 89            	pushw	x
1270  02fa b600          	ld	a,_ChannelIndex
1271  02fc 97            	ld	xl,a
1272  02fd a607          	ld	a,#7
1273  02ff 42            	mul	x,a
1274  0300 72bb0000      	addw	x,_pMCKeyStruct
1275  0304 ee05          	ldw	x,(5,x)
1276  0306 9085          	popw	y
1277  0308 bf00          	ldw	c_x,x
1278  030a 93            	ldw	x,y
1279  030b ee08          	ldw	x,(8,x)
1280  030d 72bb0000      	addw	x,c_x
1281  0311 90ef08        	ldw	(8,y),x
1283                     ; 1431   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1285  0314 3c00          	inc	_ChannelIndex
1288  0316 b600          	ld	a,_ChannelIndex
1289  0318 a105          	cp	a,#5
1290  031a 25c5          	jrult	L163
1291                     ; 1447   pMCKeyStruct->Counter--;
1293  031c be00          	ldw	x,_pMCKeyStruct
1294  031e 6a03          	dec	(3,x)
1295                     ; 1449   if (!pMCKeyStruct->Counter)
1297  0320 be00          	ldw	x,_pMCKeyStruct
1298  0322 6d03          	tnz	(3,x)
1299  0324 2623          	jrne	L373
1300                     ; 1451     for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1302  0326 3f00          	clr	_ChannelIndex
1303  0328               L573:
1304                     ; 1454       pMCKeyStruct->Channel[ChannelIndex].Reference = (pMCKeyStruct->Channel[ChannelIndex].Reference >> 3);
1306  0328 b600          	ld	a,_ChannelIndex
1307  032a 97            	ld	xl,a
1308  032b a607          	ld	a,#7
1309  032d 42            	mul	x,a
1310  032e 72bb0000      	addw	x,_pMCKeyStruct
1311  0332 a603          	ld	a,#3
1312  0334               L64:
1313  0334 6408          	srl	(8,x)
1314  0336 6609          	rrc	(9,x)
1315  0338 4a            	dec	a
1316  0339 26f9          	jrne	L64
1317                     ; 1451     for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1319  033b 3c00          	inc	_ChannelIndex
1322  033d b600          	ld	a,_ChannelIndex
1323  033f a105          	cp	a,#5
1324  0341 25e5          	jrult	L573
1325                     ; 1456     TSL_MCKey_SetIdleState();
1327  0343 cd0000        	call	_TSL_MCKey_SetIdleState
1329  0346 2001          	jra	L373
1330  0348               L763:
1331                     ; 1440       return;
1334  0348 81            	ret
1335  0349               L373:
1336                     ; 1459 }
1339  0349 81            	ret
1463                     ; 1472 u8 TSL_MCKey_Position(void)
1463                     ; 1473 {
1464                     	switch	.text
1465  034a               _TSL_MCKey_Position:
1467  034a 5214          	subw	sp,#20
1468       00000014      OFST:	set	20
1471                     ; 1484   u8 retval = 0x00;
1473  034c 0f0e          	clr	(OFST-6,sp)
1474                     ; 1486   Delta1 = 0;
1476  034e 5f            	clrw	x
1477  034f bf00          	ldw	_Delta1,x
1478                     ; 1487   Delta2 = 0;
1480  0351 5f            	clrw	x
1481  0352 bf00          	ldw	_Delta2,x
1482                     ; 1488   Delta3 = 0;
1484  0354 5f            	clrw	x
1485  0355 bf00          	ldw	_Delta3,x
1486                     ; 1490   Index1 = 0;
1488  0357 0f0d          	clr	(OFST-7,sp)
1489                     ; 1491   Index2 = 0;
1491  0359 0f0c          	clr	(OFST-8,sp)
1492                     ; 1496   for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1494  035b 3f00          	clr	_ChannelIndex
1495  035d               L564:
1496                     ; 1499     TSL_MCKey_DeltaCalculation(ChannelIndex);
1498  035d b600          	ld	a,_ChannelIndex
1499  035f cd0000        	call	_TSL_MCKey_DeltaCalculation
1501                     ; 1502     if (Delta < 0)
1503  0362 9c            	rvf
1504  0363 be00          	ldw	x,_Delta
1505  0365 2e03          	jrsge	L374
1506                     ; 1504       Delta = 0;
1508  0367 5f            	clrw	x
1509  0368 bf00          	ldw	_Delta,x
1510  036a               L374:
1511                     ; 1508     tmpdelta = (u32)(Delta * (u32)(pMCKeyStruct->Channel[0].Reference));
1513  036a be00          	ldw	x,_Delta
1514  036c cd0000        	call	c_itolx
1516  036f 96            	ldw	x,sp
1517  0370 1c0001        	addw	x,#OFST-19
1518  0373 cd0000        	call	c_rtol
1520  0376 be00          	ldw	x,_pMCKeyStruct
1521  0378 ee08          	ldw	x,(8,x)
1522  037a cd0000        	call	c_uitolx
1524  037d 96            	ldw	x,sp
1525  037e 1c0001        	addw	x,#OFST-19
1526  0381 cd0000        	call	c_lmul
1528  0384 96            	ldw	x,sp
1529  0385 1c000f        	addw	x,#OFST-5
1530  0388 cd0000        	call	c_rtol
1532                     ; 1509     tmpdelta = tmpdelta / pMCKeyStruct->Channel[ChannelIndex].Reference;
1534  038b b600          	ld	a,_ChannelIndex
1535  038d 97            	ld	xl,a
1536  038e a607          	ld	a,#7
1537  0390 42            	mul	x,a
1538  0391 72bb0000      	addw	x,_pMCKeyStruct
1539  0395 ee08          	ldw	x,(8,x)
1540  0397 cd0000        	call	c_uitolx
1542  039a 96            	ldw	x,sp
1543  039b 1c0001        	addw	x,#OFST-19
1544  039e cd0000        	call	c_rtol
1546  03a1 96            	ldw	x,sp
1547  03a2 1c000f        	addw	x,#OFST-5
1548  03a5 cd0000        	call	c_ltor
1550  03a8 96            	ldw	x,sp
1551  03a9 1c0001        	addw	x,#OFST-19
1552  03ac cd0000        	call	c_ludv
1554  03af 96            	ldw	x,sp
1555  03b0 1c000f        	addw	x,#OFST-5
1556  03b3 cd0000        	call	c_rtol
1558                     ; 1510     Delta = (s16)tmpdelta;
1560  03b6 1e11          	ldw	x,(OFST-3,sp)
1561  03b8 bf00          	ldw	_Delta,x
1562                     ; 1517       if (MCKEY1_DELTA_COEFF[ChannelIndex] != 0x0100)
1564  03ba b600          	ld	a,_ChannelIndex
1565  03bc 5f            	clrw	x
1566  03bd 97            	ld	xl,a
1567  03be 58            	sllw	x
1568  03bf 9093          	ldw	y,x
1569  03c1 90de0000      	ldw	y,(_MCKEY1_DELTA_COEFF,y)
1570  03c5 90a30100      	cpw	y,#256
1571  03c9 271c          	jreq	L574
1572                     ; 1519         tmpdelta = (u32)(Delta * MCKEY1_DELTA_COEFF[ChannelIndex]);
1574  03cb b600          	ld	a,_ChannelIndex
1575  03cd 5f            	clrw	x
1576  03ce 97            	ld	xl,a
1577  03cf 58            	sllw	x
1578  03d0 de0000        	ldw	x,(_MCKEY1_DELTA_COEFF,x)
1579  03d3 90be00        	ldw	y,_Delta
1580  03d6 cd0000        	call	c_imul
1582  03d9 cd0000        	call	c_uitolx

⌨️ 快捷键说明

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