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

📄 ad5933.asm

📁 AD5933的读写和一些计算(汇编语言)
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        CLR     VSDA
        NOP
        NOP
        NOP
        CLR     VSCL
        RET

;IIC总线停止子程序
STOP:   CLR     VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        SETB    VSDA
        NOP
        NOP
        NOP
        CLR     VSCL
        CLR     VSDA
        RET

;IIC总线发送应答子程序
MACK:   CLR     VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        CLR     VSCL
        SETB    VSDA
        RET


;IIC 总线发送非应答子程序
MNACK:  SETB    VSDA
        SETB    VSCL
        NOP
        NOP
        NOP
        CLR     VSCL
        CLR     VSDA
        RET

;IIC 总线应答检查子程序
CACK:   SETB    VSDA
        SETB    VSCL
        CLR     F0
        MOV     C,      VSDA
        JNC     CEND
        SETB    F0
CEND:   CLR     VSCL
        RET

;IIC 总线发送1字节子程序
WRBYT:  MOV     R6,    #08H
WLP:    RLC     A
        MOV     VSDA,  C
        SETB    VSCL
        NOP
        NOP
        NOP
        CLR     VSCL
        DJNZ    R6,    WLP
        RET




;IIC总线发送N字节数据子程序
WRNBYT: MOV     R7,    NUMBYT
        LCALL   STA
        MOV     A,     WSLA   ;发送 SLAW寻址字节
        LCALL   WRBYT
        LCALL   CACK
        JB      F0,    WRNBYT
        MOV     R0,    #MWD
WRDA:   MOV     A,     @R0
        LCALL   WRBYT
        LCALL   CACK
        JB      F0,    WRNBYT
        INC     R0
        DJNZ    R7,    WRDA
        LCALL   STOP
        RET

;IIC总线读入N字节数据子程序
RDNBYT: MOV     R7,    NUMBYT
        LCALL   STA
        MOV     A,     RSLA
        LCALL   WRBYT
        LCALL   CACK
        JB      F0,    RDNBYT
        MOV     R0,    #MRD
RDN1:
        LCALL   RDBYT
        MOV     @R0,   A
        DJNZ    R7,    ACK
        LCALL   MNACK
        LCALL   STOP
        RET
ACK:    LCALL   MACK
        INC     R0
        SJMP    RDN1
;IIC 总线接收1字节子程序
RDBYT:  MOV     R6,    #08H
RLP:    SETB    VSDA
        SETB    VSCL
        MOV     C,     VSDA
        MOV     A,     R2
        RLC     A
        MOV     R2,    A
        CLR     VSCL
        DJNZ    R6,    RLP
        MOV     A,     R2
        RET

;IIC总线一个数据块读子程序
B_READ: LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0A1H
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     NUMBYT
        MOV     R7,    A
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_R     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     R0,    #MRD
B_READ1:
        LCALL   RDBYT
        MOV     @R0,   A
        INC     R0
        LCALL   MACK
        DJNZ    R7,    B_READ1
        LCALL   MNACK
        LCALL   STOP                ;停止I2C
        RET

;IIC总线设定寄存器指针
POINT:  LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0B0H
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,      R5
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        RET

;IIC初始化AD5933
INI:    LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #Ctrl_H         ;80H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0B0H        ;写入80H寄存器的内容      标准模式 输出电压范围2.0V P-P
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #Ctrl_L        ;81H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #00H         ;写入81H寄存器的内容    PGA Gain 0=*5 内部时钟 16.774M
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #82H         ;82H寄存器                 82H 83H 84H中存入起始频率 设定为1K 系统频率12M
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #00H        ;写入82H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #83H         ;83H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0AEH        ;写入83H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #84H         ;84H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #43H        ;写入84H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #85H         ;85H寄存器            85H 86H 87H是频率步长 设定为100HZ  系统频率为12M
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #00H        ;写入85H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #86H         ;86H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #11H        ;写入86H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #87H         ;87H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #7AH        ;写入87H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #88H         ;88H寄存器         测试点设定为511
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #01H        ;写入88H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #89H         ;89H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0FFH        ;写入89H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #8AH         ;8AH寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #01H        ;写入80H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #8BH         ;8BH寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #0FFH        ;写入80H寄存器的内容
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #80H         ;80H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #13H        ;写入80H寄存器的内容  初始化启动频率
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        NOP
        NOP
        NOP
        LCALL   STA                 ;启动I2C
        MOV     A,     #AD5933_W     ;AD5933地址+写命令
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #80H         ;80H寄存器
        LCALL   WRBYT
        LCALL   MACK
        MOV     A,     #23H        ;写入80H寄存器的内容   起振
        LCALL   WRBYT
        LCALL   MACK
        LCALL   STOP                ;停止I2C
        RET


⌨️ 快捷键说明

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