Code:
	OSCCON  =  $7e  'Internal RC w/ I/Os
CMCON = 7      'comparators off
CVRCON = 0     'Vref Off
CCP1CON=0
T1CON  = 0
OSCTUNE=0
   
'*****************************************************************************
'DEFINEs
'*****************************************************************************
 
@ DEVICE INTRC_OSC
@ DEVICE MCLR_OFF
@ DEVICE PROTECT_OFF
DEFINE OSC 8
@ DEVICE CPD_OFF
@ DEVICE LVP_OFF
@ DEVICE BOD_OFF
@ DEVICE PWRT_OFF
@ DEVICE WDT_OFF
'*****************************************************************************
'ADC
DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50
'*****************************************************************************
'ADC parameters
ADCON1  =%10000000      'right justify 
ANSEL   =%00000110 
ADCON0  =%11000001     
'*****************************************************************************
INCLUDE "modedefs.bas" 
DEFINE debug_reg PORTA  
DEFINE debug_bit 1
DEFINE debug_baud 9600
DEFINE debug_mode 1
'*****************************************************************************
' variables
va       var word
tempe    var word
mem      var word
state    var byte
st       var word
ed       var word
ADDR     var word
m1       var word
m2       var word
m3       var word
m4       var word
slot     var byte
w        var byte
RA       var word              
x        var word
ps1      var word
ps2      var word
ps3      var word
ps4      var word
temp1   var tempe.highbyte
temp2   var tempe.lowbyte
rm con 8
ps1=1 
ps2=4 
ps3=7 
ps4=10 
p1a  con $10     
p1b  con $e20   
p2a  con $e2a 
p2b  con $1c3a 
p3a  con $1c44 
p3b  con $2a54 
p4a  con $2a5e 
p4b  con $386e 
'CLEAR
ctw CON $A0
'*****************************************************************************
PORTA=0
PORTB=0
TRISA=%00100101
TRISB=%00001111
'*****************************************************************************
'PINS
temp      var PORTA.0 
out       var PORTA.1 
volt      var PORTA.2 
a3        var PORTA.3 
jumper    var PORTA.4 
but1      var PORTA.5  'read
led2      var PORTA.6 
led1      var PORTA.7 
but2      var PORTB.0  ' record 
p1         var PORTB.1  
SCL       var PORTB.2  ' eeprom  
SDA       var PORTB.3  ' eeprom
green     var PORTB.4  ' bicolor led (green)
red       var PORTB.5  ' bicolor led (red)
led4      var PORTB.6  
led3      var PORTB.7
'*****************************************************************************
startmenu:
st=p1a
ed=p1b
if but1=1
While but1=1
Wend ' Wait here for Button to be released
gosub readmenu
endif
if but2=1
While but2=1
Wend ' Wait here for Button to be released
gosub recordmenu
endif
goto startmenu
'*****************************************************************************
readmem:
led2=1
led3=0
'debug "Reading Memory",13,10
'debug "Address: ",dec mem," start at ",dec st, " and finish at ",dec ed,13,10
'debug " Memory # ",dec mem,13,10
FOR ADDR =st TO ed
toggle led2
toggle led3
        I2CREAD SDA,SCL,CTW,ADDR.highbyte,addr.lowbyte,[tempe]
        PAUSE 10
        toggle green
debug dec3 tempe/10,",",dec1 tempe//10,13,10 
        ADDR=ADDR+1
        NEXT 
        green=1
        return
'*************************************************
FOR ADDR=st TO ed
     
   		adcin temp,va
 
tempe=(va*/5000 )>>2
        toggle red
        toggle green
        pause   418    ' calibration to get  1200  readings  ( 2 per second ) in 10 minutes   - 
        debug " Valor Gravado: ", dec tempe," Na posiçăo  ", dec ADDR, 13,10 
        I2CWRITE SDA,SCL,CTW,ADDR.highbyte,addr.lowbyte,[tempe]
        pause 10    
        ADDR=ADDR+1
        I2Cread SDA,SCL,CTW,mem.highbyte,mem.lowbyte,[x]
        pause 10
        'debug "Address: ",dec mem," started at ",dec st, "finish value ",dec x,13,10
        debug "  ",13,10
        if but1=1 then      'stop recording
        pause 600
        goto timing
        goto startmenu
        endif
        NEXT
        red=1
        return
*************************************************
 
				
Bookmarks