Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #86
RE: Programowanie w języku C w środowisku AVR Studio4
Skoro wszyscy wszystko rozumieją Big Grin idziemy dalej ... Lekcja 11 teraz dodajemy obsługę dwóch przycisków, które będą zmieniały częstotliwość ( wartość zmiennej frequency ) o 1Hz w górę i w dół. Podaje treść całej głównej funkcji programu, zamieńcie tą co macie na tą co ja podałem.
Kod:
int main(void)
{
    unsigned long int frequency;
    frequency = 3710000;
    init_lcd();
    DDRC =0b00000000;    //nie musi być tej linii bo domyślnie wyprowadzenia są wejściami
    PORTC=0b11000000;

    while(1)
    {
        if((PINC&0b01000000)==0)
        {
            frequency-=1;
        }
        if((PINC&0b10000000)==0)
        {
            frequency+=1;
        }
        LCD_PORT &= (~1<<LCD_RS);     // "0" na wyprowadzenie RS w wyświewtlaczu
        bajt_lcd(0x87);               // kursor LCD na pozycję 8 - dla drugiej linii " bajt_lcd(0xc7); "
        wys_freq(frequency);
    }
}
zapisy po prawej stronie są równoznaczne z zapisami po lewej
Kod:
if(bit_is_clear(PINC, 7))    ====    if((PINC&0b10000000)==0)
if(bit_is_clear(PINC, 6))    ====    if((PINC&0b01000000)==0)
if(bit_is_clear(PINC, 0))    ====    if((PINC&0b00000001)==0)
- sprawdźcie, jak ktoś nie rozumie jednego i/lub drugiego zapisu - dajcie znać a będę wyjaśniał.
Przyciski podłaczamy pod PC7 i PC6 - podanie niskiego stanu na PC7 zwiększa częstotliwość o 1Hz, a podanie 0 na PC6 zmniejsza.
Uwaga! Płyty z Microsense mają odwrotnie ponumerowany PORTC ! ( przynajmniej moja tak ma )
Jeszcze jedno - domyślnie chyba jest włączony JTAG na tych płytach - jak nie bedzię działał jakis przycisk to napiszcie.
Operator == to operator logiczny (związany z dwoma stanami PRAWDĄ lub FAŁSZEM reprezentowanymi przez 0 i 1). Pojedyńczy znak równości to operator przypisania (arytmetyczny - czyli związany z liczbami).
Są dwa operatory przyrównania:
== znaczy równy
!= znaczy różny
Zatem zapis if(cośtam==0) ... znaczy jeśli cośtam jest Fałszywe (równe 0)to ...
if(cośtam==1) ... znaczy jeśli cośtam jest Prawdziwe (różne od 0)to ...
zapisy po lewek równają sie zapisom po porawej stronie
Kod:
if(cośtam==0)     ====     if(cośtam!=1)
if(cośtam==1)     ====     if(cośtam!=0)
Na następnej lekcji dodamy możliwość zmiany kroku syntezy.
Kolejna lekcja, 12-sta ... podaje treść main() tak jak poprzednio. Macie tu możliwość zmiany kroku syntezy ale poprzez zmianę wartości zmiennej krok.
Kod:
int main(void)
{
    unsigned long int frequency, krok;
    frequency = 3710000;
    krok=100;
    init_lcd();
    PORTC=0b11000000;
    while(1)
    {
        if((PINC&0b01000000)==0)
        {
            frequency-=krok;
        }
        if((PINC&0b10000000)==0)
        {
            frequency+=krok;
        }
        LCD_PORT &= (~1<<LCD_RS);
        bajt_lcd(0x87);
        wys_freq(frequency);
    }
}
Teraz przydałaby się obsługa dwóch dodatkowych przycisków do zmiany kroku. Poniższy kod wam w tym pomoże, przyciski zmiany kroku dołączone do PC5 i PC4.
Kod:
int main(void)
{
    unsigned long int frequency, krok;
    frequency = 3710000;
    krok=100;
    init_lcd();
    PORTC=0b11110000;
    while(1)
    {
        if((PINC&0b01000000)==0)
        { frequency-=krok; }
        if((PINC&0b10000000)==0)
        { frequency+=krok; }
        if((PINC&0b00010000)==0)
        {    if(krok>9)
                { krok/=10; }    }
        if((PINC&0b00100000)==0)
        {     if(krok<10000000)
            { krok*=10; }    }
        LCD_PORT &= (~1<<LCD_RS);
        bajt_lcd(0x87);
        wys_freq(frequency);
        LCD_PORT &= (~1<<LCD_RS);
        bajt_lcd(0xc3);
        napis_lcd("krok");
        wys_freq(krok);
    }
}
(Ten post był ostatnio modyfikowany: 03-02-2012 17:54 przez SP4EJT.)
03-02-2012 17:50
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 03-02-2012 17:50

Skocz do:


Użytkownicy przeglądający ten wątek: 6 gości