📄 i2c.inc
字号:
;******************************************************************************
; SET AD9880
;******************************************************************************
I2C_START_BIT
BCF RC,SDA
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BCF RC,SCL
RETLW 0
;************************************
I2C_STOP_BIT
BCF RC,SDA
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF RC,SCL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF RC,SDA
NOP
NOP
NOP
NOP
RETLW 0
;************************************ RETLW 0
I2C_SEND
MOVLW 08H ;8 BIT
MOVWF CYCLE
I2C_SEND_1
RLF TEMP2 ;SEND TEMP2 TO MEMORY
BTFSC STATUS,CF
GOTO I2C_SEND_2
BCF RC,SDA
GOTO I2C_SEND_3
I2C_SEND_2
BSF RC,SDA
I2C_SEND_3
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BCF RC,SCL ;ONE CLOCK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BCF RC,SCL
NOP
NOP
NOP
DECFSZ CYCLE
GOTO I2C_SEND_1
MOVLW 10H
TRIS RC
; BCF RC,SDA ;ACK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BSF RC,SCL
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
BCF RC,SCL
BSF RC,SDA
MOVLW 1AH
MOVWF CYCLE
DEL_28
DECFSZ CYCLE
GOTO DEL_28 ;(0.25*2)+(0.75*12)=10 us
MOVLW 00H
TRIS RC
RETLW 0
;************************************
I2C_READ_0
MOVLW 08H
MOVWF CYCLE
; B1
; BCF TRISA,MEM_CK
; BSF TRISA,MEM_DA
; B0
I2C_READ_1
RLF TEMP2 ;MEMOUY DATA-->TEMP2
BSF TEMP2,BIT_0
BTFSC RC,SDA
BSF TEMP2,BIT_0
BSF RC,SCL ;ONE CLOCK
NOP
BCF RC,SCL
DECFSZ CYCLE
GOTO I2C_READ_1
; B1
; BCF TRISA,MEM_CK
; BCF TRISA,MEM_DA
; B0
RETLW 0
;***********************************
; READ AD9883A
;***********************************
RD_AD9883A
CALL I2C_STOP_BIT
CALL I2C_START_BIT
MOVLW 98H ;AD9880 ADDRESS/WRITE
MOVWF TEMP2
CALL I2C_SEND
MOVF ADDR,W ; ADDRESS
MOVWF TEMP2
CALL I2C_SEND
CALL I2C_STOP_BIT
CALL I2C_START_BIT
MOVLW 99H
MOVWF TEMP2
CALL I2C_SEND
CALL I2C_READ_0
MOVF TEMP2,W
MOVWF DATAS
CALL I2C_STOP_BIT
RETLW 0
;***********************************
; WRITE AD98843A
;***********************************
WE_AD9883A
CALL I2C_STOP_BIT
CLRF RTC
WE_DEL_4MS
BTFSS RTC,RF5
GOTO WE_DEL_4MS
; CALL I2C_STOP_BIT
CALL I2C_START_BIT
;WAIT_ACK_1
; BTFSS RC,SDA
; GOTO ADG1
; BTFSS RTC,RF3
; GOTO WAIT_ACK_1
; RETLW 0
ADG1
MOVLW 98H
MOVWF TEMP2
CALL I2C_SEND
MOVF ADDR,W ;ADDRESS
MOVWF TEMP2
CALL I2C_SEND
MOVF TEMP,W
MOVWF TEMP2
CALL I2C_SEND
RETLW 0
;***********************************
; WRITE AD9889
;***********************************
WE_AD9889
CALL I2C_STOP_BIT
CLRF RTC
WE_DEL_2MS
BTFSS RTC,RF5
GOTO WE_DEL_2MS
; CALL I2C_STOP_BIT
CALL I2C_START_BIT
;WAIT_ACK_1
; BTFSS RC,SDA
; GOTO ADG1
; BTFSS RTC,RF3
; GOTO WAIT_ACK_1
; RETLW 0
ADG1_
MOVLW 72H
MOVWF TEMP2
CALL I2C_SEND
MOVF ADDR,W ;ADDRESS
MOVWF TEMP2
CALL I2C_SEND
MOVF TEMP,W
MOVWF TEMP2
CALL I2C_SEND
RETLW 0
;***********************************
; WRITE AD9880~~SINGLE
;***********************************
WE_SINGLE
MOVF TEMP,W
MOVWF TEMP2
CALL I2C_SEND
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -