Néhány gondolat a PICi Pascal-ról
Néhány gondolatot leírnék a PicPascalról.

Nagyon sok mindenben hasonlít a Turbo Pascalhoz, de ez a program, speciálisan egyfajta áramkörcsalád, a PIC programozására készült.
A teljesség igénye nélkül leírok néhány olyan dolgot amit feltétlenül meg kell ismerni ahhoz, hogy belevágjunk a programozásba.

Hirdetés

Mivel ez nem tankönyv, nem szeretnék nagyon részletesen, teljességre törekedve, mindent leeírni. Ennek több oka is van. Egyrészt nem is tudnám, mivel nem vagyok tanár, és még én is csak tanulom a PicPascalt, másrészt ez csak egy ismertető, egy cikksorozat, aminek már a terjedelme sem teszi ezt lehetővé. Léteznek erről tankönyvek, néhányat én is forgatok, és intenzíven használom a PicPascal helpjét, és az adott PIC adatlapját. Ezeket sem csatolnám a cikkekhez, Google a barátunk, és sokkal több hely van a neten, mint azon a serveren, ahol az oldal található. Még egy apróság, az esetek többségében nem térek ki a szintaktikai szabályokra, ezeket a Pascal helpje tartalmazza. Higgyétek el nem lustaságból teszem, (na jó, egy kicsit igen :-)) de megpróbálok mindenkit arra ösztönözni, hogy használjátok a PicPascal helpjét, másrészt a Pascal-ban a végtelen ciklus jó dolog, de a végtelen cikk, az nem olyan jó...

A PicPascal programszerkezete semmiben sem különbözik a Turbo Pascaltól. A deklarációs rész, a változók típusa, az utasítások jó része, azokon kívül, ami speciálisan a PIC-hez kötődik, tulajdonképpen megegyezik vele.
Amiben nagyon nagy az eltérés, az a portok kezelése, megszakítások kezelése, speciális funkciók (PWM, I2C, stb...) kezelése.
Ezekről majd akkor írok, ha odaértünk PICi programunkkal.

Na, akkor lássuk a medvét.

Elsőként mindig a a Program neve, majd a deklarációs rész következik. Ebbe kicsit részletesebben belemászunk.
A Pascalban mindent előre kell deklarálni.: A UNIT-okat, konstansokat, változókat, cimkéket. A deklarációs részben ezeket fel kell sorolni.

Deklarációs rész

uses - Itt kell a programunkban használt unit-okat felsorolni.

A UNIT-ok előre megírt Pascal Programok amelyeket implementálhatunk a programunkba. A PicPascal saját UNIT-jait, itt nem kell feltüntetni, hanem a Library Manager-ben kell kijelölni azt, amelyiket használni szeretnénk. Ezek a UNIT-k bizony nagy könnyebséget jelentenek a programozásban, mert pl.: nem nekünk kell megírni a kijelző kezelő rutint, hanem csak azt kell a PicPascalnak megmondani, hogy hol van a kijelző, és hogy mit írjon ki rá.

label - Amennyiben használunk címkét...
Címke. Nagyon ritkán használom. Direkt vezérlés átadáskor használatos a GOTO parancsal. Nem szerencsés, csak akkor használjuk ha nagyon muszáj, mivel itt nem tér vissza a program mint a szubrutin hívásnál, és ez keveredéseket okozhat.

const - Konstansok deklarálása
A Konstansok, a program futása során végig megtartják az értéküket. Leginkább a bemeneten levő kapcsolók azonosítójaként szoktam használni. A konstansokat nem csak deklarálni kell, hanem meg kell adni itt, azt az értéket, amit a programban használni fog.
Pl.:

Const Speed_Fel=0; Speed_le=1;

var - Változók deklarálása

Na ez a rész már kicsit hosszabb lesz, mivel többféle típusú változót használunk a PicPascal-ban. A leggyakrabban használtakat sorolnám fel itt. Hozzátenném még, hogy a változókat nem csak deklarálni kell, hanem meg kell adni a típusát is. Pl:

Var Loop, Bemenet, Speed_Fut : byte;
Boolean : két értéke lehet True vagy False. (Igaz vagy Hamis, 0 vagy 1)
Byte : 0 és 255 között vehet fel értéket.
Word : 0 és 65535 között vehet fel értéket.
Integer : -32768 ... +32768 között vehet fel értéket.
Longint : -2147483648 ... +2147483647 között vehet fel értéket.
Char : karakter típus

Ezzel nagyjából túl vagyunk a deklarációs részen.

Procedúrák
Ezek tulajdonképpen szubrutinok, amelyeket akár a főprogramból akár másik procedurából hívhatunk meg.
A procedura csak úgy mint a függvény, amely főleg matematikai számítások elvégzésere szolgál, komplett eljárásmód, melyben az utasításokat a Begin - End fogja össze.
A Pascalban ha több utasítást használunk egymás után, akkor Begin ... End közé kell tenni.
A procedórában is, és a függvényben is használhatunk lokális változókat amelyeket helyben kell deklarálni.

Főprogram
Tulajdonképpen ez maga a program.
Legtöbbször végtelen ciklusban, innen hívjuk a végrehajtandó procedurákat, függvényeket.

Feltétel kezelés
A Pascal leggyakrabban használt utasításai a feltételkezelő, és a ciklus utasítások.
A PicPascalban kétféle feltételkezelést használunk.
Az egyik az IF... THEN... ELSE utasítás amellyel kétirányú elágazás valósítható meg.
Magyarul az IF... THEN... ELSE tulajdonképpen azt jelenti, hogy HA... AKKOR... EGYÉBKÉNT.

IF változó = 1 THEN "csináld ezt" ELSE "csináld azt".
HA változó = 1 AKKOR "csináld ezt" EGYÉBKÉNT "csináld azt".


A másik feltételkezelő utasítás a CASE... OF... ELSE. Itt nincs meghatározva az elágazások száma, bármennyi lehet.

CASE változó OF
1 : akkor EZT csináld...
2 : akkor AZT csináld...
3 : akkor AMAZT csináld...
ELSE : emezt csináld...

Ezt is behelyettesíthetjük a HA.... AKKOR....EGYÉBKÉNT szavakkal, tulajdonképpen ugyanazt a feladatot végzi el, mint az IF...THEN...ELSE csak itt többszörös lehet az elágazás.
Mindkét feltételkezelésnél az ELSE ág elhagyható, nem kötelező, ha nincs rá szükség.

Ciklus utasítások
- For ciklus

Akkor használjuk, mikor tudjuk azt, hogy a ciklusmagban elhelyezett utasítást vagy utasításokat hányszor kell végrehajtani.
Ha több utasítást használunk a ciklusmagban akkor Begin-End közé kell tenni.

For Loop:=0 To 5 Do

Vagy ha visszafelé számolunk akkor...

For Loop:=5 DownTo 0 Do
Begin
Utasítás 1;
Utasítás 2;
Utasítás 3
End;

Tehát itt a ciklusmagban elhelyett utasításokat 5-ször egymás után végrehajtja a program, majd megy tovább.

- Repeat-Until
Ez a ciklus hátultesztelő tipus, azaz a ciklusmag után helyezkedik el a feltétel.

Repeat
Utasítás 1;
Utasítás 2;
Utasítás 3;
Until feltétel

Tehát ez a ciklus addig ismétlődik amíg a feltétel TRUE vagyis IGAZ nem lesz.
Ebben a ciklus fajtában, nem kell Begin-End közé tenni, ha több utasítást használunk.

- While ciklus
Ez elől tesztelő típusú ciklus, itt a feltételt a ciklus elején vizsgáljuk.
Addig ismétlődik a ciklus amíg a feltétel TRUE.
Amennyiben a ciklusmag több utasítást tartalmaz akkor Begin-End közé kell tenni.

While változó DO
Begin
Utasítás 1;
Utasítás 2;
End;

A Repeat-Until és a While ciklusoknak nincsen belső számlálója, tehát a változó értékének növelését vagy csökkentését, a ciklusmagban kell megoldani.

Egyéb utasítások
A Delay_us(100), Delay_ms(100) utasítások tulajdonképpen nem csinálnak semmit.
Csak várnak, a zárójelben paraméterként megadott ideig.

A VDelay_us(változó), VDelay_ms(változó) utasítások ugyanezt teszik, csak változóval is megadhatjuk a paramétert.

Nagyjából ezek lennének a legfontosabbak, bőven a teljesség igénye nélkül.
Ennyi kb. elegendő egy lendületes kezdethez. A PIC specifikus utasításokról egyrészt, majd akkor írok többet ha odaig eljutunk, PICi programocskánkkal, másrészt ismét hangsúlyoznám a PicPascal HELP-jének intenzív olvasgatását. Én is ezt teszem állandóan, ha programot írok.


Fájlok:
FájlnévFájlméretLetöltve
A cikkhez tartozó fájlok csak bejelentkezés után tölthetőek le!

Hozzászólások
Hozzászólás csak bejelentkezés után lehetséges...
grandiloquent-yearly
grandiloquent-yearly
grandiloquent-yearly
grandiloquent-yearly