📄 stm8_tsl_services.ls
字号:
856 ; 359 TSL_MCKey_SetStructPointer();
858 015a cd042e call _TSL_MCKey_SetStructPointer
860 ; 360 if ((pMCKeyStruct->State.whole == PRE_DETECTED_STATE) || (pMCKeyStruct->State.whole == DETECTED_STATE) || (pMCKeyStruct->State.whole == POST_DETECTED_STATE))
862 015d 92c600 ld a,[_pMCKeyStruct.w]
863 0160 a114 cp a,#20
864 0162 2751 jreq L303
866 0164 92c600 ld a,[_pMCKeyStruct.w]
867 0167 a104 cp a,#4
868 0169 274a jreq L303
870 016b 92c600 ld a,[_pMCKeyStruct.w]
871 016e a124 cp a,#36
872 0170 2661 jrne L103
873 0172 2041 jra L303
874 0174 L342:
875 ; 331 if (pKeyStruct->State.whole == IDLE_STATE)
877 0174 92c600 ld a,[_pKeyStruct.w]
878 0177 a102 cp a,#2
879 0179 2630 jrne L152
880 ; 333 TSL_DeltaCalculation();
882 017b cd0011 call _TSL_DeltaCalculation
884 ; 334 if (Delta == 0) // No Fast ECS !
886 017e be00 ldw x,_Delta
887 0180 2604 jrne L352
888 ; 335 ECS_Fast_Enable = 0;
890 0182 0f07 clr (OFST-4,sp)
892 0184 2025 jra L152
893 0186 L352:
894 ; 338 if (Delta < 0)
896 0186 9c rvf
897 0187 be00 ldw x,_Delta
898 0189 2e11 jrsge L752
899 ; 340 if (ECS_Fast_Direction > 0) // No Fast ECS !
901 018b 9c rvf
902 018c 7b06 ld a,(OFST-5,sp)
903 018e a100 cp a,#0
904 0190 2d04 jrsle L162
905 ; 341 ECS_Fast_Enable = 0;
907 0192 0f07 clr (OFST-4,sp)
909 0194 2015 jra L152
910 0196 L162:
911 ; 343 ECS_Fast_Direction = -1;
913 0196 a6ff ld a,#255
914 0198 6b06 ld (OFST-5,sp),a
915 019a 200f jra L152
916 019c L752:
917 ; 347 if (ECS_Fast_Direction < 0) // No Fast ECS !
919 019c 9c rvf
920 019d 7b06 ld a,(OFST-5,sp)
921 019f a100 cp a,#0
922 01a1 2e04 jrsge L762
923 ; 348 ECS_Fast_Enable = 0;
925 01a3 0f07 clr (OFST-4,sp)
927 01a5 2004 jra L152
928 01a7 L762:
929 ; 350 ECS_Fast_Direction = + 1;
931 01a7 a601 ld a,#1
932 01a9 6b06 ld (OFST-5,sp),a
933 01ab L152:
934 ; 322 for (KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++)
936 01ab 3c00 inc _KeyIndex
939 01ad b600 ld a,_KeyIndex
940 01af a102 cp a,#2
941 01b1 258a jrult L532
942 01b3 20a3 jra L142
943 01b5 L303:
944 ; 362 ECSTempoCounter = ECSTemporization; // Restart temporization counter ...
946 01b5 450000 mov _ECSTempoCounter,_ECSTemporization
947 ; 363 break; // Out from the for loop
948 01b8 L772:
949 ; 401 if (!ECSTimeStepCounter && !ECSTempoCounter)
951 01b8 3d00 tnz _ECSTimeStepCounter
952 01ba 2703 jreq L04
953 01bc cc0358 jp L522
954 01bf L04:
956 01bf 3d00 tnz _ECSTempoCounter
957 01c1 2703 jreq L24
958 01c3 cc0358 jp L522
959 01c6 L24:
960 ; 403 ECSTimeStepCounter = ECSTimeStep;
962 01c6 450000 mov _ECSTimeStepCounter,_ECSTimeStep
963 ; 405 if (ECS_Fast_Enable)
965 01c9 0d07 tnz (OFST-4,sp)
966 01cb 275c jreq L143
967 ; 407 K_Filter = ECS_K_Fast;
969 01cd b600 ld a,_ECS_K_Fast
970 01cf 6b05 ld (OFST-6,sp),a
971 01d1 2056 jra L143
972 01d3 L103:
973 ; 365 if (pMCKeyStruct->State.whole == IDLE_STATE)
975 01d3 92c600 ld a,[_pMCKeyStruct.w]
976 01d6 a102 cp a,#2
977 01d8 2644 jrne L703
978 ; 367 for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
980 01da 3f00 clr _ChannelIndex
981 01dc L113:
982 ; 369 TSL_MCKey_DeltaCalculation(ChannelIndex);
984 01dc b600 ld a,_ChannelIndex
985 01de cd043f call _TSL_MCKey_DeltaCalculation
987 ; 370 Delta1 += Delta;
989 01e1 be00 ldw x,_Delta1
990 01e3 72bb0000 addw x,_Delta
991 01e7 bf00 ldw _Delta1,x
992 ; 367 for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
994 01e9 3c00 inc _ChannelIndex
997 01eb b600 ld a,_ChannelIndex
998 01ed a105 cp a,#5
999 01ef 25eb jrult L113
1000 ; 372 if (Delta1 == 0)
1002 01f1 be00 ldw x,_Delta1
1003 01f3 2604 jrne L713
1004 ; 374 ECS_Fast_Enable = 0;
1006 01f5 0f07 clr (OFST-4,sp)
1008 01f7 2025 jra L703
1009 01f9 L713:
1010 ; 378 if (Delta1 < 0)
1012 01f9 9c rvf
1013 01fa be00 ldw x,_Delta1
1014 01fc 2e11 jrsge L323
1015 ; 380 if (ECS_Fast_Direction > 0)
1017 01fe 9c rvf
1018 01ff 7b06 ld a,(OFST-5,sp)
1019 0201 a100 cp a,#0
1020 0203 2d04 jrsle L523
1021 ; 382 ECS_Fast_Enable = 0;
1023 0205 0f07 clr (OFST-4,sp)
1025 0207 2015 jra L703
1026 0209 L523:
1027 ; 385 ECS_Fast_Direction = -1;
1029 0209 a6ff ld a,#255
1030 020b 6b06 ld (OFST-5,sp),a
1031 020d 200f jra L703
1032 020f L323:
1033 ; 389 if (ECS_Fast_Direction < 0)
1035 020f 9c rvf
1036 0210 7b06 ld a,(OFST-5,sp)
1037 0212 a100 cp a,#0
1038 0214 2e04 jrsge L333
1039 ; 391 ECS_Fast_Enable = 0;
1041 0216 0f07 clr (OFST-4,sp)
1043 0218 2004 jra L703
1044 021a L333:
1045 ; 394 ECS_Fast_Direction = + 1;
1047 021a a601 ld a,#1
1048 021c 6b06 ld (OFST-5,sp),a
1049 021e L703:
1050 ; 357 for (KeyIndex = 0; KeyIndex < NUMBER_OF_MULTI_CHANNEL_KEYS; KeyIndex++)
1052 021e 3c00 inc _KeyIndex
1055 0220 3d00 tnz _KeyIndex
1056 0222 2603 jrne L44
1057 0224 cc015a jp L372
1058 0227 L44:
1059 0227 208f jra L772
1060 0229 L143:
1061 ; 410 K_Filter_Complement = (u8)((0xFF ^ K_Filter) + 1);
1063 0229 7b05 ld a,(OFST-6,sp)
1064 022b a8ff xor a,#255
1065 022d 4c inc a
1066 022e 6b07 ld (OFST-4,sp),a
1067 ; 412 if (K_Filter)
1069 0230 0d05 tnz (OFST-6,sp)
1070 0232 2603 jrne L64
1071 0234 cc0358 jp L522
1072 0237 L64:
1073 ; 416 for (KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++)
1075 0237 3f00 clr _KeyIndex
1076 0239 L543:
1077 ; 418 TSL_SetStructPointer();
1079 0239 cd0000 call _TSL_SetStructPointer
1081 ; 419 if (pKeyStruct->State.whole == IDLE_STATE)
1083 023c 92c600 ld a,[_pKeyStruct.w]
1084 023f a102 cp a,#2
1085 0241 2660 jrne L353
1086 ; 421 IIR_Result = ((u32)(pKeyStruct->Channel.Reference) << 8) + pKeyStruct->Channel.ECSRefRest;
1088 0243 be00 ldw x,_pKeyStruct
1089 0245 ee08 ldw x,(8,x)
1090 0247 90ae0100 ldw y,#256
1091 024b cd0000 call c_umul
1093 024e be00 ldw x,_pKeyStruct
1094 0250 e60b ld a,(11,x)
1095 0252 cd0000 call c_ladc
1097 0255 96 ldw x,sp
1098 0256 1c0008 addw x,#OFST-3
1099 0259 cd0000 call c_rtol
1101 ; 422 IIR_Result = K_Filter_Complement * IIR_Result;
1103 025c 7b07 ld a,(OFST-4,sp)
1104 025e b703 ld c_lreg+3,a
1105 0260 3f02 clr c_lreg+2
1106 0262 3f01 clr c_lreg+1
1107 0264 3f00 clr c_lreg
1108 0266 96 ldw x,sp
1109 0267 1c0008 addw x,#OFST-3
1110 026a cd0000 call c_lgmul
1112 ; 423 IIR_Result += K_Filter * ((u32)(pKeyStruct->Channel.LastMeas) << 8);
1114 026d 7b05 ld a,(OFST-6,sp)
1115 026f b703 ld c_lreg+3,a
1116 0271 3f02 clr c_lreg+2
1117 0273 3f01 clr c_lreg+1
1118 0275 3f00 clr c_lreg
1119 0277 96 ldw x,sp
1120 0278 1c0001 addw x,#OFST-10
1121 027b cd0000 call c_rtol
1123 027e be00 ldw x,_pKeyStruct
1124 0280 ee05 ldw x,(5,x)
1125 0282 90ae0100 ldw y,#256
1126 0286 cd0000 call c_umul
1128 0289 96 ldw x,sp
1129 028a 1c0001 addw x,#OFST-10
1130 028d cd0000 call c_lmul
1132 0290 96 ldw x,sp
1133 0291 1c0008 addw x,#OFST-3
1134 0294 cd0000 call c_lgadd
1136 ; 424 pKeyStruct->Channel.Reference = (u16)(IIR_Result >> 16);
1138 0297 be00 ldw x,_pKeyStruct
1139 0299 1608 ldw y,(OFST-3,sp)
1140 029b ef08 ldw (8,x),y
1141 ; 425 pKeyStruct->Channel.ECSRefRest = (u8)(IIR_Result >> 8);
1143 029d 7b0a ld a,(OFST-1,sp)
1144 029f be00 ldw x,_pKeyStruct
1145 02a1 e70b ld (11,x),a
1146 02a3 L353:
1147 ; 416 for (KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++)
1149 02a3 3c00 inc _KeyIndex
1152 02a5 b600 ld a,_KeyIndex
1153 02a7 a102 cp a,#2
1154 02a9 258e jrult L543
1155 ; 430 for (KeyIndex = 0; KeyIndex < NUMBER_OF_MULTI_CHANNEL_KEYS; KeyIndex++)
1157 02ab 3f00 clr _KeyIndex
1158 02ad L553:
1159 ; 432 TSL_MCKey_SetStructPointer();
1161 02ad cd042e call _TSL_MCKey_SetStructPointer
1163 ; 433 if (pMCKeyStruct->State.whole == IDLE_STATE)
1165 02b0 92c600 ld a,[_pMCKeyStruct.w]
1166 02b3 a102 cp a,#2
1167 02b5 2703 jreq L05
1168 02b7 cc034f jp L363
1169 02ba L05:
1170 ; 435 for (ChannelIndex = 0; ChannelIndex < CHANNEL_PER_MCKEY; ChannelIndex++)
1172 02ba 3f00 clr _ChannelIndex
1173 02bc L563:
1174 ; 437 IIR_Result = ((u32)(pMCKeyStruct->Channel[ChannelIndex].Reference) << 8) + pMCKeyStruct->Channel[ChannelIndex].ECSRefRest;
1176 02bc b600 ld a,_ChannelIndex
1177 02be 97 ld xl,a
1178 02bf a607 ld a,#7
1179 02c1 42 mul x,a
1180 02c2 72bb0000 addw x,_pMCKeyStruct
1181 02c6 ee08 ldw x,(8,x)
1182 02c8 90ae0100 ldw y,#256
1183 02cc cd0000 call c_umul
1185 02cf b600 ld a,_ChannelIndex
1186 02d1 97 ld xl,a
1187 02d2 a607 ld a,#7
1188 02d4 42 mul x,a
1189 02d5 72bb0000 addw x,_pMCKeyStruct
1190 02d9 e60b ld a,(11,x)
1191 02db cd0000 call c_ladc
1193 02de 96 ldw x,sp
1194 02df 1c0008 addw x,#OFST-3
1195 02e2 cd0000 call c_rtol
1197 ; 438 IIR_Result = K_Filter_Complement * IIR_Result;
1199 02e5 7b07 ld a,(OFST-4,sp)
1200 02e7 b703 ld c_lreg+3,a
1201 02e9 3f02 clr c_lreg+2
1202 02eb 3f01 clr c_lreg+1
1203 02ed 3f00 clr c_lreg
1204 02ef 96 ldw x,sp
1205 02f0 1c0008 addw x,#OFST-3
1206 02f3 cd0000 call c_lgmul
1208 ; 439 IIR_Result += K_Filter * ((u32)(pMCKeyStruct->Channel[ChannelIndex].LastMeas) << 8);
1210 02f6 7b05 ld a,(OFST-6,sp)
1211 02f8 b703 ld c_lreg+3,a
1212 02fa 3f02 clr c_lreg+2
1213 02fc 3f01 clr c_lreg+1
1214 02fe 3f00 clr c_lreg
1215 0300 96 ldw x,sp
1216 0301 1c0001 addw x,#OFST-10
1217 0304 cd0000 call c_rtol
1219 0307 b600 ld a,_ChannelIndex
1220 0309 97 ld xl,a
1221 030a a607 ld a,#7
1222 030c 42 mul x,a
1223 030d 72bb0000 addw x,_pMCKeyStruct
1224 0311 ee05 ldw x,(5,x)
1225 0313 90ae0100 ldw y,#256
1226 0317 cd0000 call c_umul
1228 031a 96 ldw x,sp
1229 031b 1c0001 addw x,#OFST-10
1230 031e cd0000 call c_lmul
1232 0321 96 ldw x,sp
1233 0322 1c0008 addw x,#OFST-3
1234 0325 cd0000 call c_lgadd
1236 ; 440 pMCKeyStruct->Channel[ChannelIndex].Reference = (u16)(IIR_Result >> 16);
1238 0328 b600 ld a,_ChannelIndex
1239 032a 97 ld xl,a
1240 032b a607 ld a,#7
1241 032d 42 mul x,a
1242 032e 72bb0000 addw x,_pMCKeyStruct
1243 0332 1608 ldw y,(OFST-3,sp)
1244 0334 ef08 ldw (8,x),y
1245 ; 441 pMCKeyStruct->Channel[ChannelIndex].ECSRefRest = (u8)(IIR_Result >> 8);
1247 0336 b600 ld a,_ChannelIndex
1248 0338 97 ld xl,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -