📄 stm8_tsl_rc_services.ls
字号:
820 ; 313 break; // Out from the for loop
822 0154 203f jra L722
823 0156 L132:
824 ; 315 if ( pKeyStruct->State.whole == IDLE_STATE )
826 0156 92c600 ld a,[_pKeyStruct.w]
827 0159 a102 cp a,#2
828 015b 2630 jrne L332
829 ; 317 TSL_DeltaCalculation();
831 015d cd000c call _TSL_DeltaCalculation
833 ; 318 if ( Delta == 0 ) // No Fast ECS !
835 0160 be00 ldw x,_Delta
836 0162 2604 jrne L532
837 ; 319 ECS_Fast_Enable = 0;
839 0164 0f07 clr (OFST-4,sp)
841 0166 2025 jra L332
842 0168 L532:
843 ; 322 if ( Delta < 0 )
845 0168 9c rvf
846 0169 be00 ldw x,_Delta
847 016b 2e11 jrsge L142
848 ; 324 if ( ECS_Fast_Direction > 0 ) // No Fast ECS !
850 016d 9c rvf
851 016e 7b06 ld a,(OFST-5,sp)
852 0170 a100 cp a,#0
853 0172 2d04 jrsle L342
854 ; 325 ECS_Fast_Enable = 0;
856 0174 0f07 clr (OFST-4,sp)
858 0176 2015 jra L332
859 0178 L342:
860 ; 327 ECS_Fast_Direction = -1;
862 0178 a6ff ld a,#255
863 017a 6b06 ld (OFST-5,sp),a
864 017c 200f jra L332
865 017e L142:
866 ; 331 if ( ECS_Fast_Direction < 0 ) // No Fast ECS !
868 017e 9c rvf
869 017f 7b06 ld a,(OFST-5,sp)
870 0181 a100 cp a,#0
871 0183 2e04 jrsge L152
872 ; 332 ECS_Fast_Enable = 0;
874 0185 0f07 clr (OFST-4,sp)
876 0187 2004 jra L332
877 0189 L152:
878 ; 334 ECS_Fast_Direction = + 1;
880 0189 a601 ld a,#1
881 018b 6b06 ld (OFST-5,sp),a
882 018d L332:
883 ; 306 for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
885 018d 3c00 inc _KeyIndex
888 018f b600 ld a,_KeyIndex
889 0191 a103 cp a,#3
890 0193 25b0 jrult L322
891 0195 L722:
892 ; 385 if ( !ECSTimeStepCounter && !ECSTempoCounter )
894 0195 3d00 tnz _ECSTimeStepCounter
895 0197 2703 jreq L63
896 0199 cc0234 jp L312
897 019c L63:
899 019c 725d0000 tnz _ECSTempoCounter
900 01a0 2703 jreq L04
901 01a2 cc0234 jp L312
902 01a5 L04:
903 ; 387 ECSTimeStepCounter = ECSTimeStep;
905 01a5 5500000000 mov _ECSTimeStepCounter,_ECSTimeStep
906 ; 389 if (ECS_Fast_Enable)
908 01aa 0d07 tnz (OFST-4,sp)
909 01ac 2705 jreq L752
910 ; 391 K_Filter = ECS_K_Fast;
912 01ae c60000 ld a,_ECS_K_Fast
913 01b1 6b05 ld (OFST-6,sp),a
914 01b3 L752:
915 ; 394 K_Filter_Complement = (u8)((0xFF ^ K_Filter) + 1);
917 01b3 7b05 ld a,(OFST-6,sp)
918 01b5 a8ff xor a,#255
919 01b7 4c inc a
920 01b8 6b07 ld (OFST-4,sp),a
921 ; 396 if ( K_Filter )
923 01ba 0d05 tnz (OFST-6,sp)
924 01bc 2602 jrne L24
925 01be 2074 jp L312
926 01c0 L24:
927 ; 399 for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
929 01c0 3f00 clr _KeyIndex
930 01c2 L362:
931 ; 401 TSL_SetStructPointer();
933 01c2 cd0000 call _TSL_SetStructPointer
935 ; 402 if ( pKeyStruct->State.whole == IDLE_STATE )
937 01c5 92c600 ld a,[_pKeyStruct.w]
938 01c8 a102 cp a,#2
939 01ca 2660 jrne L172
940 ; 404 IIR_Result = ((u32)(pKeyStruct->Channel.Reference) << 8) + pKeyStruct->Channel.ECSRefRest;
942 01cc be00 ldw x,_pKeyStruct
943 01ce ee08 ldw x,(8,x)
944 01d0 90ae0100 ldw y,#256
945 01d4 cd0000 call c_umul
947 01d7 be00 ldw x,_pKeyStruct
948 01d9 e60b ld a,(11,x)
949 01db cd0000 call c_ladc
951 01de 96 ldw x,sp
952 01df 1c0008 addw x,#OFST-3
953 01e2 cd0000 call c_rtol
955 ; 405 IIR_Result = K_Filter_Complement * IIR_Result;
957 01e5 7b07 ld a,(OFST-4,sp)
958 01e7 b703 ld c_lreg+3,a
959 01e9 3f02 clr c_lreg+2
960 01eb 3f01 clr c_lreg+1
961 01ed 3f00 clr c_lreg
962 01ef 96 ldw x,sp
963 01f0 1c0008 addw x,#OFST-3
964 01f3 cd0000 call c_lgmul
966 ; 406 IIR_Result += K_Filter * ((u32)(pKeyStruct->Channel.LastMeas) << 8);
968 01f6 7b05 ld a,(OFST-6,sp)
969 01f8 b703 ld c_lreg+3,a
970 01fa 3f02 clr c_lreg+2
971 01fc 3f01 clr c_lreg+1
972 01fe 3f00 clr c_lreg
973 0200 96 ldw x,sp
974 0201 1c0001 addw x,#OFST-10
975 0204 cd0000 call c_rtol
977 0207 be00 ldw x,_pKeyStruct
978 0209 ee05 ldw x,(5,x)
979 020b 90ae0100 ldw y,#256
980 020f cd0000 call c_umul
982 0212 96 ldw x,sp
983 0213 1c0001 addw x,#OFST-10
984 0216 cd0000 call c_lmul
986 0219 96 ldw x,sp
987 021a 1c0008 addw x,#OFST-3
988 021d cd0000 call c_lgadd
990 ; 407 pKeyStruct->Channel.Reference = (u16)(IIR_Result >> 16);
992 0220 be00 ldw x,_pKeyStruct
993 0222 1608 ldw y,(OFST-3,sp)
994 0224 ef08 ldw (8,x),y
995 ; 408 pKeyStruct->Channel.ECSRefRest = (u8)(IIR_Result >> 8);
997 0226 7b0a ld a,(OFST-1,sp)
998 0228 be00 ldw x,_pKeyStruct
999 022a e70b ld (11,x),a
1000 022c L172:
1001 ; 399 for ( KeyIndex = 0; KeyIndex < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyIndex++ )
1003 022c 3c00 inc _KeyIndex
1006 022e b600 ld a,_KeyIndex
1007 0230 a103 cp a,#3
1008 0232 258e jrult L362
1009 0234 L312:
1010 ; 292 while ( Local_TickECS10ms-- )
1012 0234 b600 ld a,_Local_TickECS10ms
1013 0236 3a00 dec _Local_TickECS10ms
1014 0238 4d tnz a
1015 0239 2703 jreq L44
1016 023b cc011e jp L112
1017 023e L44:
1018 ; 431 }
1021 023e 5b0b addw sp,#11
1022 0240 81 ret
1064 ; 445 void TSL_SCKey_DES(void)
1064 ; 446 {
1065 switch .text
1066 0241 _TSL_SCKey_DES:
1068 0241 89 pushw x
1069 00000002 OFST: set 2
1072 ; 450 if ( pKeyStruct->Setting.b.LOCKED )
1074 0242 be00 ldw x,_pKeyStruct
1075 0244 e602 ld a,(2,x)
1076 0246 a580 bcp a,#128
1077 0248 262c jrne L05
1078 ; 451 return;
1080 ; 453 DESGroupMask = pKeyStruct->DESGroup;
1082 024a be00 ldw x,_pKeyStruct
1083 024c e604 ld a,(4,x)
1084 024e 6b01 ld (OFST-1,sp),a
1085 ; 455 for ( KeyToCheck = 0; KeyToCheck < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyToCheck++ )
1087 0250 0f02 clr (OFST+0,sp)
1088 0252 L513:
1089 ; 457 if ( KeyToCheck != KeyIndex )
1091 0252 7b02 ld a,(OFST+0,sp)
1092 0254 b100 cp a,_KeyIndex
1093 0256 2720 jreq L323
1094 ; 460 if ( sSCKeyInfo[KeyToCheck].DESGroup & DESGroupMask )
1096 0258 7b02 ld a,(OFST+0,sp)
1097 025a 97 ld xl,a
1098 025b a60f ld a,#15
1099 025d 42 mul x,a
1100 025e d60004 ld a,(_sSCKeyInfo+4,x)
1101 0261 1501 bcp a,(OFST-1,sp)
1102 0263 2713 jreq L323
1103 ; 462 if ( sSCKeyInfo[KeyToCheck].Setting.b.LOCKED )
1105 0265 7b02 ld a,(OFST+0,sp)
1106 0267 97 ld xl,a
1107 0268 a60f ld a,#15
1108 026a 42 mul x,a
1109 026b d60002 ld a,(_sSCKeyInfo+2,x)
1110 026e a580 bcp a,#128
1111 0270 2706 jreq L323
1112 ; 464 goto ExitToIdle;
1113 ; 487 ExitToIdle: // The DES is verified at PRE DETECT state only !
1113 ; 488 pKeyStruct->Channel.IntegratorCounter++; // Increment integrator to never allow DETECT state
1115 0272 be00 ldw x,_pKeyStruct
1116 0274 6c0a inc (10,x)
1117 ; 489 return;
1118 0276 L05:
1121 0276 85 popw x
1122 0277 81 ret
1123 0278 L323:
1124 ; 455 for ( KeyToCheck = 0; KeyToCheck < NUMBER_OF_SINGLE_CHANNEL_KEYS; KeyToCheck++ )
1126 0278 0c02 inc (OFST+0,sp)
1129 027a 7b02 ld a,(OFST+0,sp)
1130 027c a103 cp a,#3
1131 027e 25d2 jrult L513
1132 ; 484 pKeyStruct->Setting.b.LOCKED = 1;
1134 0280 be00 ldw x,_pKeyStruct
1135 0282 e602 ld a,(2,x)
1136 0284 aa80 or a,#128
1137 0286 e702 ld (2,x),a
1138 ; 485 return;
1140 0288 20ec jra L05
1168 ; 503 void TSL_SCKey_DetectionTimeout(void)
1168 ; 504 {
1169 switch .text
1170 028a _TSL_SCKey_DetectionTimeout:
1174 ; 505 if ( Local_TickFlag.b.DTO_1sec )
1176 028a b600 ld a,_Local_TickFlag
1177 028c a501 bcp a,#1
1178 028e 2713 jreq L143
1179 ; 507 if ( DetectionTimeout )
1181 0290 725d0000 tnz _DetectionTimeout
1182 0294 270d jreq L143
1183 ; 509 pKeyStruct->Counter--;
1185 0296 be00 ldw x,_pKeyStruct
1186 0298 6a03 dec (3,x)
1187 ; 510 if ( !pKeyStruct->Counter )
1189 029a be00 ldw x,_pKeyStruct
1190 029c 6d03 tnz (3,x)
1191 029e 2603 jrne L143
1192 ; 512 TSL_SCKey_SetCalibrationState( );
1194 02a0 cd0093 call _TSL_SCKey_SetCalibrationState
1196 02a3 L143:
1197 ; 516 }
1200 02a3 81 ret
1213 xdef _TSL_SCKey_DetectionTimeout
1214 xdef _TSL_SCKey_DES
1215 xdef _TSL_ECS
1216 xdef _TSL_SCKey_SetDisabledState
1217 xdef _TSL_SCKey_SetErrorState
1218 xdef _TSL_SCKey_SetPreRecalibrationState
1219 xdef _TSL_SCKey_BackToDetectedState
1220 xdef _TSL_SCKey_SetPostDetectState
1221 xdef _TSL_SCKey_SetDetectedState
1222 xdef _TSL_SCKey_SetPreDetectState
1223 xdef _TSL_SCKey_BackToIdleState
1224 xdef _TSL_SCKey_SetIdleState
1225 xdef _TSL_DeltaCalculation
1226 xdef _TSL_SetStructPointer
1227 xref _ECSTempoPrescaler
1228 xref _ECSTempoCounter
1229 xref.b _ECSTimeStepCounter
1230 xref.b _Local_TickFlag
1231 xref.b _Local_TickECS10ms
1232 xref.b _Delta
1233 xref.b _KeyIndex
1234 xdef _TSL_SCKey_SetCalibrationState
1235 xref _ECS_K_Slow
1236 xref _ECS_K_Fast
1237 xref _ECSTemporization
1238 xref _ECSTimeStep
1239 xref _RecalibrationIntegrator
1240 xref _EndDetectionIntegrator
1241 xref _DetectionIntegrator
1242 xref _DetectionTimeout
1243 xref _sSCKeyInfo
1244 xref.b _pKeyStruct
1245 xref.b _TSL_TickCount_ECS_10ms
1246 xref.b c_lreg
1247 xref.b c_x
1248 xref.b c_y
1267 xref c_lgadd
1268 xref c_lmul
1269 xref c_lgmul
1270 xref c_rtol
1271 xref c_ladc
1272 xref c_umul
1273 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -