|
; this route is used I2C EESROM write and ; read; addressing mode is indirect START BSF RB_C,SDA NOP MOVFW RB_C TRIS RB BSF RB,SCL NOP BTFSS RB,SDA GOTO ^-1 BCF RB_C,SDA NOP MOVFW RB_C TRIS RB NOP BCF RB,SDA NOP NOP NOP NOP BCF RB,SCL RETLW 0H STOP BCF RB_C,SDA NOP MOVFW RB_C TRIS RB BCF RB,SDA NOP NOP NOP BSF RB,SCL NOP NOP NOP NOP BSF RB,SDA RETLW 0 TX MOVLW 08H MOVWF LOP1 MOVFW RB_C ANDLW 7FH TRIS RB TXLP BCF RB,SCL BTFSC F0,7 GOTO ^+3 BCF RB,SDA GOTO ^+2 BSF RB,SDA BCF 3,0 RLF F0 NOP BSF RB,SCL NOP NOP NOP DECFSZ LOP1 GOTO TXLP BCF RB,SCL ACKG BSF RB_C,SDA NOP MOVFW RB_C TRIS RB BSF RB,SCL NOP NOP NOP BTFSC RB,SDA GOTO ACKG NOP BCF RB,SCL RETLW 0 RX MOVLW 08H MOVWF LOP1 BSF RB_C,SDA CLRF F0 MOVFW RB_C TRIS RB RXLP BCF RB,SCL BCF 3,0 RLF F0 NOP BSF RB,SCL NOP NOP BTFSC RB,SDA BSF F0,0 DECFSZ LOP1 GOTO RXLP BCF RB,SCL BTFSC MARK1,LAST RETLW 0 MOVFW RB_C ANDLW 7FH TRIS RB BCF RB,SDA NOP NOP NOP BSF RB,SCL NOP BCF RB,SCL RETLW 0 RD24XX BCF MARK1,LAST MOVLW 03H MOVWF LOP2 CALL START MOVLW SLAVE MOVWF F0 CALL TX
MOVFW READ_ADD MOVWF F0 CALL TX CALL START
MOVLW SLAVE MOVWF F0 BSF F0,0 CALL TX RXN INCF FSR BTFSS MARK1,READ BSF MARK1,LAST CALL RX BTFSC MARK1,LAST GOTO STOP DECF LOP2 MOVFW LOP2 XORLW 01H BTFSS 3,2 GOTO RXN BSF MARK1,LAST GOTO RXN WR24XX MOVLW 03H MOVWF LOP2 CALL START MOVLW SLAVE MOVWF F0 CALL TX
MOVFW WRITE_ADD MOVWF F0 CALL TX WRITN INCF FSR CALL TX BTFSS MARK1,WRITE GOTO ^+3 DECFSZ LOP2 GOTO WRITN GOTO STOP |