'*************************************************************************** '* Name :i2c_scan_18.pbp * '* Author : richard * '* Notice : * '* : * '* Date : 10/11/2017 * '* Version : 1.0 * '* Notes : o * '* : pic18f26k22 easypic7 eprom addr =$a2 a0 when high ; best to bend pin 1 out of socket for normal use '*************************************************************************** #CONFIG CONFIG FOSC = INTIO67 CONFIG PLLCFG = ON CONFIG PRICLKEN = OFF CONFIG FCMEN = OFF CONFIG IESO = OFF CONFIG PWRTEN = OFF CONFIG BOREN = SBORDIS CONFIG BORV = 190 CONFIG WDTEN = ON CONFIG WDTPS = 32768 CONFIG CCP2MX = PORTC1 CONFIG PBADEN = OFF CONFIG CCP3MX = PORTB5 CONFIG HFOFST = ON CONFIG T3CMX = PORTC0 CONFIG P2BMX = PORTB5 CONFIG MCLRE = EXTMCLR CONFIG STVREN = ON CONFIG LVP = OFF CONFIG XINST = OFF CONFIG DEBUG = OFF CONFIG CP0 = OFF CONFIG CP1 = OFF CONFIG CP2 = OFF CONFIG CP3 = OFF CONFIG CPB = OFF CONFIG CPD = OFF CONFIG WRT0 = OFF CONFIG WRT1 = OFF CONFIG WRT2 = OFF CONFIG WRT3 = OFF CONFIG WRTC = OFF CONFIG WRTB = OFF CONFIG WRTD = OFF CONFIG EBTR0 = OFF CONFIG EBTR1 = OFF CONFIG EBTR2 = OFF CONFIG EBTR3 = OFF CONFIG EBTRB = OFF #ENDCONFIG DEFINE I2C_SLOW 1 define OSC 64 OSCCON = %11110000 ANSELb = 0 ANSELA = 0 ANSELC = 0 a Var Byte b Var word c Var Byte d Var word addr Var byte ar Var Byte br Var word cr Var Byte dr Var word buff var byte[10] DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 5 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 4 Define LCD_Bits 4 DEFINE LCD_LINES 2 Define LCD_Commandus 2000 Define LCD_DATAUS 50 SCL var Portc.3 SDA var Portc.4 pause 500 LCDOUT $FE,1,"scanning" gosub scani2c pause 500 LCDOUT $FE,1 addr = 0 a=22 b=555 c=8 d=777 I2cwrite Sda,SCL,$a0,addr,[a,b,c,d] pause 50 a=11 b=999 c=16 d=888 addr=240 I2cwrite Sda,SCL,$a2,addr,[a,b,c,d] addr=0 pause 50 I2CREAD Sda,SCL,$a0,addr,[ar,br,cr,dr] LCDOUT $fe,$c0,#ar," ",#br," ",#cr," ",#dr addr=240 I2CREAD Sda,SCL,$a2,addr,[ar,br,cr,dr] LCDOUT $fe,$94,#ar," ",#br," ",#cr," ",#dr end scani2c: addr=0 for a = $02 to $fe step 2 I2Cwrite SDA,SCL,a,addr,["123",0],nak ARRAYWRITE buff, [ "ack @",hex2 a ,0] LCDOUT $fe,$c0,str buff pause 50 I2Cread SDA,SCL,a,addr,[str buff\4] LCDOUT $fe,$94,"read ",str buff pause 500 nak: Next a return