📄 cmx_csdproximity.lis
字号:
0000 cpu LMM
.module cmx_csdproximity.c
.area text(rom, con, rel)
0000 .dbfile ./cmx_csdproximity.c
0000 .dbfunc e CMX_CSDPROXIMITY_Instantiate _CMX_CSDPROXIMITY_Instantiate fV
0000 ; bInstanceID -> X+1
0000 ; bBaseInstanceID -> X+0
0000 ; pPBlock -> X-5
0000 _CMX_CSDPROXIMITY_Instantiate::
0000 .dbline -1
0000 10 push X
0001 4F mov X,SP
0002 3802 add SP,2
0004 .dbline 41
0004 ; //*****************************************************************************
0004 ; //*****************************************************************************
0004 ; // FILENAME: CMX_CSDPROXIMITY.c
0004 ; // Version: 1.0.0.4, Updated on 2007/06/20 at 17:14:09
0004 ; // Application: PSoC Express 2.0
0004 ; //
0004 ; // DESCRIPTION: This Driver senses a capacitive proximity and provides
0004 ; // means for outputting "tuning" values
0004 ; //
0004 ; //-----------------------------------------------------------------------------
0004 ; // Copyright (c) Cypress MicroSystems 2007. All Rights Reserved.
0004 ; //*****************************************************************************
0004 ; //*****************************************************************************
0004 ; #include "m8c.h"
0004 ; #include "CMX_CSDPROXIMITY.h"
0004 ; #include "cmx.h"
0004 ; // channel type header file
0004 ; #include "CMX_CSD_CHAN.h"
0004 ;
0004 ; int iCSDPROXIMITYPrev[CMX_CSDPROXIMITY_COUNT];
0004 ;
0004 ; //-----------------------------------------------------------------------------
0004 ; // FUNCTION NAME: CSDPROXIMITY_Instantiate(const CMX_CSDPROXIMITY_ParameterBlock * pPBlock)
0004 ; //
0004 ; // DESCRIPTION:
0004 ; // CSDPROXIMITY Initialization.
0004 ; //
0004 ; //-----------------------------------------------------------------------------
0004 ; //
0004 ; // ARGUMENTS: parameter block
0004 ; //
0004 ; // RETURNS:
0004 ; //
0004 ; // SIDE EFFECTS:
0004 ; //
0004 ; // THEORY of OPERATION or PROCEDURE: Sets the initial status of the button.
0004 ; // Initializes UM properties
0004 ; //
0004 ; ////////////////////////////////////////////////////////////////////////////////
0004 ; void CMX_CSDPROXIMITY_Instantiate(const CMX_CSDPROXIMITY_ParameterBlock * pPBlock)
0004 ; {
0004 .dbline 45
0004 ; BYTE bInstanceID;
0004 ; BYTE bBaseInstanceID;
0004 ;
0004 ; bInstanceID = pPBlock->ID;
0004 62D000 mov REG[0xd0],>__r0
0007 52FC mov A,[X-4]
0009 0104 add A,4
000B 5300 mov [__r1],A
000D 52FB mov A,[X-5]
000F 0900 adc A,0
0011 10 push X
0012 5800 mov X,[__r1]
0014 28 romx
0015 20 pop X
0016 5401 mov [X+1],A
0018 .dbline 46
0018 ; bBaseInstanceID = pPBlock->CSDButtBaseBLK->bInstanceID;
0018 52FC mov A,[X-4]
001A 0102 add A,2
001C 5300 mov [__r1],A
001E 52FB mov A,[X-5]
0020 0900 adc A,0
0022 10 push X
0023 08 push A
0024 5800 mov X,[__r1]
0026 28 romx
0027 5300 mov [__r0],A
0029 18 pop A
002A 75 inc X
002B 0900 adc A,0
002D 28 romx
002E 5300 mov [__r1],A
0030 20 pop X
0031 5100 mov A,[__r0]
0033 10 push X
0034 5800 mov X,[__r1]
0036 28 romx
0037 20 pop X
0038 5400 mov [X+0],A
003A .dbline 48
003A ; // We do not use this parameter
003A ; CSD_baBtnFThreshold[bBaseInstanceID] = 10;
003A 5200 mov A,[X+0]
003C 5300 mov [__r1],A
003E 550000 mov [__r0],0
0041 060000 add [__r1],<_CSD_baBtnFThreshold
0044 0E0000 adc [__r0],>_CSD_baBtnFThreshold
0047 5100 mov A,[__r0]
0049 60D5 mov REG[0xd5],A
004B 500A mov A,10
004D 3F00 mvi [__r1],A
004F .dbline 49
004F ; iCSDPROXIMITYPrev[bInstanceID] = 0;
004F 5201 mov A,[X+1]
0051 5300 mov [__r1],A
0053 550000 mov [__r0],0
0056 6500 asl [__r1]
0058 6B00 rlc [__r0]
005A 060000 add [__r1],<_iCSDPROXIMITYPrev
005D 0E0000 adc [__r0],>_iCSDPROXIMITYPrev
0060 5100 mov A,[__r0]
0062 60D5 mov REG[0xd5],A
0064 5000 mov A,0
0066 3F00 mvi [__r1],A
0068 3F00 mvi [__r1],A
006A .dbline 50
006A ; CSD_SetScanMode(pPBlock->pCSDProximityThresholds->ScanSpeed, pPBlock->pCSDProximityThresholds->Resolution); // Set Scan Mode
006A 52FC mov A,[X-4]
006C 5300 mov [__r1],A
006E 52FB mov A,[X-5]
0070 10 push X
0071 08 push A
0072 5800 mov X,[__r1]
0074 28 romx
0075 5300 mov [__r0],A
0077 18 pop A
0078 75 inc X
0079 0900 adc A,0
007B 28 romx
007C 5300 mov [__r1],A
007E 20 pop X
007F 0105 add A,5
0081 5300 mov [__r3],A
0083 5100 mov A,[__r0]
0085 0900 adc A,0
0087 10 push X
0088 5800 mov X,[__r3]
008A 28 romx
008B 20 pop X
008C 10 push X
008D 08 push A
008E 060004 add [__r1],4
0091 0E0000 adc [__r0],0
0094 5100 mov A,[__r0]
0096 10 push X
0097 5800 mov X,[__r1]
0099 28 romx
009A 20 pop X
009B 20 pop X
009C 7C0000 xcall _CSD_SetScanMode
009F 20 pop X
00A0 .dbline 51
00A0 ; CSD_SetRefValue(pPBlock->pCSDProximityThresholds->RefValue); // Set Ref Value
00A0 62D000 mov REG[0xd0],>__r0
00A3 52FC mov A,[X-4]
00A5 5300 mov [__r1],A
00A7 52FB mov A,[X-5]
00A9 10 push X
00AA 08 push A
00AB 5800 mov X,[__r1]
00AD 28 romx
00AE 5300 mov [__r0],A
00B0 18 pop A
00B1 75 inc X
00B2 0900 adc A,0
00B4 28 romx
00B5 5300 mov [__r1],A
00B7 20 pop X
00B8 060003 add [__r1],3
00BB 0E0000 adc [__r0],0
00BE 5100 mov A,[__r0]
00C0 10 push X
00C1 5800 mov X,[__r1]
00C3 28 romx
00C4 20 pop X
00C5 10 push X
00C6 7C0000 xcall _CSD_SetRefValue
00C9 20 pop X
00CA .dbline 52
00CA ; CSD_InitializeSensorBaseline(bBaseInstanceID); // Initialize baseline for the sensor
00CA 10 push X
00CB 5200 mov A,[X+0]
00CD 7C0000 xcall _CSD_InitializeSensorBaseline
00D0 20 pop X
00D1 .dbline -2
00D1 .dbline 53
00D1 ; }
00D1 L4:
00D1 38FE add SP,-2
00D3 20 pop X
00D4 .dbline 0 ; func end
00D4 7F ret
00D5 .dbsym l bInstanceID 1 c
00D5 .dbsym l bBaseInstanceID 0 c
00D5 .dbsym l pPBlock -5 pX
00D5 .dbend
00D5 .dbfunc e CMX_CSDPROXIMITY_GetValue _CMX_CSDPROXIMITY_GetValue fI
00D5 ; bRefValue -> X+9
00D5 ; bResolution -> X+8
00D5 ; bScanSpeed -> X+7
00D5 ; bInstanceID -> X+6
00D5 ; iDetectionThreshold -> X+4
00D5 ; bHysteresis -> X+3
00D5 ; bBaseInstanceID -> X+2
00D5 ; iRetValue -> X+0
00D5 ; pPBlock -> X-5
00D5 _CMX_CSDPROXIMITY_GetValue::
00D5 .dbline -1
00D5 10 push X
00D6 4F mov X,SP
00D7 380A add SP,10
00D9 .dbline 74
00D9 ;
00D9 ; //-----------------------------------------------------------------------------
00D9 ; // FUNCTION NAME: CSDPROXIMITY_GetValue(const CMX_CSDPROXIMITY_ParameterBlock * pPBlock)
00D9 ; //
00D9 ; // DESCRIPTION:
00D9 ; // Get current button status.
00D9 ; //
00D9 ; //-----------------------------------------------------------------------------
00D9 ; //
00D9 ; // ARGUMENTS: parameter block
00D9 ; //
00D9 ; // RETURNS: BYTE
00D9 ; //
00D9 ; // THEORY of OPERATION or PROCEDURE: Sets the appropriate Scan Mode and
00D9 ; // Ref Value and initiates a single sensor scan. Then updates the baseline
00D9 ; // and determines the current button status. Status is set to 0 than
00D9 ; // Difference value lower than DetectionThreshold minus Hysteresis property value and set to
00D9 ; // Difference value value otherwise.
00D9 ; ///////////////////////////////////////////////////////////////////////////////
00D9 ; int CMX_CSDPROXIMITY_GetValue(const CMX_CSDPROXIMITY_ParameterBlock * pPBlock)
00D9 ; {
00D9 .dbline 75
00D9 ; BYTE bScanSpeed = pPBlock->pCSDProximityThresholds->ScanSpeed;
00D9 62D000 mov REG[0xd0],>__r0
00DC 52FC mov A,[X-4]
00DE 5300 mov [__r1],A
00E0 52FB mov A,[X-5]
00E2 10 push X
00E3 08 push A
00E4 5800 mov X,[__r1]
00E6 28 romx
00E7 5300 mov [__r0],A
00E9 18 pop A
00EA 75 inc X
00EB 0900 adc A,0
00ED 28 romx
00EE 5300 mov [__r1],A
00F0 20 pop X
00F1 060004 add [__r1],4
00F4 0E0000 adc [__r0],0
00F7 5100 mov A,[__r0]
00F9 10 push X
00FA 5800 mov X,[__r1]
00FC 28 romx
00FD 20 pop X
00FE 5407 mov [X+7],A
0100 .dbline 76
0100 ; BYTE bInstanceID = pPBlock->ID;
0100 52FC mov A,[X-4]
0102 0104 add A,4
0104 5300 mov [__r1],A
0106 52FB mov A,[X-5]
0108 0900 adc A,0
010A 10 push X
010B 5800 mov X,[__r1]
010D 28 romx
010E 20 pop X
010F 5406 mov [X+6],A
0111 .dbline 77
0111 ; BYTE bBaseInstanceID = pPBlock->CSDButtBaseBLK->bInstanceID;
0111 52FC mov A,[X-4]
0113 0102 add A,2
0115 5300 mov [__r1],A
0117 52FB mov A,[X-5]
0119 0900 adc A,0
011B 10 push X
011C 08 push A
011D 5800 mov X,[__r1]
011F 28 romx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -