Skoro wszyscy wszystko rozumieją 

 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);
    }
}