#include "IO-reg.h" #include "Vectors.h" #include "intr6811.h" #include "menu.h" #include "LCD.h" #include "X25128.h" #include "ds1820.h" char ms; char secs; char mins; char hours; char days; char loggfrekvens[2]; char loggf_address[2]; char loggcount; char temp[1]; char buttons; char button_count; void init_clock(void){ int tmp; char nbr; TCTL1 &= ~0xC0; //OM2 och OL2 ska vara noll TMSK1 |= 0x40; //OC2 ska vara ett nbr = ds1820_nbr_of_thermos(); tmp = 1 + (8 + 14 + 4*4) * nbr + 2 + 1; loggf_address[0] = tmp/256; loggf_address[1] = tmp%256; loggcount = 0; X25128_read_data(loggfrekvens, 2, loggf_address); } interrupt void OC2_interrupt(void){ char i; char nbr; if(ms < 100 - 1){ ms++; if(loggfrekvens[0] == 1) loggcount--; } else{ ms = 0; menu_update(); temp[0] = loggcount; X25128_read_data(loggfrekvens, 2, loggf_address); if(secs < 60 - 1){ secs++; if(loggfrekvens[0] == 1) loggcount--; else if(loggfrekvens[0] == 2) loggcount--; } else{ secs = 0; if(mins < 60 - 1){ mins++; if(loggfrekvens[0] == 2) loggcount--; else if(loggfrekvens[0] == 3) loggcount--; } else{ mins = 0; if(hours < 24 - 1){ hours++; if(loggfrekvens[0] == 3) loggcount--; else if(loggfrekvens[0] == 4) loggcount--; } else{ hours = 0; days++; if(loggfrekvens[0] == 4) loggcount--; else if(loggfrekvens[0] == 5) loggcount--; } } } } if(loggcount == 0){ ds1820_logg_values(); loggcount = loggfrekvens[1]; } if(!(PORTE & 0x01)){ if(!(buttons & 0x01)){ menu_next_main_menu(); buttons |= 0x01; button_count = 50; } button_count--; if(button_count == 0) buttons &= ~0x01; } else if(!(PORTE & 0x02)){ if(!(buttons & 0x02)){ menu_last_main_menu(); buttons |= 0x02; button_count = 50; } button_count--; if(button_count == 0) buttons &= ~0x02; } else if(!(PORTE & 0x04)){ if(!(buttons & 0x04)){ menu_next_sub_menu(); buttons |= 0x04; button_count = 50; } button_count--; if(button_count == 0) buttons &= ~0x04; } else if(!(PORTE & 0x08)){ if(!(buttons & 0x08)){ menu_last_sub_menu(); buttons |= 0x08; button_count = 50; } button_count--; if(button_count == 0) buttons &= ~0x08; } else if(!(PORTE & 0x80)){ i = menu_get_current_main_menu(); if(i != 0xFF){ if(!(buttons & 0x80)){ X25128_delete_min_max_values(i); buttons |= 0x80; button_count = 100; } LCD_write_string(0x00, " "); LCD_write_string(0x0F, " "); LCD_write_string(0x40, " Raderar min/max"); button_count--; if(button_count == 0){ LCD_write_string(0x00, " Raderar alla "); LCD_write_string(0x40, " min/max-varden "); LCD_write_character(0x4A, 0xE1); //ä buttons &= ~0x02; nbr = ds1820_nbr_of_thermos(); for(i=0; i