📄 drv1320.asm
字号:
;********************DRV1320********************
;本程序实现驱动TC1320实现DA转换。
;入口参数:待转换的数据在SOU中。
;出口参数:无。
;占用资源:W,STATUS,024H,SSP模块,1重堆栈。
;说明: 同步时钟频率为100KHZ
IFNDEF DRV13201
#DEFINE DRV13201
DRV1320 MOVLW 08H ;初始化SSPCON,
MOVWF SSPCON ;IIC主控模式
BCF PIR1,SSPIF
BSF STATUS,RP0
BSF TRISC,3 ;设置SCL为输入
BSF TRISC,4 ;设置SDA为输入
MOVLW 80H ;初始化SSPSTAT寄存器,
MOVWF SSPSTAT ;传送速率为标准模式100KHZ
MOVLW 09H
MOVWF SSPADD ;设定IIC时钟频率
CLRF SSPCON2 ;初始化SSPCON2
BCF PIE1,SSPIE ;SSP中断禁止
BCF STATUS,RP0
BSF SSPCON,SSPEN ;SSP模块使能
BSF STATUS,RP0
BCF TRISC,3 ;设置SCL为输出
BCF TRISC,4
BSF SSPCON2,SEN ;产生IIC启动信号
BCF STATUS,RP0
BTFSS PIR1,SSPIF ;启动信号完成了吗?
GOTO $-1
BCF PIR1,SSPIF
MOVLW 10010000B ;TC1320地址和写信号
MOVWF SSPBUF
BTFSS PIR1,SSPIF ;TC1320地址和写信号发送完了吗?
GOTO $-1
BCF PIR1,SSPIF
CLRF SSPBUF ;COMMAND=0,读写DATA寄存器
BTFSS PIR1,SSPIF ;COMMAND发送完了吗?
GOTO $-1
BCF PIR1,SSPIF
MOVF SOU,W ;待转换的数字量
MOVWF SSPBUF
BTFSS PIR1,SSPIF ;数字量发送完了吗?
GOTO $-1
BCF PIR1,SSPIF
BSF STATUS,RP0
BSF SSPCON2,PEN ;结束位
BCF STATUS,RP0
BTFSS PIR1,SSPIF ;结束位发送完了吗?
GOTO $-1
BCF PIR1,SSPIF
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -