'**************************************************************** '* Name : UNTITLED.BAS * '* Author : Timothy Box * '* Notice : Copyright (c) 2005 TJB Systems Ltd * '* : All Rights Reserved * '* Date : 19/03/2005 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** #Disable BUSIN #DISABLE BUSOUT DIM BPF AS BYTE SYSTEM DIM GPR AS BYTE SYSTEM DIM PP1 AS BYTE SYSTEM DIM PP1H AS BYTE SYSTEM DIM PP3 AS BYTE SYSTEM DIM PP4 AS BYTE SYSTEM DIM i2c_control AS BYTE SYSTEM CLEAR i2c_control GOTO OVER_CODE I2C_PINSET1 MACRO num_byte 1, i2c_control ENDM I2C_PINSET2 MACRO num_byte 2, i2c_control ENDM I2C_PINSET3 MACRO num_byte 4, i2c_control ENDM ASM busin2 BSF BPF,4 BTFSS BPF,4 BUSIN BCF BPF,4 BTFSC BPF,5 GOTO $ + 5 BSF BPF,5 CALL i2c@start SKPNC GOTO bus@stp BCF BPF,2 bus@ina MOVLW 8 MOVWF PP1H CALL b@gb RLF PP1,f DECFSZ PP1H,f GOTO $ - 3 BTFSC BPF,2 GOTO $ + 8 BTFSC BPF,4 GOTO $ + 2 bus@ack CALL b@dal CALL b@ckh CALL b@ckl BTFSC BPF,4 CALL bus@stp CALL b@dah CLRC MOVFW PP1 GOTO i2c@fin busout2 BSF BPF,4 BTFSS BPF,4 BUSOUT BCF BPF,4 BTFSC BPF,6 GOTO $ + 6 ANDLW 254 MOVWF GPR BSF BPF,6 CLRC GOTO i2c@fin BTFSC BPF,7 GOTO $ + 7 MOVWF PP3 BSF BPF,7 CALL i2c@start SKPNC GOTO bus@stp MOVFW PP3 CALL b@wrtc SKPNC GOTO bus@stp BTFSS BPF,4 GOTO i2c@fin bus@stp CALL b@dal CALL b@ckh BCF BPF,6 BCF BPF,7 BCF BPF,5 BCF BPF,2 CALL b@dah i2c@fin BSF PP4,0 SKPC BCF PP4,0 GOTO i@nt i2c@start CALL bus@strt MOVFW GPR BTFSC BPF,5 IORLW 1 b@wrtc MOVWF PP1 MOVLW 8 MOVWF PP1H RLF PP1,f CALL b@dah SKPNC GOTO $ + 2 CALL b@dal CALL b@ckh CALL b@ckl DECFSZ PP1H,f GOTO $ - 8 CALL b@dah b@gb CALL b@ckh GOTO $ + 1 CLRWDT CLRC #IFDEF SDA_PORT2 BTFSC i2c_control,1 GOTO b@sp2 #ENDIF #IFDEF SDA_PORT3 BTFSC i2c_control,2 GOTO b@sp3 #ENDIF b@sp1 BTFSC SDA_PORT1,SDA_PIN1 SETC GOTO b@spend b@sp2 #IFDEF SDA_PORT2 BTFSC SDA_PORT2,SDA_PIN2 SETC GOTO b@spend #ENDIF b@sp3 #IFDEF SDA_PORT3 BTFSC SDA_PORT3,SDA_PIN3 SETC #ENDIF b@spend CALL b@ckl RETURN bus@strt CALL b@dah CALL b@ckh CALL b@dal b@ckl #IFDEF SDA_PORT2 BTFSC i2c_control,1 GOTO b@ckl2 #ENDIF #IFDEF SDA_PORT3 BTFSC i2c_control,2 GOTO b@ckl3 #ENDIF BCF SCL_PORT1,SCL_PIN1 BSF 3,5 BCF SCL_PORT1,SCL_PIN1 GOTO b@rst b@ckl2 #IFDEF SDA_PORT2 BCF SCL_PORT2,SCL_PIN2 BSF 3,5 BCF SCL_PORT2,SCL_PIN2 GOTO b@rst #ENDIF b@ckl3 #IFDEF SDA_PORT3 BCF SCL_PORT3,SCL_PIN3 BSF 3,5 BCF SCL_PORT3,SCL_PIN3 GOTO b@rst #ENDIF b@ckh #IFDEF SDA_PORT2 BTFSC i2c_control,1 GOTO b@ckh2 #ENDIF #IFDEF SDA_PORT3 BTFSC i2c_control,2 GOTO b@ckh3 #ENDIF BSF 3,5 BSF SCL_PORT1,SCL_PIN1 GOTO b@rst b@ckh2 #IFDEF SDA_PORT2 BSF 3,5 BSF SCL_PORT2,SCL_PIN2 GOTO b@rst #ENDIF b@ckh3 #IFDEF SDA_PORT3 BSF 3,5 BSF SCL_PORT3,SCL_PIN3 GOTO b@rst #ENDIF b@dah #IFDEF SDA_PORT2 BTFSC i2c_control,1 GOTO b@dah2 #ENDIF #IFDEF SDA_PORT3 BTFSC i2c_control,2 GOTO b@dah3 #ENDIF BSF 3,5 BSF SDA_PORT1,SDA_PIN1 GOTO b@rst b@dah2 #IFDEF SDA_PORT2 BSF 3,5 BSF SDA_PORT2,SDA_PIN2 GOTO b@rst #ENDIF b@dah3 #IFDEF SDA_PORT3 BSF 3,5 BSF SDA_PORT3,SDA_PIN3 GOTO b@rst #ENDIF b@dal #IFDEF SDA_PORT2 BTFSC i2c_control,1 GOTO b@dal2 #ENDIF #IFDEF SDA_PORT3 BTFSC i2c_control,2 GOTO b@dal3 #ENDIF BCF SDA_PORT1,SDA_PIN1 BSF 3,5 BCF SDA_PORT1,SDA_PIN1 GOTO b@slw b@dal2 #IFDEF SDA_PORT2 BCF SDA_PORT2,SDA_PIN2 BSF 3,5 BCF SDA_PORT2,SDA_PIN2 GOTO b@slw #ENDIF b@dal3 #IFDEF SDA_PORT3 BCF SDA_PORT3,SDA_PIN3 BSF 3,5 BCF SDA_PORT3,SDA_PIN3 #ENDIF b@slw b@rst BCF 3,5 RETURN ENDASM OVER_CODE: