Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main(void)
- {
- key.byte = 0xFF; //inicjalizacja flag stanami nieaktywnymi
- falling_slope.word = 0x0000; //inicjalizacja flag stanami nieaktywnymi
- PORTHEX = 0xFF; //wyłączenie wszystkich segmentów
- PORTHEXA |= (_BV(HEXA0) | _BV(HEXA1) | _BV(HEXA2) | _BV(HEXA3)); //wyłączenie wszystkich wyświetlaczy
- init_pins(); //inicjalizacja kierunkowości wyprowadzeń
- init_TIMER0(); //inicjalizacja Timera0
- sei(); //globalne zezwolenie na przerwania
- int licznik = 0; // licznik wcisnięć klawisza ENTER
- int index = 0; // indeks edytowanej cyfry w tablicy
- signed char save[4]; // zapis poprzedniego stanu tablicy
- int edycja = 0; // zmienna zezwalająca na edycję cyfry
- signed char pom; // zmienna pomocnicza do wykonania animacji
- while (1) //nieskończona pętla
- {
- //modyfikacje poszczególnych cyfr pod wpływem wciśnięcia danego przycisku
- if (kl_ENTER == 1) {
- kl_ENTER = 0;
- if (licznik > 0) edycja = 1; // po pierwszym wcisnieciu ENTER zezwala na edycję
- if (licznik > 1) index++; // przesunięcie edycji
- licznik++;
- };
- if (licznik >4) // osiągnięcie 5 krotnosci wciśnięcia ENTER
- {
- edycja = 0; // zerowanie liczników
- licznik = 0;
- index = 0;
- for (int i = 0; i < 4; i++) // zapisanie stanu tablicy
- {
- save[i] = cyfry[i];
- }
- };
- if (kl_UP == 1 && edycja) { // warunek edycji musi byc spełniony -> edycja == 1
- cyfry[index]++; //inkrementacja edytowanej cyfry
- if (cyfry[index] > 9) cyfry[index] = 0;
- kl_UP = 0;
- };
- if (kl_DOWN == 1 && edycja) {
- cyfry[index]--;
- if (cyfry[index] > 9) cyfry[index] = 0;
- kl_DOWN = 0;
- };
- if (edycja) {
- pom = cyfry[index]; // animacja edycji -> wykorzystanie zmiennej pomocniczej
- cyfry[index] = ' '; // czysta komórka
- display_7seg(); //wizualizacja cyfr
- _delay_ms(0.5);
- cyfry[index] = pom;
- }
- else
- {
- display_7seg(); //wizualizacja cyfr
- }
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement