📄 adc10int.lis
字号:
0000 IF ( @ACTUAL_CLASS & RAM_USE_CLASS_1 )
0000 ; Nothing to do
0000 ENDIF ; RAM_USE_CLASS_1
0000
0000 IF ( @ACTUAL_CLASS & RAM_USE_CLASS_2 )
0000 RAM_RESTORE_NATIVE_PAGING
0000 ENDIF ; RAM_USE_CLASS_2
0000
0000 IF ( @ACTUAL_CLASS & RAM_USE_CLASS_3 )
0000 RAM_RESTORE_NATIVE_PAGING
0000 ENDIF ; RAM_USE_CLASS_3
0000
0000 IF ( @ACTUAL_CLASS & RAM_USE_CLASS_4 )
0000 ; Nothing to do
0000 ENDIF ; RAM_USE_CLASS_4
0000
0000 macro REG_PRESERVE( IOReg )
0000 mov A, reg[ @IOReg ]
0000 push A
0000 macro REG_RESTORE( IOReg )
0000 pop A
0000 mov reg[ @IOReg ], A
0000 macro ISR_PRESERVE_PAGE_POINTERS
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
0020 PWM_High: equ 20h
0002 PWM_Low: equ 2h
0000
00E0 ADC10_ADCIntReg: equ 0e0h
00DA ADC10_ADCClrIntReg: equ 0dah
0004 ADC10_ADCMask: equ 04h
00E1 ADC10_CNTIntReg: equ 0e1h
00DB ADC10_CNTClrIntReg: equ 0dbh
0001 ADC10_CNTMask: equ 01h
0000
0000 ADC10_OFF: equ 0
0001 ADC10_ON: equ 1
0000
0000 ;--------------------------------------------------
0000 ; Registers Address Constants for ADC10
0000 ;--------------------------------------------------
0000
0001 ADC10_LOWRANGE: equ 01h
0003 ADC10_FULLRANGE: equ 03h
0000
0000 ;--------------------------------------------------
0000 ; Deprecated:
0001 ADC10_LOWPOWER: equ 01h
0003 ADC10_FULLPOWER: equ 03h
0000 ;--------------------------------------------------
0000
0003 ADC10_CAL_VBG: equ 03h
0007 ADC10_CAL_AMUXBUS: equ 07h
0010 ADC10_CAL_P0_0: equ 10h
0090 ADC10_CAL_P0_1: equ 90h
0014 ADC10_CAL_P0_2: equ 14h
0091 ADC10_CAL_P0_3: equ 91h
0018 ADC10_CAL_P0_4: equ 18h
0092 ADC10_CAL_P0_5: equ 92h
001C ADC10_CAL_P0_6: equ 1Ch
0093 ADC10_CAL_P0_7: equ 93h
0000
0000
0084 ADC10_ASE_CR0: equ 84h
0076 ADC10_ACE_CR1: equ 76h
0077 ADC10_ACE_CR2: equ 77h
0069 ADC10_ADC_CR: equ 69h
00E6 ADC10_ADC_TR: equ e6h
0000
0020 ADC10_CNT_FN: equ 20h
0021 ADC10_CNT_IN: equ 21h
0022 ADC10_CNT_OUT: equ 22h
0020 ADC10_CNT_DR0: equ 20h
0021 ADC10_CNT_DR1: equ 21h
0022 ADC10_CNT_DR2: equ 22h
0023 ADC10_CNT_CR0: equ 23h
0000
0000
0000
export _ADC10_ADC_ISR
export _ADC10_CNT_ISR
export ADC10_bTempMSB
export _ADC10_iResult
export ADC10_iResult
export _ADC10_bfStatus
export ADC10_bfStatus
AREA InterruptRAM (RAM, REL)
0000 ADC10_bTempMSB: BLK 1
0001 _ADC10_iResult:
0001 ADC10_iResult: BLK 2 ;A/D value
0003 _ADC10_bfStatus:
0003 ADC10_bfStatus: BLK 1 ;Data Valid Flag
AREA UserModules (ROM, REL)
0000 _ADC10_ADC_ISR:
0000 ; ISR ,including jmptable takes 156 cpu cycles.)
0000 49DB01 tst reg[ADC10_CNTClrIntReg],ADC10_CNTMask
0003 A006 jz NoPendingInterrupt; Make sure counter has been serviced
0005 7600 inc [ADC10_bTempMSB]
0007 41DBFE and reg[ADC10_CNTClrIntReg],~(ADC10_CNTMask)
000A NoPendingInterrupt:
000A 08 push A
000B 496980 tst reg[ADC10_ADC_CR],80h
000E A009 jz .InRange
0010
0010 ; Read Counter
0010 .OverRange:
0010 5501FF mov [ADC10_iResult],ffh
0013 5502FF mov [ADC10_iResult + 1],ffh
0016 800B jmp .Done
0018
0018 .InRange:
0018 5F0100 mov [ADC10_iResult],[ADC10_bTempMSB]
001B 5D20 mov A,reg[ADC10_CNT_DR0]
001D 5D22 mov A,reg[ADC10_CNT_DR2] ;A contains next prev value
001F 73 cpl A
0020 5302 mov [ADC10_iResult+1],A
0022 .Done:
0022 4123FE and reg[ADC10_CNT_CR0], ~ADC10_ON
0025 6221FF mov reg[ADC10_CNT_DR1], 0xFF
0028 432301 or reg[ADC10_CNT_CR0], ADC10_ON
002B
002B 550301 mov [ADC10_bfStatus],01h
002E 550000 mov [ADC10_bTempMSB], 00h
0031
0031 ;@PSoC_UserCode_BODY_1@ (Do not change this line.)
0031 ;---------------------------------------------------
0031 ; Insert your custom code below this banner
0031 ;---------------------------------------------------
0031 ; NOTE: interrupt service routines must preserve
0031 ; the values of the A and X CPU registers.
0031 10 push X
0032
0032 ; If in large memory model, must make sure that the
0032 ; Index and current page registers are save and restored
0032 ; since the ADCScan function changes them.
IF (SYSTEM_LARGE_MEMORY_MODEL)
0032 5DD3 mov A, reg[ IDX_PP ]
0034 08 push A
0035 5DD0 mov A, reg[ CUR_PP ]
0037 08 push A
ENDIF
0038 5101 mov A,[ADC10_iResult] ; Save MSB in A
003A 2103 and A,03h ; Largest result is 3FFh
003C 5802 mov X,[ADC10_iResult+1] ; Save LSB in X
003E
IF ( SYSTEM_LARGE_MEMORY_MODEL )
IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
003E 703F and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
0040 71C0 or F, FLAG_PGMODE_MASK & FLAG_PGMODE_11b
ENDIF
ENDIF ; PGMODE LOCKED
IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
IF ( SYSTEM_LARGE_MEMORY_MODEL )
and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
or F, FLAG_PGMODE_MASK & FLAG_PGMODE_10b
ENDIF
ENDIF ; PGMODE FREE
ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
0042 7C0000 lcall AdcScan
IF ( SYSTEM_LARGE_MEMORY_MODEL )
0045 703F and F, ~FLAG_PGMODE_MASK ; NOTE: transition thru 00b state
0047 7100 or F, FLAG_PGMODE_MASK & ( 0x00 )
ENDIF
IF (SYSTEM_LARGE_MEMORY_MODEL)
0049 18 pop A
004A 60D0 mov reg[ CUR_PP ], A
004C 18 pop A
004D 60D3 mov reg[ IDX_PP ], A
ENDIF
004F 20 pop X
0050 ;---------------------------------------------------
0050 ; Insert your custom code above this banner
0050 ;---------------------------------------------------
0050 ;@PSoC_UserCode_END@ (Do not change this line.)
0050
0050 18 pop A
0051 7E reti
0052
0052 _ADC10_CNT_ISR:
0052 7600 inc [ADC10_bTempMSB]
0054
0054 ;@PSoC_UserCode_BODY_2@ (Do not change this line.)
0054 ;---------------------------------------------------
0054 ; Insert your custom code below this banner
0054 ;---------------------------------------------------
0054 ; NOTE: interrupt service routines must preserve
0054 ; the values of the A and X CPU registers.
0054
0054 ;---------------------------------------------------
0054 ; Insert your custom code above this banner
0054 ;---------------------------------------------------
0054 ;@PSoC_UserCode_END@ (Do not change this line.)
0054 7E reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -