Advertisement
Guest User

05

a guest
May 26th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.95 KB | None | 0 0
  1. int main(void)
  2. {
  3.     key.byte = 0xFF;   //inicjalizacja flag stanami nieaktywnymi
  4.     falling_slope.word = 0x0000; //inicjalizacja flag stanami nieaktywnymi
  5.     PORTHEX = 0xFF;              //wyłączenie wszystkich segmentów
  6.     PORTHEXA |= (_BV(HEXA0) | _BV(HEXA1) | _BV(HEXA2) | _BV(HEXA3)); //wyłączenie wszystkich wyświetlaczy
  7.     init_pins();                //inicjalizacja kierunkowości wyprowadzeń
  8.     init_TIMER0();              //inicjalizacja Timera0
  9.     sei();                      //globalne zezwolenie na przerwania
  10.     int licznik = 0; // licznik wcisnięć klawisza ENTER
  11.     int index = 0; // indeks edytowanej cyfry w tablicy
  12.     signed char save[4]; // zapis poprzedniego stanu tablicy
  13.     int edycja = 0; // zmienna zezwalająca na edycję cyfry
  14.     signed char pom; // zmienna pomocnicza do wykonania animacji
  15.     while (1)                   //nieskończona pętla
  16.     {
  17.         //modyfikacje poszczególnych cyfr pod wpływem wciśnięcia danego przycisku  
  18.  
  19.         if (kl_ENTER == 1) {
  20.  
  21.             kl_ENTER = 0;
  22.             if (licznik > 0) edycja = 1; // po pierwszym wcisnieciu ENTER zezwala na edycję
  23.             if (licznik > 1) index++; // przesunięcie edycji
  24.  
  25.             licznik++;
  26.         };
  27.         if (licznik >4) // osiągnięcie 5 krotnosci wciśnięcia ENTER
  28.         {
  29.             edycja = 0; // zerowanie liczników
  30.             licznik = 0;
  31.             index = 0;
  32.             for (int i = 0; i < 4; i++) // zapisanie stanu tablicy
  33.             {
  34.                 save[i] = cyfry[i];
  35.             }
  36.         };
  37.         if (kl_UP == 1 && edycja) { // warunek edycji musi byc spełniony -> edycja == 1
  38.             cyfry[index]++; //inkrementacja edytowanej cyfry
  39.             if (cyfry[index] > 9) cyfry[index] = 0;
  40.             kl_UP = 0;
  41.         };
  42.         if (kl_DOWN == 1 && edycja) {
  43.             cyfry[index]--;
  44.             if (cyfry[index] > 9) cyfry[index] = 0;
  45.             kl_DOWN = 0;
  46.         };
  47.        
  48.  
  49.         if (edycja) {
  50.             pom = cyfry[index]; // animacja edycji -> wykorzystanie zmiennej pomocniczej
  51.             cyfry[index] = ' '; // czysta komórka
  52.             display_7seg(); //wizualizacja cyfr
  53.             _delay_ms(0.5);
  54.             cyfry[index] = pom;
  55.         }
  56.         else
  57.         {
  58.             display_7seg(); //wizualizacja cyfr
  59.         }
  60.  
  61.  
  62.     };
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement