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

📄 amux8.lis

📁 sypress psoc express 驱动led发光的应用程序.
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0000              IF ( SYSTEM_LARGE_MEMORY_MODEL )
 0000                 or   F, FLAG_PGMODE_01b
 0000              ENDIF ;  SYSTEM_LARGE_MEMORY_MODEL
 0000              macro RAM_X_POINTS_TO_INDEXPAGE
 0000              IF ( SYSTEM_LARGE_MEMORY_MODEL )
 0000                 and  F, ~FLAG_PGMODE_01b
 0000              ENDIF ;  SYSTEM_LARGE_MEMORY_MODEL
 0000              macro RAM_PROLOGUE( ACTUAL_CLASS )
 0000           
 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                 IF ( SYSTEM_IDXPG_TRACKS_IDX_PP )
 0000                    RAM_X_POINTS_TO_STACKPAGE         ; exit native paging mode!
 0000                 ENDIF
 0000              ENDIF ; RAM_USE_CLASS_2
 0000           
 0000              IF ( @ACTUAL_CLASS & RAM_USE_CLASS_3 )
 0000                 IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
 0000                    RAM_X_POINTS_TO_INDEXPAGE         ; exit native paging mode!
 0000                 ENDIF
 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 RAM_EPILOGUE( ACTUAL_CLASS )
 0000           
 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
                export  AMUX8_InputSelect
                export _AMUX8_InputSelect
                
                export  AMUX8_Start
                export _AMUX8_Start
                
                export  AMUX8_Stop
                export _AMUX8_Stop
                
                ;-----------------------------------------------
                ;  EQUATES
                ;-----------------------------------------------
                
 0007           MUXMASK:                     equ 07h
 0000           
                AREA UserModules (ROM, REL)
 0000           .SECTION
 0000           ;-----------------------------------------------------------------------------
 0000           ;  FUNCTION NAME: AMUX8_InputSelect
 0000           ;
 0000           ;  DESCRIPTION:
 0000           ;    Place the signal from one of eight port0 pins on the Analog Column bus.
 0000           ;
 0000           ;-----------------------------------------------------------------------------
 0000           ;
 0000           ;  ARGUMENTS:
 0000           ;    A contains the mux input control value
 0000           ;
 0000           ;      Input         AMX_IN[1:0]  AMX_IN[3:2]  ABF_CR0[7]
 0000           ;   Mux input 0          xxh          00h         0
 0000           ;   Mux input 1          00h          xxh         1
 0000           ;   Mux input 2          xxh          01h         0
 0000           ;   Mux input 3          01h          xxh         1
 0000           ;   Mux input 4          xxh          02h         0
 0000           ;   Mux input 5          02h          xxh         1
 0000           ;   Mux input 6          xxh          03h         0
 0000           ;   Mux input 7          03h          xxh         1
 0000           ;
 0000           ;  RETURNS: none
 0000           ;
 0000           ;  SIDE EFFECTS:
 0000           ;     REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0000           ;
 0000           ;-----------------------------------------------------------------------------
 0000           
 0000           
 0000            AMUX8_InputSelect:
 0000           _AMUX8_InputSelect:
                   IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_2 & 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_2 & RAM_USE_CLASS_3 )
                      IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                      and  F, ~FLAG_PGMODE_01b
                   ENDIF ;  SYSTEM_LARGE_MEMORY_MODEL
                      ENDIF
                   ENDIF ; RAM_USE_CLASS_3
                
                   IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 0000 4F            mov  X,SP                     ; Get pointer to temp stack location
 0001 2107          and  A, MUXMASK               ; Mask off only valid port0 input bits
 0003 67            asr  A                        ; Shift odd/even bit to C flag
 0004 08            push A                        ; Save mux setting
 0005 D00F          jnc  .EVEN_PORT
 0007           
                IF(AMUX8_MUX_COL)       ; ***************** Column 2 ************************
                .ODD_PORT:                         ; **** ACol Mux2
                    or    F, FLAG_XIO_MASK
                    and   reg[ABF_CR0], ~0x40      ; Odd port, clear the ACol2Mux bit to select P1,3,5,7
                    and   F, ~FLAG_XIO_MASK
                    asl   [X]                      ; Move control bits to bits 4:5
                    asl   [X]
                    asl   [X]                      
                    asl   [X]
                    mov   A, reg[AMX_IN]           ; Mask off control bits for ACol Mux2
                    and   A, ~0x30
                    ljmp   AMUX8_InputSelect_End
                
                .EVEN_PORT:                        ; **** ACol Mux3
                    or    F, FLAG_XIO_MASK
                    or    reg[ABF_CR0], 0x40       ; Even port, set the ACol1Mux bit to select P0,2,4,6
                    and   F, ~FLAG_XIO_MASK
                    asl   [X]                      ; Move control bits to bits 6:7
                    asl   [X]                                                       
                    asl   [X]
                    asl   [X]
                    asl   [X]                      ; 
                    asl   [X]
                    mov   A, reg[AMX_IN]           ; Mask off control bits for ACol Mux3
                    and   A, ~0xC0
                    ljmp   AMUX8_InputSelect_End
                
                ELSE                               ; ***************** COLUMN 1 ************************    
 0007           .ODD_PORT:                         ; **** ACol Mux0
 0007 7110          or    F, FLAG_XIO_MASK
 0009 436280        or    reg[ABF_CR0], 0x80       ; Odd port, set the ACol1Mux bit to select P1,3,5,7
 000C 70EF          and   F, ~FLAG_XIO_MASK
 000E 5D60          mov   A, reg[AMX_IN]           ; Mask off control bits for ACol Mux3
 0010 21FC          and   A, ~0x03
 0012 7D0024        ljmp   AMUX8_InputSelect_End
 0015           
 0015           .EVEN_PORT:                        ; **** Acol Mux1
 0015 7110          or    F, FLAG_XIO_MASK
 0017 41627F        and   reg[ABF_CR0], ~0x80      ; Even port, clear the ACol1Mux bit to select P0,2,4,6
 001A 70EF          and   F, ~FLAG_XIO_MASK
 001C 6600          asl   [X]                      ; Move control bits to bits 2:3
 001E 6600          asl   [X]
 0020 5D60          mov   A, reg[AMX_IN]           ; Mask off control bits for ACol Mux3
 0022 21F3          and   A, ~0x0C
                ENDIF
                
 0024           AMUX8_InputSelect_End:
 0024 2B00          or    A,[X]
 0026 6060          mov   reg[AMX_IN],A            ; Mask off control bits for ACol Mux1
 0028 18            pop   A
                   IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_2 )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                   IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
 0029 703F            and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
 002B 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -