ME Labs, Inc.
719-520-5323
 
Home:
  Developer Resources:

Programming Clues
    Sample Programs
   
    PICBASIC PRO™
Compiler Manual
    PICBASIC™ Compiler
Manual
    Serin2/Serout2 Modes
    ASCII Character Set
    Number Conversion
    Floating Point
Routines
    PBP Debug Monitor
    Articles and Tutorials

Hardware Clues
    Parts / Vendor List
    PICPROTO™ Boards
    LAB-X1 Docs
    LAB-X2 Docs
    LAB-X20 Docs
    LAB-X3 Docs
    LAB-X4 Docs
    LAB-XUSB Docs
    LAB-XT Docs
     
 

ME Labs, Inc. | 1-719-520-5323 | Example Program - I2CXU.pbp

PICBASIC PRO program to read and write to I2C SEEPROMs Writes to the first 16 locations of an external serial EEPROM. Reads first 16 locations back and send to LCD repeatedly. Note: for SEEPROMs with byte-sized address.
' Name        : I2CXU.pbp
' Compiler    : PICBASIC PRO Compiler 2.6
' Assembler   : MPASM
' Target PIC  : PIC18F4550 or similar type
' Hardware    : LAB-XUSB Experimenter Board
' Oscillator  : 20MHz external
' Keywords    : I2CREAD, I2CWRITE, LCDOUT
' Description : PICBASIC PRO program to read and write to I2C SEEPROMs
' Writes to the first 16 locations of an external serial EEPROM.
' Reads first 16 locations back and send to LCD repeatedly.
' Note: for SEEPROMs with byte-sized address.
'

' Define LOADER_USED to allow use of the boot loader.
' This will not affect normal program operation.
Define LOADER_USED 1

' RESET_ORG can be set to move the BASIC program out of the way
' of any boot loader running from location 0, such as the
' Microchip USB boot loader
'Define RESET_ORG 800h

Define OSC 48      ' Core is running at 48MHz

' Define LCD pins
Define LCD_DREG  PORTD
Define LCD_DBIT  4
Define LCD_RSREG PORTE
Define LCD_RSBIT 0
Define LCD_EREG  PORTE
Define LCD_EBIT  1

SDA Var PORTA.4   ' Data pin
SCL Var PORTA.5   ' Clock pin
B0  Var Byte      ' Address
B1  Var Byte      ' Data 1
B2  Var Byte      ' Data 2

   ADCON1 = 15    ' Set PORTA and PORTE to digital
   Low PORTE.2    ' LCD R/W line low (W)
   Pause 100      ' Wait for LCD to start up

   For B0 = 0 To 15     ' Loop 16 times
     B1 = B0 + 100      ' B1 is data for SEEPROM
     I2CWRITE SDA, SCL, $A0, B0, [B1]   ' Write each location
     Pause 10   ' Delay 10ms after each write
   Next B0

mainloop:
   For B0 = 0 To 15 Step 2 ' Loop 8 times
     I2CREAD SDA, SCL, $A0, B0, [B1, B2] ' Read 2 locations in a row
     Lcdout $fe, 1, #B0, ": ", #B1, " ", #B2, " " ' Display 2 locations
     Pause 1000
   Next B0
   Goto mainloop

   End

           

Download the program file.