Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kod programu do weryfikacji

sadysta007 08 Sty 2012 08:30 896 1
  • #1 08 Sty 2012 08:30
    sadysta007
    Poziom 12  

    Witam. Jestem zielony w temacie mikrokontrolerów a muse zrobic do szkoły program w VMLABie o tresći:
    Generator prostego rysunku - na wyświetlaczu zapalamy dolną, środkową albo górną kreskę
    – kolejno wybieraną przyciskiem. 4 segmenty - dla każdego segmentu inny przycisk.
    Jak zwykle spróbowałem sam ale mam problem aby samemu wybierac odpowiedni segment który ma wyświetlic kreske. Prosze o pomoc
    Oto efekt moich wypocin:

    #include <avr\io.h>
    #include <avr\interrupt.h>
    #include <avr\signal.h>
    #include <util\delay.h>

    char znak[4]={0x00,0x01,0x40,0x08};

    void hw_init(void)
    {
    SFIOR &= !(1<<PUD);
    DDRA = 0xFF;
    DDRE = 0xFF;
    DDRB = 0x00;
    PORTA = 0x01;
    PORTB = 0xFF;
    }

    void disp(char digit[4])
    {
    for(char a=0;a<4;a++)
    {
    PORTE = (1<<(a+4)); // ustawienie portu E na odpowiedni tabwietlacz (zmienna a okresla numer tabwietlacza)
    PORTA= znak[digit[a]]; // przypisanie odpowiedniego znaku z tablicy znaki (patrz wyzej) na port A
    _delay_ms(15);
    }
    }


    int main(void) {

    char tab[4]={0,0,0,0};
    char w1=0;
    char w2=0;
    char w3=0;
    char w4=0;
    int licznik=0;
    int licznik2=0;
    int licznik3=0;
    int licznik4=0;

    hw_init();

    while(1)
    {



    if(PINB==0x01)
    {
    licznik++;

    if(licznik>2)
    {licznik=0;}

    if(licznik == 0)
    {
    tab[0] = 1;
    disp(tab);
    }


    if(licznik == 1)
    {
    tab[0] = 2;
    disp(tab);
    }


    if(licznik == 2)
    {
    tab[0] = 3;
    disp(tab);
    }
    }

    if(PINB==0x02)
    {
    licznik2++;

    if(licznik2>2)
    {licznik2=0;}

    if(licznik2 == 0)
    {
    tab[1] = 1;
    disp(tab);
    }


    if(licznik2 == 1)
    {
    tab[1] = 2;
    disp(tab);
    }


    if(licznik2 == 2)
    {
    tab[1] = 3;
    disp(tab);
    }
    }


    if(PINB==0x04)
    {
    licznik3++;

    if(licznik3>2)
    {licznik3=0;}

    if(licznik3 == 0)
    {
    tab[2] = 1;
    disp(tab);
    }


    if(licznik3 == 1)
    {
    tab[2] = 2;
    disp(tab);
    }


    if(licznik3 == 2)
    {
    tab[2] = 3;
    disp(tab);
    }
    }


    if(PINB==0x08)
    {
    licznik4++;

    if(licznik4>2)
    {licznik4=0;}

    if(licznik4 == 0)
    {
    tab[3] = 1;
    disp(tab);
    }


    if(licznik4 == 1)
    {
    tab[3] = 2;
    disp(tab);
    }


    if(licznik4 == 2)
    {
    tab[3] = 3;
    disp(tab);
    }
    }

    if(PINB!=0x01 || PINB!=0x02 || PINB!=0x04 || PINB!=0x08)
    {
    disp(tab);
    }




    }
    }

    0 1
  • #2 08 Sty 2012 11:00
    excray
    Poziom 39  

    Cały kod umieść w znacznikach syntax=c bo jest nieczytelny:
    <syntax=c> KOD PROGRAMU </syntax> - nawiasy zamień na kwadratowe []

    0