📄 cmx_csdslider.lis
字号:
009F 5300 mov [__r0],A
00A1 18 pop A
00A2 75 inc X
00A3 0900 adc A,0
00A5 28 romx
00A6 5300 mov [__r1],A
00A8 20 pop X
00A9 0101 add A,1
00AB 5300 mov [__r3],A
00AD 5100 mov A,[__r0]
00AF 0900 adc A,0
00B1 10 push X
00B2 5800 mov X,[__r3]
00B4 28 romx
00B5 20 pop X
00B6 10 push X
00B7 08 push A
00B8 5100 mov A,[__r0]
00BA 10 push X
00BB 5800 mov X,[__r1]
00BD 28 romx
00BE 20 pop X
00BF 20 pop X
00C0 7C0000 xcall _CSD_SetScanMode
00C3 20 pop X
00C4 .dbline 67
00C4 ; CSD_SetRefValue(pPBlock->pCSDSliderSettings->RefValue); // Set Reference Value
00C4 62D000 mov REG[0xd0],>__r0
00C7 52FC mov A,[X-4]
00C9 0101 add A,1
00CB 5300 mov [__r1],A
00CD 52FB mov A,[X-5]
00CF 0900 adc A,0
00D1 10 push X
00D2 08 push A
00D3 5800 mov X,[__r1]
00D5 28 romx
00D6 5300 mov [__r0],A
00D8 18 pop A
00D9 75 inc X
00DA 0900 adc A,0
00DC 28 romx
00DD 5300 mov [__r1],A
00DF 20 pop X
00E0 060002 add [__r1],2
00E3 0E0000 adc [__r0],0
00E6 5100 mov A,[__r0]
00E8 10 push X
00E9 5800 mov X,[__r1]
00EB 28 romx
00EC 20 pop X
00ED 10 push X
00EE 7C0000 xcall _CSD_SetRefValue
00F1 20 pop X
00F2 .dbline 68
00F2 ; CSD_ScanSensorGroup(bInstanceID); // Scan Slider's Sensors
00F2 10 push X
00F3 5200 mov A,[X+0]
00F5 7C0000 xcall _CSD_ScanSensorGroup
00F8 20 pop X
00F9 .dbline 69
00F9 ; CSD_UpdateGroupBaselines(bInstanceID); // Update Slider's Baseline
00F9 10 push X
00FA 5200 mov A,[X+0]
00FC 7C0000 xcall _CSD_UpdateGroupBaselines
00FF 20 pop X
0100 .dbline 71
0100 ;
0100 ; bPos = (BYTE)CSD_wGetCentroidPos(bInstanceID); // Get the finger position
0100 10 push X
0101 5200 mov A,[X+0]
0103 7C0000 xcall _CSD_wGetCentroidPos
0106 62D000 mov REG[0xd0],>__r0
0109 20 pop X
010A 5401 mov [X+1],A
010C .dbline 72
010C ; if (bPos == 0xFF) bPos = 0;
010C 3D01FF cmp [X+1],-1
010F B004 jnz L6
0111 .dbline 72
0111 560100 mov [X+1],0
0114 L6:
0114 .dbline 74
0114 ;
0114 ; return bPos;
0114 5201 mov A,[X+1]
0116 62D000 mov REG[0xd0],>__r0
0119 .dbline -2
0119 L5:
0119 38FE add SP,-2
011B 20 pop X
011C .dbline 0 ; func end
011C 7F ret
011D .dbsym l bPos 1 c
011D .dbsym l bInstanceID 0 c
011D .dbsym l pPBlock -5 pX
011D .dbend
011D .dbfunc e CMX_CSDSLIDER_GetDifference _CMX_CSDSLIDER_GetDifference fi
011D ; bSnsGroup -> X+1
011D ; bIndex -> X+0
011D ; pPBlock -> X-5
011D _CMX_CSDSLIDER_GetDifference::
011D .dbline -1
011D 10 push X
011E 4F mov X,SP
011F 3802 add SP,2
0121 .dbline 96
0121 ; }
0121 ;
0121 ;
0121 ; //-----------------------------------------------------------------------------
0121 ; // FUNCTION NAME: CSDSLIDER_GetDifference(const CMX_CSDSLIDEBASE_ParameterBlock * pPBlock)
0121 ; //
0121 ; // DESCRIPTION:
0121 ; // Get current difference from the base driver.
0121 ; //
0121 ; //-----------------------------------------------------------------------------
0121 ; //
0121 ; // ARGUMENTS: parameter block
0121 ; //
0121 ; // RETURNS: BYTE
0121 ; //
0121 ; // THEORY of OPERATION or PROCEDURE: Scans every sensor in the slider group.
0121 ; // Then updates baseline for the current slider group and gets the finger
0121 ; // position.
0121 ; //
0121 ; ///////////////////////////////////////////////////////////////////////////////
0121 ; WORD CMX_CSDSLIDER_GetDifference(const CMX_CSDSLIDEBASE_ParameterBlock * pPBlock)
0121 ; {
0121 .dbline 99
0121 ; BYTE bIndex, bSnsGroup;
0121 ;
0121 ; bIndex = pPBlock->bIndex;
0121 62D000 mov REG[0xd0],>__r0
0124 52FC mov A,[X-4]
0126 0101 add A,1
0128 5300 mov [__r1],A
012A 52FB mov A,[X-5]
012C 0900 adc A,0
012E 10 push X
012F 5800 mov X,[__r1]
0131 28 romx
0132 20 pop X
0133 5400 mov [X+0],A
0135 .dbline 100
0135 ; bSnsGroup = pPBlock->bSnsGroup;
0135 52FC mov A,[X-4]
0137 0102 add A,2
0139 5300 mov [__r1],A
013B 52FB mov A,[X-5]
013D 0900 adc A,0
013F 10 push X
0140 5800 mov X,[__r1]
0142 28 romx
0143 20 pop X
0144 5401 mov [X+1],A
0146 .dbline 101
0146 ; bIndex += CSD_GetGroupSensorIndex(bSnsGroup);
0146 10 push X
0147 5201 mov A,[X+1]
0149 7C0000 xcall _CSD_GetGroupSensorIndex
014C 62D000 mov REG[0xd0],>__r0
014F 20 pop X
0150 0500 add [X+0],A
0152 .dbline 102
0152 ; return CSD_waSnsDiff[bIndex];
0152 5200 mov A,[X+0]
0154 5300 mov [__r1],A
0156 550000 mov [__r0],0
0159 6500 asl [__r1]
015B 6B00 rlc [__r0]
015D 060000 add [__r1],<_CSD_waSnsDiff
0160 0E0000 adc [__r0],>_CSD_waSnsDiff
0163 5100 mov A,[__r0]
0165 60D4 mov REG[0xd4],A
0167 3E00 mvi A,[__r1]
0169 5300 mov [__r0],A
016B 3E00 mvi A,[__r1]
016D 5300 mov [__r1],A
016F .dbline -2
016F L8:
016F 38FE add SP,-2
0171 20 pop X
0172 .dbline 0 ; func end
0172 7F ret
0173 .dbsym l bSnsGroup 1 c
0173 .dbsym l bIndex 0 c
0173 .dbsym l pPBlock -5 pX
0173 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -