Hi mackrackit,

I've added the WRITE to EEPROM routine. Also @power_up the LCD was blank, so I
added an LCDOUT statement to the Power_up Subroutine which now displays the last stored
EEPROM value.

The whole thing works a treat I can see the merits of being able to write data to a non volatile memory, really,really useful. Thanks for stearing me through this one (as ever) very clever.


Code:
Total var word        ' Data variable
B1      VAR     BYTE  'Stored DATA address
clear                 'Re_set volatile memory to zero (Not EEPROM?)

MAIN:
gosub Power_up        'On Power_up GOTO READ EEPROM subroutine

Start:
if PORTA.5 = 0  then  count_up: 'If button pressed start counting
IF PORTA.5 = 1  THEN     Start: 'If button not pressed loop until it is
    
Count_up:                 'Button has been pressed
let Total = Total + 1     'Add one to value of Total taken from EEPROM
   
LCDOUT $FE,1              'Clear LCD
pause 150
LCDOUT $FE,$C0,DEC Total  'Display Total on LCD
Write B1, Total.HIGHBYTE  ' Write high byte of Total word to EEPROM
Write B1+1, Total.LOWBYTE ' Write low byte of Total word to next address
goto start:
 
Power_up:                 'Power_up subroutine
Read B1, Total.HIGHBYTE	  ' Read high byte
Read B1+1, Total.LOWBYTe  ' Read low byte  
LET Total = Total         'Set Total to value set in EEPROM Memory
LCDOUT $FE,1              'Clear LCD
pause 150                 'Give LCD a chance to Power_up
LCDOUT $FE,$C0,DEC Total  'At Power_up display Total on LCD from EEPROM
                          'Memory which has been stored since Power_down
return
Just going to pop around my bench to turn the power back on........Yep still working

Dave