Untitled
unknown
plain_text
a year ago
2.4 kB
7
Indexable
#include <xc.h> #include <libpic30.h> #define SWITCH_NEXT PORTBbits.RB0 #define SWITCH_PREV PORTBbits.RB1 #define LEDS PORTA // Deklaracje funkcji dla podprogramów void program1(); void program2(); // Zmienna przechowująca aktualnie wybrany podprogram unsigned char currentProgram = 1; // Implementacja podprogramów void program1() { unsigned char counter = 0; while(1) { LEDS = counter; // Wyświetl wartość licznika na diodach LED counter++; if(counter == 0) // Jeśli licznik przekroczy wartość 255, wróć do zera break; } } void program2() { unsigned char counter = 255; while(1) { LEDS = counter; // Wyświetl wartość licznika na diodach LED counter--; if(counter == 255) // Jeśli licznik spadnie do zera, wróć do 255 break; } } int main(void) { // Konfiguracja przycisków i diod LED TRISA = 0x00; // Diod LED jako wyjścia TRISB = 0x03; // Przyciski jako wejścia, RB0 - switch_next, RB1 - switch_prev // Początkowe wywołanie pierwszego podprogramu program1(); while(1) { if(SWITCH_NEXT == 0) { // Jeśli przycisk przełączania w przód jest naciśnięty currentProgram++; // Zwiększ numer aktualnego podprogramu if(currentProgram > 2) // Jeśli przekroczono liczbę podprogramów, wróć do pierwszego currentProgram = 1; // Wywołaj aktualny podprogram if(currentProgram == 1) program1(); else if(currentProgram == 2) program2(); while(SWITCH_NEXT == 0); // Poczekaj aż przycisk zostanie zwolniony } else if(SWITCH_PREV == 0) { // Jeśli przycisk przełączania w tył jest naciśnięty currentProgram--; // Zmniejsz numer aktualnego podprogramu if(currentProgram < 1) // Jeśli przekroczono liczbę podprogramów, wróć do ostatniego currentProgram = 2; // Wywołaj aktualny podprogram if(currentProgram == 1) program1(); else if(currentProgram == 2) program2(); while(SWITCH_PREV == 0); // Poczekaj aż przycisk zostanie zwolniony } } return 0; }
Editor is loading...
Leave a Comment