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

📄 gt1128.asm

📁 .ifnz I2C_SUPPORT ************************************************************** Function : fPro
💻 ASM
字号:
.ifnz GT1128
init_gt1128:
          rmb		VFD_STB_bit,VFD_PORT
          jsr	    dly800ns	;ce hold time
          ;;send out ID          
          lda     #%11010000
          sta     rOutBuffer
          ldy	  #6		;6bits
          jsr     fSendBit                  
          lda     #%10001010   ;;enable osc1
          sta     rOutBuffer
          ldy     #9		;9bits, the lastest bit is x(0 or 1)
          jsr     fSendBit
          lda     #%10010110   ;;enable osc2
          sta     rOutBuffer
          ldy     #9		;9bits, the lastest bit is x(0 or 1)
          jsr     fSendBit         
          lda     #%10101000   ;;set BIAS&DUTY
          sta     rOutBuffer
          ldy     #9		;9bits, the lastest bit is x(0 or 1)
          jsr     fSendBit
          lda     #%10101111   ;;lcd  on
          sta     rOutBuffer
          ldy     #9		;9bits, the lastest bit is x(0 or 1)
          jsr     fSendBit
          
          smb		VFD_DATA_bit,VFD_DATA_PORT
          jsr	    dly800ns	
	      smb		VFD_STB_bit,VFD_PORT
          rts
;;**************************************************************
;;Function    : GT1128 fProcessorVfdWrite
;;Description : Send data or command
;;Input       : IOP_DATA1_H -- IOP_DATA4_H
;;Output      : NONE
;;**************************************************************
fProcessVfdWrite:
	    jsr	    dly800ns	;ce hold time
	    rmb		VFD_STB_bit,VFD_PORT

        lda     IOP_DATA0_L
        and     #VFD_DAT_LN_MASK        						  
        sta     rDataLen

        ;;send out ID
        lda     #%11010100
        sta     rOutBuffer
        ldy	    #6	;6bits ID code
        jsr     fSendBit
        jsr	    dly800ns
        
        
        ;;send out Address
        lda	    IOP_DATA1_H
        sta     rOutBuffer
        rol     rOutBuffer
        nop
        rol     rOutBuffer
        ldy	    #6		;6bits Address
        jsr     fSendBit
        jsr	    dly800ns
        
        
        ;;start to send data
        ldx     #0
rSendOutNextByte:
        lda     IOP_DATA2_L,x
        sta     rOutBuffer
        ldy	    #8
        jsr     fSendBit      
        jsr	    dly800ns  
        inx
        cpx     rDataLen			;32bits total
        bne     rSendOutNextByte       
	    
	    jsr	    dly800ns	;ce hold time
	    smb		VFD_STB_bit,VFD_PORT
        rts

;;*************************************************************
;;Function    : fProcessVfdRead
;;Description : process VFD read function 
;;Input       : parameter on memory 
;;Output      : data memory
;;**************************************************************
fProcessVfdRead:
	    rmb		VFD_STB_bit,VFD_PORT
	    jsr	    dly800ns

        ;;send out ID
        lda     #%11011000
        sta     rOutBuffer
        ldy	    #6		;6bits
        jsr     fSendBit
       
        ;;send out ID
        lda     #32
        sta     rOutBuffer
        rol     rOutBuffer
        nop
        rol     rOutBuffer
        ldy	    #6		;6bits
        jsr     fSendBit
       
        ;;start to read data
        rmb		VFD_DATA_bit,VFD_DATA_PORT_CFG
        ldx     #0
lRecvNextByte_1:
        jsr     fRecvOneByte
        lda     rOutBuffer
        sta     VfdResponse,x
        inx
        cpx     #2
        bne     lRecvNextByte_1
        jsr	    dly800ns	;ce hold time
	    smb		VFD_STB_bit,VFD_PORT
        smb		VFD_DATA_bit,VFD_DATA_PORT_CFG
        
	    ;;copy to latch         
        ldx		#0
lCopyNext:                
        lda	VfdResponse,x
        sta	VfdResponse1,x        
        inx
        cpx     #4
        bne     lCopyNext            
	    lda	$460		;flush out cache
	    lda	$480
        rts		

;;**************************************************************
;;Function    : fRecvOneByte
;;Description : read one byte data to VFD port
;;Input       : NONE
;;Output      : rOutBuffer
;;**************************************************************
fRecvOneByte:
        ldy     #8

lRecvNextBit:
	    ;;out clk low
	    rmb		VFD_CLK_bit,VFD_PORT

	    ;;delay at least 1.5us
        jsr	    dly800ns		;data output delay
        jsr	    dly800ns
        jsr	    dly800ns
        jsr	    dly800ns       
        bbr	    VFD_DATA_bit,VFD_DATA_PORT,lIsLow	
        sec        
        bra		lMakeData	        
lIsLow:
        clc
lMakeData:     
        ror     rOutBuffer
        ;;out clock high
	    smb		VFD_CLK_bit,VFD_PORT
        jsr	    dly800ns		;clk high time
        jsr	    dly800ns
        jsr	    dly800ns
        jsr	    dly800ns 
        dey
        bne     lRecvNextBit

        rts    

;;*************************************************************
;;Function    :fSentBit
;;Description :y register value decide how many bit send
;;Input       :rOutBuffer   MSB out!
;;Output      :NONE
;;**************************************************************
fSendBit:
lSendBitloop:
        ;;out clock low        
	    rmb		VFD_CLK_bit,VFD_PORT
	    jsr	    dly800ns
        rol     rOutBuffer
        bcc     lOutLow1
        smb		VFD_DATA_bit,VFD_DATA_PORT
        bra		lSendOutOk1        
lOutLow1:
	    rmb		VFD_DATA_bit,VFD_DATA_PORT
lSendOutOk1:
        ;;hold at least 400ns
        jsr	    dly800ns		;ce setup time & data setup time
        jsr	    dly800ns		;ce setup time & data setup time
        ;;out clock high
	    smb		VFD_CLK_bit,VFD_PORT       
	    jsr	    dly800ns		;data hold time	
	    jsr	    dly800ns		;ce setup time & data setup time
        dey
        bne     lSendBitloop
        rts
dly800ns:
	    phx	
        ldx     #8  
lDelayLoop3:
        dex
        bne     lDelayLoop3
        plx
        rts

.endif

⌨️ 快捷键说明

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