您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC的I2C读写程序 正文
PIC的I2C读写程序

PIC的I2C读写程序

点击数:7488 次   录入时间:03-04 11:36:41   整理:http://www.55dianzi.com   PIC单片机
;-----------------------------------------------------------------------------
;
BITIN
MOVLW   B'10111111'     ; Force SDA line as input
TRIS    RB
BSF     RB,SDA          ; Set SDA for input
BCF     EEPROM,DI
BSF     RB,SCL          ; Clock high
MOVLW   1
BTFSC   RB,SCL          ; Skip if SCL  is high
GOTO    BIT1
BTFSS   FLAG,ERR1       ; Remain as first error encountered
MOVWF   ERCODE          ; Save error code
BSF     FLAG,ERR1       ; Set error flag
BIT1
BTFSC   RB,SDA          ; Read SDA PIN
BSF     EEPROM,DI       ; DI = 1
NOP                     ; Delay
BCF     RB,SCL          ; Return SCL to low     
RETLW   0
;
;END SUB
 PAGE
;
;-----------------------------------------------------------------------------
;       Serial data receive from serial EEPROM to PIC, bit-by-bit subroutine
;-----------------------------------------------------------------------------
;       Input   :       EEPROM file
;       Output  :       From (DO) of serial EEPROM device to PIC
;-----------------------------------------------------------------------------
;
BITOUT
MOVLW   B'00111111'     ; Set SDA, SCL as outputs
TRIS    RB
BTFSS   EEPROM,DO
GOTO    BIT0
BSF     RB,SDA          ; Output bit 0
MOVLW   2
BTFSC   RB,SDA          ; Check for error code 2
GOTO    CLK1
BTFSS   FLAG,ERR1       ; Remain as first error encountered
MOVWF   ERCODE          ; Save error code
BSF     FLAG,ERR1       ; Set error flag
GOTO    CLK1            ; SDA locked low by device
;
BIT0
BCF     RB,SDA          ; Output bit 0
NOP                     ; Delay
NOP
NOP
CLK1
BSF     RB,SCL
MOVLW   1               ; Error code 1
BTFSC   RB,SCL          ; SCL locked low?
GOTO    BIT2            ; No.
BTFSS   FLAG,ERR1       ; Yes.
MOVWF   ERCODE          ; Save error code
BSF     FLAG,ERR1       ; Set error flag
BIT2
NOP
NOP
BCF     RB,SCL          ; Return SCL to low
RETLW   0
;
;END SUB
 PAGE
;
;
;-----------------------------------------------------------------------------
;       RECEIVE         DATA    subroutine
;-----------------------------------------------------------------------------
;       Input   :       None
;       Output  :       RXBUF = Receive 8-bit data
;-----------------------------------------------------------------------------
;
RX
MOVLW   .8              ; 8 bits of data
MOVWF   COUNT
CLRF    RXBUF
;
RXLP
RLF     RXBUF, F        ; Shift data to buffer
SKPC
BCF     RXBUF,0         ; carry ---> f(0)
SKPNC
BSF     RXBUF,0
CALL    BITIN
BTFSC   EEPROM,DI
BSF     RXBUF,0         ; Input bit =1
DECFSZ  COUNT, F        ; 8 bits?
GOTO    RXLP
BSF     EEPROM,DO       ; Set acknowledge bit = 1
CALL    BITOUT          ; to STOP further input
RETLW   0
;
;END SUB
;
;-----------------------------------------------------------------------------
;       TRANSMIT        DATA    subroutine
;-----------------------------------------------------------------------------
;       Input   :       TXBUF
;       Output  :       Data X'mitted to EEPROM device
;-----------------------------------------------------------------------------
;
TX
MOVLW   .8
MOVWF   COUNT
;
TXLP
BCF     EEPROM,DO       ; Shift data bit out.
BTFSC   TXBUF,7         ; If shifted bit = 0, data bit = 0

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:程序  PIC单片机单片机-工控设备 - PIC单片机