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

📄 cmx_dio_chan.lis

📁  PSoC(可编程片上系统)是Cypress半导体公司生产的包含有8位微处理器核和数字与模拟混合的信号阵列芯片
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                   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
                
                                                             ;Clears PRTxGS bit in pin position
 0030 10              push  X
 0031 4F              mov   X,SP
 0032 73              cpl   A
 0033 3801            add   SP,1                             ; complement A to set up mask
 0035 5400            mov   [X + GSpin],A
 0037 52FF            mov   A,[X + GSport]
 0039 4B              swap  X,A
 003A 5E02            mov   A,reg[X+GLOBAL_SELECT_OFFSET]    ; mov GS pin into A
 003C 4F              mov   X,SP
 003D 79              dec   X 
 003E 2300            and   A,[X + GSpin]                    ; and with mask
 0040 08              push  A
 0041 52FF            mov   A,[X + GSport]
 0043 4B              swap  A,X
 0044 18              pop   A
 0045 6102            mov   reg[X+GLOBAL_SELECT_OFFSET],A    ; write back to GS pin
 0047 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 )
 0049 703F            and   F, ~FLAG_PGMODE_MASK        ; NOTE: transition thru 00b state
 004B 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
                
 004D 7F            ret
 004E             
 004E           ;-----------------------------------------------------------------------------
 004E           ;  FUNCTION NAME: DiscreteDriveMode
 004E           ;
 004E           ;  DESCRIPTION:
 004E           ;    Sets the drive mode for the pin
 004E           ;
 004E           ;-----------------------------------------------------------------------------
 004E           ;
 004E           ;  ARGUMENTS:  ( FASTCALL16 format)
 004E           ;    [SP-3] => pin (ie  0 => 0x01, 1 => 0x02, 2 => 0x04, etc)
 004E           ;    [SP-4] => Actual port address
 004E           ;    [SP-5] => drive mode
 004E           ; 
 004E           ;
 004E           ;  RETURNS:
 004E           ;
 004E           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 004E           ;
 004E           ;  THEORY of OPERATION or PROCEDURE: 
 004E           ;
 004E           ;------------------------------------------------------------------------------
 004E           ; Stack offset constants
 FFFFFFFD               DMpin:          equ -3
 FFFFFFFC               DMport:         equ -4                   
 FFFFFFFB               DriveMode:      equ -5
 004E               
 004E           
 004E           _DiscreteDriveMode:
 004E            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
                
 004E 7110          or    F, FLAG_XIO_MASK
 0050 4F            mov   X,SP                                                  
 0051 52FB          mov   A,[X + DriveMode]                    ;move drivemode to A
 0053 2101          and   A,0x01
 0055 B01E          jnz   SetOne                               ; jmp if bit 0 set to 1
 0057 52FD          mov   A,[X + DMpin]                        ; load pin to A
 0059 73            cpl   A                                    ; set up as mask
 005A 54FD          mov   [X + DMpin],A                        ; move back
 005C 52FC          mov   A,[X + DMport]                       ; load port
 005E 4B            swap  X,A                                  ; X now points to port, A contains SP
 005F 08            push  A                                    ; save on stack
 0060 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 0062 20            pop   X                                    ; restore SP
 0063 23FD          and   A,[X + DMpin]                        ; set bit to zero
 0065 08            push  A                                    ; push result on stack
 0066 52FC          mov   A,[X + DMport]                       ; move port to A
 0068 4B            swap  X,A                                  ; X now points to port
 0069 18            pop   A                                    ; restore from stack     
 006A 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 006C 4F            mov   X,SP                                 ; restore SP
 006D 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 006F 73            cpl   A                            
 0070 54FD          mov   [X + DMpin],A                 
 0072 8012          jmp   Done
 0074           
 0074           SetOne:
 0074 52FC          mov   A,[ X + DMport]                      ; load port to A
 0076 4B            swap  X, A                                 ; X now points to port, A contains SP
 0077 08            push  A                                    ; save the SP    
 0078 5E00          mov   A,reg[X+DRIVE_MODE_ZERO_OFFSET]      ; load contents of PRTxDM0 into A
 007A 20            pop   X                                    ; restore SP                         
 007B 2BFD          or    A,[X + DMpin]                        ; set to 1
 007D 08            push  A                                    ; save on stack
 007E 52FC          mov   A,[X + DMport]                       ; load port to A                             
 0080 4B            swap  X,A                                  ; X now points to port
 0081 18            pop   A                                    ; restore from stack
 0082 6100          mov   reg[X+DRIVE_MODE_ZERO_OFFSET],A      ; move to PRTxDM0
 0084 4F            mov   X,SP                                 ; restore SP
 0085           
 0085           Done:
 0085                                                          ; Set PRTxDM1 bit
 0085 52FB          mov   A,[X + DriveMode]                    ; load drive mode to A
 0087 2102          and   A, 0x02
 0089 67            asr   A
 008A B01E          jnz   SetOne1                              ;jmp if bit 2 set to 1                             
 008C 52FD          mov   A,[X + DMpin]                        ; load pin to A
 008E 73            cpl   A                                    ; set up as mask
 008F 54FD          mov   [X + DMpin], A                       ; move back
 0091 52FC          mov   A,[X + DMport]                       ; load port
 0093 4B            swap  X,A                                  ; X now points to port, A contains SP
 0094 08            push  A                                    ; save on stack
 0095 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]       ; load contents of PRTxDM1 into A
 0097 20            pop   X                                    ; restore SP
 0098 23FD          and   A,[X + DMpin]                        ; set bit to zero
 009A 08            push  A                                    ; push result on stack
 009B 52FC          mov   A,[X + DMport]                       ; move port to A                             
 009D 4B            swap  X,A                                  ; X now points to port
 009E 18            pop   A                                    ; restore from stack     
 009F 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A       ; Set PRTxDM1 bit to zero
 00A1 4F            mov   X,SP                                 ; restore SP
 00A2 52FD          mov   A,[X + DMpin]                        ; restore pin to unmasked value
 00A4 73            cpl   A                              
 00A5 54FD          mov   [X + DMpin],A                   
 00A7 8012          jmp   Done1
 00A9           
 00A9           SetOne1:
 00A9 52FC          mov   A,[X + DMport]                        ; load port to A 
 00AB 4B            swap  X,A                                   ; X now points to port, A contains SP
 00AC 08            push  A                                     ; save the SP   
 00AD 5E01          mov   A,reg[X+DRIVE_MODE_ONE_OFFSET]        ; load contents of PRTxDM1 into A
 00AF 20            pop   X                                     ; restore SP
 00B0 2BFD          or    A,[X + DMpin]                         ; set to 1                         
 00B2 08            push  A                                     ; save on stack                             
 00B3 52FC          mov   A,[X + DMport]                        ; load port to A                                               
 00B5 4B            swap  X,A                                   ; X now points to port                            
 00B6 18            pop   A                                     ; restore from stack
 00B7 6101          mov   reg[X+DRIVE_MODE_ONE_OFFSET],A        ; move to PRTxDM1
 00B9 4F            mov   X,SP                                  ; restore SP
 00BA           
 00BA           Done1:
 00BA 70EF          and   F, ~FLAG_XIO_MAS

⌨️ 快捷键说明

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