?? max517與pic單片機(jī)通訊程序.txt
字號(hào):
;**************初始化I2C子程序*********************************
I2C MOVLW 0X08 ;初始化SSPCON寄存器
MOVWF SSPCON
BSF STATUS,RP0 ;選擇BANK1
BSF TRISC,3 ;設(shè)置SCL為輸入口
BSF TRISC,4 ;設(shè)置SDA為輸入口
MOVLW 0X80 ;初始化SSPSTAT寄存器
MOVWF SSPSTAT
MOVLW 0X02
MOVWF SSPADD ;設(shè)定I2C時(shí)鐘頻率
CLRF SSPCON2 ;初始化SSPCON2寄存器
BCF STATUS,RP0 ;選擇BANK0
BCF INTCON,GIE ;關(guān)閉總中斷
BCF PIR1,SSPIF ;清SSP中斷標(biāo)志
BSF SSPCON,SSPEN ;SSP模塊使能
RETURN
;**************I2C通訊子程序(D/A轉(zhuǎn)換)********************
I2C_OUT MOVLW 0X02
MOVWF I2CWARD
BSF STATUS,RP0
BSF SSPCON2,SEN ;產(chǎn)生I2C啟動(dòng)信號(hào)
BCF STATUS,RP0
LOOP1 BTFSC PIR1,SSPIF ;等待啟動(dòng)信號(hào)完成
GOTO I2C1
DECFSZ I2CWARD ;延時(shí)幾微秒,如果仍沒啟動(dòng),則重啟動(dòng)
GOTO LOOP1
BSF STATUS,RP0 ;選擇BANK1
BSF SSPCON2,RSEN ;重啟動(dòng)
BCF STATUS,RP0 ;選擇BANK0
GOTO LOOP1 ;等待啟動(dòng)完成
I2C1 BCF PIR1,SSPIF ;清SSP中斷標(biāo)志
MOVLW 0X58 ;I2C總線發(fā)送地址字節(jié)
MOVWF SSPBUF
LOOP2 BTFSS PIR1,SSPIF ;等待地址字節(jié)發(fā)送完畢
GOTO LOOP2
BCF PIR1,SSPIF ;清SSP中斷標(biāo)志
CLRF SSPBUF ;I2C總線發(fā)送命令字節(jié)
LOOP4 BTFSS PIR1,SSPIF ;等待命令字節(jié)發(fā)送完畢
GOTO LOOP4
BCF PIR1,SSPIF ;清SSP中斷標(biāo)志
MOVF DATE5,W ;I2C總線發(fā)送D/A轉(zhuǎn)換數(shù)據(jù)
MOVWF SSPBUF
LOOP5 BTFSS PIR1,SSPIF ;等待數(shù)據(jù)發(fā)送完成
GOTO LOOP5
BCF PIR1,SSPIF
BSF STATUS,RP0
BSF SSPCON2,PEN ;產(chǎn)生停止條件
BCF STATUS,RP0
LOOP6 BTFSS PIR1,SSPIF ;等待停止條件產(chǎn)生
GOTO LOOP6
BCF PIR1,SSPIF ;清除SSP中斷標(biāo)志
RETURN
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -