Mikrokontrolerski sistemi

Autor: Dragan Golubović

Softver

Kontakt: gdragan@eunet.yu

 

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


Pročitajte više o ovoj temi
Funkcije u ARB 8051
Klase u ARB 8051
ARB PIC16F84

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji