📄 cmx_csd_chan.lis
字号:
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 REG_PRESERVE CUR_PP
0000 REG_PRESERVE IDX_PP
0000 REG_PRESERVE MVR_PP
0000 REG_PRESERVE MVW_PP
0000 ENDIF
0000 macro ISR_RESTORE_PAGE_POINTERS
0000 IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 REG_RESTORE MVW_PP
0000 REG_RESTORE MVR_PP
0000 REG_RESTORE IDX_PP
0000 REG_RESTORE CUR_PP
0000 ENDIF
0000 CSD_WITH_PWM: equ 0h
0000 CSD_REF_VALUE: equ 0x0
0001 CSD_FEEDBACK_PIN: equ 1
0000 CSD_FEEDBACK_P1_1: equ 0
0001 CSD_FEEDBACK_P3_1: equ 1
0002 CSD_FEEDBACK_P1_5: equ 2
0000
0001 CSD_CAPACITOR_PIN: equ 1
0001 CSD_CAPACITOR_P0_1: equ 1
0002 CSD_CAPACITOR_P0_3: equ 2
0000
0000 CSD_AUTORESET: equ 0
0000
0000 ;--------------------------------------------------
0000 ; Constants for Scan Speed values
0000 ;--------------------------------------------------
0000 CSD_ULTRA_FAST_SPEED: equ 0x00
0001 CSD_FAST_SPEED: equ 0x01
0002 CSD_NORMAL_SPEED: equ 0x02
0003 CSD_SLOW_SPEED: equ 0x03
0000
0000 ;--------------------------------------------------
0000 ; Constants for Resolution values
0000 ;--------------------------------------------------
0009 CSD_MIN_RESOLUTION: equ 9
0010 CSD_MAX_RESOLUTION: equ 16
0000
0000 ;--------------------------------------------------
0000 ; Constants for CSD API's
0000 ;--------------------------------------------------
0000
0000 CSD_ButtonCount: equ 0h
0001 CSD_SliderCount: equ 1h
0007 CSD_TotalSensorCount: equ 7h
0000
0000 CSD_BUTTONS_EXIST: equ 0h
0001 CSD_SLIDERS_EXIST: equ 1h
0000
000A CSD_HYSTERESIS: equ ah
0003 CSD_Debounce: equ 3h
0032 CSD_LowBaselineReset: equ 32h
0000
0064 CSD_FINGER_THRESHOLD: equ 64h
0028 CSD_NOISE_THRESHOLD: equ 28h
0014 CSD_NEGATIVE_NOISE_THRESHOLD: equ 14h
00C8 CSD_BASELINE_UPDATE_THRESHOLD: equ c8h
0000
0000 ;--------------------------------------------------
0000 ; Registers Address Constants for CSD
0000 ;--------------------------------------------------
0000
0020 CSD_CNT_FUNC_REG: equ 20h ; CNT Function Reg
0021 CSD_CNT_IN_REG: equ 21h ; CNT Input Reg
0022 CSD_CNT_OUT_REG: equ 22h ; CNT Output Reg
0020 CSD_CNT_COUNTER_REG: equ 20h ; CNT Counter Reg
0021 CSD_CNT_PERIOD_REG: equ 21h ; CNT Period Reg
0022 CSD_CNT_COMPARE_REG: equ 22h ; CNT Compare Reg
0023 CSD_CNT_CONTROL_REG: equ 23h ; CNT Control Reg
0000
0024 CSD_PRS_FUNC_LSB_REG: equ 24h ; PRS LSB Function Reg
0025 CSD_PRS_IN_LSB_REG: equ 25h ; PRS LSB Input Reg
0026 CSD_PRS_OUT_LSB_REG: equ 26h ; PRS LSB Output Reg
0027 CSD_PRS_CONTROL_LSB_REG: equ 27h ; PRS LSB Control Reg
0024 CSD_PRS_SHIFT_LSB_REG: equ 24h ; PRS LSB Shift Reg
0025 CSD_PRS_POLY_LSB_REG: equ 25h ; PRS LSB Polynomial Reg
0026 CSD_PRS_SEED_LSB_REG: equ 26h ; PRS LSB Seed Reg
0000
0028 CSD_PRS_FUNC_MSB_REG: equ 28h ; PRS MSB Function Reg
0029 CSD_PRS_IN_MSB_REG: equ 29h ; PRS MSB Input Reg
002A CSD_PRS_OUT_MSB_REG: equ 2ah ; PRS MSB Output Reg
002B CSD_PRS_CONTROL_MSB_REG: equ 2bh ; PRS MSB Control Reg
0028 CSD_PRS_SHIFT_MSB_REG: equ 28h ; PRS MSB Shift Reg
0029 CSD_PRS_POLY_MSB_REG: equ 29h ; PRS MSB Polynimial Reg
002A CSD_PRS_SEED_MSB_REG: equ 2ah ; PRS MSB Seed Reg
0000
0076 CSD_ACE_CONTROL1_REG: equ 76h ; CMP Control Reg
0077 CSD_ACE_CONTROL2_REG: equ 77h ; CMP Control Reg
0000
0084 CSD_ASE_CONTROL_REG: equ 84h ; CMP_REF Conrol Reg
00E6 CSD_ADC_TRIM_REG: equ e6h ; ADC Trim Register
0069 CSD_ADC_CONTROL_REG: equ 69h ; ADC Control Reg
0000
0000
0000 DR_OFFSET: equ 00h
0000 DM0_OFFSET: equ 00h ; Bank 1
0001 DM1_OFFSET: equ 01h ; Bank 1
0003 DM2_OFFSET: equ 03h ; Bank 0
00D8 MUX_OFFSET: equ MUX_CR0 ; Bank 1
0000
0000 ;--------------------------------------------------
0000 ; CSD Macro 'Functions'
0000 ;--------------------------------------------------
0000
0000 macro CSD_Counter_Start_M
0000 or reg[CSD_CNT_CONTROL_REG], CSD_CNT_CONTROL_REG_START_BIT
0000 macro CSD_Counter_Stop_M
0000 and reg[CSD_CNT_CONTROL_REG], ~CSD_CNT_CONTROL_REG_START_BIT
0000 macro CSD_Counter_EnableInt_M
0000 M8C_EnableIntMask CSD_CNT_INT_REG, CSD_CNT_INT_MASK
0000 macro CSD_Counter_DisableInt_M
0000 M8C_DisableIntMask CSD_CNT_INT_REG, CSD_CNT_INT_MASK
00E0 CSD_CMP_CMPIntReg: equ 0e0h
0004 CSD_CMP_CMPIntMask: equ 04h
0000
0000 CSD_CMP_OFF: equ 0
0001 CSD_CMP_ON: equ 1
0000
0000 ;--------------------------------------------------
0000 ; Constants for CSD_Counter API's.
0000 ;--------------------------------------------------
0000
0001 CSD_CNT_CONTROL_REG_START_BIT: equ 0x01 ; Control register start bit
00E1 CSD_CNT_INT_REG: equ 0x0e1
0001 CSD_CNT_INT_MASK: equ 0x01
0000
0000 ;--------------------------------------------------
0000 ; Constants for CSD_Counter user defined values
0000 ;--------------------------------------------------
0000
00FF CSD_CNT_PERIOD: equ 0xff
0000 CSD_CNT_COMPARE_VALUE: equ 0x00
0000
0000 ; end of file CSD.inc
0000
export _CSD_UpdateGroupBaselines
export CSD_UpdateGroupBaselines
export _CSD_InitializeGroupBaselines
export CSD_InitializeGroupBaselines
export _CSD_ScanSensorGroup
export CSD_ScanSensorGroup
export _CSD_GetGroupSensorIndex
export CSD_GetGroupSensorIndex
AREA UserModules (ROM, REL)
; For using two byte variables
0001 LSB: equ 1
0000 MSB: equ 0
0000
0000 .SECTION
0000 ;-----------------------------------------------------------------------------
0000 ; FUNCTION NAME: CSD_UpdateGroupBaselines(BYTE bSnsGroup)
0000 ;
0000 ; DESCRIPTION: Updates baseline for a sensor group
0000 ;-----------------------------------------------------------------------------
0000 ; STACK USAGE: 3 BYTES
0000 ;
0000 ; ARGUMENTS:
0000 ; A => Sensor Group
0000 ; Sensor Group = 0 for the independent sensors group
0000 ; Sensor Group = 1 for the first slider group
0000 ; Sensor Group = 2 for the second slider group
0000 ;
0000 ; RETURNS:
0000 ; None
0000 ;
0000 ;
0000 ; SIDE EFFECTS:
0000 ; The A and X registers may be modified by this or future implementations
0000 ; of this function. The same is true for all RAM page pointer registers in
0000 ; the Large Memory Model. When necessary, it is the calling function's
0000 ; responsibility to perserve their values across calls to fastcall16
0000 ; functions.
0000 ;
0000
0000 CSD_UpdateGroupBaselines:
0000 _CSD_UpdateGroupBaselines:
IF ( RAM_USE_CLASS_3 & RAM_USE_CLASS_1 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_1
IF ( RAM_USE_CLASS_3 & RAM_USE_CLASS_2 )
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
or F, FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_2
IF ( RAM_USE_CLASS_3 & RAM_USE_CLASS_3 )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
0000 70BF and F, ~FLAG_PGMODE_01b
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
ENDIF
ENDIF ; RAM_USE_CLASS_3
IF ( RAM_USE_CLASS_3 & RAM_USE_CLASS_4 )
; Nothing to do
ENDIF ; RAM_USE_CLASS_4
IF ( SYSTEM_LARGE_MEMORY_MODEL )
0002 62D000 mov reg[CUR_PP], 0
ENDIF
; First get the starting location and size of this sensor group
0005 64 asl A ; multiply by six to get group offset
0006 5300 mov [CSD_bSnsMaskPtr], A ; use as temp
0008 64 asl A
0009 0400 add [CSD_bSnsMaskPtr], A
000B 5100 mov A, [CSD_bSnsMaskPtr]
000D 5C mov X, A
000E F000 index CSD_Group_Table
0010 4B swap A, X
0011 74 inc A
0012 F000 index CSD_Group_Table
0014 4B swap A, X ; A now has starting sensor number, x has size of group
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -