📄 max517与pic单片机通讯程序.txt
字号:
;**************初始化I2C子程序*********************************
I2C MOVLW 0X08 ;初始化SSPCON寄存器
MOVWF SSPCON
BSF STATUS,RP0 ;选择BANK1
BSF TRISC,3 ;设置SCL为输入口
BSF TRISC,4 ;设置SDA为输入口
MOVLW 0X80 ;初始化SSPSTAT寄存器
MOVWF SSPSTAT
MOVLW 0X02
MOVWF SSPADD ;设定I2C时钟频率
CLRF SSPCON2 ;初始化SSPCON2寄存器
BCF STATUS,RP0 ;选择BANK0
BCF INTCON,GIE ;关闭总中断
BCF PIR1,SSPIF ;清SSP中断标志
BSF SSPCON,SSPEN ;SSP模块使能
RETURN
;**************I2C通讯子程序(D/A转换)********************
I2C_OUT MOVLW 0X02
MOVWF I2CWARD
BSF STATUS,RP0
BSF SSPCON2,SEN ;产生I2C启动信号
BCF STATUS,RP0
LOOP1 BTFSC PIR1,SSPIF ;等待启动信号完成
GOTO I2C1
DECFSZ I2CWARD ;延时几微秒,如果仍没启动,则重启动
GOTO LOOP1
BSF STATUS,RP0 ;选择BANK1
BSF SSPCON2,RSEN ;重启动
BCF STATUS,RP0 ;选择BANK0
GOTO LOOP1 ;等待启动完成
I2C1 BCF PIR1,SSPIF ;清SSP中断标志
MOVLW 0X58 ;I2C总线发送地址字节
MOVWF SSPBUF
LOOP2 BTFSS PIR1,SSPIF ;等待地址字节发送完毕
GOTO LOOP2
BCF PIR1,SSPIF ;清SSP中断标志
CLRF SSPBUF ;I2C总线发送命令字节
LOOP4 BTFSS PIR1,SSPIF ;等待命令字节发送完毕
GOTO LOOP4
BCF PIR1,SSPIF ;清SSP中断标志
MOVF DATE5,W ;I2C总线发送D/A转换数据
MOVWF SSPBUF
LOOP5 BTFSS PIR1,SSPIF ;等待数据发送完成
GOTO LOOP5
BCF PIR1,SSPIF
BSF STATUS,RP0
BSF SSPCON2,PEN ;产生停止条件
BCF STATUS,RP0
LOOP6 BTFSS PIR1,SSPIF ;等待停止条件产生
GOTO LOOP6
BCF PIR1,SSPIF ;清除SSP中断标志
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -