⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmx_csdproximity.lis

📁  PSoC(可编程片上系统)是Cypress半导体公司生产的包含有8位微处理器核和数字与模拟混合的信号阵列芯片
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -