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

Przykłady kodu dla mikrokontrolerów - przydatne makra i funkcje

Ravender 22 Mar 2008 11:07 822 1
REKLAMA
  • #1 4939525
    Ravender
    Poziom 20  
    Posty: 627
    Pomógł: 49
    Ocena: 73
    Programowaniem mikrokontrolerów zająłem się niedawno ale już mnie wciągnęło. Zauważyłem, że bardzo trudno znaleźć w sieci przejrzyste kody przykładów. Wszystko jest porozrzucane.

    Poza tym, nie wiem czy jest sens wymyślać pewne rzeczy od nowa, jeśli zostały już wymyślone. Proponuję utworzenie tematu z przydatnymi fragmentami kodu... opisanymi co robią i gdzie się mogą przydać.

    Na początek moje przydatne wstawki:

    #define setb(X, n)	(X |=  (1 << (n))) //ustawia bit n. Przykład: setb(PORTB,2);
    #define clrb(X, n)	(X &= ~(1 << (n)))    //zeruje bit n
    #define checkb(X, n) (X & (1 << (n)))        //sprawdza czy bit n jest zerem
    #define getb(X, n) ((X & (1 << (n)))>>(n))   //pobiera bit n
    #define negb(X, n) (X ^= (1 << (n)))        //neguje bit

    Kod C. Definicje przydatne podczas prostych operacji na pojedynczych bitach.

    
    void PiszTekst(char * text)
    {
      while(*text)
       {
          RóbCośZLitera(*text++);
       }
    }
    //------ przykład użycia ------
    char *napis = "abcdefgh";
    PiszTekst(napis); 
    

    Kod C. Funkcja pobierająca kolejne znaki ze słowa. Przydatne przykładowo podczas wysyłania czegoś na wyświetlacz LCD.

    ---
    zmieniono wg uwag: shg
  • REKLAMA
  • #2 4940056
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 135
    Ravender napisał:
    #define setb(X, n)	(X |=  (1 << n)) //ustawia bit n. Przykład: setb(PORTB,2);
    #define clrb(X, n)	(X &= ~(1 << n))    //zeruje bit n
    #define checkb(X, n) (X & (1 << n))        //sprawdza czy bit n jest zerem
    #define getb(X, n) ((X & (1 << n))>>n)   //pobiera bit n
    #define negb(X, n) (X ^= (1 << n))        //neguje bit



    W każdej definicji makra to n MUSI być w nawiasie.
    przykład:
    clrb(PORTA, 2|4)


    wykona się jak:
    PORTA &= ~((1 << 2) | 4)
REKLAMA