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

📄 adc10int.lis

📁 sypress psoc express 驱动led发光的应用程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -