Untitled
unknown
plain_text
2 years ago
2.4 kB
8
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