I need to use the internal eeprom to store three variables that are set up on a serial menu.
The serial menu is available at boot up. I check the content of the eeprom with the read command in my menu.
That is right all the time. When I shut down the board, I usually lose the data and it gives me back crap. Any Ideas?

Thanks,

Rick

Code:
' SOURCE CODE Version A4 – PIC18F26k80
' 4 Mhz


DEFINE OSC 4        'tells compiler clock speed
OSCCON = 011010  'tells pic clock speed


DEFINE ADC_BITS 12  'tells software / hardware to setup the ADC
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
ADCON2.7 = 1
ten con 10
DEFINE HSER2_RCSTA 90h
define HSER2_TXSTA 20h
Define HSER2_BAUD 2400
define HSER2_SPBRG 25
define HSER2_SPBRGH 0
define HSER2_CLROERR 1


TRISC.1 = 0 'led pin 9 - yellow
TRISC.7 = 1
TRISB.4 = 0 'pin 22 heater 1
TRISA = 255 'set pins as analog inputs


a1 VAR Word: a2 VAR Word: a3 Var word: a4 var word: a5 var word: a6 var word: a7 var word: a8 var word: a9 var word: a10 var word
b1 VAR Word: b2 VAR Word: b3 Var word: b4 var word: b5 var word: b6 var word: b7 var word: b8 var word: b9 var word: b10 var word
af var word: bf var word
mVT var word: mVS var word
ET var word: ES var word
rx var word: i var word: j var long: k var word: d0 var long: d1 var long: d2 var word: d3 var word: d4 var word: d5 var word: d6 var word
sernum var long: calcon var long: senres var long
dat var word[10]


High PORTB.4    ' Pin 22 - heater 
High PORTC.1    ' Pin 9 yellow LED
pause 1000
'HSerOUT ["Ready ", 13, 10]


HSERIN 1000, mainloop, [rx]
if rx = 120 then
  HSerOUT [" Ca Mode Activated", 13, 10, 10,10,10,10]
  RCSTA.4 = 0
  RCSTA.4 = 1
  RCSTA.4 = 0
  RCSTA.4 = 1
  goto menue
endif
pause 5000
senres = 0
calcon = 0
sernum = 0
read 40, long sernum 
read 20, long calcon
read 0, long senres
hserout[" Sen Res = ",dec senres,10,13]   
hserout[" CalCon = ",dec calcon,10,13]
hserout[" Ser # = ",dec sernum,10,13]


mainloop:
toggle PORTC.1 'Pin 9 yellow LED
pause 499
ADCIN 3,b10                              'Read sensor on pin 3 ADC3
b1=b2: b2=b3: b3=b4: b4=b5: b5=b6: b6=b7: b7=b8: b8=b9: b9=b10
bf=(b10+b9+b8+b7+b6+b5+b4+b3+b2+b1)/10   'avarage
mVS = (bf/4095)*5                        'convert to PPM
ES = mVS
Pause 500
'sample #, raw temperture, temp degrees C, on time, offtime, sensor, boxcar sensor, PPM 
HSerOUT [dec sernum, " ", dec ET, " ", dec ES, 13, 10]
pause 1000
GoTo mainloop


menue:
  pause 1000
  HSerOUT [" Send C for calabrate or R to read back, D when done.", 13, 10]
  HSERIN [rx]
  i = 0
  if rx = 82 then
    HSerOUT [" Read", 13,10]
    pause 1000
    senres = 0
    calcon = 0
    sernum = 0
    read 40, long sernum 
    read 20, long calcon
    read 0, long senres
    HSerOUT [" Serial # =", dec sernum, " Calibration Number =", dec calcon, " Sensor resistance =", dec senres,   13,10]
    hserout [" :)", 13,10]
  elseif rx = 68 then
    HSerOUT [" Done", 13,10]
    pause 1000
    goto mainloop
  elseif rx = 67 then
    HSerOUT [" Calibralte ", 13,10,10,10]
    HSerOUT [" Send  Resistance: (Like 999999, Max Vaue)",13,10]
    d5 = 0: d4 = 0: d3 = 0: d2 = 0: d1 = 0: d0 = 0
    for i = 0 to 10 step 1
      HSERIN [rx]
      HSerOUT [rx]
      dat[i] = rx
      if rx = 13 then
         j = 0
        if i = 6 then
             'hserout[" 6 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]: d5 = dat[5]
             d0 = (d0-48)*100000
             d1 = (d1-48)*10000
             d2 = (d2-48)*1000
             d3 = (d3-48)*100
             d4 = (d4-48)*10
             d5 = (d5-48)
             j = d0+d1+d2+d3+d4+d5
        elseif i = 5 then
             'hserout[" 5 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]
             d0 = (d0-48)*10000
             d1 = (d1-48)*1000
             d2 = (d2-48)*100
             d3 = (d3-48)*10
             d4 = (d4-48)
             j = d0+d1+d2+d3+d4
        elseif i = 4 then
             'hserout[" 4 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]
             d0 = (d0-48)*1000
             d1 = (d1-48)*100
             d2 = (d2-48)*10
             d3 = (d3-48)
             j = d0+d1+d2+d3
        elseif i = 3 then
             'hserout[" 3 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]
             d0 = (d0-48)*100
             d1 = (d1-48)*10
             d2 = (d2-48)
             j = d0+d1+d2
        elseif i = 2 then
             'hserout[" 2 ",10]
             d0 = dat[0]: d1 = dat[1]
             d0 = (d0-48)*10
             d1 =  d1-48
             j = d0+d1
        elseif i = 1 then
             'hserout[" 1 ",10]
             d0 = dat[0]
             j = d0-48 
        endif
        i = 11
        hserout[" j = ",dec j,10,13]
        senres = j
        write 0, long senres
        write 0, long senres
      endif
    next i
    pause 1500
    HSerOUT [" Send Ca con: (Ex 9999.99, Max Value)"]
    d5 = 0: d4 = 0: d3 = 0: d2 = 0: d1 = 0: d0 = 0
    for i = 0 to 10 step 1
      HSERIN [rx]
      HSerOUT [rx]
      dat[i] = rx
      if rx = 13 then
        j = 0
        if i = 6 then
             'hserout[" 6 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]: d5 = dat[5]
             d0 = (d0-48)*100000
             d1 = (d1-48)*10000
             d2 = (d2-48)*1000
             d3 = (d3-48)*100
             d4 = (d4-48)*10
             d5 = (d5-48)
             j = d0'+d1+d2+d3+d4+d5
        elseif i = 5 then
            ' hserout[" 5 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]
             d0 = (d0-48)*10000
             d1 = (d1-48)*1000
             d2 = (d2-48)*100
             d3 = (d3-48)*10
             d4 = (d4-48)
             j = d0+d1+d2+d3+d4
        elseif i = 4 then
             'hserout[" 4 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]
             d0 = (d0-48)*1000
             d1 = (d1-48)*100
             d2 = (d2-48)*10
             d3 = (d3-48)
             j = d0+d1+d2+d3
        elseif i = 3 then
             'hserout[" 3 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]
             d0 = (d0-48)*100
             d1 = (d1-48)*10
             d2 = (d2-48)
             j = d0+d1+d2
        elseif i = 2 then
             'hserout[" 2 ",10]
             d0 = dat[0]: d1 = dat[1]
             d0 = (d0-48)*10
             d1 =  d1-48
             j = d0+d1
        elseif i = 1 then
             'hserout[" 1 ",10]
             d0 = dat[0]
             j = d0-48 
        endif
        i = 11
        hserout[" j = ",dec j,10,13]
        senres = j
        j = 0
        write 20, long senres
        write 20, long senres
      endif
    next i
    pause 1500
    HSerOUT [" Send serial number: (Ex 123456)"]
    d5 = 0: d4 = 0: d3 = 0: d2 = 0: d1 = 0: d0 = 0
    for i = 0 to 10 step 1
      HSERIN [rx]
      HSerOUT [rx]
      dat[i] = rx
      if rx = 13 then
        j = 0
        if i = 6 then
             'hserout[" 6 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]: d5 = dat[5]
             d0 = (d0-48)*100000
             d1 = (d1-48)*10000
             d2 = (d2-48)*1000
             d3 = (d3-48)*100
             d4 = (d4-48)*10
             d5 = (d5-48)
             j = d0+d1+d2+d3+d4+d5
        elseif i = 5 then
             'hserout[" 5 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]: d4 = dat[4]
             d0 = (d0-48)*10000
             d1 = (d1-48)*1000
             d2 = (d2-48)*100
             d3 = (d3-48)*10
             d4 = (d4-48)
             j = d0+d1+d2+d3+d4
        elseif i = 4 then
            ' hserout[" 4 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]: d3 = dat[3]
             d0 = (d0-48)*1000
             d1 = (d1-48)*100
             d2 = (d2-48)*10
             d3 = (d3-48)
             j = d0+d1+d2+d3
        elseif i = 3 then
             'hserout[" 3 ",10]
             d0 = dat[0]: d1 = dat[1]: d2 = dat[2]
             d0 = (d0-48)*100
             d1 = (d1-48)*10
             d2 = (d2-48)
             j = d0+d1+d2
        elseif i = 2 then
             'hserout[" 2 ",10]
             d0 = dat[0]: d1 = dat[1]
             d0 = (d0-48)*10
             d1 =  d1-48
             j = d0+d1
        elseif i = 1 then
             'hserout[" 1 ",10]
             d0 = dat[0]
             j = d0-48 
        endif
        i = 11
        hserout[" j = ",dec j,10,13]
        sernum = j
        j = 0
        write 40, long sernum
        write 40, long sernum
        read 40, long j
        hserout[" j = ",dec j,10,13]
      endif
    next i
    pause 3000
    HSerOUT [" Done!", 13,10,10,10]
  else
    HSerOUT [" Not Valid", 13,10]
    pause 1000
  endif
goto menue