330 likes | 541 Views
Procesni sistemi vodenja. Specifičnosti programiranja vgrajenih sistemov v C-jeziku. Vsebina poglavja. Kratek opis jezika C Primerjava - Zbirni jezik : C Programiranje vhodno/izhodnih vmesnikov Standardne knjižnice Spremenljivke Funkcije Lokalne in globalne spremenljivke
E N D
Procesni sistemi vodenja Specifičnosti programiranja vgrajenih sistemov v C-jeziku Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Vsebina poglavja • Kratek opis jezika C • Primerjava - Zbirni jezik : C • Programiranje vhodno/izhodnih vmesnikov • Standardne knjižnice • Spremenljivke • Funkcije • Lokalne in globalne spremenljivke • Ukazi prevajalniku – makro ukazi Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Kratek opis jezika C • višji programski jezik, • blizu strojni opremi, • omogoča pisanje ’čistih’ uporabniških, pa tudi sistemskih programov, kot so operacijski sistemi • začetki C so UNIXu • Linux je pisan v C. • osnova je ANSI C jezik • Za vse razen ANSI ’C’-ja pa velja da niso povsem kompatibilni med sabo. ANSI C naj bi razumele vse ostale izvedenke, obratno pa ne velja. • nadaljnji razvoj je v C++, objektno orientiran C. Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Zbirni jezik: Hitrejše izvajanje Zasede manj pomnilnika Zahteva manj zmogljive procesorje Natančno določimo obnašanje programske opreme Možno je izkoristiti vse prednosti nabora ukazov procesorja C: Krajši program Bolj pregleden program Preprostejše vzdrževanje Hitrejši razvoj aplikacij Bolj fleksibilen razvoj aplikacij Včasih se koda ne prevede tako, kot smo predvideli Prednosti - Zbirni jezik : C Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Uporaba C in zbirnega jezika Tradicionalni programerji DSP programerji Zbirni jezik Zbirni jezik 10% programerjev uporablja zbirni jezik! DSP programi za široko potrošnjo Zbirni jezik DSP – več zbirnega jezika – maksimalna hitrost izvajanja Široka potrošnja – optimalna cena – prevladuje zbirni jezik Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Programiranje vhodno/izhodnih vmesnikov • Uporabljamo maskiranje bitov! • Posamezni bit lahko pomeni: • Informacijo o: • Stanju naprave • Stanju vhoda/izhoda • Ukaz napravi Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Maskiranje bitov • Omogoča postavljanje, brisanje ali branje določenih bitov znotraj spremenljivke (besede) brez vpliva na ostale bite. • Uporabljamo ga za spreminjanje in branje vsebine registrov. • Maskiranje je dejansko le uporaba bitnih operacij: • Dva argumenta: • Spremenljivka • Maska • & (bitni IN)uporabljamo za branje in brisanje. • | (bitni ALI) uporabljamo za postavljanje bitov. Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Maskiranje, Branje • Primer: • Prebrati želimo bit 3 v besedi. Uporabimo bitni IN: • Rezultat je maskirana vrednost spremenljivke, ki vsebuje le informacijo o 3. bitu. Spremenljivka Maska Rezultat Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Maskiranje, Postavljanje • Primer: • Bit 4 v besedi želimo postaviti na 1, ostalih bitov ne želimo spreminjati. Uporabimo bitni ALI. • Bit 4 je 1, ostali biti se niso spremenili. Spremenljivka Maska Rezultat Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Maskiranje, Brisanje • Primer: • Izbrisati (postaviti na 0) želimo bit 6, ostale vrednosti naj ostanejo nespremenjene. Uporabimo bitni IN. • Maska vsebuje eniški komplement (bitno negacijo). Bit 6 rezultata je na 0, ostali se niso spremenili. Spremenljivka Maska Rezultat Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Pisanje programa v C • Deklariranje: • Spremenljivke in funkcije • Definiranje: • Rezerviramo pomnilnik in vsebino - jedro funkcij • Definicija velja tudi kot deklaracija, obratno pa ne velja. • Pri pisanju velja da imamo: • bloke • v zavitih oklepajih {} • stavke • zaključeni s podpičjem • komentarje • /*komentar*/ • novejši C uporabljajo za komentar “//” na začetku vrstice, velja do konca vrstice Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Standardne knjižnice • if stavek • switch stavek • while do zanka • do while zanka • for stavek • go to (se izogibamo) • Moč C dajejo funkcije iz knjižnic! Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Stavek if-else if(pogoj) /* ni podpičja!!! */ { operacija1; /* DA */ } else /* ni podpičja!!! */ { operacija2; /* NE */ } Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Stavek switch switch(a) /* ni podpičja!! a je tipa int ali char */ { case 1: /* a je enak 1 */ operacija1; break; /* izhod iz zanke */ case 2: /* a je enak 2 */ operacija2; break; /* izhod iz zanke */ default: /* a ni enak 1 ali 2 */ operacija3; break; /* izhod iz zanke */ } Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Zanka while-do while(pogoj) /* ni podpičja! */ { operacija1; } Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Zanka do-while do /* ni podpičja! */ { operacija1; } while(pogoj); Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Zanka for for(inicializacija;test;korak) /* ni podpičja! */ { operacija1; } Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Spremenljivke • Spremenljivka je definirana: • ime spremenljivke • lahko ima poljubno število znakov • prevajalnik loči prvih x znakov • tip podatka (celo, realno, znak,...) • način hranjenja spremenljivke (kje in koliko časa) Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Tipi spremenljivk • lokalne • globalne • registrske • konstante • vektorji in polja • kazalci Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Tipi podatkov Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Izpeljani tipi • kazalci na objekte nekega tipa, • polja objektov nekega tipa, • strukture, ki vsebujejo spisek objektov, • unije, ki vsebujejo enega od objektov v spisku, • funkcije, ki vrnejo objekt določenega tipa. Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Kazalci • Kazalci so spremenljivke, ki vsebujejo naslov neke druge spremenljivke ali dela pomnilnika. • Podobno kot v zvezi z običajnimi spremenljivkami tudi za kazalec poznamo: • ime, • tip (ki pove, na kakšne vrste podatkov kaže) in • način hranjenja. Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Kazalci (2) int stevilo = 12; // celostevilcna spremenljivka int *k_stevilo; // kazalec na int k_stevilo = &stevilo; // kazalec dobi vrednost Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Vektorji in polja • Vektorji: • Polja: Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Dvodimenzionalno polje Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Strukture • Strukture so v osnovi zelo podobne vektorjem, vendar jih za razliko od le-teh sestavljajo elementi različnih tipov. Primer strukture: struct Osebni_podatki /* deklaracija strukture */ { char ime[20]; /* ime ima lahko največ 20 znakov */ char priimek[20]; /* priimek ima lahko največ 20 znakov */ int leto_rojstva; /* letnica rojstva */ unsigned spol:1; /* spol - 0:moški, 1:ženski - spremenljivka zasede le en bit */ }; • struct Osebni_podatki osebni_podatki; /* definicija strukture */ • osebni_podatki.leto_rojstva=1900; /* prireditev vrednosti elementu strukture */ Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Funkcije • Funkcije sestavljajo: • Ime funkcije • Tip funkcije oz. vrednosti, ki jih funkcija vrne • Vrednost, ki jo funkcija vrne • Funkcija v C vrne eno spremenljivko, če želimo da vrača več vrednosti, jih moramo vračati preko kazalcev oz. globalnih spremenljivk. • Jedro Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Lokalne in globalne spremenljivke • Lokalne spremenljivke • So veljavne znotraj funkcij. • Imamo tudi statične spremenljivke(obdržijo vrednost tudi po izhodu iz funkcije). • Globalne spremenljivke • Veljajo za celoten program. • Ponavadi so definirane v main funkciji, vendarse jih izogibamo • Ko imamo večje programe ne vemo katera funkcija se je spremenila, ko je kajnarobe. • Paziti moramo na začetno vrednost! ! Vgrajeni sistemi brez operacijskega sistemaimajo poljubno vrednost ob vklopu. Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Primer uporabe kazalcev void zamenjaj(int *s1, int *s2) /* delamo s kazalci, saj lahko funkcija vrne le eno */ /* spremenljivko */ { int zacas; /* zacasna spremenljivka */ zacas=*s1; /* delamo s kazalci - */ /* zamenjamo vrednosti na naslovih spremenljivk */ *s1=*s2; *s2=zacas; } /* ukaza return ne potrebujemo, ker je funkcija tipa */ /* void in ne vrne ničesar */ Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Ukazi prevajalniku – makro ukazi • #define • #define NIZ_ZANKOV niz_znakov • #include • #include "header.h" • #include <header.h> Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Ukazi prevajalniku – makro ukazi • #if, #else in #endif #if T_ALI_F blok_programa1 #else blok_programa2 #endif • #ifdef, #else in #endif #ifdef IME1 blok_programa3 #else blok_programa4 #endif Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Domača naloga • Imaš register A, brez spreminjanja ostalih bitov: • Postavi bit 8 registra A na 1! • Izbriši (postavi na 0) bit 6 registra A! • Preveri bit 4 registra A (if(A.4==) ...)! Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku
Možna vprašanja na izpitu • Primerjava - Zbirni jezik : C • Primeri maskiranj bitov (postavljanje, brisanje, testiranje, glej Domačo nalogo) Procesni sistemi vodenja - Specifičnosti programiranja vgrajenih sistemov v C-jeziku