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

📄 cmx_dio_chan.lis

📁  PSoC(可编程片上系统)是Cypress半导体公司生产的包含有8位微处理器核和数字与模拟混合的信号阵列芯片
💻 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
 002F 10              push  X
 0030 4F              mov   X,SP
 0031 73              cpl   A
 0032 3801            add   SP,1                             ; complement A to set up mask
 0034 5400            mov   [X + GSpin],A
 0036 52FF            mov   A,[X + GSport]
 0038 4B              swap  X,A
 0039 5E02            mov   A,reg[X+GLOBAL_SELECT_OFFSET]    ; mov GS pin into A
 003B 4F              mov   X,SP
 003C 79              dec   X 
 003D 2300            and   A,[X + GSpin]                    ; and with mask
 003F 08              push  A
 0040 52FF            mov   A,[X + GSport]
 0042 4B              swap  A,X
 0043 18              pop   A
 0044 6102            mov   reg[X+GLOBAL_SELECT_OFFSET],A    ; write back to GS pin
 0046 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 )
 0048 703F            and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
 004A 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
                
 004C 7F            ret
 004D             
 004D           ;-----------------------------------------------------------------------------
 004D           ;  FUNCTION NAME: DiscreteDriveMode
 004D           ;
 004D           ;  DESCRIPTION:
 004D           ;    Sets the drive mode for the pin
 004D           ;
 004D           ;-----------------------------------------------------------------------------
 004D           ;
 004D           ;  ARGUMENTS:  ( FASTCALL16 format)
 004D           ;    [SP-3] => pin (ie  0 => 0x01, 1 => 0x02, 2 => 0x04, etc)
 004D           ;    [SP-4] => Actual port address
 004D           ;    [SP-5] => drive mode
 004D           ; 
 004D           ;
 004D           ;  RETURNS:
 004D           ;
 004D           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 004D           ;
 004D           ;  THEORY of OPERATION or PROCEDURE: 
 004D           ;
 004D           ;------------------------------------------------------------------------------
 004D           ; Stack offset constants
 FFFFFFFD               DMpin:          equ -3
 FFFFFFFC               DMport:         equ -4                   
 FFFFFFFB               DriveMode:      equ -5
 004D               
 004D           
 004D           _DiscreteDriveMode:
 004D            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
                
 004D 7110          or    F, FLAG_XIO_MASK
 004F 4F            mov   X,SP                                                  
 0050 52FB          mov   A,[X + DriveMode]                    ;move drivemode to A
 0052 2101          and   A,0x01
 0054 B01E          jnz   SetOne                               ; jmp if bit 0 set to 1
 0056 52FD          mov   A,[X + DMpin]                        ; load pin to A
 0058 73            cpl   A                                    ; set up as mask
 0059 54FD          mov   [X + DMpin],A                        ; move back
 005B 52FC          mov   A,[X + DMport]                       ; load port
 005D 4B            swap  X,A                                  ; X now points to port, A contains SP
 005E 08            push  A                                    ; save on stack
 005F 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 0061 20            pop   X                                    ; restore SP
 0062 23FD          and   A,[X + DMpin]                        ; set bit to zero
 0064 08            push  A                                    ; push result on stack
 0065 52FC          mov   A,[X + DMport]                       ; move port to A
 0067 4B            swap  X,A                                  ; X now points to port
 0068 18            pop   A                                    ; restore from stack     
 0069 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 006B 4F            mov   X,SP                                 ; restore SP
 006C 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 006E 73            cpl   A                            
 006F 54FD          mov   [X + DMpin],A                 
 0071 8012          jmp   Done
 0073           
 0073           SetOne:
 0073 52FC          mov   A,[ X + DMport]                      ; load port to A
 0075 4B            swap  X, A                                 ; X now points to port, A contains SP
 0076 08            push  A                                    ; save the SP    
 0077 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 0079 20            pop   X                                    ; restore SP                         
 007A 2BFD          or    A,[X + DMpin]                        ; set to 1
 007C 08            push  A                                    ; save on stack
 007D 52FC          mov   A,[X + DMport]                       ; load port to A                             
 007F 4B            swap  X,A                                  ; X now points to port
 0080 18            pop   A                                    ; restore from stack
 0081 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 0083 4F            mov   X,SP                                 ; restore SP
 0084           
 0084           Done:
 0084                                                          ; Set PRTxDM1 bit
 0084 52FB          mov   A,[X + DriveMode]                    ; load drive mode to A
 0086 2102          and   A, 0x02
 0088 67            asr   A
 0089 B01E          jnz   SetOne1                              ;jmp if bit 2 set to 1                             
 008B 52FD          mov   A,[X + DMpin]                        ; load pin to A
 008D 73            cpl   A                                    ; set up as mask
 008E 54FD          mov   [X + DMpin], A                       ; move back
 0090 52FC          mov   A,[X + DMport]                       ; load port
 0092 4B            swap  X,A                                  ; X now points to port, A contains SP
 0093 08            push  A                                    ; save on stack
 0094 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]       ; load contents of PRTxDM1 into A
 0096 20            pop   X                                    ; restore SP
 0097 23FD          and   A,[X + DMpin]                        ; set bit to zero
 0099 08            push  A                                    ; push result on stack
 009A 52FC          mov   A,[X + DMport]                       ; move port to A                             
 009C 4B            swap  X,A                                  ; X now points to port
 009D 18            pop   A                                    ; restore from stack     
 009E 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A       ; Set PRTxDM1 bit to zero
 00A0 4F            mov   X,SP                                 ; restore SP
 00A1 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 00A3 73            cpl   A                              
 00A4 54FD          mov   [X + DMpin],A                   
 00A6 8012          jmp   Done1
 00A8           
 00A8           SetOne1:
 00A8 52FC          mov   A,[X + DMport]                        ; load port to A 
 00AA 4B            swap  X,A                                   ; X now points to port, A contains SP
 00AB 08            push  A                                     ; save the SP   
 00AC 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]        ; load contents of PRTxDM1 into A
 00AE 20            pop   X                                     ; restore SP
 00AF 2BFD          or    A,[X + DMpin]                         ; set to 1                         
 00B1 08            push  A                                     ; save on stack                             
 00B2 52FC          mov   A,[X + DMport]                        ; load port to A                                               
 00B4 4B            swap  X,A                                   ; X now points to port                            
 00B5 18            pop   A                                     ; restore from stack
 00B6 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A        ; move to PRTxDM1
 00B8 4F            mov   X,SP                                  ; restore SP
 00B9           
 00B9           Done1:
 00B9 70EF          and   F, ~FLAG_XIO_MASK
 00BB 52FB          mov  

⌨️ 快捷键说明

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