Sunteți pe pagina 1din 31

1

CUPRINS


ARGUMENT 2
CAPITOLUL I. Microcontrolere 3
1.1.Noiuni introductive 3
1.2.Structura intern i funcionarea microcontrolelor 5
CAPITOLUL II. Programul IC Prog 11
2.1. Interfaa IC Prog 11
2.2. Verificare program cu microcontroleru PIC16F84 16
CAPITOLUL III. Programul PonyProg 18
3.1. Interfea grafic 18
3.2. Programarea PonyProg 20
CAPITOLUL IV. Programul MPLAB 22
4.1. Instalarea pachetului de program MPLAB 22
4.2. Proiectarea unui fiier asamblor 24
CAPITOLUL V. Programarea Microcontrolerelor utiliznd Limbajul C 27
5.1.

Program Keil- uVision2 27
5.2. Proiectare program cu programul Keil- uVision2 29
VI. BIBLIOGRAFIE 31





2

ARGUMENT


In acest proiect am prezentat o serie de caracteristici specific microcontrolelor PIC16F84,
programele PONNYPROG si ICPROG necesare pentru programarea acestor microcontrolere.
In primul capitol am prezentat structura interna a unui microcontroler si am descries rolul si
functionarea feicarui subansamblu a acestuia.
In capitolul doi am prezentat programul ICPROG si am descries interfata acestuiaunde se
gasesc butoanele de inscriere in program; Citire program; Stergere program; Verificare program din
interiorul unui microcontroler PIC16F84.
In capitolul trei am prezentat programul PONNYPROG, interfata grafica si butoanele
aferente pentru programarea PonyProg.
In capitolul patru am prezentat programul MPLAB utilizat pentru scrierea unui algoritm.
Dupa acesta editare cu ajutorul unui program numit Asamblor si vom transforma acest program intr-
un program exa(nume fisier,desc) care este necesar pentru a putea fi scris in microcontroler.
In capitolul cinci am ilustrat o programare a microcontrolerelor utiliznd Limbajul C.








3

CAPITOLUL I. Microcontrolere

1.1.Notiuni introductive

La modul general un controler ("controller" - un termen de origine anglo-saxon, cu un
domeniu de cuprindere foarte larg) este, actualmente, o structur electronic destinat controlului
unui proces sau, mai general, unei interaciuni caracteristice cu mediul exterior, fr s fie necesar
intervenia operatorului uman. Primele controlere au fost realizate n tehnologii pur analogice,
folosind componente electronice discrete i/sau componente electromecanice (de exemplu relee).
Cele care fac apel la tehnica numeric modern au fost realizate iniial pe baza logicii cablate (cu
circuite integrate numerice standard SSI i MSI ) i a unei electronici analogice uneori complexe,
motiv pentru care "strluceau" prin dimensiuni mari, consum energetic pe msur i, nu de puine ori,
o fiabilitate care lsa de dorit.
Apariia i utilizarea microprocesoarelor de uz general a dus la o reducere consistent a
costurilor, dimensiunilor, consumului i o mbuntire a fiabilitii. Exist i la ora actual o serie de
astfel de controlere de calitate, realizate n jurul unor
microprocesoare de uz general cum ar fi Z80 (Zilog),
8086/8088 (Intel), 6809 (Motorola), etc.
O definiie, cu un sens foarte larg de cuprindere, ar fi aceea
c un microcontroler este un microcircuit care
incorporeaz o unitate central (CPU) i o memorie
mpreun cu resurse care-i permit interaciunea cu mediul
exterior.



4

Toate aplicaiile n care se utilizeaz microcontrolere fac parte din categoria aa
ziselor sisteme ncapsulate-integrate (embedded systems), la care existena unui sistem de calcul
incorporat este (aproape) transparent pentru utilizator.
Printre multele domenii unde utilizarea lor este practic un standard industrial se pot
meniona: n industria de automobile (controlul aprinderii/motorului, climatizare, diagnoz, sisteme
de alarm, etc.), n aa zisa electronic de consum (sisteme audio, televizoare, camere video i
videocasetofoane, telefonie mobil, GPS-uri, jocuri electronice etc.), n aparatura electrocasnic
(maini de splat, frigidere, cuptoare cu microunde, aspiratoare), n controlul mediului i climatizare
(sere, locuine, hale industriale), n industria aerospaial, n mijloacele moderne de msurare -
instrumentaie (aparate de msur, senzori i traductoare inteligente), la realizarea de periferice
pentru calculatoare, n medicin.
Ca un exemplu din industria de automobile (automotive industry), unde numai la nivelul
anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de
microcontrolere. Practic, dei am prezentat ca exemple concrete numai sisteme robotice i
mecatronice, este foarte greu de gsit un domeniu de aplicaii n care s nu se utilizeze
microcontrolerele.









5

1.2.Structura interna si functionarea microcontrolelor

1 .Unitatea de memorie

Memoria este o parte a microcontrolerului a carei functie este de a nmagazina date. Cel mai
usor mod de a explica este de a-l descrie ca un dulap mare cu multe sertare. Daca presupunem ca am
marcat sertarele ntr-un asemenea fel nct sa nu fie confundate, oricare din continutul lor va fi atunci
usor accesibil. Este suficient sa se stie desemnarea sertarului si astfel continutul lui ne va fi cunoscut
n mod sigur.

Componentele de memorie sunt exact asa. Pentru o anumita intrare obtinem continutul unei
anumite locatii de memorie adresate si aceasta este totul. Doua noi concepte ne sunt aduse: adresarea
si locatia de memorie. Memoria consta din toate locatiile de memorie, si adresarea nu este altceva
dect selectarea uneia din ele. Aceasta nseamna ca noi trebuie sa selectam locatia de memorie la un
capat, si la celalalt capat trebuie sa asteptam continutul acelei locatii. n afara de citirea dintr-o
locatie de memorie, memoria trebuie de asemenea sa permita scrierea n ea. Aceasta se face prin
6

asigurarea unei linii aditionale numita linie de control. Vom desemna aceasta linie ca R/W (citeste
/scrie). Linia de control este folosita n urmatorul fel: daca r/w=1, se face citirea, si daca opusul este
adevarat atunci se face scrierea n locatia de memorie. Memoria este primul element, dar avem
nevoie si de altele pentru ca microcontrolerul nostru sa functioneze.
1.2 Unitatea de procesare central

Sa adaugam alte 3 locatii de memorie pentru un bloc specific ce va avea o capabilitate
incorporata de nmultire, mpartire, scadere si sa-i mutam continutul dintr-o locatie de memorie n
alta. Partea pe care tocmai am adaugat-o este numita "unitatea de procesare centrala" (CPU).
Locatiile ei de memorie sunt numite registri.


Registrii sunt deci locatii de memorie al caror rol este de a ajuta prin executarea a variate
operatii matematice sau a altor operatii cu date oriunde se vor fi gasit datele. Sa privim la situatia
curenta. Avem doua entitati independente (memoria si CPU) ce sunt interconectate, si astfel orice
schimb de informatii este ascuns, ca si functionalitatea sa. Daca, de exemplu, dorim sa adaugam
continutul a doua locatii de memorie si ntoarcem rezultatul napoi n memorie, vom avea nevoie de o
conexiune ntre memorie si CPU. Mai simplu formulat, trebuie sa avem o anumita "cale" prin care
datele circula de la un bloc la altul.




7

1.3 Bus-ul
Calea este numita "bus"- magistrala. Fizic, el reprezinta un grup de 8, 16, sau mai multe fire.
Sunt doua tipuri de bus-uri: bus de adresa si bus de date. Primul consta din attea linii ct este
cantitatea de memorie ce dorim sa o adresam, iar celalalt este att de lat ct sunt datele, n cazul
nostru 8 biti sau linia de conectare. Primul serveste la transmiterea adreselor de la CPU la memorie,
iar cel de al doilea la conectarea tuturor blocurilor din interiorul microcontrolerului.









1.4 Unitatea intrare-iesire
Aceste locatii ce tocmai le-am adaugat sunt numite "porturi". Sunt diferite tipuri de porturi:
intrare, iesire sau porturi pe doua-cai. Cnd se lucreaza cu porturi, mai nti de toate este necesar sa
se aleaga cu ce port urmeaza sa se lucreze, si apoi sa se trimita date la, sau sa se ia date de la port.




8

1.5 Comunicatia seriala
Cu aceasta am adaugat la unitatea deja existenta posibilitatea comunicarii cu lumea de afara.
Totusi, acest mod de comunicare are neajunsurile lui. Unul din neajunsurile de baza este numarul de
linii ce trebuie sa fie folosite pentru a transfera datele. Ce s-ar ntmpla daca acestea ar trebui
transferate la distanta de ctiva kilometri? Numarul de linii nmultit cu numarul de kilometri nu
promite costuri eficiente pentru proiect. Nu ne ramne dect sa reducem numarul de linii ntr-un asa
fel nct sa nu scadem functionalitatea. Sa presupunem ca lucram doar cu 3 linii, si ca o linie este
folosita pentru trimiterea de date, alta pentru receptie si a treia este folosita ca o linie de referinta att
pentru partea de intrare ct si pentru partea de iesire. Pentru ca aceasta sa functioneze, trebuie sa
stabilim regulile de schimb ale datelor. Aceste reguli sunt numite protocol. Protocolul este de aceea
definit n avans ca sa nu fie nici o nentelegere ntre partile ce comunica una cu alta. De exemplu,
daca un om vorbeste n franceza, si altul vorbeste n engleza, este putin probabil ca ei se vor ntelege
repede si eficient unul cu altul. Sa presupunem ca avem urmatorul protocol. Unitatea logica "1" este
setata pe linia de transmisie pna ce ncepe transferul. Odata ce ncepe transferul, coborm linia de
transmisie la "0" logic pentru o perioada de timp (pe care o vom desemna ca T), asa ca partea
receptoare va sti ca sunt date de primit, asa ca va activa mecanismul ei de receptie. Sa ne ntoarcem
acum la partea de transmisie si sa ncepem sa punem zero-uri si unu-uri pe linia de transmisie n
ordinea de la un bit a celei mai de jos valori la un bit a celei mai de sus valori. Sa lasam ca fiecare bit
sa ramna pe linie pentru o perioada de timp egala cu T, si la sfrsit, sau dupa al 8-lea bit, sa aducem
unitatea logica "1" napoi pe linie ce va marca sfrsitul transmisiei unei date. Protocolul ce tocmai l-
am descris este numit n literatura profesionala NRZ (Non-Return to Zero).





9

Astfel microcontrolerul este acum terminat, si tot ce mai ramne de facut este de a-l pune
ntr-o componenta electronica unde va accesa blocurile interioare prin pinii exteriori. Imaginea de
mai jos arata cum arata un microcontroler n interior.





Configuratia fizica a interiorului unui microcontroler
Liniile subtiri ce merg din interior catre partile laterale ale microcontrolerului reprezinta fire
conectnd blocurile interioare cu pinii capsulei microcontrolerului. Schema urmatoare reprezinta
sectiunea centrala a microcontrolerului.










10

Pentru o aplicatie reala, un microcontroler singur nu este de ajuns. n afara de microcontroler,
avem nevoie de un program pe care sa-l execute, si alte cteva elemente ce constituie o interfata
logica catre elementele de stabilizare (ce se va discuta n capitolele urmatoare).
1.6 Programul
Scrierea programului este un domeniu special de lucru al microcontolerului si este denumit
"programare". Sa ncercam sa scriem un mic program ce l vom crea singuri si pe care oricine va fi n
stare sa-l nteleaga.
START
REGISTER1=MEMORY LOCATION_A
REGISTER2=MEMORY LOCATION_B
PORTA=REGISTER1 + REGISTER2
END
Programul aduna continutul a doua locatii de memorie, si vede suma lor la portul A. Prima
linie a programului este pentru mutarea continutul locatiei de memorie "A" ntr-unul din registri
unitatii de procesare centrale. Pentru ca avem nevoie si de celelalte date de asemenea, le vom muta
de asemenea n celalalt registru al unitatii de procesare centrale. Urmatoarea instructiune instruieste
unitatea de procesare centrala sa adune continutul celor doi registri sa trimita rezultatul obtinut la
portul A, nct suma acestei adunari sa fie vizibila pentru toata lumea de afara. Pentru o problema
mai complexa, programul care sa lucreze la rezolvarea ei va fi mai mare.




11

CAPITOLUL II. Programul IC Prog

2.1. Interfata Ic Prog

Acest software v permite s programai CIP i alte circuite integrate. Putei alege diferite
programatori, selectai interfaa I / O sau Windows API, port serial de comunicare i tipul de date,
adrese i codul programului pentru dispozitiv; selecta diferite dispozitive, citesc, terge verifica, i
trimite codul de program. Vederea poate fi de asamblare sau hexazecimal (vizualizare asamblare este
acceptat numai pentru 14/12 bii PIC).
Programator paralel PG3B. n primul rnd elementele de baz -
Cablu: Vei avea nevoie de un cablu paralel Pin 25 conductor - Male la femeie. Acest lucru este de la
distan ca un cablu de imprimant, dar cu un conector Pin 25, n loc de conectorul Port imprimant.
Asigurai-v c avei un cablu cu 25 de pini toate conectate.
Putere: Consiliul trebuie s fie alimentat cu sursa de alimentare 15V-18V DC. Curentul nu
este aa de important. > 100mA ar trebui s fac. Principalul lucru este de tensiune. Dac sursa de
alimentare este abia 15V, sub sarcin, acesta va fi mult mai probabil de 13-14V. Acest lucru este
foarte ru.
Pentru Pics de a programa, MCLR (resetare PIN) trebuie s fie ridicat la aproximativ 13V. Dac nu
ajunge la acest nivel - spune 10.5-11.5V, programare va fi foarte lovit-sau-dor. Dac primii un
16F628, care a venit de la o parte frumos curat din napolitana mare, acesta va intra n modul de
programare foarte bine la 10V. Dac primii un cip normale la fel ca restul dintre noi, vei dori s v
asigurai c avei c MCLR pini la 12-13V pentru a v asigura c PIC trece n modul de program.
12


Software: Utilizai ICPROG! De ce? Pentru c programele de cel mai mare numr de CIP, inclusiv
noul 16F676, 16F819, i 12F675! Descrcai fiierul zip i deschidei-l. Exist doar un singur fiier
(modul n care toate programele ar trebui s fie) - icprog.exe. Stoca acest fiier undeva la ndemn,
cum ar fi spaiul de lucru - va fi, folosind destul de un pic!
Utilizatorii de Windows NT i XP! : Facei clic aici.

13

ICPROG ferestrei principale
Deci, v-ai luat software-ul instalat. Acum le-ai luat s-l vorbesc cu PG3B. Pentru a
configura ICPROG - n meniul "Settings" selectai "Hardware".

Hardware: Selectai propic 2 Programmer
De aici selectai propic 2 Programator din caseta vertical. Vei avea nevoie, de asemenea,
pentru a inversa Data I / O i linii de ceas. Orice altceva ar trebui s fie implicit. Facei clic pe "OK"
pentru a nchide fereastra.

14

ICPROG fereastra de baz
Acum, deschide un fisier HEX pentru a testa cu. Asigurai-v c este mic - nu avei cu
adevrat nevoie pentru a umple PIC nc, nu-i aa? Fiierul HEX trebuie s aib siguranele codate -
ICPROG va recunoate aceste i selectai siguranele i setrile oscilator pentru tine. Trebuie s
selectai procesor de mn. Selecie procesor incorect poate prji chips-uri! Programarea 16F873 este
foarte diferit de 16F873A!
Dac utilizai 16F628, suntei binevenii s descrcai programul nostru Blink (cod C este aici).
Fiierul blink.hex, atunci cnd este ncrcat corect, se va transforma atat
PORTA i PORTB (toate I / O pini, ntr-adevr) de nalt i joas n fiecare
secund. Acest lucru este foarte uor pentru a testa pentru, dac avei la ndemn
un multimetru. Dac avei comisia de evaluare PIC-P18, LED-ul de stare va clipi
pe i n afara (presupunnd jumperul J1 este scurtcircuitat cu un jumper).
Locaii PIC -
Locaiile pentru toate diferite poze pini sunt indicate pe placa.
16F628 n 18Pin PIC poziia
Trebuie s se uite foarte atent, dar mai multe Pin 1 indicatori se afl n ntre dou i prize
treia.Pin un indicator pentru cele 28 i 40 de poze pini este linia alba dintre cele dou prize de la
partea de sus a imaginii. Pin 1 pentru 14 i 8 pini dispozitive PIC este a doua linie jos (vzut n
imagine).Pin 1 linia indicatoare 18 pini este a treia n jos (acoperite n prezent de 16F628). Putei
vedea PIN 1 "gropi" pe PIC se potrivete la indicatorul dintre prize. Pentru CIP slim - 16F873, F84,
F682, etc PIC trebuie nclecat prize 2 i 3 aa cum se arat n imagine. Pentru CIP mari - 16F877,
PIC trebuie nclecat prize exterioare 1 i 4.
15

Ia PIC-ul situat n mod corect n priz. Acum, du-te napoi la software-ul ICPROG i apsai
pe butonul cu urubul de iluminat.PG3B va clipi LED-uri de programare i PIC ar trebui s fie
verificate cu succes!

Temut generic eroare ICPROG
Ce trebuie s facei dac primii mesajul "Programare a euat la adresa 0000h Code" - Acesta
este codul de eroare generic care nseamn ceva (orice) este greit.
Asigurai-v c:
cablul paralel este conectat la LPT1.
programatorul este alimentat corect, iar indicatorul luminos de alimentare este aprins.
PIC este orientat n priza corect sau - cablul ICSP este ataat ferm i corect la orice dezvoltare bord
s-ar putea avea.
ai selectat PIC corect pentru placa ta. Din nou, 16F873 este diferit de 16F873A
Acum, c v-ai luat de lucru socket, ncepe s utilizai cablul ICSP. Aruncati o privire la un
alt unul din tutorialele noastre intitulat "Hook n Magic" pentru mai multe informaii.




16

2.2. Verificare program cu microcontroleru PIC16F84

PIC16F84 aparine unei clase de microcontrolere de 8 bii cu arhitectur RISC. Structura lui
general este artat n schia urmtoare reprezentnd blocurile de baz.
Memoria program (FLASH)-pentru memorarea unui program scris.
Pentru c memoria ce este fcut n tehnologia FLASH poate fi programat i tears mai mult dect
odat, aceasta face microcontrolerul potrivit pentru dezvoltarea de component.
EEPROM-memorie de date ce trebuie s fie salvate cnd nu mai este alimentare.
Este n mod uzual folosit pentru memorarea de date importante ce nu trebuie pierdute dac sursa de
alimentare se ntrerupe dintr-o dat. De exemplu, o astfel de dat este o temperatur prestabilit n
regulatoarele de temperatur. Dac n timpul ntreruperii alimentrii aceast dat se pierde, va trebui
s facem ajustarea nc o dat la revenirea alimentrii. Astfel componenta noastr pierde n privina
auto-meninerii.
RAM-memorie de date folosit de un program n timpul executrii sale.
n RAM sunt memorate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la
ntreruperea sursei de alimentare.
PORTUL A i PORTUL B sunt conexiuni fizice ntre microcontroler i lumea de afar. Portul A are
5 pini, iar portul B are 8 pini.
TIMER-UL LIBER (FREE-RUN) este un registru de 8 bii n interiorul microcontrolerului ce
lucreaz independent de program. La fiecare al patrulea impuls de ceas al oscilatorului i
ncrementeaz valoarea lui pn ce atinge maximul (255), i apoi ncepe s numere tot din nou de la
zero. Dup cum tim timpul exact dintre fiecare dou incrementri ale coninutului timer-ului, poate
fi folosit pentru msurarea timpului ce este foarte util la unele componente.
UNITATEA DE PROCESARE CENTRAL are rolul unui element de conectivitate ntre celelalte
blocuri ale microcontrolerului. Coordoneaz lucrul altor blocuri i execut programul utilizatorului.
CISC, RISC




17












Aplicaii

PIC16F84 se potrivete perfect cu multe folosine, de la industriile auto i aplicaiile de
control casnice la instrumentele industriale, senzori la distan mare electrice de ui i dispozitivele
de securitate. Este de asemenea ideal pentru cardurile smart ca i pentru aparatele alimentate de
baterie din cauza consumului lui mic.
Memoria EEPROM face mai uo aplicarea microcontrolerelor la aparate unde se cere
memorarea permanent a diferitor parametri (coduri pentru transmisie, viteza motorului, frecvenele
receptorului, etc.). Costul sczut, consumul sczut, flexibilitatea fac PIC16F84 aplicabil chiar i n
domenii unde microcontrolerele nu au fost primite intre(exemple: funcii de timer, nocuirea
interfeei i sistemele mari, aplicaiile coprocesor, etc.).


18

CAPITOLUL III. Programul PonyProg

3.1. Interfeta grafica

PonyProg este un programator dispozitiv serial bazat pe unele interfee simple i ieftine
pentru PC-ul, i un utilizator in cadru GUI framework disponibil pentru Windows Xp, NT i Intel
Linux. Scopul su este de lectur i scrie fiecare dispozitiv serial. n momentul de fa se sprijin pe I
C Bus , Microwire, SPI,EEPROM i bliul Atmel AVR i PIC micro.

PonyProg suport mai multe interfee hardware, ns reinei c numai cu interfa SI-Prog v
sunt capabili de a programa toate dispozitivele.


19

Interfata IC Bus


Interfata parallel port AVR ISP (STK200/300)



20

3.2. Programarea PonyProg

Setarea interfetelor

Interfa SI - Prog selectai " serial " check -box i alegei " API SI - Prog " sau " SI - Prog I /
O " n combo -box . Ferestre 95/98/ME i NT/2000/XP lucra , fie cu " PonyProg API " i " PonyProg
I / O " , dar acesta din urm este mai rapid . Pentru a utiliza " SI - Prog I / O " cu Linux avei nevoie
pentru a rula PonyProg ca root . Apoi selectai portul COM pe care dorii s utilizai , n cazul n care
unele porturi COM sunt dezactivate nseamn c acestea sunt utilizate de ctre alte programe ( de
obicei, de ctre conductorul auto mouse-ul sau modem ) , sau nu este instalat sau acces refuzat ( ar
putea avea nevoie de privilegii de root ) . Dac utilizai porturi COM adugate ( PCI sau PCMCIA
carduri ), trebuie s utilizai " API SI - Prog " . Reinei c USB2RS232 adaptoare de multe ori nu
funcioneaz sau sunt foarte lente .
Pentru a accesa porturile COM de la modul de utilizare n Linux avei nevoie de drepturile de
a scrie / dev/ttyS0 , 1 , ... dispozitive i directorul / var / blocare i selectai SI - Prog API ( aceasta
este metoda preferat ) .
AVR ISP interfa Parallel port selectai " paralel " check -box i alegei " Avr ISP API " sau
" Avr ISP I / O " din combo -box . WindowsNT/2000/XP lucra numai cu " Avr ISP I / O " . Pentru a
21

