📄 stm8_tsl_rc_iodriver.ls
字号:
706 009f e402 and a,(2,x)
707 00a1 e702 ld (2,x),a
708 ; 517 TSL_IO_SW_Burst_TestSyncShift();
710 00a3 cd0000 call _TSL_IO_SW_Burst_TestSyncShift
712 ; 518 TSL_IO_SW_Burst_Wait_Vih();
714 00a6 cd001a call _TSL_IO_SW_Burst_Wait_Vih
716 ; 519 TSL_IO_SW_Burst_Stop_Timer();
718 00a9 ada6 call _TSL_IO_SW_Burst_Stop_Timer
720 ; 521 enableInterrupts();
723 00ab 9a rim
725 ; 523 Measurement = CounterStop;
728 00ac be02 ldw x,_CounterStop
729 00ae 1f0e ldw (OFST-1,sp),x
730 ; 526 disableInterrupts();
733 00b0 9b sim
735 ; 528 sTouchIO.PORT_ADDR->ODR |= sTouchIO.DriveMask;
738 00b1 92c608 ld a,[_sTouchIO.w]
739 00b4 ba0b or a,_sTouchIO+3
740 00b6 92c708 ld [_sTouchIO.w],a
741 ; 529 sTouchIO.PORT_ADDR->DDR |= sTouchIO.DriveMask;
743 00b9 be08 ldw x,_sTouchIO
744 00bb e602 ld a,(2,x)
745 00bd ba0b or a,_sTouchIO+3
746 00bf e702 ld (2,x),a
747 ; 530 sTouchIO.PORT_ADDR->CR1 |= sTouchIO.DriveMask;
749 00c1 e603 ld a,(3,x)
750 00c3 ba0b or a,_sTouchIO+3
751 00c5 e703 ld (3,x),a
752 ; 531 ((GPIO_TypeDef *) (LOADREF_PORT_ADDR))->ODR &= (u8)(~LOADREF_BIT);
754 00c7 72195019 bres 20505,#4
755 ; 533 TSL_IO_SW_Burst_Start_Timer();
757 00cb cd004c call _TSL_IO_SW_Burst_Start_Timer
759 ; 534 sTouchIO.PORT_ADDR->CR1 &= (u8)(~sTouchIO.DriveMask);
761 00ce be08 ldw x,_sTouchIO
762 00d0 b60b ld a,_sTouchIO+3
763 00d2 43 cpl a
764 00d3 e403 and a,(3,x)
765 00d5 e703 ld (3,x),a
766 ; 535 sTouchIO.PORT_ADDR->DDR &= (u8)(~sTouchIO.DriveMask);
768 00d7 b60b ld a,_sTouchIO+3
769 00d9 43 cpl a
770 00da e402 and a,(2,x)
771 00dc e702 ld (2,x),a
772 ; 536 TSL_IO_SW_Burst_TestSyncShift();
774 00de cd0000 call _TSL_IO_SW_Burst_TestSyncShift
776 ; 537 TSL_IO_SW_Burst_Wait_Vil();
778 00e1 cd0006 call _TSL_IO_SW_Burst_Wait_Vil
780 ; 538 TSL_IO_SW_Burst_Stop_Timer();
782 00e4 cd0051 call _TSL_IO_SW_Burst_Stop_Timer
784 ; 540 enableInterrupts();
787 00e7 9a rim
789 ; 542 Measurement += CounterStop;
792 00e8 1e0e ldw x,(OFST-1,sp)
793 00ea 72bb0002 addw x,_CounterStop
794 00ee 1f0e ldw (OFST-1,sp),x
795 ; 544 CumulatedMeasurement += Measurement;
797 00f0 1e06 ldw x,(OFST-9,sp)
798 00f2 72fb0e addw x,(OFST-1,sp)
799 00f5 1f06 ldw (OFST-9,sp),x
800 ; 547 if (SamplingShifter == SAMPLING_SHIFTER_LOOP_START)
802 00f7 b601 ld a,_SamplingShifter
803 00f9 a101 cp a,#1
804 00fb 262e jrne L322
805 ; 549 tmpval = (u32)((u32)Measurement * MAX_MEAS_COEFF);
807 00fd 1e0e ldw x,(OFST-1,sp)
808 00ff 90ae011a ldw y,#282
809 0103 cd0000 call c_umul
811 0106 96 ldw x,sp
812 0107 1c000a addw x,#OFST-5
813 010a cd0000 call c_rtol
815 ; 550 MaxMeasurement = (u16)((u16)(tmpval >> 8) + NB_CYCLES_VIHVIL_LOOP);
817 010d 1e0b ldw x,(OFST-4,sp)
818 010f 1c0008 addw x,#8
819 0112 1f02 ldw (OFST-13,sp),x
820 ; 551 tmpval = (u32)((u32)Measurement * MIN_MEAS_COEFF);
822 0114 a6e6 ld a,#230
823 0116 1e0e ldw x,(OFST-1,sp)
824 0118 cd0000 call c_cmulx
826 011b 96 ldw x,sp
827 011c 1c000a addw x,#OFST-5
828 011f cd0000 call c_rtol
830 ; 552 MinMeasurement = (u16)((u16)(tmpval >> 8) - NB_CYCLES_VIHVIL_LOOP);
832 0122 1e0b ldw x,(OFST-4,sp)
833 0124 1d0008 subw x,#8
834 0127 1f04 ldw (OFST-11,sp),x
836 0129 201d jra L522
837 012b L322:
838 ; 556 if ((Measurement < MinMeasurement) || (Measurement > MaxMeasurement))
840 012b 1e0e ldw x,(OFST-1,sp)
841 012d 1304 cpw x,(OFST-11,sp)
842 012f 2504 jrult L132
844 0131 1302 cpw x,(OFST-13,sp)
845 0133 2313 jrule L522
846 0135 L132:
847 ; 558 MeasRejected++;
849 0135 0c09 inc (OFST-6,sp)
850 ; 559 RejectionCounter++;
852 0137 0c08 inc (OFST-7,sp)
853 ; 560 break; // Out from 'for SamplingShifter' loop !!!
854 0139 L112:
855 ; 567 while (MeasRejected && (RejectionCounter <= MAX_REJECTED_MEASUREMENTS));
857 0139 7b09 ld a,(OFST-6,sp)
858 013b 2718 jreq L332
860 013d 7b08 ld a,(OFST-7,sp)
861 013f a115 cp a,#21
862 0141 2403cc0072 jrult L702
863 0146 200d jra L332
864 0148 L522:
865 ; 503 SamplingShifter < (SAMPLING_SHIFTER_NB_LOOPS + SAMPLING_SHIFTER_LOOP_START);
865 ; 504 SamplingShifter++ )
867 0148 3c01 inc _SamplingShifter
868 ; 502 for ( SamplingShifter = SAMPLING_SHIFTER_LOOP_START;
868 ; 503 SamplingShifter < (SAMPLING_SHIFTER_NB_LOOPS + SAMPLING_SHIFTER_LOOP_START);
870 014a b601 ld a,_SamplingShifter
871 014c a109 cp a,#9
872 014e 2403cc007b jrult L512
873 0153 20e4 jra L112
874 0155 L332:
875 ; 569 if (MeasRejected == 0)
877 0155 7b09 ld a,(OFST-6,sp)
878 0157 2613 jrne L502
879 ; 571 FinalMeasurementValue += CumulatedMeasurement;
881 0159 1e06 ldw x,(OFST-9,sp)
882 015b cd0000 call c_uitolx
884 015e ae0004 ldw x,#_FinalMeasurementValue
885 0161 cd0000 call c_lgadd
888 ; 493 for ( AcqLoopIndex = 0; AcqLoopIndex < AcqNumber; AcqLoopIndex++ )
890 0164 0c01 inc (OFST-14,sp)
891 0166 L302:
894 0166 7b01 ld a,(OFST-14,sp)
895 0168 1110 cp a,(OFST+1,sp)
896 016a 25d7 jrult L702
897 016c L502:
898 ; 580 disableInterrupts();
901 016c 9b sim
903 ; 582 TSL_IO_Clamp(); // To avoid consumption
906 016d cd0027 call _TSL_IO_Clamp
908 ; 584 *sTouchIO.RejectedNb = RejectionCounter;
910 0170 7b08 ld a,(OFST-7,sp)
911 0172 92c70e ld [_sTouchIO+6.w],a
912 ; 586 if (RejectionCounter <= MAX_REJECTED_MEASUREMENTS)
914 0175 a115 cp a,#21
915 0177 2420 jruge L142
916 ; 588 FinalMeasurementValue = (u32)(FinalMeasurementValue >> 3); /* Division by SAMPLING_SHIFTER_NB_LOOPS */
918 0179 ae0004 ldw x,#_FinalMeasurementValue
919 017c a603 ld a,#3
920 017e cd0000 call c_lgursh
923 0181 2008 jra L542
924 0183 L342:
925 ; 591 FinalMeasurementValue = (u32)(FinalMeasurementValue >> 1);
927 0183 3404 srl _FinalMeasurementValue
928 0185 3605 rrc _FinalMeasurementValue+1
929 0187 3606 rrc _FinalMeasurementValue+2
930 0189 3607 rrc _FinalMeasurementValue+3
931 018b L542:
932 ; 589 while ( AdjustmentLevel-- )
934 018b 7b11 ld a,(OFST+2,sp)
935 018d 0a11 dec (OFST+2,sp)
936 018f 4d tnz a
937 0190 26f1 jrne L342
938 ; 593 *sTouchIO.Measurement = (u16)FinalMeasurementValue;
940 0192 be06 ldw x,_FinalMeasurementValue+2
941 0194 92cf0c ldw [_sTouchIO+4.w],x
943 0197 2008 jra L152
944 0199 L142:
945 ; 601 pKeyStruct->Setting.b.NOISE = 1; /* Warning: Application layer must reset this flag */
947 0199 be00 ldw x,_pKeyStruct
948 019b e602 ld a,(2,x)
949 019d aa40 or a,#64
950 019f e702 ld (2,x),a
951 01a1 L152:
952 ; 611 enableInterrupts();
955 01a1 9a rim
957 ; 613 }
961 01a2 5b11 addw sp,#17
962 01a4 81 ret
1169 switch .ubsct
1170 0000 _AcquisitionBitMask:
1171 0000 00 ds.b 1
1172 xdef _AcquisitionBitMask
1173 0001 _SamplingShifter:
1174 0001 00 ds.b 1
1175 xdef _SamplingShifter
1176 0002 _CounterStop:
1177 0002 0000 ds.b 2
1178 xdef _CounterStop
1179 0004 _FinalMeasurementValue:
1180 0004 00000000 ds.b 4
1181 xdef _FinalMeasurementValue
1182 xref.b _pKeyStruct
1183 xdef _TSL_IO_SW_Burst_Stop_Timer
1184 xdef _TSL_IO_SW_Burst_Start_Timer
1185 xdef _TSL_IO_SW_Burst_Wait_Vih
1186 xdef _TSL_IO_SW_Burst_Wait_Vil
1187 xdef _TSL_IO_SW_Burst_TestSyncShift
1188 xdef _TSL_IO_Acquisition
1189 xdef _TSL_IO_Clamp
1190 xdef _TSL_IO_Init
1191 xdef _Table_SCKEY_BITS
1192 0008 _sTouchIO:
1193 0008 000000000000 ds.b 9
1194 xdef _sTouchIO
1195 xref.b c_x
1196 xref.b c_y
1216 xref c_lgursh
1217 xref c_lgadd
1218 xref c_uitolx
1219 xref c_cmulx
1220 xref c_rtol
1221 xref c_umul
1222 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -