1 / 17

C keel AVR mikrokontrolleril

C keel AVR mikrokontrolleril. Testprogramm. #include &lt;stdio.h&gt; void main() { printf(“Hello world!<br>”); }. Süntaks. // Makro-keel #include &lt;stdio.h&gt; // Deklaratsioonid int i; // Funktsioonid int main( void ) { // Laused printf(“Hello world!<br>”); // Avaldised

bart
Télécharger la présentation

C keel AVR mikrokontrolleril

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C keel AVR mikrokontrolleril

  2. Testprogramm #include <stdio.h> void main() { printf(“Hello world!\n”); }

  3. Süntaks // Makro-keel #include <stdio.h> // Deklaratsioonid int i; // Funktsioonid int main(void) { // Laused printf(“Hello world!\n”); // Avaldised i = 32 + 5 * 4 / (23 % 5); }

  4. Andmetüübid ja muutujad • Baas andmetüübid:char, int, short, long, float • Massiivid:char[], int[][] • Struktuurid:struct { char, int } • Ühendtüüp (jagatud mälu):union { char[2], int }

  5. Baas-andmetüübid short = int int x; // Näidismuutuja tüübist int

  6. Massiivid ja struktuurid unsigned char array[3]; // Ühemõõtmeline massiiv unsigned int table[10][20]; // Kahemõõtmeline massiiv // Struktuurne muutuja struct { int speed; unsigned int mass; } car; // Struktuurne andmetüüp typedef struct { int x, y; } vector; vektor points[20]; // Massiiv struktuurist

  7. Funktsioonid // Funktsioon [andmetüüp] nimi([andmetüüp] argument1, [andmetüüp] argument2) { /* Funktsiooni keha */ } • Funktsioon tagastab määratud andmetüübiga väärtuse. • Erand on andmetüüp void mis ei oma väärtust. • Funktsiooni kehas võivad olla samad deklaratsioonid mis failis. int summa(int a, int b) { return a + b; }

  8. Avaldised // Avaldis operand1 [operaator] operand2 • Operand on konstant, muutuja või funktsioon. • Operandi asemel võib omakorda avaldis olla. • Avaldistest tekib väärtus mida saab omistada muutujatele, anda funktsiooni argumentideks või tagastada funktsioonis. int y = 0x04; int x = ruut(4) * (5 + y << 2);

  9. Operaatorid • Aritmeetika:+ - / * % • Loogikaavaldised:! && || • Bitiloogika:~ & | ^ • Bitinihutus:<< >> • Võrdlus:== != <= >= • Omistus:= += -=

  10. Laused • Tingimuslause:if ([avaldis]) [lause] • Valikulause:switch ([avaldis]) { case [väärtus]: break; } • Tsükkel:for ([lause]; [avaldis]; [lause]) { }while ([avaldis]) {}

  11. Tingimuslause // Ühe tingimuse võrldus if ((2 + 1) > 2) x = 5; // Muul-juhul lause if (x == 5) { y = 2; } else if (x == 6) { y = 3; } else { y = 0; }

  12. Valikulause int y; switch (y) { case 1: funktsioonA(); break; case 2: funktsioonB(); break; case 3: funktsioonC(); break; case 4: // Täitmisele tuleb esimene järgnev lause case 5: funktsioonYhine(); break; default: muu_funktsioon(); // Kõik muud juhtumid }

  13. Tsükkel int i, x = 5; // Tsükkel toimub 5 korda – ehk seni kuni avaldis on täidetud. for (i = 0; i < 5; i++) { x += 2; // Liitev-omistav operaator } // Siinkohal tuleb x väärtuseks 15 printf(“%d”, x);

  14. Tsükkel while (1) { // Lõputu tsükkel sest avaldis on alati tõene } While (1) { // Kuigi tsükkli avaldis on alati tõene on break käsuga võimalik väljuda tsüklist if (x > 100) break; if (x < 10) continue; // Kui x on alla 10, siis järgnev kood täitmisele ei lähe, vaid tsükklit alustatakse otsast y++; }

  15. AVR siinide kasutamine Siinid: DDRA - Suund PORTA – Väljund PINA – Sisend // Viigud 0-3 väljundiks, 4-7 sisendiks DDRA = 0x0F; // Väljundisse arv 10 PORTA = 10; // = 0x0A // Sisendi lugemine X = (PINA & 0xF0) >> 4;

  16. AVR viikude manipuleerimine // Viigu üheks seadmine PORTA |= (1 << BITT); // Viigu nullimine PORTA &= ~(1 << BITT); // Viigu inverteerimine PORTA ^= (1 << BITT); // Viigu väärtuse lugemine X = (PINA & (1 << BITT) ? 1 : 0);

  17. Praktika

More Related