📄 cmx_csdproximity.lis
字号:
0120 5300 mov [__r0],A
0122 18 pop A
0123 75 inc X
0124 0900 adc A,0
0126 28 romx
0127 5300 mov [__r1],A
0129 20 pop X
012A 5100 mov A,[__r0]
012C 10 push X
012D 5800 mov X,[__r1]
012F 28 romx
0130 20 pop X
0131 5402 mov [X+2],A
0133 .dbline 78
0133 ; BYTE bResolution = pPBlock->pCSDProximityThresholds->Resolution;
0133 52FC mov A,[X-4]
0135 5300 mov [__r1],A
0137 52FB mov A,[X-5]
0139 10 push X
013A 08 push A
013B 5800 mov X,[__r1]
013D 28 romx
013E 5300 mov [__r0],A
0140 18 pop A
0141 75 inc X
0142 0900 adc A,0
0144 28 romx
0145 5300 mov [__r1],A
0147 20 pop X
0148 060005 add [__r1],5
014B 0E0000 adc [__r0],0
014E 5100 mov A,[__r0]
0150 10 push X
0151 5800 mov X,[__r1]
0153 28 romx
0154 20 pop X
0155 5408 mov [X+8],A
0157 .dbline 79
0157 ; BYTE bRefValue = pPBlock->pCSDProximityThresholds->RefValue;
0157 52FC mov A,[X-4]
0159 5300 mov [__r1],A
015B 52FB mov A,[X-5]
015D 10 push X
015E 08 push A
015F 5800 mov X,[__r1]
0161 28 romx
0162 5300 mov [__r0],A
0164 18 pop A
0165 75 inc X
0166 0900 adc A,0
0168 28 romx
0169 5300 mov [__r1],A
016B 20 pop X
016C 060003 add [__r1],3
016F 0E0000 adc [__r0],0
0172 5100 mov A,[__r0]
0174 10 push X
0175 5800 mov X,[__r1]
0177 28 romx
0178 20 pop X
0179 5409 mov [X+9],A
017B .dbline 81
017B ;
017B ; BYTE bHysteresis = pPBlock->pCSDProximityThresholds->Hysteresis;
017B 52FC mov A,[X-4]
017D 5300 mov [__r1],A
017F 52FB mov A,[X-5]
0181 10 push X
0182 08 push A
0183 5800 mov X,[__r1]
0185 28 romx
0186 5300 mov [__r0],A
0188 18 pop A
0189 75 inc X
018A 0900 adc A,0
018C 28 romx
018D 5300 mov [__r1],A
018F 20 pop X
0190 060002 add [__r1],2
0193 0E0000 adc [__r0],0
0196 5100 mov A,[__r0]
0198 10 push X
0199 5800 mov X,[__r1]
019B 28 romx
019C 20 pop X
019D 5403 mov [X+3],A
019F .dbline 84
019F ; int iRetValue,iDetectionThreshold;
019F ;
019F ; CSD_SetScanMode(bScanSpeed, bResolution); // Set Scan Mode
019F 10 push X
01A0 5208 mov A,[X+8]
01A2 08 push A
01A3 5207 mov A,[X+7]
01A5 20 pop X
01A6 7C0000 xcall _CSD_SetScanMode
01A9 20 pop X
01AA .dbline 85
01AA ; CSD_SetRefValue(bRefValue); // Set Ref Value
01AA 10 push X
01AB 5209 mov A,[X+9]
01AD 7C0000 xcall _CSD_SetRefValue
01B0 20 pop X
01B1 .dbline 86
01B1 ; CSD_ScanSensor(bBaseInstanceID); // Scan one sensor[bBaseInstanceID]
01B1 10 push X
01B2 5202 mov A,[X+2]
01B4 7C0000 xcall _CSD_ScanSensor
01B7 20 pop X
01B8 .dbline 87
01B8 ; CSD_UpdateSensorBaseline(bBaseInstanceID); // Update baseline for the sensor
01B8 10 push X
01B9 5202 mov A,[X+2]
01BB 7C0000 xcall _CSD_UpdateSensorBaseline
01BE 20 pop X
01BF .dbline 89
01BF ;
01BF ; iDetectionThreshold = pPBlock->pCSDProximityThresholds->DetectionThreshold;
01BF 62D000 mov REG[0xd0],>__r0
01C2 52FC mov A,[X-4]
01C4 5300 mov [__r1],A
01C6 52FB mov A,[X-5]
01C8 10 push X
01C9 08 push A
01CA 5800 mov X,[__r1]
01CC 28 romx
01CD 5300 mov [__r0],A
01CF 18 pop A
01D0 75 inc X
01D1 0900 adc A,0
01D3 28 romx
01D4 5300 mov [__r1],A
01D6 20 pop X
01D7 5100 mov A,[__r0]
01D9 10 push X
01DA 08 push A
01DB 5800 mov X,[__r1]
01DD 28 romx
01DE 5300 mov [__r0],A
01E0 18 pop A
01E1 75 inc X
01E2 0900 adc A,0
01E4 28 romx
01E5 20 pop X
01E6 5405 mov [X+5],A
01E8 5100 mov A,[__r0]
01EA 5404 mov [X+4],A
01EC .dbline 91
01EC ;
01EC ; iRetValue = CMX_CSDPROXIMITY_GetDifference(pPBlock);
01EC 52FB mov A,[X-5]
01EE 08 push A
01EF 52FC mov A,[X-4]
01F1 08 push A
01F2 91A6 xcall _CMX_CSDPROXIMITY_GetDifference
01F4 38FE add SP,-2
01F6 62D000 mov REG[0xd0],>__r0
01F9 5100 mov A,[__r1]
01FB 5401 mov [X+1],A
01FD 5100 mov A,[__r0]
01FF 5400 mov [X+0],A
0201 .dbline 93
0201 ; //if difference greater distance threshold than simply return defference
0201 ; if (iRetValue >= (iDetectionThreshold + bHysteresis))
0201 5203 mov A,[X+3]
0203 5300 mov [__r1],A
0205 550000 mov [__r0],0
0208 5205 mov A,[X+5]
020A 0200 add A,[__r1]
020C 5300 mov [__r1],A
020E 5204 mov A,[X+4]
0210 0A00 adc A,[__r0]
0212 5300 mov [__r0],A
0214 5201 mov A,[X+1]
0216 1200 sub A,[__r1]
0218 5100 mov A,[__r0]
021A 3180 xor A,-128
021C 5300 mov [__rX],A
021E 5200 mov A,[X+0]
0220 3180 xor A,-128
0222 1A00 sbb A,[__rX]
0224 C023 jc L6
0226 X0:
0226 .dbline 94
0226 ; {
0226 .dbline 95
0226 ; iCSDPROXIMITYPrev[bInstanceID] = iRetValue;
0226 62D000 mov REG[0xd0],>__r0
0229 5206 mov A,[X+6]
022B 5300 mov [__r1],A
022D 550000 mov [__r0],0
0230 6500 asl [__r1]
0232 6B00 rlc [__r0]
0234 060000 add [__r1],<_iCSDPROXIMITYPrev
0237 0E0000 adc [__r0],>_iCSDPROXIMITYPrev
023A 5100 mov A,[__r0]
023C 60D5 mov REG[0xd5],A
023E 5200 mov A,[X+0]
0240 3F00 mvi [__r1],A
0242 5201 mov A,[X+1]
0244 3F00 mvi [__r1],A
0246 .dbline 96
0246 ; }
0246 80C0 xjmp L7
0248 L6:
0248 .dbline 98
0248 ; // else return zero
0248 ; else if (iRetValue < (iDetectionThreshold - bHysteresis ))
0248 62D000 mov REG[0xd0],>__r0
024B 5203 mov A,[X+3]
024D 5300 mov [__r1],A
024F 550000 mov [__r0],0
0252 5205 mov A,[X+5]
0254 1200 sub A,[__r1]
0256 5300 mov [__r1],A
0258 5204 mov A,[X+4]
025A 1A00 sbb A,[__r0]
025C 5300 mov [__r0],A
025E 5201 mov A,[X+1]
0260 1200 sub A,[__r1]
0262 5100 mov A,[__r0]
0264 3180 xor A,-128
0266 5300 mov [__rX],A
0268 5200 mov A,[X+0]
026A 3180 xor A,-128
026C 1A00 sbb A,[__rX]
026E D029 jnc L8
0270 X1:
0270 .dbline 99
0270 ; {
0270 .dbline 100
0270 ; iRetValue = 0;
0270 560100 mov [X+1],0
0273 560000 mov [X+0],0
0276 .dbline 101
0276 ; iCSDPROXIMITYPrev[bInstanceID] = iRetValue;
0276 62D000 mov REG[0xd0],>__r0
0279 5206 mov A,[X+6]
027B 5300 mov [__r1],A
027D 550000 mov [__r0],0
0280 6500 asl [__r1]
0282 6B00 rlc [__r0]
0284 060000 add [__r1],<_iCSDPROXIMITYPrev
0287 0E0000 adc [__r0],>_iCSDPROXIMITYPrev
028A 5100 mov A,[__r0]
028C 60D5 mov REG[0xd5],A
028E 5200 mov A,[X+0]
0290 3F00 mvi [__r1],A
0292 5201 mov A,[X+1]
0294 3F00 mvi [__r1],A
0296 .dbline 102
0296 ; }
0296 8070 xjmp L9
0298 L8:
0298 .dbline 104
0298 ; // else return previous value
0298 ; else if(iCSDPROXIMITYPrev[bInstanceID] != 0)
0298 62D000 mov REG[0xd0],>__r0
029B 5206 mov A,[X+6]
029D 5300 mov [__r1],A
029F 550000 mov [__r0],0
02A2 6500 asl [__r1]
02A4 6B00 rlc [__r0]
02A6 060000 add [__r1],<_iCSDPROXIMITYPrev
02A9 0E0000 adc [__r0],>_iCSDPROXIMITYPrev
02AC 5100 mov A,[__r0]
02AE 60D4 mov REG[0xd4],A
02B0 3E00 mvi A,[__r1]
02B2 5300 mov [__r0],A
02B4 3E00 mvi A,[__r1]
02B6 3C0000 cmp [__r0],0
02B9 B005 jnz X2
02BB 3900 cmp A,0
02BD A023 jz L10
02BF X2:
02BF .dbline 105
02BF ; {
02BF .dbline 106
02BF ; iCSDPROXIMITYPrev[bInstanceID] = iRetValue;
02BF 62D000 mov REG[0xd0],>__r0
02C2 5206 mov A,[X+6]
02C4 5300 mov [__r1],A
02C6 550000 mov [__r0],0
02C9 6500 asl [__r1]
02CB 6B00 rlc [__r0]
02CD 060000 add [__r1],<_iCSDPROXIMITYPrev
02D0 0E0000 adc [__r0],>_iCSDPROXIMITYPrev
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -