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