utiliza " Avr ISP I / O " cu Linux avei nevoie pentru a rula PonyProg ca root . Apoi selectai portul
LPT dorii s o utilizai . Reinei c, dac dorii s programai aparatul AT89Sxx care avei nevoie
pentru a selecta " Invert Reset " check -box . Pentru a utiliza aceast interfa cu Linux, avei nevoie
de un kernel 2.4.x sau mai nou i parport , parport_pc i module ppdev i avei nevoie de drepturile
de a scrie / dev/parport0 , 1 , ... dispozitive .
Putei utiliza aceast interfa pentru a citi / scrie Micros AVR i SPI EEPROM .
Interfa Ludipipo / JDM selectai " API JDM " sau " JDM I / O " . Apoi selectai portul
COM le utilizai . Toate consideraiile pentru " SI - Prog " interfa de mai sus sunt valabile pentru
JDM prea . Putei utiliza aceast interfa pentru a citi / scrie EEPROM PIC16x84 i 24Cxx . Dac
dorii s utilizai interfa JDM pentru a programa dispozitivele 24Cxx va trebui s v conectai PIN
7 din 24Cxx la GND ( schemele sunt greite ) .
Simplu am interfa CBUS selectai " paralel " check -box , apoi selectai portul LPT pe
care dorii s utilizai . Toate consideraiile pentru " Avr ISP " de mai sus sunt valabile pentru "
EasyI2CBus " prea .
Interfa DT - 006 Aceasta este cea mai simpl interfa de programare AVR ( putei gsi
placa de pe site-ul Dontronics ) . Cu toate acestea am sugerm s folosii interfaa " Avr ISP "
tamponat i mai sigure de mai sus , n special pentru ISP , deoarece tampon merge n Hi - Z de stat
dup programare .





22

CAPITOLUL IV. Programul MPLAB

4.1. Instalarea pachetului de program MPLAB

MPLAB este un pachet de program Windows ce face scrierea i dezvoltarea unui program
mai uoar. Poate fi descris cel mai bine ca un mediu de dezvoltare pentru un limbaj de programare
standard ce este intenionat pentru programarea unui computer PC. Unele operaii ce erau fcute din
linia de instruciuni cu un numr mare de parametri pnl la descoperirea IDE-ului, "Integrated
Development Environment", sunt acum flcute mai uoare prin folosirea MPLAB. Totui, gusturile
noasre difer, aa c chiar astzi unii programatori prefer editoarele standard i compilatoarele din
linia de instruciuni. n orice caz, programul scris este uor de citit, i este disponibil un help bine
documentat.
MPLAB const din cteva pri:
- Gruparea fiierelor aceluiai proiect ntr-un singur proiect (Project Manager)
- Generarea i procesarea unui program (Text Editor)
- Simulator de program scris folosit pentru simularea funcionrii programului n microcontroler.
nafar de acestea, sunt sisteme de susinere pentru produsele Microchip ca PICStart Plus i
ICD (In Circuit Debugger). Pentru c aceast carte nu acoper acestea, ele vor fi menionate doar ca
opiuni.
Cerinele minime pentru computer pentru rularea lui MPLAB sunt:

Computer compatibil PC 486 sau mai recent
Microsoft Windows 3.1x sau Windows 95 i noile versiuni ale sistemului de operare Windows
VGA graphic card
8MB memorie (32MB recomandat)
20MB spaiu pe hard disc
Mouse


23

Pentru a porni MPLAB-ul trebuie s-l instalm.
Instalarea este un proces de copiere a fiierelor de pe CD pe un hard disc al computerului. Este o
opiune pentru fiecare fereastr ce v ajut s v ntoarcei la cea precedent, aa ca erorile s nu
prezinte o problem sau s devin o experien stresant. Instalarea propriu-zis are loc ca la
majoritatea programelor Windows. Mai nti apare ecranul Windows, apoi putei alege opiunile
urmate de instalarea propriu-zis, i n sfrit, apare mesajul care spune programul dumneavoastr
instalat este gata de start.

Pai pentru instalarea MPLAB:
1. Pornii Windows-ul Microsoft
2. Punei the discul CD Microchip n CD ROM
3. Facei clic pe START n partea stng de jos a ecranului i alegei opiunea RUN
4. Facei clic pe BROWSE i selectai driver-ul CD ROM-ului computerului.
5. Gsii directorul numit MPLAB pe CD ROM-ul dumneavoastr
6. Facei clic pe SETUP.EXE i apoi pe OK .
7. Facei clic din nou pe OK n fereastra dumneavoastr RUN













24

4.2. Proiectarea unui fisier asamblor

