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

📄 cmx_dio_chan.lis

📁 sypress psoc express 驱动led发光的应用程序.
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                   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
                
                                                             ;Clears PRTxGS bit in pin position
 002E 10              push  X
 002F 4F              mov   X,SP
 0030 73              cpl   A
 0031 3801            add   SP,1                             ; complement A to set up mask
 0033 5400            mov   [X + GSpin],A
 0035 52FF            mov   A,[X + GSport]
 0037 4B              swap  X,A
 0038 5E02            mov   A,reg[X+GLOBAL_SELECT_OFFSET]    ; mov GS pin into A
 003A 4F              mov   X,SP
 003B 79              dec   X 
 003C 2300            and   A,[X + GSpin]                    ; and with mask
 003E 08              push  A
 003F 52FF            mov   A,[X + GSport]
 0041 4B              swap  A,X
 0042 18              pop   A
 0043 6102            mov   reg[X+GLOBAL_SELECT_OFFSET],A    ; write back to GS pin
 0045 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 )
 0047 703F            and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
 0049 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
                
 004B 7F            ret
 004C             
 004C           ;-----------------------------------------------------------------------------
 004C           ;  FUNCTION NAME: DiscreteDriveMode
 004C           ;
 004C           ;  DESCRIPTION:
 004C           ;    Sets the drive mode for the pin
 004C           ;
 004C           ;-----------------------------------------------------------------------------
 004C           ;
 004C           ;  ARGUMENTS:  ( FASTCALL16 format)
 004C           ;    [SP-3] => pin (ie  0 => 0x01, 1 => 0x02, 2 => 0x04, etc)
 004C           ;    [SP-4] => Actual port address
 004C           ;    [SP-5] => drive mode
 004C           ; 
 004C           ;
 004C           ;  RETURNS:
 004C           ;
 004C           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 004C           ;
 004C           ;  THEORY of OPERATION or PROCEDURE: 
 004C           ;
 004C           ;------------------------------------------------------------------------------
 004C           ; Stack offset constants
 FFFFFFFD               DMpin:          equ -3
 FFFFFFFC               DMport:         equ -4                   
 FFFFFFFB               DriveMode:      equ -5
 004C               
 004C           
 004C           _DiscreteDriveMode:
 004C            DiscreteDriveMode:
                   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
                
 004C 7110          or    F, FLAG_XIO_MASK
 004E 4F            mov   X,SP                                                  
 004F 52FB          mov   A,[X + DriveMode]                    ;move drivemode to A
 0051 2101          and   A,0x01
 0053 B01E          jnz   SetOne                               ; jmp if bit 0 set to 1
 0055 52FD          mov   A,[X + DMpin]                        ; load pin to A
 0057 73            cpl   A                                    ; set up as mask
 0058 54FD          mov   [X + DMpin],A                        ; move back
 005A 52FC          mov   A,[X + DMport]                       ; load port
 005C 4B            swap  X,A                                  ; X now points to port, A contains SP
 005D 08            push  A                                    ; save on stack
 005E 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 0060 20            pop   X                                    ; restore SP
 0061 23FD          and   A,[X + DMpin]                        ; set bit to zero
 0063 08            push  A                                    ; push result on stack
 0064 52FC          mov   A,[X + DMport]                       ; move port to A
 0066 4B            swap  X,A                                  ; X now points to port
 0067 18            pop   A                                    ; restore from stack     
 0068 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 006A 4F            mov   X,SP                                 ; restore SP
 006B 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 006D 73            cpl   A                            
 006E 54FD          mov   [X + DMpin],A                 
 0070 8012          jmp   Done
 0072           
 0072           SetOne:
 0072 52FC          mov   A,[ X + DMport]                      ; load port to A
 0074 4B            swap  X, A                                 ; X now points to port, A contains SP
 0075 08            push  A                                    ; save the SP    
 0076 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 0078 20            pop   X                                    ; restore SP                         
 0079 2BFD          or    A,[X + DMpin]                        ; set to 1
 007B 08            push  A                                    ; save on stack
 007C 52FC          mov   A,[X + DMport]                       ; load port to A                             
 007E 4B            swap  X,A                                  ; X now points to port
 007F 18            pop   A                                    ; restore from stack
 0080 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 0082 4F            mov   X,SP                                 ; restore SP
 0083           
 0083           Done:
 0083                                                          ; Set PRTxDM1 bit
 0083 52FB          mov   A,[X + DriveMode]                    ; load drive mode to A
 0085 2102          and   A, 0x02
 0087 67            asr   A
 0088 B01E          jnz   SetOne1                              ;jmp if bit 2 set to 1                             
 008A 52FD          mov   A,[X + DMpin]                        ; load pin to A
 008C 73            cpl   A                                    ; set up as mask
 008D 54FD          mov   [X + DMpin], A                       ; move back
 008F 52FC          mov   A,[X + DMport]                       ; load port
 0091 4B            swap  X,A                                  ; X now points to port, A contains SP
 0092 08            push  A                                    ; save on stack
 0093 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]       ; load contents of PRTxDM1 into A
 0095 20            pop   X                                    ; restore SP
 0096 23FD          and   A,[X + DMpin]                        ; set bit to zero
 0098 08            push  A                                    ; push result on stack
 0099 52FC          mov   A,[X + DMport]                       ; move port to A                             
 009B 4B            swap  X,A                                  ; X now points to port
 009C 18            pop   A                                    ; restore from stack     
 009D 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A       ; Set PRTxDM1 bit to zero
 009F 4F            mov   X,SP                                 ; restore SP
 00A0 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 00A2 73            cpl   A                              
 00A3 54FD          mov   [X + DMpin],A                   
 00A5 8012          jmp   Done1
 00A7           
 00A7           SetOne1:
 00A7 52FC          mov   A,[X + DMport]                        ; load port to A 
 00A9 4B            swap  X,A                                   ; X now points to port, A contains SP
 00AA 08            push  A                                     ; save the SP   
 00AB 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]        ; load contents of PRTxDM1 into A
 00AD 20            pop   X                                     ; restore SP
 00AE 2BFD          or    A,[X + DMpin]                         ; set to 1                         
 00B0 08            push  A                                     ; save on stack                             
 00B1 52FC          mov   A,[X + DMport]                        ; load port to A                                               
 00B3 4B            swap  X,A                                   ; X now points to port                            
 00B4 18            pop   A                                     ; restore from stack
 00B5 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A        ; move to PRTxDM1
 00B7 4F            mov   X,SP                                  ; restore SP
 00B8           
 00B8           Done1:
 00B8 70EF          and   F, ~FLAG_XIO_MASK
 00BA 52FB          mov   A,[X + DriveMode]          

⌨️ 快捷键说明

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