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

📄 cmx_dio_chan.lis

📁 sypress psoc express 驱动led发光的应用程序.
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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
 0000           DRIVE_MODE_ZERO_OFFSET:		equ 0x00   ; BANK 1
 0001           DRIVE_MODE_ONE_OFFSET:		equ 0x01
 0002           GLOBAL_SELECT_OFFSET:		equ 0x02
 0003           DRIVE_MODE_TWO_OFFSET:		equ 0x03
 0000           DATA_REGISTER_OFFSET:		equ 0x00   ; BANK 0 
 0000           
 0000           ;-----------------------------------------------
 0000           ;  Global Symbols
 0000           ;-----------------------------------------------
                export  _GlobalSelectConnect
                export   GlobalSelectConnect
                
                export  _GlobalSelectDisconnect
                export   GlobalSelectDisconnect
                
                export  _DiscreteDriveMode
                export   DiscreteDriveMode
                
                export  _SetPin
                export   SetPin
                
                export  _DISetPin
                export   DISetPin
                
                export  _DiscreteReadPin
                export   DiscreteReadPin
                
                export  _pinlu
                export   pinlu
                
                export  _portlu
                export   portlu
                
                export  _DIOChannelPins
                export   DIOChannelPins
                
                ;-----------------------------------------------
                ;  Function Prototypes
                ;-----------------------------------------------
                
                ;-----------------------------------------------
                ;  Constant Definitions
                ;-----------------------------------------------
                area text(ROM,REL)
 0000           .literal
 0000           _pinlu:
 0000 0102040810204080  pinlu:  db 01h, 02h, 04h, 08h, 10h, 20h, 40h, 80h
 0008           _portlu:
 0008 0004080C1014181C  portlu: db 00h, 04h, 08h, 0Ch, 10h, 14h, 18h, 1Ch
 0010           
 0010           _DIOChannelPins:
 0010            DIOChannelPins:
 0010 13            db 13h
 0011           .endliteral
 0011           
 0011           ;-----------------------------------------------
 0011           ; Variable Allocation
 0011           ;-----------------------------------------------
                AREA InterruptRAM (RAM, REL, CON)
                
                 
                area    text(ROM,REL)
                
                ;-----------------------------------------------------------------------------
                ;  FUNCTION NAME: GlobalSelectConnect
                ;
                ;  DESCRIPTION:
                ;    Sets the appropriate bit of the PRTxGS register to connect the pin to the 
                ;    global bus.
                ;
                ;-----------------------------------------------------------------------------
                ;
                ;   ARGUMENTS: 
                ;     A => pin mask  (ie  0 => 0x01, 1 => 0x02, 2 => 0x04, etc)
                ;     X => Address of actual port.  
                ;    
                ;
                ;  RETURNS:
                ;
                ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
                ;
                ;  THEORY of OPERATION or PROCEDURE: Sets Global Select register for pin
                ;
                ;------------------------------------------------------------------------------
                ; Stack offset constants
 0000               GSpin:          equ  0
 FFFFFFFF               GSport:         equ -1
 0011           
 0011           _GlobalSelectConnect:
 0011            GlobalSelectConnect:
                   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
                
 0011 10            push  X                                   ; stores pin and port in temp stack                                
 0012 4F            mov   X,SP                                ; locations. X is index to locations
 0013 3801          add   SP,1                                ; complement A to set up mask
 0015 5400          mov   [X + GSpin],A
 0017 52FF          mov   A,[X + GSport]
 0019 4B            swap  X,A
 001A 5E02          mov   A,reg[X+GLOBAL_SELECT_OFFSET]       ; mov GS pin into A
 001C 4F            mov   X,SP
 001D 79            dec   X 
 001E 2B00          or    A,[X + GSpin]                       ; and with mask
 0020 08            push  A
 0021 52FF          mov   A,[X + GSport]
 0023 4B            swap  A,X
 0024 18            pop   A
 0025 6102          mov   reg[X+GLOBAL_SELECT_OFFSET],A       ; write back to GS pin
 0027 38FE          add   SP,-2
                   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
                   ENDIF
                   ENDIF ; PGMODE FREE
                   ENDIF ; SYSTEM_LARGE_MEMORY_MODEL
                   ENDIF ; RAM_USE_CLASS_2
                
                   IF ( RAM_USE_CLASS_2 & 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_2 & RAM_USE_CLASS_4 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_4
                
 002D 7F            ret
 002E           ;-----------------------------------------------------------------------------
 002E           ;  FUNCTION NAME: GlobalSelectDisconnect
 002E           ;
 002E           ;  DESCRIPTION:
 002E           ;    Clears the appropriate bit of the PRTxGS register to disconnect the pin 
 002E           ;    from the global bus.
 002E           ;
 002E           ;-----------------------------------------------------------------------------
 002E           ;
 002E           ;  ARGUMENTS: 
 002E           ;    A => pin mask  (ie  0 => 0x01, 1 => 0x02, 2 => 0x04, etc)
 002E           ;    X => Address of actual port.  
 002E           ;
 002E           ;  RETURNS:
 002E           ;
 002E           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 002E           ;
 002E           ;  THEORY of OPERATION or PROCEDURE: Clears Global Select register for pin
 002E           ;
 002E           ;------------------------------------------------------------------------------
 002E           ; Stack offset constants
 0000               GSpin:          equ  0
 FFFFFFFF               GSport:         equ -1 
 002E           _GlobalSelectDisconnect:
 002E            GlobalSelectDisconnect:
                   IF ( RAM_USE_CLASS_2 & RAM_USE_CLASS_1 )
                   ; Nothing to do
                   ENDIF ; RAM_USE_CLASS_1
                

⌨️ 快捷键说明

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