?? stm8_tsl_multichannelkey.ls
字號:
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 + -