Chciałbym zrobić licznik z wyświetlaczem LED (2 cyfry) w ramach takiej swojej "praktyki" w programowaniu µC, i mam takie pytanie:
Czy można użyć TIMERA w programie żeby odbywał się "poza" funkcją main? Nie wiem jak to nazwać... że w TIMER'ze dzieje się wyświetlanie liczb (ze zmiennych umieszczonych w funkcji main) z częstotliwością ja wiem.. niech będzie 50Hz.
Tylko czy to się wykonuje osobnie od funkcji main?
Po prostu Timer sobie a main sobie.
Schemat:
#define'y
-
-
-
timer (wyświetlanie liczb ze zmiennych)
-
-
-
-
main (manipulacja zmiennymi np. przycisk)
Mój obedny program na 1 Cyfrę:
Czy można użyć TIMERA w programie żeby odbywał się "poza" funkcją main? Nie wiem jak to nazwać... że w TIMER'ze dzieje się wyświetlanie liczb (ze zmiennych umieszczonych w funkcji main) z częstotliwością ja wiem.. niech będzie 50Hz.
Tylko czy to się wykonuje osobnie od funkcji main?
Po prostu Timer sobie a main sobie.
Schemat:
#define'y
-
-
-
timer (wyświetlanie liczb ze zmiennych)
-
-
-
-
main (manipulacja zmiennymi np. przycisk)
Mój obedny program na 1 Cyfrę:
#include <avr/io.h>
#define LED_ON PORTB &= ~_BV(1);
#define LED2_ON PORTB &=~_BV(0);
#define LED_OFF PORTB |= _BV(1);
#define LED2_OFF PORTB |= _BV(0);
#define liczba1 PORTC = 0xF1;
#define liczba2 PORTC = 0xF2;
#define liczba3 PORTC = 0xF3;
#define liczba4 PORTC = 0xF4;
#define liczba5 PORTC = 0xF5;
#define liczba6 PORTC = 0xF6;
#define liczba7 PORTC = 0xF7;
#define liczba8 PORTC = 0xF8;
#define liczba9 PORTC = 0xF9;
#define liczba0 PORTC = 0xF0;
int main(void)
{
int cykl;
cykl=0;
int licznik;
licznik=0;
DDRB = 0xEF;
PORTB = 0xEF;
/* BCD BCD BCD */
DDRC = 0xFF;
PORTC = 0xFF;
liczba0; //wyświetl 0//
while(1)
{
if(bit_is_clear(PINB,PB0) && (cykl==0))
{
cykl=1;
if(cykl==1)
{
licznik++;
LED_ON;
}
}
if(bit_is_set(PINB,PB0))
{
cykl=0;
LED_OFF;
}
switch(licznik)
{
case 1:
liczba1;
break;
case 2:
liczba2;
break;
case 3:
liczba3;
break;
case 4:
liczba4;
break;
case 5:
liczba5;
break;
case 6:
liczba6;
break;
case 7:
liczba7;
break;
case 8:
liczba8;
break;
case 9:
liczba9;
break;
case 0:
liczba0;
break;
case 10:
licznik=0;
break;
}
}
}