|
C
kompajler za mikrokontroler PIC16C84
Uzimajući
u obzir činjenicu da se C kompajleri za PIC16C84, za sada, relativno
teško mogu nabaviti, kompajler pico-C verzija 0.2 finskog autora Hannia
Jokinena predstavlja malo osveženje u tom pogledu. Tačnije, ovde se
radi o beta verziji programa koja se slobodno može preuzeti sa Interneta.
Istine radi, reč kompajler je pretenciozan izraz za program o kome
govorimo. Može se govoriti o drastično osiromašenom kompajleru koji
ne sadrži mnoge odrednice na koje su navikli C programeri. Zato je bolje
na početku reći da nema C pretprocesora, nema deklarisanja
promenljivih ( izuzimajući 'char' ), nema lokalnih deklaracija
'char', nema pokazivača i nizova (izuzetak su nizovi oblika: const
str[]="ABCD") itd. Ovaj program ne generiše hex ili obj
datoteku već asemblerski listing spreman za dalju obradu Microchip-ovim
MPASM asemblerom.
Funkcije se deklarišu u skladu sa Kernighan&Ritchie definicijom
jezika C:
ImeFunkcije(x,y,z)
char x,y,z
{
....
/*
telo funkcije */
}
Treba
naglasiti da se parametri funkcije prosleđuju preko steka a da ulogu
pokazivača steka obavlja registar FSR. Početna adresa steka je
0x2d a takođe treba primetititi da je memorijski prostor između
0x2d i 0x2f rezervisan za kompajler. Kada već govorimo o memorijskom
prostoru primetimo da su sve promenljive (koje mogu biti samo globalne!)
uskladištene počev od startne adrese 0x0c.
Kako je već rečeno, u telu funkcije ne sme biti novih
deklaracija lokalnih varijabli. Kada je o funkcijama reč, program
obezbeđuje dve osnovne: main() i interrupt(). Njima se ne prosleđuju
nikakvi parametri, niti one vraćaju vrednosti.
Jedna od najboljih stvari kompajlera predstavljaju operatori. Kompajler
podržava sve one operatore
(+,-,&,\,~,<<,>>,++,--,=,+=,-=) koji su utemeljeni u setu
instrukcija PIC16C84. Što se tiče množenja i deljenja pico-C preko
operatora '*' i '/' realizuje upotrebu ovih operatora pozivanjem bibliotečkih
procedura mul i div.
Možda najveće iznenađenje predstavljaju C naredbe za kontrolu
toka izvršenja programa. Podržane su sledeće konstrukcije:
if ...
if ... else ...
while ...
do ... while
switch/case/default
goto ...
Kao što vidimo, nema for naredbe. Drugo iznenađenje predstavlja
karakter upravljačkih izraza. Oni su u osnovi prosti tj. nema
stvaranja složenih upravljačkih izraza pomoću operatora
'&&' i '\\'. To znači da, na primer, nije dozvoljen
izraz:
if(a>b&&c<d) ili neki drugi koji podrazumeva korišćenje
pomenutih operatora.
Osim toga, upravljački izraz u naredbi do … while može biti samo
oblika ++value ili --value što takođe treba imati na umu
prilikom programiranja.
Nakon svega, možemo se nadati da će se buduće verzije ovog
programa uspešno izboriti sa pomenutim nedoslednostima, a ljubiteljima
mikrokontrolera PIC16C84 preporučujemo opreznu upotrebu i dalje istraživanje
ovog programa. x
|