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

📄 cmx_csdproximity.lis

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