📄 stm8_tsl_rc_services.ls
字号:
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 + -