Revija 124 za PDF.p65

Podobni dokumenti
MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

Diapozitiv 1

Strojna oprema

Delavnica Načrtovanje digitalnih vezij

Microsoft Word - UP_Lekcija04_2014.docx

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Microsoft Word - M docx

Microsoft Word - vaje2_ora.doc

ARS1

Uvod v programiranje mikrokrmilnikov, zbrano gradivo za predavanja

seminarska_naloga_za_ev

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Delavnica Načrtovanje digitalnih vezij

Slide 1

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

Microsoft Word - NAVODILA ZA UPORABO.docx

Registrirajte svoj izdelek in dobite podporo na strani LFH0612 LFH0617 LFH0632 LFH0633 SL Priroènik za uporabnika

Microsoft Word - CNC obdelava kazalo vsebine.doc

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

Zadeva: Ponudba

Delavnica Načrtovanje digitalnih vezij

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

innbox_f60_navodila.indd

CelotniPraktikum_2011_verZaTisk.pdf

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

Microsoft Word - avd_vaje_ars1_1.doc

Vaja04_Ver02

Univerza v Ljubljani

Področje uporabe

Linksys PLEK500 User Guide

Microsoft Word doc

Računalniški praktikum Projektna naloga - Izdelava spletne strani Avtor: Matej Tekavčič Skupina: Matej Tekavčič - koordinator Simon Vrhovnik Tine Kavč

Microsoft Word - M docx

KRMILNA OMARICA KO-0

Diapozitiv 1

UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO VISOKOŠOLSKI STROKOVNI ŠTUDIJ Elektrotehnika Elektronika POROČILO PRAKTI

Microsoft PowerPoint - Java_spremenljivke

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Teorija kodiranja in kriptografija 2013/ AES

Sistemi Daljinskega Vodenja Vaja 1 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubljani

DIGITALNE STRUKTURE Zapiski predavanj Branko Šter, Ljubo Pipan 2 Razdeljevalniki Razdeljevalnik (demultipleksor) opravlja funkcijo, ki je obratna funk

DES11_realno

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

CODEKS IP KAMERA

NETGEAR R6100 WiFi Router Installation Guide

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Vaja 3 Kopiranje VM in namestitev aplikacij - strežnik SQL 2000 SP3a A. Lokalni strežnik Vmware ESX Dodajanje uporabnikov vajexx v skupino Vaje

DCS-2330L_A1_QIG_v1.00(EU).indd

Diapozitiv 1

ISOFT , računalniški inženiring

Watch 40_MT40X_UM_SL.pdf

Microsoft Word - Trust-CDsize-12052_12579_14070-al-cp_v5.0.doc

DES

Microsoft PowerPoint - Objekti_gradnja.ppt

Kratka navodila za uporabo razširjevalnika dosega WiFi AC750 model EX3800

Datum in kraj

101353_-an-01-sl-_vbodni_termometer

Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Tr

Navodila:

Universal WiFi Range Extender WN3000RP Installation Guide

DES

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

Base NET.cdr

_ _BDA_CapitalSports_CS-Timer.indd

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO WLAN usmerjevalnik TP LINK Archer C5 Kataloška št.:

Delavnica Načrtovanje digitalnih vezij

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Microsoft Word - EV-2-projekt.doc

SLO - NAVODILO ZA UPORABO IN MONTAŽO Št

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Laserliner tester napetosti AC tive Finder Kataloška št.: 12 3

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Microsoft Word - CN-BTU4 Quick Guide_SI

Mestna občina Celje Komisija Mladi za Celje POLICA ZA HLADILNIK Z VGRAJENO TEHTNICO RAZISKOVALNA NALOGA (Fizika, Elektronika) Avtorja: Martin Malinger

Navodila Trgovina iCenter

Modem in krajevno omrežje Uporabniški priročnik

Logični modul LOGO!

Hiter začetek Razširjevalnik dosega WiFi N300 Model EX2700

Microsoft Word - M

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc)

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Tonski generator IDEAL Electrical PRO Kataloška št.:

NAVODILA ZA UPORABO Smart watch JW018 POZOR! Ura vsebuje magnetne sestavine. Osebe z vgrajenim srčnim spodbujevalnikom (pacemaker) ali kakršnimi drugi

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Vedno pod nadzorom, kjerkoli že ste

Si.mobil Si.most Najkrajša pot do vaših strank. Ljubljana,

Nove različice programske opreme GE Podjetje GE Digital, vodilni svetovni proizvajalec programske opreme za področje avtomatike, je izdalo kar nekaj n

Svet elektronika 198.indd

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Navodila za uporabo Mini snemalnik

COBISS3/Medknjižnična izposoja

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

STAVKI _5_

Transkripcija:

9 Izdelava mobilnega robota z razvojnim sistemom robopic (4) Avtor: Silvan Bucik E-pošta: silvan.bucik@tscng.net Do sedaj smo se nauèili prižigati led diodo, utripati z ledico ter uporabljati tipko. Opazili smo, da so prvi èlanki o razvojnem sistemu robopic v vas sprožili veliko zanimanje, saj ste se hitro odzvali. Da bi bilo naše sodelovanje èim boljše, bi ob tej priložnosti bralce povabil na spletne strani foruma (http://www.svet-el.si/ phpbb2/index.php), kjer lahko predstavite svoje uspehe pri delu, s skupnimi moèmi pa lahko rešimo marsikatero nastalo težavo. Kaj bomo spoznali v tem prispevku? Posvetili bi se podrobnostim programskega jezika C, kajti premnogokrat se nam dogaja, da nam pri realizaciji lastnih idej primanjkuje poznavanje orodij. Spoznali bomo tipe spremenljivk ter njihovo rabo, vrste matematiènih in logiènih operatorjev jezika C ter ukaze za nadzor toka programa. Preprièani smo, da vam bo gradivo zelo koristilo. Rešitve»domaèih nalog«sedaj pa k nalogam. Pogledali si bomo rešitve»domaèih nalog«, rešitve nagradnih nalog pa prepustimo za prihodnjo številko. Naloga 1: Spremenite program tako, da bo led dioda na prikljuèku RB3 svetila, ko bo tipka RA0 nepritisnjena. Ob pritisku nanjo pa naj led dioda ugasne. void main (void) TRISA = 0B11111111; TRISB = 0B11110111; TRISC = 0B11111111; TRISD = 0B11111111; TRISE = 0B00000111; do if (RA0!= 0) RB3 = 0; else RB3 = 1; while (1>0); //PORTA = vhod, tudi prikljuèek RA0 //**** prikljuèek RB3 definiramo kot izhod //PORTC = vhod, ga ne uporabljamo //PORTD = vhod, ga ne uporabljamo //PORTE = vhod, ga ne uporabljamo //uporabimo neskonèno do-while zanko //**** ko tipka ni pritisnjena, je logièno stanje razlièno od 0 //èe je tipka nepritisnjena, led dioda sveti //**** ko je tipka pritisnjena, je logièno stanje enako 0 //èe je tipka pritisnjena, led dioda ugasne //pogledamo še enkrat, èe ni sedaj kaj drugaèe Naloga 2: Spremenite program tako, da bo ob pritisku tipke RA4 gorela led dioda na izhodu RB5. Ob spustu tipke pa naj zasveti led dioda na izhodu RB3. vois main (void) TRISA = 0B11111111; TRISB = 0B11010111; TRISC = 0B11111111; TRISD = 0B11111111; TRISE = 0B00000111; while (1>0) if (RA4 == 0) RB5 = 0; RB3 = 1; else RB3 = 0; RB5 = 1; //PORTA = vhod, tudi prikljuèek RA4 //**** prikljuèka RB3 in RB5 doloèimo kot izhoda //PORTC = vhod, ga ne uporabljamo //PORTD = vhod, ga ne uporabljamo //PORTE = vhod, ga ne uporabljamo //uporabimo neskonèno while zanko //ko je tipka pritisnjena, je logièno stanje enako 0 //èe je tipka pritisnjena, led dioda na prikljuèku //RB5 sveti, na prikljuèku RB3 pa ne //**** ko tipka ni pritisnjena, je logièno stanje enako 1 //èe tipka ni pritisnjena, led dioda na prikljuèku //RB3 sveti, na prikljuèku RB5 pa ne Naloga 3: Spremenite program tako, da bo led dioda utripala hitreje (na primer 10 Hz), ali poèasneje (na primer 2 Hz). int frq=frekvenca_khz; void main (void) //IME GLAVNE FUNKCIJE TRISA = 0B11111111; //PORTA definiramo kot vhod

10 TRISB = 0B11111110; TRISC = 0B11111111; TRISD = 0B11111111; TRISE = 0B00000111 //**** RB0 doloèimo kot izhod, vsi ostali prikljuèki so vhodi //PORTC definiramo kot vhod //PORTD definiramo kot vhod //PORTE definiramo kot vhod while (1>0) RB0 = 0; //na izhodu RB0 se pojavi napetost 0V (logièna 0) dioda se prižge wait_mili(50); //**** poèakamo pol periode //**** pri 10 Hz znaša parameter 50, //**** pri 2 Hz znaša parameter 250 RB0 = 1; //na izhodu RB0 se pojavi napetost +5V (logièna 1) dioda ugasne wait_mili(50); //**** poèakamo pol periode //**** pri 10 Hz znaša parameter 50, //**** pri 2 Hz znaša parameter 250 // vse skupaj ponavljamo (while zanka), da priène led dioda utripati V programskem jeziku C loèimo štiri tipe osnovnih spremenljivk. To so: bitne spremenljivke (1-bitne spremenljivke), znaki (8-bitna števila), nepredznaèena cela števila (8-bitna, 16-bitna, 32-bitna števila), predznaèena cela števila (8-bitna, 16-bitna, 32-bitna števila), števila s plavajoèo vejico (32-bitna, 64-bitna, 80-bitna števila). Natanèen obseg posameznih tipov prikazuje sledeèa tabela: Naloga 4: Napišite program, da bodo utripale vse led diode na vratih PORTB. int frq=frekvenca_khz; void main (void) //IME GLAVNE FUNKCIJE TRISA = 0B11111111; //PORTA definiramo kot vhod TRISB = 0B00000000; //**** vse prikljuèke vrat PORTB doloèimo kot izhode TRISC = 0B11111111; //PORTC definiramo kot vhod TRISD = 0B11111111; //PORTD definiramo kot vhod TRISE = 0B00000111 //PORTE definiramo kot vhod while (1>0) PORTB = 0B00000000; //**** prižgemo vse led diode na vratih PORTB wait_mili(100); //poèakamo pol periode PORTB = 0B11111111; //**** ugasnemo vse led diode na vratih PORTB wait_mili(100); //še enkrat poèakamo pol periode //vse skupaj ponavljamo (while zanka), da priène led dioda utripati Spremenljivke v programskem jeziku C Osnovni podatkovni objekti, nad katerimi se izvajajo operacije, so spremenljivke in konstante. Bistvena razlika med spremenljivko in konstanto je, kot že njuni imeni povesta, da se vrednost spremenljivke med tekom programa lahko ves èas spreminja, konstanta pa v celotnem programu zavzema isto vrednost in je ni mogoèe spreminjati. V zaèetku pisanja programa je potrebno vse spremenljivke deklarirati. Konstante, ki v programu pogosto nastopajo, pa je smiselno nadomestiti s prireditvenimi imeni. OKTOBER 2005 Tabela 1: Tipi spremenljivk in njihov obseg Deklaracija spremenljivk Pred uporabo je potrebno vsako spremenljivko posebej deklarirati. S tem smo doloèili njen znaèaj in namen uporabe. Vèasih z deklaracijo doloèimo tudi zaèetno vrednost spremenljivke, ki pa se v toku izvajanja programa spreminja. Primeri deklaracij spremenljivk: char znak_0= a ; //spremenljivka znak_0 dobi zaèetno vrednost a int stevilo_0, stevilo_1=764; //16-bitna spremenljivka stevilo_0 nima zaèetne vrednosti, 16-bitna spremenljivka stevilo_1 ima zaèetno vrednost 764 char stevilo_2= 0B01010011, stevilo_3=0x3a; char stevilo_4 @0x50; //16-bitna spremenljivka stevilo_4 ima doloèen statièni naslov (fiksni) 0x50 Vse spremenljivke razen stevilo_0 imajo z deklaracijo doloèene tudi zaèetne vrednosti. Opazimo, da so spremenljivke znak_0, stevilo_2, stevilo_3 in stevilo_4 tipa char, èeprav je le znak_0 zares znakovnega tipa. Prevajalnik namreè ne loèi posebnih razlik med spremenljivko znakovnega tipa in 8-bitno spremenljivko. Prevajalnik bo vsem spremenljivkam spominske lokacije dodelil samodejno (poiskal bo prvo prosto mesto). Le spremenljivka stevilo_4 ima statièno spominsko lokacijo (0x50); naslov spremenljivke smo sami doloèili. Zapisovanje konstant V programskem jeziku C loèimo veè naèinov zapisovanja števil in znakov: SVET ELEKTRONIKE

11 764 desetiški zapis števila (število se ne sme zaèeti z 0), 0b01010011 dvojiški zapis števila (število se priène z znakoma 0b), 0x34 šestnajstiški zapis števila (število se priène z znakoma 0x), 0256 osmiški zapis števila (število se priène s èrko 0), 1.8e-3 zapis števila s plavajoèo vejico, a zapis konstante znakovnega tipa. Polja Veè spremenljivk, ki ustrezajo skupnemu opisu, lahko združimo v skupino spremenljivk, ki jo imenujemo polje. Vsaka spremenljivka v polju zavzema svoje mesto in jo tako tudi obravnavamo. Pri uporabi spremenljivk v polju moramo nujno poleg imena spremenljivke navesti tudi pripadajoèi indeks. Primer deklaracije polja: char senzor[3]; //polje s tremi elementi, elementi so 8-bitna števila char senzor[3]= 0b11100010, 0b11001100, 0b11011100; //polje s tremi elementi z definirani mi zaèetnimi vrednostmi, elementi so 8-bitna števila Gornja zapisa se razlikujeta v tem, da v drugem primeru istoèasno z deklariranjem polja doloèamo tudi zaèetne vrednosti elementov, medtem ko v prvem primeru zaèetne vrednosti elementov niso doloèene. Zapis prikazuje primer polja senzor, ki vsebuje podatke o stanjih senzorjev preteklih treh merjenj. S klicanjem polja senzor imamo dostop do kateregakoli podatka zadnjih treh merjenj. senzor[2] = senzor[1]; //stare meritve se shranijo na višjo lokacijo ter pripravimo senzor[1] = senzor[0]; //na lokaciji senzor[0] prostor za novo meritev senzor[0] = PORTA; // stanje na senzorjih, ki so priklju èeni na vrata PORTA, se prenese v polje senzor na lokacijo 0; to so sveži podatki Strukture Strukture so v osnovi zelo podobne poljem, vendar jih za razliko od slednjih lahko sestavljajo elementi razliènih tipov. Elementi struktur so samostojni elementi, razliènih tipov in dolžin in skupaj tvorijo celoto. Primer deklaracije strukture: struct unsigned STOP:1; //v strukturi control definiramo spremenljivko STOP, ki zavzema 1 bit unsigned NAPREJ:1; //v strukturi control definiramo spremenljivko NAPREJ,ki zavzema 1 bit unsigned LEVO:1; //v strukturi control definiramo spremenljivko LEVO, ki zavzema 1 bit unsigned DESNO:1; //v strukturi control definiramo unsigned PODATEK:4; control; if (control.stop==1) PORTC&= 0b11000110; spremenljivko DESNO,ki zavzema 1 bit //v strukturi control definiramo spremenljivko PODATEK,ki zavzema 4 bite //na koncu napišemo ime strukture //èe je v registru control postavljen bit stop, //potem naj se motorja ustavita prikljuèena sta preko vrat PORTC) Kazalci Kazalec je spremenljivka, ki vsebuje naslov neke druge spremenljivke. S kazalcem, katerega vsebina je naslov spremenljivke, izvajamo operacije nad spremenljivkami na posredni naèin. V prenekaterih primerih je uporaba kazalcev nepogrešljivo orodje. Vendar je za zaèetnika tovrstni naèin programiranja kar hud zalogaj, zato se bomo v zaèetnih korakih kazalcem izognili. Primer deklaracije kazalca: char *kazalec; //kazalec na 8-bitno število (kazalec prepoznamo po prefiksu *) Pred praktiènim primerom bi omenili še dva znaka, ki spremljata delo s kazalci: * prefiks pomeni vrednost spremenljivke na naslovu, na katerega kaže kazalec, & prefiks pomeni naslov spremenljivke, na katerega kaže kazalec. Primer uporabe kazalcev pri prepisu vsebine vrat PORTB na PORTC: kazalec = &PORTB; //v kazalec se shrani naslov vrat PORTB (0x0006) temp = *kazalec; //v temp se shrani vrednost spremen ljivke, katere naslov (0x0006, naslov vrat PORTB) hrani kazalec kazalec = kazalec+1; //vrednost kazalca se poveèa za 1 (sedaj znaša 0x0007) *kazalec= temp; //na naslov, kamor kaže kazalec (0x0007, naslov vrat PORTC), se prepiše vrednost iz spremenljivke temp Operatorji v programskem jeziku C Poglejmo si, katere operacije uporabljamo pri programiranju s programskim jezikom C. Ostali operatorji

12 Sodelujte v nagradnem žrebanju Microchipove PICDEM.net Lite Internet/Ethernet demo plošèe www.microchip-comp.com/se-picdem Svet elektronike svojim bralcem nudi možnost osvojitve Microchip PICDEM.net Lite demo plošèe in MPLAB ICD 2 razhrošèevalnika. PICDEM.net Lite demo plošèa je pravzaprav Internet/Ethernet razvojna plošèa z vgrajenim PIC18F452 mikrokontrolerjem in tovarniško vgrajenim TCP/IP skladom. Plošèa podpira vsa 40-pinska DIP vezja s standardnim razporedom pinov, kakršnega imata PIC16F877 ali PIC18F452. PICDEM.net plošèa je namenjena eksperimentiranju z razliènimi Microchipovimi TCP/IP rešitvami. Uporabniku je po inicialni nastavitvi IP naslova omogoèen takojšnji dostop omrežju. Flash mikrokontroler omogoèa modifikacije v demo programu oziroma dodajanje aplikacijskega programa. Na demo plošèi se nahaja tudi stabiliziranih 5 V za napajanje dodatnih senzorjev ali testnih uporabniških vezij. Z namenom razvoja lastne aplikacije lahko v èip naložimo tudi druge standardne ali uporabniške strežniške programe. Na plošèi je uporabljen brezplaèen Microchipov TCP/IP sklad, ki je opisan v referenèni aplikaciji AN833 (DS00833). V omenjenem dokumentu so na voljo tudi primeri kode. Microchip TCP/IP sklad je garnitura programov, ki omogoèa uporabo tako standardnih TCP/IP aplikacij (HTTP Server, Mail Client, itn.), kot tudi uporabniških TCP/IP aplikacij. Da bi lahko uporabili TCP/IP sklad, se uporabnikom ni potrebno uèiti vseh njegovih zapletenih specifikacij in svoj trud lahko osredotoèijo le na HTTP strežniško aplikacijo, ki pa ne zahteva poznavanje TCP/IP protokola. TCP/IP sklad je implemetiran na modularen naèin, z vsemi svojimi zmožnostmi kreiranja visoko abstraktnih plasti, ki jim lahko dostopamo iz katerekoli plasti neposredno pod njimi. Sklad je napisan v programskem jeziku C, namenjen je Microchipovim prevajalnikom C18 in HI-TECH PICC 18 in je predviden le za delovanje v Microchipovi PIC 18 družini mikrokontrolerjev. Èeprav je ta implementacija namenjena le za delovanje na PIC- DEM.net Internet/Ethernet demo plošèi, jo lahko enostavno prilagodimo tudi za delovanje v katerikoli napravi, ki je opremljena s PIC18 mikrokontrolerjem. PIC- DEM.net vsebuje Ethernet in RS- 232 komunikacijski vmesnik. HTML spletne strani, ki jih generira PICmicro mikrokontroler, si lahko ogledujemo s katerimkoli standardnim spletnim brskalnikom (npr. Microsoft Explorer). Zaèetna konfiguracija plošèe (nastavitev IP naslova) se izvaja preko RS-232 vrat s pomoèjo standardnega terminalskega programa. Demo plošèa je opremljena tudi s 6-pinskim modularnim konektorjem za direktno povezavo z MPLAB ICD 2 razhrošèevalnikom. S pomoèjo MPLAB ICD 2 lahko uporabniki spreminjajo oz. preprogramirajo flash PICmicro mikrokontroler in tako prilagajajo delovanje sistema svojim potrebam. Na plošèi je tudi veliko prostora za dodajanje raznih dodatnih komponent potrebnih za izvedbo lastnih aplikacij. Površina zadostuje za namestitev vgradnega modema, ki bo zagotavljal klicno zmogljivost. Na voljo je tudi veè statusnih indikatorjev in uporabniških vmesnikov, vkljuèno s 16 x 2 LCD prikazovalnikom in LEDikami. Da bi sodelovali v nagradnem žrebanju tega razvojnega kita, je dovolj, da se prijavite na www.microchip-comp.com/se-picdem. OKTOBER 2005 SVET ELEKTRONIKE

13 Relacijski operatorji: logiène odloèitve in programske zanke. Logiène odloèitve K logiènim odloèitvam štejemo tiste stavke, ki poskrbijo za vejitev programa. V to skupino spadajo: stavek if-else, stavek switch-case in programski skok goto. Stavek if-else ter programski skok goto sta bila opisana že v pretekli številki, zato ju ne bi ponovno opisovali. Aritmetièni operatorji: Logièni operatorji: Kontrola poteka programa Stavki za kontrolo toka programa v programskem jeziku doloèajo vrstni red izvajanja programa. V programskem jeziku C loèimo dve vrsti stavkov: Stavek switch-case Poglejmo si uporabo switch-case stavka. Stavek switch-case uporabljamo v primerih, ko se program lahko nadaljuje po veè razliènih poteh. Na nek naèin je stavek switch-case nadgradnja stavka if-else, pri slednjem se program lahko nadaljuje le po dveh razliènih poteh. Pot, po kateri se bo program nadaljeval, je odvisen od izpolnjevanja pogojev (case). Sintaksa: switch(a) case 0: akcija_0; //èe je a enak 0, se izvede del programa akcija_0 case 1: akcija_1; //èe je a enak 1, se izvede del programa akcija_1 case 2: akcija_2; //èe je a enak 2, se izvede del programa akcija_2 default: akcija_drugo; //v ostalih primerih se izvede del programa akcija_drugo switch (senzor_stat) case 0B00000000: mot2a=1; // testiranje pogojev // del programa, ki se izvede v

14 primeru, mot2b=0; mot1a=0; mot1b=1; case 0B00000001: mot2a=1; primeru, mot2b=0; mot1a=1; mot1b=0; case 0B00000100: mot2a=0; primeru, mot2b=1; mot1a=1; mot1b=0; default: mot2a=1; mot2b=0; mot1a=0; mot1b=1; // ko je vrednost // spremenljivke senzor_stat // enaka 0b00000000 // del programa, ki se izvede v // ko je vrednost // spremenljivke senzor_stat // enaka 0b00000001 // del programa, ki se izvede v // ko je vrednost // spremenljivke senzor_stat // enaka 0b00000100 // del programa, // ki se izvede // v ostalih // primerih Programske zanke Programske zanke so deli programa, ki se veèkrat ponovijo. Število ponovitev je odvisno od izpolnjevanja pogojev, ki se pred vsako ponovitvijo zanke preverjajo. V to družino stavkov spadajo: programska zanka while, programska zanka do-while, programska zanka for ter stavka break in continue. Zanki while ter do-while sta nam že znani iz pretekle številke, ogledali si bomo še preostali dve. Programska zanka for Programska zanka for je nadgradnja zanke while. Za razliko od zanke while, ki je od parametrov potrebovala le pogoj testiranja, potrebuje zanka for tri zaèetne parametre, ki so med seboj loèeni s podpièji, in sicer: zaèetno vrednost, pogoj testiranja in korak zanke (reinicializacija). Sintaksa: for (zaèetna_vrednost, pogoj_testiranja, korak_zanke) akcija_1; Pred prièetkom izvajanja zanke se nastavijo zaèetne vrednosti spremenljivk, nato se izvede zanka. Ob zakljuèku zanke se izvede še operacija korak zanke. Zanka se izvaja tako dolgo, dokler je pogoj izpolnjen. Preverjanje se vrši vedno v zaèetku zanke, šele nato se izvede akcija_1. for (st_ponovitev=0;st_ponovitev<3;st_ponovitev=st_ponovitev+1) //zaèetna vrednost spremenljivke //st_ponovitev je enaka 0 //tu se izvede preverjanje, èe je st_ponovitev<3 servo2_out(51); //izvaja //se //sledeèi servo2_out(77); //del //programa //vse servo2_out(102); //do //tukaj //oziroma do tukaj //ob zakljuèku zanke se spremenljivka //st_ponovitev poveèa za 1 Z uporabo programske zanke while bi isti program izgledal takole: st_ponovitev=0; //pred prièetkom izvajanja zanke //nastavimo zaèetno vrednost while(st_ponovitev<3) //testiranje pogojev servo2_out(51); servo2_out(77); servo2_out(102); st_ponovitev=st_ponovitev+1 //korak zanke Stavka break in continue Stavka break in continue uporabljamo za prekinitev ali nadaljevanje programske zanke. S stavkom break prekinemo izvajanje katerekoli zanke, kljub temu, da so pogoji izvajanja zanke izpolnjeni. S stavkom continue pa dosežemo ravno nasprotno: programska zanka se bo vedno ponovila, ne glede na to, ali so pogoji izvajanja zanke izpolnjeni ali ne. Sintaksi: continue; for (stevec=0;stevec<5;stevec++) if(stevec==2) continue; PORTB<<=1; // prekine izvajanje zanke // nadaljuje izvajanje zanke //v primeru, da je spremenljivka stevec enaka 2 //(èetudi je vrednost spremenljivke stevec manjša kot 5), //se izvajanje zanke ustavi in //vrne na zaèetek for zanke OKTOBER 2005 SVET ELEKTRONIKE

15 if(stevec==4) //kljub temu, da je pogoj izpolnjen //(vrednost stevec manjša kot 5), //se izvajanje zanke predèasno prekine //in nadaljuje izven for zanke Zbirniški ukazi Pa še to. Vèasih se pojavi zahteva, da moramo del programa napisati v zbirnem jeziku. To je nižji programski jezik, ki ga uporabljamo pri programiranju mikrokontrolerjev. Po naravi je primitivnejši, to pomeni, da je potrebno opravila, ki jih v višjih programskih jezikih zapišemo v eni vrstici (primer matematiène operacije množenja), v zbirniku zapišejo v veè korakih. Prednost zbirnika pred višjimi programskimi jeziki je predvsem v krajši programski kodi in posledièno hitrejšem izvajanju programa. Sintaksa 1: #asm programska koda #endasm //oznaèuje prièetek zbirniške kode //oznaèuje konec zbirniške kode Sintaksa 2: asm ( ukaz ); #asm nop movlw 0x4a movwf portb #endasm asm ( movlw 0x3e ); asm ( movwf portc ); //vnos posamiènega ukaza v zbirniškem jeziku //del programa //v //zbirniškem jeziku //ukaz v zbirniškem jeziku //ukaz v zbirniškem jeziku Do prihodnje številke S teorijo smo danes zakljuèili. Upam, da ni bilo preveè dolgoèasno. Prihodnjiè pa zopet nadaljujemo z zanimivejšimi stvarmi prièeli bomo s krmiljenjem enosmernih motorèkov. Pripravite se. Pa lep pozdrav! l Literatura: [1] HI-TECH, PICC Lite C Manual, HI-TECH Software, 2002, http://www.htsoft.com/downloads/manuals.php; [2] B.W. Kernighan, D.M. Ritchie, Programski jezik»c«, Ljubljana: Fakulteta za elektrotehniko, 1991. Kmalu tudi v SLOVENŠÈINI!