logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Multipleksacja 2x 7 segm. LED [C]

Tymek92 14 Mar 2009 21:40 1504 3
REKLAMA
  • #1 6282380
    Tymek92
    Poziom 10  
    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ę:

    
    #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;
    }
    }
    }
    
  • REKLAMA
  • REKLAMA
  • #3 6282766
    Tymek92
    Poziom 10  
    Cały program ma określny czasowy przebieg. Mi zależy na tym żeby timer odświeżał wyświetlacz z określoną częstotliwością. Czy da się tak zrobić żeby przebieg Timera i funkcji zmieniającej zmienną były niezależne ale połączone właśnie tą zmienną?
REKLAMA