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

📄 spim.lis

📁 Cypress cy7c63318 鼠标开发板的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 0009 7F           RET
 000A           .ENDSECTION
 000A           .SECTION
 000A           ;-----------------------------------------------------------------------------
 000A           ;  FUNCTION NAME: SPIM_SetMOSI (_SetMISO)
 000A           ;
 000A           ;  DESCRIPTION:
 000A           ;     Uses the SPI configuration setting 'SWAP' to set the MOSI/MISO pin
 000A           ;
 000A           ;-----------------------------------------------------------------------------
 000A           ;
 000A           ;  ARGUMENTS:  A:    0x00--SPIM_MOSI_P15 (SPIM_MISO_P16) 
 000A           ;                    0x01--SPIM_MOSI_P16 (SPIM_MISO_P15)
 000A           ;
 000A           ;  RETURNS:  none
 000A           ;
 000A           ;  SIDE EFFECTS: 
 000A           ;    The A and X registers may be modified by this or future implementations
 000A           ;    of this function.  The same is true for all RAM page pointer registers in
 000A           ;    the Large Memory Model.  When necessary, it is the calling function's
 000A           ;    responsibility to perserve their values across calls to fastcall16 
 000A           ;    functions.
 000A           ;
 000A           ;  THEORY of OPERATION or PROCEDURE:
 000A           ;     
 000A           ;-----------------------------------------------------------------------------
 000A            SPIM_SetMOSI:
 000A           _SPIM_SetMOSI:
 000A            SPIM_SetMISO:
 000A           _SPIM_SetMISO:
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_1 & 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_1 & 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_1 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 000A 2101          AND    A, 0x01                     ; Set or Clear SWAP?
 000C A005          JZ     .clear                      ; Jump to clear SWAP
 000E           ; Flow here to set SWAP
 000E 433D80        OR     REG[SPICR], SPIM_SWAP       ; Set swap
 0011 7F            RET                                ; Quick exit
 0012           ; Jump here to clear SWAP
 0012           .clear:
 0012 413D7F        AND    REG[SPICR], ~(SPIM_SWAP)    ; Clear swap
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_2 )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                   IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                      and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
                      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
                   ENDIF ; RAM_USE_CLASS_2
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_3 )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                   IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                      and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
                      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
                   ENDIF ; RAM_USE_CLASS_3
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 0015 7F            RET
 0016           .ENDSECTION
 0016           
 0016           .SECTION
 0016           ;-----------------------------------------------------------------------------
 0016           ;  FUNCTION NAME: SPIM_bIO
 0016           ;
 0016           ;  DESCRIPTION:
 0016           ;     Initiates an SPI data transfer and returns the received data byte
 0016           ;
 0016           ;-----------------------------------------------------------------------------
 0016           ;
 0016           ;  ARGUMENTS:
 0016           ;     BYTE  bTxData - data to transmit.
 0016           ;        Passed in Accumulator.
 0016           ;
 0016           ;  RETURNS:  A contains the SPIDATA register value (following SPI RX complete) 
 0016           ;
 0016           ;  SIDE EFFECTS: 
 0016           ;    The A and X registers may be modified by this or future implementations
 0016           ;    of this function.  The same is true for all RAM page pointer registers in
 0016           ;    the Large Memory Model.  When necessary, it is the calling function's
 0016           ;    responsibility to perserve their values across calls to fastcall16 
 0016           ;    functions.
 0016           ;
 0016           ;  THEORY of OPERATION or PROCEDURE:
 0016           ;     Writes data to the SPIDATA register and returns the received data.
 0016           ;-----------------------------------------------------------------------------
 0016            SPIM_bIO:
 0016           _SPIM_bIO:
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_1 & 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_1 & 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_1 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 0016 70FE          and   F, ~FLAG_GLOBAL_IE
 0018 41DAF3        AND    REG[INT_CLR0],~(INT_MSK0_SPI_TX | INT_MSK0_SPI_RX) ; Clear the TX and RX flag?
 001B 603C          MOV    REG[SPIDATA], A             ; Write the address
 001D               ; Wait for the address write to complete
 001D           .w1:
 001D 49DA08        TST    REG[INT_CLR0],INT_MSK0_SPI_RX ; Address transfer complete?
 0020 AFFC          JZ     .w1                         ; Wait some more        
 0022           ; Get the sampled data
 0022 5D3C          MOV    A, REG[SPIDATA]             ; Return the data
 0024 7101          or    F, FLAG_GLOBAL_IE
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_2 )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                   IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                      and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
                      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
                   ENDIF ; RAM_USE_CLASS_2
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_3 )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                   IF ( SYSTEM_IDXPG_TRACKS_STK_PP )
                   IF ( SYSTEM_LARGE_MEMORY_MODEL )
                      and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
                      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
                   ENDIF ; RAM_USE_CLASS_3
                
                   IF ( RAM_USE_CLASS_1 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 0026 7F            RET
 0027           .ENDSECTION
 0027           ; End of File SPIM.asm

⌨️ 快捷键说明

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