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

📄 pca9564_init.asm

📁 .ifnz I2C_SUPPORT ************************************************************** Function : fPro
💻 ASM
字号:
.ifnz PCA9564
PCA9564_Init:
;;----------------------------------------------------------          
       ;;RESET=0
       rmb PCA9564_RESET_bit,PCA9564_RESET_PORT  
       ;;Delay 1us (request >100ns)
       jsr PCA9564_Delay_1us
       ;;RESET=1
       smb PCA9564_RESET_bit,PCA9564_RESET_PORT        
       ;;Delay 1us( request >250ns)
       jsr PCA9564_Delay_1us
;;---------------------------------------------------------       
       ;;set TimeOut Register  I2CTO=0xff  
       lda  #$00
       sta  rOutBuffer_9564
       jsr  PCA9564_WRITE_I2CTO 
;;--------------------------------------------------------       
       ;;set Own Address Register   I2CADR=0x64    &  set A0A1=01
       lda  #$76
       sta  rOutBuffer_9564
       jsr  PCA9564_WRITE_I2CADR        
;;--------------------------------------------------------     
       ;;set Control  Register      I2CCON=0x45    &  set A0A1=11
       lda  #$45
       sta  rOutBuffer_9564
       jsr  PCA9564_WRITE_I2CCON               
;;--------------------------------------------------------        
       ;;Delay 1ms   (request >500us) wait OSC wake up
       jsr  PCA9564_Delay_1ms     
           
;;--------------------------------------------------------       
       ;;set Control  Register      I2CCON=0xc5    &  set A0A1=11
       lda  #$c5
       sta  rOutBuffer_9564
       jsr  PCA9564_WRITE_I2CCON 
;;--------------------------------------------------------            
       rts
;;=======================================================================             
PCA9564_WRITE_I2CTO:
       ;;  set A0A1=00 ,I2CTO
       rmb PCA9564_A0_bit,PCA9564_A0_PORT 
       rmb PCA9564_A1_bit,PCA9564_A1_PORT          
       jsr PCA9564_WRITE_PORT            
       rts 
;;=======================================================================        
PCA9564_WRITE_I2CADR:
       ;;  set A0A1=01 ,I2CADR
       rmb PCA9564_A0_bit,PCA9564_A0_PORT 
       smb PCA9564_A1_bit,PCA9564_A1_PORT            
       jsr PCA9564_WRITE_PORT             
       rts 
;;=======================================================================        
PCA9564_WRITE_I2CDAT:
       ;;  set A0A1=10 ,I2CDAT
       smb PCA9564_A0_bit,PCA9564_A0_PORT 
       rmb PCA9564_A1_bit,PCA9564_A1_PORT            
       jsr PCA9564_WRITE_PORT             
       rts        
;;=======================================================================        
PCA9564_WRITE_I2CCON:
       ;;  set A0A1=11 ,I2CCON
       smb PCA9564_A0_bit,PCA9564_A0_PORT 
       smb PCA9564_A1_bit,PCA9564_A1_PORT          
       jsr PCA9564_WRITE_PORT            
       rts 
;;=======================================================================
PCA9564_WRITE_PORT:
        ;;  set PCA9564_DATA_PORT as output port  
        lda #%11111111
        sta PCA9564_DATA_CFG  
        ;;  CE=0  
        rmb PCA9564_CE_bit,PCA9564_CE_PORT    
        ;; delay for tcs         
        nop
        nop  
        ;;  WR=0          
        rmb PCA9564_WR_bit,PCA9564_WR_PORT  
        ;;  write data to PCA9564 port
        lda rOutBuffer_9564
        sta PCA9564_DATA_PORT
        nop
        nop            
        ;;  WR=1          
        smb PCA9564_WR_bit,PCA9564_WR_PORT  
        ;;  delay for tch        
        nop
        nop   
        ;;  CE=1  
        smb PCA9564_CE_bit,PCA9564_CE_PORT   
        rts   
;;========================================================================    
PCA9564_READ_PORT:   
        ;;  set PCA9564_DATA_PORT as input port  first should set dataport input
        ;;  because after WR,RD change low ,data valid in 17ns
        lda #%00000000
        sta PCA9564_DATA_CFG  
        ;;  CE=0  
        rmb PCA9564_CE_bit,PCA9564_CE_PORT    
        ;; delay for tcs         
        nop
        nop   
        ;;  RD=0          
        rmb PCA9564_RD_bit,PCA9564_RD_PORT  
        ;;  read data from PCA9564
        lda PCA9564_DATA_PORT
        sta rOutBuffer_9564
        nop
        nop        
        ;;  RD=1          
        smb PCA9564_RD_bit,PCA9564_RD_PORT  
        ;; delay for tch        
        nop
        nop 
        ;;  CE=1  
        smb PCA9564_CE_bit,PCA9564_CE_PORT   
        rts          
;;======================================================================               
PCA9564_Delay_1ms:
        phx
        phy
        ldx #80  
delay2:           
        ldy #250
delay1:
        nop
        nop
        nop
        nop
        nop
        dey
        bne delay1
        dex
        bne delay2
        ply
        plx
        rts  
;;=======================================================================     
PCA9564_Delay_1us:
        phx
        ldx #125  
delay3:   
        nop
        dex
        bne delay3
        plx
        rts           
.endif

⌨️ 快捷键说明

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