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

📄 viic.asm

📁 lcd多层菜单显示,应用比较广泛,主要是用来方便显示相关的信息用的,是不可少的好
💻 ASM
字号:
;程序名:虚拟IIC总线程序包
;VSDA:  虚拟IIC总线数据线
;VSCL:  虚拟IIC总线时钟线
;SLA:   寻址字节存放单元
;SLAW:  寻址字节写
;SLAR:  寻址字节读
;NUMBYT:传输字节数存放单元
;MTD:   发送数据缓冲区
;MRD:   接收数据缓冲区
;占用:  F0、C、R0、R1、R2、R3、A
;VIIC1.0软件包规定了读写子程序RDNBYT/WRNBYT的惟一出口界面,因此RDNBYT/WRNBYT
;的调用操作命令,以及满足调用操作的初始化操作的三条命令为VIIC的应用界面,即: 
;MOV SLA,#SLAR/SLAW ;总线上节点寻址并确定传送方向
;MOV NUMBYT,#N ;确定传送字节数N
;LCALL RDNBYT/WRNBYT ;读/写操作调用

;*********启动总线********************
STA:    SETB    VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        CLR     VSDA
        NOP
        NOP
        NOP
        NOP
        CLR     VSCL
        RET
;**********停止总线********************
STOP:   CLR     VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        SETB    VSDA
        NOP
        NOP
        NOP
        NOP
        CLR     VSDA
        CLR     VSCL
        RET
;**********发送应答********************
MACK:   CLR     VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        CLR     VSCL
        SETB    VSDA
        RET
;**********发送非应答******************
MNACK:  SETB    VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        CLR     VSCL
        CLR     VSDA
        RET
;**********应答位检查******************
CACK:   SETB    VSDA
        SETB    VSCL
        CLR     F0
        MOV     C,VSDA
        JNC     CEND
        SETB    F0
 CEND:  CLR     VSCL
        RET
;**********发送一个数据字节******************
WRBYT:  MOV     R0,#8
WLP:    RCL     A
        JC      WR1
        AJMP    WR0
WLP1:   DJNZ    R0,WLP
        RET
WR1:    SETB    VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        CLR     VSCL
        CLR     VSDA
        AJMP    WLP1
WR0:    CLR     VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        NOP
        CLR     VSCL
        AJMP    WLP1
;**********接受一个数据字节******************
 RDRYT: MOV     R0,#8
 RLP:   SETB    VSDA
        SETB    VSCL
        MOV     C,VSDA
        MOV     A,R2
        RLC     A
        MOV     R2,A
        CLR     VSCL
        DJNZ    R0,RLP
        RET
;**********发送N个数据字节******************
WRNBYT: MOV     R3,NUMBYT
        LCALL   STA
        MOV     A,SLA
        LCALL   WRBYT
        LCALL   CACK
        JB      F0,WRNBYT
        MOV     R1,#MTD
WRDA:   MOV     A,@R1
        LCALL   WRBYYT
        LCALL   CACK
        JB      F0,WRNBYT
        INC     R1
        DJNZ    R3,WRDA
        LCALL   STOP
        RET
;**********接受N个数据字节******************
RDNBYT: MOV     R3,NUMBYT
        LCALL   STA
        MOV     A,SLA
        LCALL   WRBYT
        LCALL   CACK
        JB      F0,RDNBYT
RDN:    MOV     R1,#MRD
RDN1:   LCALL   RDBYT
        MOV     @R1,A
        DJNZ    R3,ACK
        LCALL   MNACK
        LCALL   STOP
        RET
ACK:    LCALL   MACK
        INC     R1
        SJMP    RDN1





⌨️ 快捷键说明

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