📄 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
BSF 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
BCF 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 AD9880
;***********************************
RD_AD9880
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 AD9880
;***********************************
WE_AD9880
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 AD9880~~SINGLE
;***********************************
WE_SINGLE
MOVF TEMP,W
MOVWF TEMP2
CALL I2C_SEND
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -