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

📄 ht1621.asm

📁 .ifnz I2C_SUPPORT ************************************************************** Function : fPro
💻 ASM
字号:
.ifnz HT1621
fProcessVfdWrite:

        ;;STB=0
		rmb		VFD_STB_bit,VFD_PORT

        lda     IOP_DATA0_L
        and     #VFD_DAT_LN_MASK        						  
        beq		OnlyHtSentCmd	;;if data len =0 then sent cmd
        ;;get data size
        cmp		#2
        beq		fSendNec16312Com
        sta     rDataLen
        ;;send out command
        jsr     fSentWriteCmd   ;;only sent write cmd 0x101
        lda     IOP_DATA1_L     ;;address it only user 6'b
        sta     rOutBuffer
        rol     rOutBuffer
        nop
        rol     rOutBuffer
        ldy     #6            ;;6'b
        jsr     fSentBit    ;;it only 6'b

        
rProcessDataOut:
        
        ldx     #0
        
rSendOutNextByte:

        lda     IOP_DATA2_L,x
        sta     rOutBuffer
        jsr     fHtSendOneByte
        jsr     fDelay2
        jsr     fDelay2
        jsr     fDelay2
        inx
        cpx     rDataLen
        bne     rSendOutNextByte
        bra     rExitPorcessVfdWrite
OnlyHtSentCmd:
        lda     IOP_DATA1_H
        sta     rOutBuffer
        ldy     #8
        jsr     fSentBit
        lda     IOP_DATA1_L
        sta     rOutBuffer
        ldy     #4
        jsr     fSentBit
        bra		rExitPorcessVfdWrite
fSendNec16312Com:
		lda     IOP_DATA1_L     ;;cmd0
        cmp		#$71
        beq		fSendTwoData
        sta     rOutBuffer
        jsr     fSendOneByte
        bra		rExitPorcessVfdWrite
fSendTwoData:
		lda		IOP_DATA1_L
		sta		rOutBuffer
		jsr		fSendOneByte
		lda		IOP_DATA2_L
		sta		rOutBuffer
		jsr		fSendOneByte        
rExitPorcessVfdWrite:

        lda     #0
        sta     rDataLen
        smb     VFD_DATA_bit,VFD_PORT
        jsr     fDelay1

		;;STB=1
		smb		VFD_STB_bit,VFD_PORT        
        rts

;;**************************************************************
;;Function    :fSentWriteCmd
;;Description :it only send 3 'b ht1621cmd 101'b
;;Input       :NONE
;;Output      :NONE
;;**************************************************************
fSentWriteCmd:

        ;;data=1
        smb     VFD_DATA_bit,VFD_DATA_PORT
        nop
        jsr		set_vfd_clk
        ;;data=0 
        rmb     VFD_DATA_bit,VFD_DATA_PORT
        nop
        jsr		set_vfd_clk
        ;;data =1
        smb     VFD_DATA_bit,VFD_DATA_PORT
        nop
        jsr		set_vfd_clk
        rts
        

	


;;**************************************************************
;;Function    : fSendOneByte
;;Description : output one byte data to VFD port
;;Input       : rOutBuffer
;;Output      : NONE
;;**************************************************************
fSendOneByte:

        ldy     #8

lSendNextBit:

        ror     rOutBuffer
        bcc     lOutLow

        smb		VFD_DATA_bit,VFD_DATA_PORT
        
        bra		lSendOutOk
        
lOutLow:
        rmb		VFD_DATA_bit,VFD_DATA_PORT

lSendOutOk:
        jsr		set_vfd_clk

        dey
        bne     lSendNextBit

        rts

  
;;*************************************************************
;;Function    :fSentBit
;;Description :y register value decide how many bit send
;;Input       :rOutBuffer   MSB out!
;;Output      :NONE
;;**************************************************************
fSentBit:
lSendBitloop:
        rol		rOutBuffer
        bcs		rDataIsHi
rDataIsLow:
        rmb		VFD_DATA_bit,VFD_DATA_PORT
        bra		rDataSet
rDataIsHi:
        smb		VFD_DATA_bit,VFD_DATA_PORT
rDataSet:
        jsr		set_vfd_clk
        dey
        bne     lSendBitloop
        rts
;;**************************************************************
;;Function    :fHtSendOneByte         
;;Description :Send One Byte To ht1621, send one byte out LSB out!
;;Input       :rOurBuffer
;;Output      :NONE
;;**************************************************************
fHtSendOneByte:        
        ldy		#8
rSendOneBit: 
        ror		rOutBuffer
        bcs		rDataHigh 
rDataLow: 
        rmb		VFD_DATA_bit,VFD_DATA_PORT
        bra		rDataSetup
rDataHigh:
        smb		VFD_DATA_bit,VFD_DATA_PORT
rDataSetup
        jsr		set_vfd_clk
        dey   
        bne		rSendOneBit                     
        rts


set_vfd_clk:
		rmb     VFD_CLK_bit,VFD_PORT
        jsr     f_delay
        smb     VFD_CLK_bit,VFD_PORT
        jsr     f_delay
        rts

 f_delay:
        jsr		fDelay1
        nop
        jsr		fDelay1
        nop
        jsr		fDelay1
        nop
        jsr		fDelay1
        nop
        jsr		fDelay1
        rts            
.endif        
        

⌨️ 快捷键说明

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