Presentation is loading. Please wait.

Presentation is loading. Please wait.

C keel AVR mikrokontrolleril

Similar presentations


Presentation on theme: "C keel AVR mikrokontrolleril"— Presentation transcript:

1 C keel AVR mikrokontrolleril
Mikk Leini

2 Testprogramm #include <avr/io.h> #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 = * 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], short }

5 Baas-andmetüübid AVR mikrokontrolleril short = int Bitte Minimaalne
Maksimaalne (signed) char 8 -128 127 unsigned char 255 (signed) int 16 -32768 32767 unsigned int 65535 (signed) long 32 unsigned long AVR mikrokontrolleril short = 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 weight; } car; // Struktuurne andmetüüp typedef struct { int x, y; } vector; vector points[20]; // Massiiv struktuurist

7 Avaldised // Avaldis [operand1] [operaator] [operand2]
Operand on konstant, muutuja või funktsioon. Operandi võib ka omakorda avaldis olla. Avaldiste väärtusi saab omistada muutujatele, anda funktsiooni argumentideks või tagastada funktsioonis. int y = * 32; int x = cosinus(10 / 3);

8 Operaatorid (tehted) Aritmeetika: + - / * % Loogikaavaldised: ! && ||
Bitiloogika: ~ & | ^ << >> Võrdlus: == != < > <= >= Omistus: = Arvutus-omistus: += -= *= /= |=

9 Bitioperaatorid Bitioperaatoreid kasutatakse üldjuhul mikrokontrollerite registrite manipuleerimiseks. Biti seadmine Biti kustutamine | = &

10 Heksadetsimaalarvud 2 0000 0010 02 13 0000 1101 0D 64 0100 0000 40 210
Kasutatakse bititehete operandide ülevaatlikumaks (lühemaks) esitamiseks. Detsimaalarv Binaararv Heksadetsimaalarv 2 02 13 0D 64 40 210 D2

11 Funktsioonid // Funktsioon
(inline) [andmetüüp] nimi([andmetüüp1] argument1, [andmetüüp2] argument2..., [andmetüüpN] argumentN) { /* 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; }

12 Laused Tingimuslause: if ([avaldis]) [lause]
Valikulause: switch ([avaldis]) { case [väärtus]: break; } Tsükkel: for ([algus lause]; [avaldis]; [lõpu lause]) { } while ([avaldis]) {}

13 Tingimuslause // Üks tingimuslause if ((2 + 1) > 2) x = 5;
// Muul-juhul lause if (x == 5) { y = 2; z = 3; } else if (x == 6) { y = 3; } else { y = 0; }

14 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 }

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

16 Tsükkel while (1) { // Lõputu tsükkel sest avaldis on alati tõene }
// Kuigi tsükli 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++;

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

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

19 Praktika


Download ppt "C keel AVR mikrokontrolleril"

Similar presentations


Ads by Google