Sunteți pe pagina 1din 29

CUPRINS

ARGUMENT

CAPITOLUL I. Microcontrolere

1.1.Noiuni introductive

1.2.Structura intern i funcionarea microcontrolelor

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
CAPITOLUL V. Programarea Microcontrolerelor utiliznd Limbajul C

24
27

5.1. Program Keil- uVision2

27

5.2. Proiectare program cu programul Keil- uVision2

29

VI. BIBLIOGRAFIE

31

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.

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 interven ia 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.

Toate aplicaiile n care se utilizeaz microcontrolere fac parte din categoria a a 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 men iona: n
industria de automobile (controlul aprinderii/motorului, climatizare, diagnoz, sisteme de alarm, etc.), n a a
zisa electronic de consum (sisteme audio, televizoare, camere video i videocasetofoane, telefonie mobil,
GPS-uri, jocuri electronice etc.), n aparatura electrocasnic (ma ini de splat, frigidere, cuptoare cu microunde,
aspiratoare), n controlul mediului i climatizare (sere, locuine, hale industriale), n industria aerospa ial, 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.

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 ntrun 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 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.

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.

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).

Astfel microcontrolerul este


acum

terminat, si

ramne

de facut este de a-l pune ntr-

componenta

unde va

accesa blocurile interioare

prin

pinii exteriori. Imaginea de

mai jos

arata

cum

tot

ce mai

electronica

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.

Pentru

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.

CAPITOLUL II. Programul IC Prog

2.1. Interfata Ic Prog

10

Acest software v permite s programai CIP i alte circuite integrate. Pute i 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. Asigura i-v c ave i
un cablu cu 25 de pini toate conectate.
Putere: Consiliul trebuie s fie alimentat cu sursa de alimentare 15V-18V DC. Curentul nu este a a 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 primi i 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 asigura i c ave i c MCLR pini la 12-13V
pentru a v asigura c PIC trece n modul de program.

11

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 fi ier (modul n care
toate programele ar trebui s fie) - icprog.exe. Stoca acest fiier undeva la ndemn, cum ar fi spa iul de lucru va fi, folosind destul de un pic!
Utilizatorii de Windows NT i XP! : Facei clic aici.

12

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. Face i clic pe "OK" pentru a nchide
fereastra.

13

ICPROG fereastra de baz


Acum, deschide un fisier HEX pentru a testa cu. Asigurai-v c este mic - nu ave i cu adevrat nevoie
pentru a umple PIC nc, nu-i aa? Fiierul HEX trebuie s aib siguran ele codate - ICPROG va recunoa te
aceste i selectai siguranele i setrile oscilator pentru tine. Trebuie s selecta i procesor de mn. Selec ie
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). Fi ierul
blink.hex, atunci cnd este ncrcat corect, se va transforma atat PORTA i PORTB (toate I / O pini, ntradevr) de nalt i joas n fiecare secund. Acest lucru este foarte u or 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). Pute i vedea PIN 1 "gropi " pe PIC se potrive te la
indicatorul dintre prize. Pentru CIP slim - 16F873, F84, F682, etc PIC trebuie nclecat prize 2 i 3 a a cum se
arat n imagine. Pentru CIP mari - 16F877, PIC trebuie nclecat prize exterioare 1 i 4.
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!

14

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 ata at 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.

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.

15

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

16

Aplicaii
PIC16F84

se

potrivete perfect cu

multe folosine, de la

industriile auto i

aplicaiile de control

casnice

instrumentele

industriale, senzori

la

distan

dispozitivele

la

mare

electrice de ui i

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.).

CAPITOLUL III. Programul PonyProg

3.1. Interfeta grafica

PonyProg este un programator dispozitiv serial bazat pe unele interfe e 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

17

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.

Interfata IC Bus

18

Interfata parallel port AVR ISP (STK200/300)

3.2. Programarea PonyProg


19

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 ave i 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 " . Re ine i
c USB2RS232 adaptoare de multe ori nu funcioneaz sau sunt foarte lente .
Pentru a accesa porturile COM de la modul de utilizare n Linux ave i nevoie de drepturile de a scrie /
dev/ttyS0 , 1 , ... dispozitive i directorul / var / blocare i selecta i SI - Prog API ( aceasta este metoda
preferat ) .
AVR ISP interfa Parallel port selectai " paralel " check -box i alege i " Avr ISP API " sau " Avr ISP I
/ O " din combo -box . WindowsNT/2000/XP lucra numai cu " Avr ISP I / O " . Pentru a 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 .

20

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 selecta i portul COM le
utilizai . Toate consideraiile pentru " SI - Prog " interfa de mai sus sunt valabile pentru JDM prea . Pute i
utiliza aceast interfa pentru a citi / scrie EEPROM PIC16x84 i 24Cxx . Dac dori i s utiliza i 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 selecta i portul LPT pe care dori i 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 ( pute i 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 .

CAPITOLUL IV. Programul MPLAB

4.1. Instalarea pachetului de program MPLAB

21

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
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.

22

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

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 opera ii de comand i control a procesorului.
Codul main este, ca orice cod, format mai ales din cifre, fiind greu de re inut pentru un programator. De
exemplu, un calculator ar putea folosi pentru instruciunile sale de adunare i scdere codurile ma in 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 ma in),
n acest scop fiind folosite "compilatoarele", "asambloarele" sau "interpretorii".

23

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 facilit ile 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 a a numite macrouri, dup
necesitile programului. Un macro este o pseudo-instruciune (formal ea arat ca i o instruc iune standard),
creat i definit chiar de ctre programator, care const ntr-o grupare de mai multe instruc iuni obi nuite i
care primete un nume cu care poate apoi fi chemat n programul popriu-zis. Macrourile mresc eficien a
programrii, deoarece prescurteaz programarea i o fac mai facil. n cursul asamblrii macrourile sunt
nlocuite

cu

gruparea

de

instruciuni

obinuite,

conform

definiiei

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 nume te
"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.

24

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 secven a 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.

CAPITOLUL V. Programarea Microcontrolerelor utiliznd Limbajul C


25

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 unei aplicaii software (sau
proiect) pentru un microcontroler din familia 8051.

26

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.

27

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 liniile 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 :
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'

28

#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.

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

29

S-ar putea să vă placă și