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.

Ustawianie stanów bitów, Atmega, C. O co tu chodzi?

Heraklesik94 20 Lut 2012 21:25 719 2
  • #1 20 Lut 2012 21:25
    Heraklesik94
    Poziom 8  

    Dopiero zaczynam programować w C. W wielu programach spotyka się coś w rodzaju PORTB=0xff lub PORTB=0x04 itd. Są to zapisy liczb do portu w postaci szesnastkowej.
    Gdy ustawiam PORTA = 0x5E to na wyjściach mikrokontrolera z podłączonymi ledami mam 01011110, to samo dzieje się gdy wpisze te samą liczbę w systemie dziesiętnym (czyli 94), a gdy wpiszę liczbę E5 w systemie binarnym(czyli 01011110) to na wyjściach jest 00010010. Totalnie tego nie rozumiem. ???
    Albo:
    Chciałem wpisać liczbę 2D, 2D=101101(bin)=45(dec). Wpisując do programu 00101101 mam na wyjściach portu 10000010.???
    Nie wiem czy błąd nie leży w moim zapisie liczby binarnej, może potrzebne są jakieś operatory, ale nic na ten temat nie znalazłem.

    Oto program:

    #include <avr/io.h>
    #define F_CPU 16000000
    #include <util/delay.h>


    int main(void)
    {

    DDRA=0xff; // ustawianie portu a jako wyjście
    for( ; ; )
    {

    PORTA = 00101101;
    _delay_ms(500);

    }
    return 0;
    }

    0 2
  • Pomocny post
    #2 20 Lut 2012 21:28
    pawel-jwe
    Poziom 30  

    Heraklesik94 napisał:
    PORTA = 00101101;

    To nie jest zapis binarny, wartość traktowana jest jako liczba rzeczywista !!
    Tak być powinno dla liczb zapisanych w sposób binarny: PORTA = 0b00101101;

    0
  • #3 20 Lut 2012 21:40
    Heraklesik94
    Poziom 8  

    Teraz wszystko pięknie działa ;) Dziękuje za tak szybką odpowiedź. Pozdrawiam.

    0