Prvi koraci
========
Na početku svakog programa potrebno je uraditi nekoliko stvari koje praktično ne čine sam program, ali su bitne za rad kompajlera i mikrokontrolera.
Pokrenite MCS i dobićete ekran sličan slici 1 u pretposlednjoj poruci. U gornjem levom uglu nalazi se izbornik "Microcontroller" iz čije liste treba da odaberete PIC16F1827 i time ste kompajleru stavili do znanja za koji PIC pišete program. Sledeće što možete da uradite je da u zaglavlje upišete neke podatke o vašem programu, odn. čemu program služi, mada to možete da uradite i ispod zaglavlja kao komentar. U PBP sintaksi komentar se piše tako što se ispred njega stavi gornji apostrof (') ili tačka-zarez (;) i sve iza toga do kraja linije kompajler neće da uzima u obzir, jednostavno će da ignoriše sve što piše iza znaka za komentar sve do kraja linije, tj. dok ne pritisnete ENTER. U MCS-u komentari su obeleženi zelenom bojom.
Moja navika je da za komentar stavljam znak ";" jer često kombinujem PBP i ASM, a za ASM naredbe jedino je ";" validan za komentar.
Nakon toga možete u komentar da stavite i oznaku PIC-a za koji je progam pisan jer može da se desi da MCS "izgubi" tu informaciju ili da nekome pošaljete program kao tekst.
Sledeće što treba da uradite je da postavite konfiguraciju. O čemu se zapravo radi? Svaki PIC ima jedan ili više registara čiji sadržaj može da se postavi samo u toku programiranja i koji služe da se podese neki parametri kao što su vrsta oscilatora, zaštita memorije od isčitavanja, parametri WATCHDOG tajmera (u daljem tekstu WDT), itd. Konfiguraciju nije neophodno postaviti u programu jer većina softvera za progamiranje dozvoljava ručno postavljanje pre samog programiranja, ali to nije pametno jer ćete u nekom momentu i vi sami da zaboravite koja je konfiguracija u pitanju za odredjeni program. Zato je veoma zgodno da se konfiguracija podesi u samom progamu čime se ona nakon kompajliranja nalazi u HEX fajlu i softver za programiranje automatski podesi sve kako ste zamislili.
PIC16F1827 ima dva konfiguraciona registra koji imaju neke podrazumevane vrednosti pa je u programu dovoljno podesiti samo one parametre koji se menjaju. Konfiguracija se navodi izmedju pseudo-naredbi #CONFIG i #ENDCONFIG (pseudo-naredbe su one koje ne menjaju sam program već služe kao informacija za kompajler) i za program kojim se testira MINI PIC 1 izgleda ovako:
#CONFIG
__config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _WDTE_OFF
__config _CONFIG2, _PLLEN_OFF & _LVP_OFF
#ENDCONFIG
Medjutim, bolje je postaviti sve konfiguracione parametre u ovaj deo programa kako bi svi bili izlistani i kako ne bi morali svaki put da gledamo u tehničke podatke šta su podrazumevane vrednosti. Sve vrednosti za PIC16F1827 možete da pronadjete u PBP3 direktorijumu, poddirektorijum DEVICE_REFERENCE, fajl "PIC16F1827.INFO", a za naš tutorijal konfiguracija koju ćemo da koristimo u početnim primerima izgleda ovako:
#config
__config _CONFIG1, _FOSC_INTOSC, _WDTE_OFF, _PWRTE_ON, _MCLRE_OFF, _CP_OFF, _CPD_OFF, _BOREN_OFF, _CLKOUTEN_OFF, _IESO_OFF, _FCMEN_OFF
__config _CONFIG2, _WRT_ALL, _PLLEN_OFF, _STVREN_OFF, _BORV_19, _LVP_OFF
#endconfig
Ove dve pseudo-naredbe mogu da budu napisane i malim i velikim slovima. MCS ima tu osobinu da neke rezervisane reči sam prepravi u velika ili mala slova, a takav je slučaj i sa #ENDCONFIG - ako je kucate velikim slovima, nakon zadnjeg slova videćete da je automatski pretvorena u mala slova. Nema potrebe da vas to zbunjuje, sama reč je zaista napisana velikim slovima, ali je MCS prikazuje kao da je pisana malim. Pošto je to ionako nebitno, možete da pišete kako hoćete.
Za one koji hoće da znaju više o konfiguracionim registrima: pogledajte tehničke podatke za PIC16F1827, poglavlje "4.0 DEVICE CONFIGURATION".
I na kraju treba kompajleru staviti do znanja koja je frekvenca oscilatora koju koristimo, a to se radi sa DEFINE pseudo-naredbom:
DEFINE OSC 4
Ova naredba MORA da bude napisana velikim slovima, a sama definicija je nepotrebna ako koristimo oscilator na 4 MHz, ali je svakako poželjno da je postavimo. Ovu informaciju koristi kompajler kako bi preračunao neke od vremenski zavisnih naredbi, kao što je PAUSE. Vrednosti koje PBP podržava su (u MHz): 3 (za 3,58 MHz), 4, 8, 10, 12, 16, 20, 24, 25, 32, 33, 40, 48 i 64.
U slučaju da koristite neku frekvencu koja ovde nije navedena, moraćete sami da preračunate parametre za vremenski zavisne naredbe. Pretpostavimo da koristite oscilator na 2 MHz; u tom slučaju zgodno je upotrebiti DEFINE OSC 4 i onda sve vremenske parametre jednostavno duplirate, pa bi za pauzu od 20 ms trebalo napisati PAUSE 40.