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