Asamblorul [fr. assembleur] este un program ce prelucreaz instruciunile scrise ntr-un
limbaj simbolic orientat ctre calculator, schimbndu-le n coduri ale limbajului main. Aceast
traducere se realizeaz de obicei n raport de unu la unu, fiecare instruciune din limbajul simbolic de
programare fiind tradus ntr-o singur instruciune n limbajul main.
Fiecare tip de procesor deine propriul su limbaj numit "codul main", care reprezint
modul binar de codificare a instruciunilor i datelor n memorie, n forma direct executabil.
Instruciunile pot fi n general operaii elementare (aritmetice, logice, transfer de date) sau i operaii
de comand i control a procesorului. Codul main este, ca orice cod, format mai ales din cifre, fiind
greu de reinut pentru un programator. De exemplu, un calculator ar putea folosi pentru instruciunile
sale de adunare i scdere codurile main 5B i 5C. ns, n limbajul de asamblare, aceste dou
operaii ar putea fi simbolizate prin ADD i SUB, care sunt mult mai uor de reinut i folosit.
Pentru a putea fi interpretate de procesor, programul scris de om ("codul surs", scris de exemplu n
limbaj de asamblare) trebuie nti redus prin compilare (sau asamblare sau interpretare) la "codul
obiect" (n cod main), n acest scop fiind folosite "compilatoarele", "asambloarele" sau
"interpretorii".
Programarea n limbaj de asamblare presupune o bun cunoatere a structurii procesorului i
a componentelor sale adiacente. Ea face ca utilizatorul s aib acces la toate facilitile unui
calculator; dar programul rezultat va putea funciona numai pe acest tip de calculator. Dac
programul trebuie portat (transpus) i pe alte tipuri de calculatoare, atunci se prefer limbajele de
programare de nivel mai nalt.
De obicei limbajele de asamblare ofer i posibilitatea alctuirii de aa numite macrouri, dup
necesitile programului. Un macro este o pseudo-instruciune (formal ea arat ca i o instruciune
standard), creat i definit chiar de ctre programator, care const ntr-o grupare de mai multe
instruciuni obinuite i care primete un nume cu care poate apoi fi chemat n programul popriu-zis.
Macrourile mresc eficiena programrii, deoarece prescurteaz programarea i o fac mai facil. n
cursul asamblrii macrourile sunt nlocuite cu gruparea de instruciuni obinuite, conform definiiei
25

respective, proces care se numete macrosubstituie. Din cauza facilitilor de tip macro limbajul
"assembler" este numit uneori i "macro assembler".
ntr-un sens macrourile se aseamn cu subprogramele / subrutinele.

Asamblarea este procesul prin care codul surs, scris n limbaj de asamblare, este transformat
n cod main sau cod obiect. Codul surs poate fi dispus pe mai multe module. Procesul invers se
numete "dezasamblare".
Etapele asamblrii:
Mai nti se genereaz o tabel de simboluri, ce conine toate numele simbolice din programul surs,
exceptnd numele simbolice externe (din alte module), instruciuni i directive de asamblare.
Asamblorul contorizeaz instruciunile i datele, asociind numelor simbolice un
"deplasament" fa de nceputul programului, ca i cum programul ar ncepe de la adresa 0. n
realitate, programul nu se ncarc n RAM la adresa 0, ci de la o adres furnizat de sistemul de
operare, n spaiul de memorie disponibil; aceast adres chiar poate de fiecare dat s fie alta. Deci
programul furnizat de asamblor trebuie de obicei s fie "relocabil".
Se obine programul obiect, traducnd fiecare instruciune i nlocuind numele simbolice cu valoarea
sau adresa din tabela de simboluri.
Programul executabil se obine n urma etapei de editare de legturi (linkage edit), care
permite legarea mai multor module relocabile ntr-un singur fiierexecutabil, rezolvndu-se
referinele ncruciate dintre ele.









26

Asamblarea se poate face cu turboasamblorul TASM (vezi bibliografie), folosind comenzile "tasm
nume_fisier" i "tlink nume_fisier". Pentru a nu relua de fiecare dat secvena de comenzi necesare
pentru asamblarea programelor, se poate crea un fiier cu comenzi (de tip batch), numit de ex.
ASM.BAT, pentru asamblarea, editarea de legturi i eventual, tergerea fiierelor intermediare
(.OBJ), de forma:

Fiierul surs "hello.asm", scris n asembler X86:
.MODEL SMALL
.DATA
sir DB 'Hello World$'
.STACK 64
.CODE
START:
mov AX,@DATA
mov DS,AX
mov AH,9
mov DX,OFFSET sir
int 21H
mov AH,4CH
int 21H
END START
Acest fiier surs poate fi compilat, obinndu-se executabilul.









27

CAPITOLUL V. Programarea Microcontrolerelor utiliznd Limbajul C

5.1. Program Keil- uVision2

Utilizarea programului uVision2 - Keil Software - Crearea unui Proiect Programul folosit n
laborator este o variant gratis oferit de compania Keil Foftware, avnd limitare de asamblare
(compilare) a programelor ce depesc 2K octei. Acest program este un simulator de
microcontrolere, ajutnd programatorul s-i testeze programul, n timp real sau pas cu
pas, nainte de a-l nscrie n microcontroler.
Utilizarea programului:
Se pornete de la crearea unui proiect : project new project . Se d nume proiectului i se
salveaz. n acest moment apare Select device for target , i se alege din librrie microcontrolerul
pentru care se editeaz programul. Apoi se creeaz o pagin nou file new. Se salveaz
aceast pagin cu extensia: .c, apoi din target 1 source group 1 , se d click dreapta la
mouse i se alege Add files to Group source group 1 , se deschide o nou fereastr de unde se
alege fiierul mai devreme salvat. Atenie la extensia fiierului! Odat ales fiierul, se apas butonul
close pentru a nchide fereastra de dialog. ncepnd din acest moment, se poate trece la editarea
programului. Programul ofer o interfa uoar de lucru cu utilizatorul, de exp. mnemonicele din
program se vor colora n albastru.
Dup ce s-a scris programul, se va trece la compilarea acestuia, apsnd F7 (build target). n acest
moment se compileaz programul i dac nu sunt erori se poate trece la simularea lui.

