Perhaps the record_address variable needs to be looked at. I am not so sure, but your enter routine seems to read from eeprom address base 7 onwards
ENTER1: read 7,ee7:read 8,ee8:read 9,ee9:read 10,ee10:read 11,ee11:read 12,ee12:read 13,ee13:read 14,ee14:read 15,ee15:read 16,ee16
read 17,ee17:read 18,ee18:read 19,ee19:read 20,ee10:read 21,ee21:read 22,ee22:read 23,ee23:read 24,ee24:read 25,ee25:read 26,ee26
read 27,ee27:read 28,ee28:read 29,ee29:read 30,ee10:read 31,ee31:read 32,ee32:read 33,ee33:read 34,ee34:read 35,ee35:read 36,ee36
read 37,ee37:read 38,ee38:read 39,ee39:read 40,ee10:read 41,ee41:read 42,ee42:read 43,ee43:read 44,ee44:read 45,ee45:read 46,ee46
read 47,ee47:read 48,ee48:read 49,ee49:read 50,ee50:read 51,ee51:read 52,ee52:read 53,ee53:read 54,ee54:read 55,ee55


You seem to read/write from address base 0 using this computation

record_address = channel_number * 7
read record_address + 1, h
read record_address + 2, t
read record_address + 3, o

Hope this helps

Jerson