Ken,
Make sure you change BOTH of the "Y=Y+1" statements to "Y=Y+2"
I have verified your code works if you change both. Here is my version of your code. I've trimmed it down, modified the output methods, and generated the temps without the ADC. But your will notice all the WRITE and READ statements are the same. I output the values in hex, which allowed be to then read the EEPROM as an additional way to verify the data.
Code:
TEMPF VAR WORD
TEMPC VAR WORD
Y VAR BYTE
X VAR BYTE
Z VAR BYTE
TEMPF1 VAR WORD
TEMPF2 VAR WORD
START:
PAUSE 2000
Y = 0
for x = 1 to 5
WRITE_temp: 'READ THE THERMOCOUPLE AND SAVE IT
TempC = 1 << Y
TempF = (TempC*18)/10+32
LCDOUT $FE, $80, HEX4 TempF
pause 30
' READ THIS TEMPERATURE
HSEROUT ["TEMP= ",HEX4 TEMPF, 13]
'
' NOW WRITE IT TO EEPROM LOCATION IN VARIABLE Y
WRITE Y,WORD TEMPF
'
' IMMEDIATELY READ IT BACK - - THIS VALUE IS READ CORRECTLY ALL 5 TIMES
'
READ Y, WORD TEMPF1
HSEROUT ["READ TEMP= ",HEX4 TEMPF, 13]
'******************************
' NOW READ IT BACK AND WRITE TO A DIFFERENT VARIABLE ( TEMPF1)
' THIS READ ALSO WORKS CORRECTLY ALL 5 TIMES
'*****************************
READ Y, WORD TEMPF1
HSEROUT ["READ1 TEMPF1= ",HEX4 TEMPF1, 13]
LCDOUT $FE, $C0,"X = ",dec x
LCDOUT " Y = ",dec Y
Y = Y + 2
next x
PAUSE 3000
HSEROUT ["-----------------------------", 13]
'**********************************
' NOW TRY TO READ IT AGAIN, USING ANY VARIABLE DOES NOT MATTER , TEMPF1, ETC
' THE ONLY CORRECT READ HERE IS THE LAST ONE, (Y = 4)
'ALL OTHERS ARE INCORRECT - - VERY HIGH VALUES - - 23375, 22860, ETC
'*****************************************************************
Y = 0 'RESET THE EEPROM ADDRESS POINTER TO 0
FOR X = 1 TO 5
READ Y, WORD TEMPF2 ' USING VARIABLE TEMPF2 HERE, ANY OTHER VARIABLES
' DO NOT WORK EITHER
HSEROUT ["READ2 TEMPF2= ",HEX4 TEMPF2,13]
Y = Y + 2
next x
HSEROUT ["Done", 13]
DONE:
pause 1000
GOTO DONE
END
Bookmarks