Не получается записать переменную в EEPROM

Не могу записать значение переменной в память EEPROM, использовал МК mega8

..

  1. ......
  2. #include
  3. #asm
  4. .equ __lcd_port=0x12
  5. #endasm
  6. .......................
  7. ...............
  8. eeprom float a=0;
  9. ....................
  10. ......................
  11. void main(void)
  12. {
  13.  
  14. char lcd_buffer2[15];
  15. char lcd_buffer3[15];
  16. float m1=0;
  17. float menu=0;
  18. ......................
  19. ...................
  20.  
  21. if (m1==0)
  22.  
  23. while(1)
  24. {
  25.  
  26. lcd_gotoxy(0,0);
  27. lcd_putsf("Vvedite chislo");
  28. lcd_gotoxy(0,1);
  29. lcd_putsf("Chislo=:");
  30. sprintf(lcd_buffer2,"%4.0f ",m1);
  31. lcd_gotoxy(10,1);
  32. lcd_puts(lcd_buffer2);
  33.  
  34. if (PINB.0==0)
  35.  
  36. {
  37. menu=menu+1;
  38. delay_ms(200);
  39.  
  40. if (menu==1);
  41.  
  42. {
  43. m1=m1+5;
  44.  
  45. m1=a; ???????????? как правильно
  46. m1==a; ?????????? и иак и так не работает?
  47. а==m1
  48. .......................
  49. ........................

Как в данном случае записать переменную m1 в память EEPROM, Все перепробывал не получается, при нажатии на кнопку устройство не реагирут. Мне необходимо что бы значение
переменной m1 сохранилось в EEPROM. И при следующем запуске считала значение не m1=0, а m1=5 или m1=10 - зависит от количества нажатий на кнопку. Может как то по другому можно написать данный код???? Подскажите пожалуста!!!

Ммм, может так с типами

Ммм, может так с типами что-то не то. Попробуй сделать так:
a=3.14159;
И посмотри что получиться.

float - это переменная из 6-ти байт, можно попробовать ее побайтно записать.

Также можно схитрить и не использовать float, например нам нужна точность до одной сотой. И будем хранить значение с плавающей запятой и переменной типа int.
Например:
float int
3.14 = 314
12.12= 1212

Т.е. просто будем множить на 100 и помнить, что у нас храниться умноженное на 100 значение. Это здорово экономит память МК.