Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

czwartek, 10 lutego 2011

Kurs języka C: Spis treści


Autor: Dondu

Niniejszy kurs języka C jest zestawem najważniejszej wiedzy jaką powinieneś posiadać używając tego języka. Jednakże nie zastąpi on specjalistycznej książki, jak te poniżej.

C znajdziesz także WikiBooks.org
Wszystkie artykuły wykorzystują zintegrowany na blogu kompilator CManiak (online), który w każdym artykule zawiera przykłady kodów z konkretnego artykułu. Kody te możesz kompilować i modyfikować do woli, ucząc się w ten sposób krok po kroku lub wyrywkowo.

Instrukcja otwierania przykładów z kursu C w kompilatorze CManiak.
Instrukcja otwierania w kompilatorze CManiak
przykładów z kursu C .




Kurs języka C

Zanim zaczniesz korzystać z kursu, koniecznie zapoznaj się z dwoma artykułami:

Podstawy Funkcje Kompilacja programu
Podstawy Preprocesor

Słowa kluczowe

Komentarze

Definiowanie

Deklarowanie

Przykłady funkcji

Funkcje inline

Proces kompilacji

Co to takiego?

Dyrektywy:

#include

Dane Zmienne
i stałe
Operatory Operatory
bitowe

Typy danych

Rzutowanie
i promocja typów


Zmienne:
nazwa i deklaracja
globalne
lokalne
lokalne blokowe
lokalne statyczne

Stałe

przypisania: =

arytmetyczne: +-/*%

inkrementacja: ++
dekrementacja: --

logiczne: || && !

relacji (porównania):
>  <  >=  <=  ==  !=

mnożenie AND: &

dodawanie OR: |

dodawanie XOR: ^

negacja NOT: ~

przesuwanie: <<
w lewo

przesuwanie: >>
w prawo

"Rozgryzamy krzaczki" operatorów.

Instrukcje sterujące
warunkowe pętle inne

if(...) ... else ...

switch(...) case ...

... ? ... : ... ;

while( ... ) { ... }

do{ ... } while( ... )

for(...) { ... }

pętle nieskończone

goto ...

Wskaźniki  NEW 

Operator adresu: &

Nagłówki standardowe
<stdio.h>

printf(...)

CManiak - Biblioteki dodatkowe

Biblioteka symulatora 7-segmentowego wyświetlacza LED

Język C - dodatkowe dokumenty

Standard:
C - Internationa standard ISO/IEC 9899:201x

Ściągi do wydrukowania:
C Reference Card (ANSI C) by Joseph H. Silverman
C Reference Card (Ohio State University) (mirror)






Operacje na liczbach, bitach, itp.

Zamiana bajtów w liczbie 16-bitowej.

Zamiana kolejności bitów LSB <-> MSB.

Rolowanie bitów w lewo lub prawo.

Inne

Compound literals, czyli jak wygodnie przekazywać parametry złożone.  NEW 



Masz jakiś problem, którego nie potrafisz rozwiązać w języku C - napisz komentarz,
a my opracujemy i zamieścimy tutaj.

A może sam rozwiązałeś ciekawy problem i chciałbyś się tym podzielić z innymi?





Kompleksową wiedzę znajdziesz w tych książkach:

Język ANSI C. Programowanie. Wydanie II - Brian W. Kernighan, Dennis M. Ritchie - data wydania: 2010/05 - Stron: 328 Język C. Nowoczesne programowanie. Wydanie II  Autor: K. N. King - Data wydania: 2011/02 - Stron: 936 Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji  Autor: Tomasz Francuz - Data wydania: 2011/07 - Stron: 568 Język C dla mikrokontrolerów AVR. Od podstaw do zaawansowanych aplikacji  Autor: Tomasz Francuz - Data wydania: 2011/07 - Stron: 568 Objective-C. Leksykon profesjonalisty  Autor: David Chisnall - Data wydania: 2012/06 - Stron: 240 Objective-C. Podstawy  Autorzy: Christopher Fairbairn, Collin Ruffenach, Johannes Fahrenkrug - Data wydania: 2012/05 - Stron: 392 Język C. Szkoła programowania. Wydanie V  Autor: Stephen Prata - Data wydania: 2006/08 - Stron: 976 Objective-C. Vademecum profesjonalisty. Wydanie III  Autor: Stephen G. Kochan - Data wydania: 2011/12 - Stron: 496 Język ANSI C. Programowanie. Ćwiczenia. Wydanie II  Autorzy: Clovis L. Tondo, Scott E. Gimpel - Data wydania: 2010/05 - Stron: 168 Programowanie w języku C. Ćwiczenia praktyczne. Wydanie II  Autor: Marek Tłuczek - Data wydania: 2011/05 - Stron: 120
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

17 komentarzy:

  1. powiem ze takiego kursu jeszcze nie było i czekam na dalszy rozwoj wydarzen.

    OdpowiedzUsuń
  2. Średnio powinien ukazywać się jeden artykuł dziennie. Piszę "średnio", ponieważ czasami piszę trzy dziennie, a potem dwa dni przerwy :-)

    OdpowiedzUsuń
  3. BRAWO BRAWO BRAWO

    OdpowiedzUsuń
  4. I ja się przyłączę do pochwalenia pomysłu. Mam nadzieję, że opracujesz kompletny kurs. Pozdrawia stały czytelnik.

    OdpowiedzUsuń
  5. Język C to wielkie możliwości, a dokument opisujący standard ma 700 stron. Dlatego skupię się na najważniejszych dla początkujących tematach, a będzie to i tak bardzo obszerny materiał.

    OdpowiedzUsuń
  6. Nie miałem jeszcze żadnej większej styczności z językami programowania. Mam kurs z AVT bascom/avr od którego chce zacząć (lat 14stu już nie mam tylko dwa razy więcej ale skoro kasa wydana, polotu u mnie mało, to mi chyba nie zaszkodzi bascom na początek?) Polecane książki do programowania mikrokontrolerów w C już zakupiłem. Pytanie brzmi czy warto zacząć od "C" ogólnie czy te książki o mikrokontrolerach(mimo że autorzy zakładają podstawową znajomość C) wystarczą?

    OdpowiedzUsuń
  7. Odradzam zaczynanie od BASCOM, bo nauczysz się złych przyzwyczajeń przez co później będziesz miał problemy z C czego przykładem jest ta dyskusja z kol. matrix:
    Przykład, jak ciężko przejść z BASCOM na C.

    Książka Tomka Francuza jest dobrze wyważona pod względem C oraz mikrokontrolerów, a zawsze można poćwiczyć w tym kursie C oraz CManiak'u, a w razie problemów pytać na forum :-)

    Poza tym: Jaki język wybrać?
    ale to już pewnie czytałeś.

    OdpowiedzUsuń
  8. Kiedy będą następne tematy kursu?

    OdpowiedzUsuń
  9. Do końca października na pewno opracuję kilka.

    OdpowiedzUsuń
  10. Witam. Mam pewien problem. Mianowicie napisałem program,który miał być kalkulatorem. Jego działanie miało polegać na przyjęciu dwóch liczb i znaku i wyświetleniu wyniku działania. Ale w momencie wpisywania znaku program się wyłącza. Może ktoś zerknąć na ten program i powiedzieć gdzie jest błąd?

    ____________________________________________

    #include

    float dodawanie (float m, float n);
    float odejmowanie (float m, float n);
    float mnozenie (float m, float n);
    float dzielenie (float m, float n);

    int main()
    {
    float m, n;
    char operacja;
    float wynik;

    printf("podaj dwie liczby:\n");
    scanf("%f %f", &m, &n);
    printf("podaj dzialanie:\n");
    scanf("%c", &operacja);

    switch(operacja)
    {
    case '+': wynik=dodawanie(m, n);
    break;
    case '-': wynik=odejmowanie(m, n);
    break;
    case '*': wynik=mnozenie(m, n);
    break;
    case '/': wynik=dzielenie(m, n);
    break;
    }
    getch();
    return 0;
    }

    float dodawanie (float m, float n)
    {
    return m+n;
    }

    float odejmowanie (float m, float n)
    {
    return m-n;
    }

    float mnozenie (float m, float n)
    {
    return m*n;
    }

    float dzielenie (float m, float n)
    {
    return m/n;
    }

    OdpowiedzUsuń
    Odpowiedzi
    1. biblioteka. Pisząc #include ... trzeba jeszcze napisać co się załącza do programu. Tu Ci się przyda stdio.h

      Usuń
  11. Siedzę już od dłuzszego czasu nad C dla AVR więc zapomniałem jak dokładnie działa getchar() :D Czy czasem nie ma możliwosci że getchar czyta ostatni znak wpisany do klawiatury? (odczytuje z bufora) Nie pamiętam. Ale napewno pomoże jak zamiast getchar() dasz printf() (wogóle wypadaloby wyswietlic wynik, prawda? a po printf() daj system("pause"); i potem return 0;

    OdpowiedzUsuń
  12. Rewelacyjnie przygotowany kurs. Czy jest możliwość uzyskania wersji drukowanej poszczególnych artykułów ?

    OdpowiedzUsuń
  13. Rewelacja! Nie dość, że prosto napisany kurs, to jeszcze można modyfikować przykłady, kompilować online i sprawdzać co program zrealizował. Wielkie dzięki waszą pracę, którą włożyliście w ten kurs!!!!!!!!!!!!!!!!!

    OdpowiedzUsuń
  14. Super, teraz przykłady z uP, coś z diodą, wyświetlaczem LCD, sterowanie przez port uP. Pozdrawiam początkujący

    OdpowiedzUsuń
  15. Przydałby się dobry opis wskaźników w połączeniu z przekazywaniem do funkcji, tj. jak wygląda deklaracja funkcji, jej wywołanie i posługiwanie się wartościami/wskaźnikami wewnątrz funkcji... typu void funkcja(int *a), co wewnątrz funkcji otrzymamy dla a, *a, **a, wywołanie funkcja(&zmienna), no i wewnątrz funkcji inkrementacja/dekrementacja wartości, wskaźnika itp. Czyli ogólnie już trochę jazda bez trzymanki ;) Ale właśnie mało gdzie to jest dobrze opisane, przynajmniej w moim odczuciu.

    OdpowiedzUsuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.