Mediul de dezvoltare IDE Keil Vision2
Mediul de dezvoltare Vision2 este un mediu de dezvoltare integrat (IDE-Integrated
Development Environment) cu ajutorul cruia se poate implementa ntregul ciclu de dezvoltare a
28

unei aplicaii software (sau proiect) pentru un microcontroler din familia 8051.


In figura alaturata este prezentat ciclul de dezvoltare mpreuna cu principlalele unelte soft
(programe) care alcatuiesc mediul integrat de dezvoltare.
Ciclul de dezvoltare este similar oricarei alte aplicatii software si presupune etapele:

- crearea unui proiect, cu selectarea unei anumite variante de microcontroler 8051
precum si cu configurarea componentelor (uneltelor) soft ce vor fi utilizate
- crearea si editarea fisierelor sursa n limbaj de asamblare sau C
- generarea codului pentru aplicatie (Build = asamblare/compilare urmata de link
editare/locatare) prin intermediul unui manager de proiecte
- corectarea erorilor
- testarea aplicatiei cu ajutorul simulatorului si/sau al sistemului de dezvoltare
Mediul uVision2 permite crearea fisierelor sursa si organizarea lor ntr-un proiect care
defineste aplicatia tinta. El permite automatizarea asamblarii/compilarii urmata de link
editare (editarea de legaturi intre modulele obiect) si locatarea codului n memoria
program. Corectarea interactiva a erorilor, cu setarea diverselor optiuni sunt alte
facilitati oferite.
29

5.2. Proiectare program cu programul Keil- uVision2

Proiectarea programelor de functionare ale unui sistem trece prin mai multe etape :
1.Functiunile sistemului, lungimea canalelor de comunicatie nesesare transferului infomatiilor
precum si locatiile de memorie tinta (destinatie) a acestora.

2. &n 848c22i bsp; &n 848c22i bsp; &n 848c22i bsp; Identificarea acelor canale de transfer a
informatiilor care asigura sincronizarea UC cu procesul condus,

3. &n 848c22i bsp; &n 848c22i bsp; &n 848c22i bsp; Analiza prioritatilor ce trebuie sa fie atribuite
canalelor de transfer la tratarea informatiilor pentru a respecta teorema esantionarii.

4. &n 848c22i bsp; &n 848c22i bsp; &n 848c22i bsp; Se evidentiaza similitudinile ce apar in
functionarea sistemului sunt grupate in raportcu criterii specifice, functionale canalele de transfer a
informatiilor si sunt conturate task-urile. rutinele si subrutinele ce implementeaza functiunile
sistemului de comanda si control.

5. &n 848c22i bsp; &n 848c22i bsp; &n 848c22i bsp; Sunt analizate variatele posibilitati de
implementare hard a aplicatiei, respectiv suntdedicate canalelor informationale l i ni i l e porturilor,
canalele temporizatoare, celelalte resurse diferitelor necesitati ale sistemului.

In final trebuie sa subliniem ca procesul de proiectare este un proces iterativ, care presupune
parcurgerea succesiv de mai multe ori a etapelor de proiectare, pentru a se obtine o implementare a
aplicatiei optimala.

Proiectarea programului conform organigramei si tabelului de stare
Implementarea programului ce va fi scris in memoria microcontrolerului se va face cu ajutorul
softului Keil uVision2.
In continuare se prezinta fisierul sursa impreuna cu comentarile de rigoare :

30

Intersectie semaforizata
Programul aplicatiei:
Bliblotecile folosite vor fi prezentate in anexele 2,3,4,5,6.
#include <reg420.h>
#include 'variabile.h'
#include 'i2c.h'
#include 'set_reset.h'
#include 'intrins.h'
#define SYSCLK 11060000
// Adresele circuitelor PCF8574 din sistem
// Scriere
unsigned char PCF0_W =0x70;
// Citire
unsigned char PCF0_R =0x71;
// Scriere
unsigned char PCF1_W =0x72;
// Citire
unsigned char PCF1_R =0x73;
unsigned short stare;
//Citire/unsigned end// short sc.







31

Bibliografie
"Procesoare Intel. Programare n limbaj de asamblare. Ediia II" - Vasile Lungu, Editura
Teora, 2004, Bucureti


www.pimcopy.ro editura Stiinte ingineresti Aplicatii practice ale
microcontrolerelor_Aplicatii practice ale microcontrolerelor.


ep.etc.tuiasi.ro_site_Microcontrolere_Referate_laborator_lab. 13 uC