atestat microcontrolere

40
CUPRINS ARGUMENT 2 CAPITOLUL I. Microcontrolere 3 1.1.Noţiuni introductive 3 1.2.Structura internă şi funcţionarea microcontrolelor 5 CAPITOLUL II. Programul IC Prog 11 2.1. Interfaţa IC Prog 11 2.2. Verificare program cu microcontroleru PIC16F84 16 CAPITOLUL III. Programul PonyProg 18 3.1. Interfeţa grafică 18 3.2. Programarea PonyProg 20 CAPITOLUL IV. Programul MPLAB 22 1

Upload: emi-lp

Post on 19-Jan-2016

250 views

Category:

Documents


14 download

DESCRIPTION

atestat

TRANSCRIPT

Page 1: Atestat Microcontrolere

CUPRINS

ARGUMENT 2

CAPITOLUL I. Microcontrolere 3

1.1.Noţiuni introductive 3

1.2.Structura internă şi funcţionarea microcontrolelor 5

CAPITOLUL II. Programul IC Prog 11

2.1. Interfaţa IC Prog 11

2.2. Verificare program cu microcontroleru PIC16F84 16

CAPITOLUL III. Programul PonyProg 18

3.1. Interfeţa grafică 18

3.2. Programarea PonyProg 20

CAPITOLUL IV. Programul MPLAB 22

4.1. Instalarea pachetului de program MPLAB 22

4.2. Proiectarea unui fiţier asamblor 24

CAPITOLUL V. Programarea Microcontrolerelor utilizând Limbajul C 27

5.1. Program Keil- uVision2 27

5.2. Proiectare program cu programul Keil- uVision2 29

VI. BIBLIOGRAFIE 31

1

Page 2: Atestat Microcontrolere

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 utilizând Limbajul C.

2

Page 3: Atestat Microcontrolere

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 interacțiuni caracteristice cu mediul exterior, fără 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 inițial pe baza logicii cablate (cu circuite integrate numerice standard SSI și MSI ) și a unei electronici

analogice uneori complexe, motiv pentru care "străluceau" prin dimensiuni mari, consum energetic pe măsură

și, nu de puține ori, o fiabilitate care lăsa de dorit.

Apariția și utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a costurilor,

dimensiunilor, consumului și o îmbunătățire a fiabilității. 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 definiție, 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

interacțiunea cu mediul exterior.

Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme

încapsulate-integrate (“embedded systems”), la care existența unui sistem de calcul incorporat este (aproape)

transparentă pentru utilizator.

3

Page 4: Atestat Microcontrolere

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 spălat, frigidere, cuptoare cu microunde,

aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale), în industria aerospațială, în

mijloacele moderne de măsurare - instrumentație (aparate de măsură, 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, deși am prezentat ca exemple concrete numai sisteme robotice și mecatronice, este foarte greu de găsit

un domeniu de aplicații în care să nu se utilizeze microcontrolerele.

1.2.Structura interna si functionarea microcontrolelor

1 .Unitatea de memorie

4

Page 5: Atestat Microcontrolere

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 încât 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 decât 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

5

Page 6: Atestat Microcontrolere

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

6

Page 7: Atestat Microcontrolere

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 atâtea linii cât este cantitatea de memorie ce

dorim sa o adresam, iar celalalt este atât de lat cât 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. Când se lucreaza cu porturi, mai întâi 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

7

Page 8: Atestat Microcontrolere

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 întâmpla daca acestea ar

trebui transferate la distanta de câtiva kilometri? Numarul de linii înmultit cu numarul de kilometri nu promite

costuri eficiente pentru proiect. Nu ne ramâne decât sa reducem numarul

de linii într-un asa fel încât 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 atât

pentru partea de intrare cât 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 neîntelegere î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 pâna ce începe transferul. Odata ce începe

transferul, coborâm 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 ramâna pe linie

pentru o perioada de timp egala cu T, si la sfârsit, sau dupa al 8-lea bit, sa aducem unitatea logica   "1" înapoi pe

linie ce va marca  sfârsitul 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 tot ce mai ramâne 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.

8

Page 9: Atestat Microcontrolere

Configuratia fizica a interiorului unui microcontroler

Liniile subtiri ce merg din interior catre partile laterale ale microcontrolerului reprezinta fire conectând

blocurile interioare cu pinii capsulei microcontrolerului. Schema urmatoare reprezinta sectiunea centrala a

microcontrolerului.

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

câteva

9

Page 10: Atestat Microcontrolere

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, încât 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

Page 11: Atestat Microcontrolere

Acest software vă permite să programați CIP și alte circuite integrate. Puteți alege diferite

programatori, selectați interfața 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 biți PIC).

Programator paralel PG3B. În primul rând elementele de bază -

Cablu: Veți 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 rău.

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ă

primiți un cip normale la fel ca restul dintre noi, veți 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

Page 12: Atestat Microcontrolere

Software: Utilizați ICPROG! De ce? Pentru că programele de cel mai mare număr de CIP, inclusiv noul

16F676, 16F819, și 12F675! Descărcați fișierul zip și deschideți-l. Există doar un singur fișier (modul în care

toate programele ar trebui să fie) - icprog.exe. Stoca acest fișier undeva la îndemână, cum ar fi spațiul de lucru -

va fi, folosind destul de un pic!

Utilizatorii de Windows NT și XP! : Faceți clic aici.

12

Page 13: Atestat Microcontrolere

ICPROG ferestrei principale

Deci, v-ați luat software-ul instalat. Acum le-ați luat să-l vorbesc cu PG3B. Pentru a configura

ICPROG - în meniul "Settings" selectați "Hardware".

Hardware: Selectați propic 2 Programmer

De aici selectați propic 2 Programator din caseta verticală. Veți 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

Page 14: Atestat Microcontrolere

ICPROG fereastra de bază

Acum, deschide un fisier HEX pentru a testa cu. Asigurați-vă că este mic - nu aveți cu adevărat nevoie

pentru a umple PIC încă, nu-i așa? Fișierul HEX trebuie să aibă siguranțele codate - ICPROG va recunoaște

aceste și selectați siguranțele și setările oscilator pentru tine. Trebuie să selectați procesor de mână. Selecție

procesor incorect poate prăji chips-uri! Programarea 16F873 este foarte diferit de 16F873A!

Dacă utilizați 16F628, sunteți bineveniți să descărcați programul nostru Blink (cod C este aici). Fișierul

blink.hex, atunci când este încărcată corect, se va transforma atat PORTA și PORTB (toate I / O pini, într-

adevăr) de înaltă și joasă în fiecare secundă. Acest lucru este foarte ușor pentru a testa

pentru, dacă aveți la îndemână un multimetru. Dacă aveți comisia de evaluare PIC-P18,

LED-ul de stare va clipi pe și în afara (presupunând jumperul J1 este scurtcircuitat cu un

jumper).

Locații PIC -

Locațiile pentru toate diferite poze pini sunt indicate pe placa.

16F628 în 18Pin PIC poziția

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 (văzut î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 încălecat prize 2 și 3 așa cum se

arată în imagine. Pentru CIP mari - 16F877, PIC trebuie încălecat prize exterioare 1 și 4.

Ia PIC-ul situat în mod corect în priză. Acum, du-te înapoi la software-ul ICPROG și apăsați pe butonul

cu șurubul de iluminat.PG3B va clipi LED-uri de programare și PIC ar trebui să fie verificate cu succes!

14

Page 15: Atestat Microcontrolere

Temut generic eroare ICPROG

Ce trebuie să faceți dacă primiți mesajul "Programare a eșuat la adresa 0000h Code" - Acesta este

codul de eroare generic care înseamnă ceva (orice) este greșită.

Asigurați-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.

• ați selectat PIC corect pentru placa ta. Din nou, 16F873 este diferit de 16F873A

Acum, că v-ați luat de lucru socket, începe să utilizați cablul ICSP. Aruncati o privire la un alt unul din

tutorialele noastre intitulat "Hook în Magic" pentru mai multe informații.

2.2. Verificare program cu microcontroleru PIC16F84

PIC16F84 aparţine unei clase de microcontrolere de 8 biţi cu arhitectură RISC. Structura lui generală

este arătată în schiţa următoare reprezentând blocurile de bază. 

Memoria program (FLASH)-pentru memorarea unui program scris. 

15

Page 16: Atestat Microcontrolere

Pentru că memoria ce este făcută în tehnologia FLASH poate fi programată şi ştearsă mai mult decât odată,

aceasta face microcontrolerul potrivit pentru dezvoltarea

de componentă. 

EEPROM-memorie de date ce trebuie să fie salvate când

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 alimentării această dată se pierde, va trebui să facem ajustarea încă o

dată la revenirea alimentării. Astfel componenta noastră pierde în privinţa auto-menţinerii. 

RAM-memorie de date folosită de un program în timpul executării 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 biţi în interiorul microcontrolerului ce lucrează

independent de program. La fiecare al patrulea impuls de ceas al oscilatorului îşi încrementează valoarea lui

până ce atinge maximul (255), şi apoi începe să numere tot din nou de la zero. După cum ştim timpul exact

dintre fiecare două incrementări ale conţinutului timer-ului, poate fi folosit pentru măsurarea 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

Page 17: Atestat Microcontrolere

Aplicaţii

PIC16F84 se potriveşte perfect cu

multe folosinţe, de la industriile auto şi

aplicaţiile de control casnice la

instrumentele industriale, senzori

la distanţă mare electrice de uşi ş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 uşoă aplicarea microcontrolerelor la aparate unde se cere memorarea

permanent a diferitor parametri (coduri pentru transmisie, viteza motorului, frecvenţele receptorului, etc.).

Costul scăzut, consumul scăzut, flexibilitatea fac PIC16F84 aplicabil chiar şi în domenii unde microcontrolerele

nu au fost primite intre(exemple: funcţii de timer, înocuirea interfeţei şi sistemele mari, aplicaţiile 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 său este de

17

Page 18: Atestat Microcontrolere

lectură și scrie fiecare dispozitiv serial. În momentul de față se sprijină pe I ² C Bus , Microwire, SPI,EEPROM

și blițul Atmel AVR și PIC micro.

PonyProg suportă mai multe interfețe hardware, însă rețineți că numai cu interfață SI-Prog vă sunt

capabili de a programa toate dispozitivele.

Interfata I²C Bus

18

Page 19: Atestat Microcontrolere

Interfata parallel port AVR ISP (STK200/300)

3.2. Programarea PonyProg

19

Page 20: Atestat Microcontrolere

Setarea interfetelor

Interfață SI - Prog selectați " serial " check -box și alegeți " 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 selectați portul COM pe care doriți să utilizați , în cazul în care unele porturi COM sunt

dezactivate înseamnă că acestea sunt utilizate de către alte programe ( de obicei, de către conducătorul auto

mouse-ul sau modem ) , sau nu este instalat sau acces refuzat ( ar putea avea nevoie de privilegii de root ) .

Dacă utilizați porturi COM adăugate ( PCI sau PCMCIA carduri ), trebuie să utilizați " API SI - Prog " .

Rețineți că USB2RS232 adaptoare de multe ori nu funcționează 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 selectați " 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 aveți nevoie pentru a rula PonyProg ca root . Apoi selectați portul LPT doriți să o utilizați . Rețineți

că, dacă doriți să programați aparatul AT89Sxx care aveți nevoie pentru a selecta " Invert Reset " check -box .

20

Page 21: Atestat Microcontrolere

Pentru a utiliza această interfață cu Linux, aveți nevoie de un kernel 2.4.x sau mai nou și parport , parport_pc și

module ppdev și aveți nevoie de drepturile de a scrie / dev/parport0 , 1 , ... dispozitive .

Puteți utiliza această interfață pentru a citi / scrie Micros AVR și SPI EEPROM .

Interfață Ludipipo / JDM selectați " API JDM " sau " JDM I / O " . Apoi selectați portul COM le

utilizați . Toate considerațiile 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ă conectați PIN 7 din 24Cxx la GND ( schemele sunt

greșite ) .

Simplu am ˛ interfață CBUS selectați " paralel " check -box , apoi selectați portul LPT pe care doriți să

utilizați . Toate considerațiile 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 găsi placa de pe

site-ul Dontronics ) . Cu toate acestea am sugerăm să folosiți interfața " 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

Page 22: Atestat Microcontrolere

MPLAB este un pachet de program Windows ce face scrierea şi dezvoltarea unui program mai uşoară.

Poate fi descris cel mai bine ca un mediu de dezvoltare pentru un limbaj de programare standard ce este

intenţionat pentru programarea unui computer PC. Unele operaţii ce erau făcute din linia de instrucţiuni cu un

număr mare de parametri pânl la descoperirea IDE-ului, "Integrated Development Environment", sunt acum

flcute mai uşoare prin folosirea MPLAB. Totuşi, gusturile noasre diferă, aşa că chiar astăzi unii programatori

preferă editoarele standard şi compilatoarele din linia de instrucţiuni. În orice caz, programul scris este uşor de

citit, şi este disponibil un help bine documentat.

MPLAB constă din câteva părţi:

- Gruparea fişierelor aceluiaşi proiect într-un singur proiect (Project Manager)

- Generarea şi procesarea unui program (Text Editor)

- Simulator de program scris folosit pentru simularea func•ion•rii programului în microcontroler.

Înafară de acestea, sunt sisteme de susţinere pentru produsele Microchip ca PICStart Plus şi ICD (In

Circuit Debugger). Pentru că această carte nu acoperă acestea, ele vor fi menţionate doar ca opţiuni.

Cerinţele 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 spaţiu pe hard disc

• Mouse

Pentru a porni MPLAB-ul trebuie să-l instalăm.

Instalarea este un proces de copiere a fiţierelor de pe CD pe un hard disc al computerului. Este o opţiune pentru

fiecare fereastră ce vă ajută să vă întoarceţi la cea precedentă, aşa ca erorile să nu prezinte o problemă sau să

devină o experienţă stresantă. Instalarea propriu-zisă are loc ca la majoritatea programelor Windows. Mai întâi

apare ecranul Windows, apoi puteţi alege opţiunile urmate de instalarea propriu-zis,ă şi în sfârăit, apare mesajul

care spune programul dumneavoastră instalat este gata de start.

Pa•i pentru instalarea MPLAB:

1. Porniţi Windows-ul Microsoft

2. Puneţi the discul CD Microchip în CD ROM

3. Faceţi clic pe START în partea stângă de jos a ecranului şi alegeţi opţiunea RUN

4. Faceţi clic pe BROWSE şi selectaţi driver-ul CD ROM-ului computerului.

22

Page 23: Atestat Microcontrolere

5. Găsiţi directorul numit MPLAB pe CD ROM-ul dumneavoastră

6. Faceţi clic pe SETUP.EXE şi apoi pe OK .

7. Faceţi clic din nou pe OK în fereastra dumneavoastră RUN

4.2. Proiectarea unui fisier asamblor

Asamblorul [fr. assembleur] este un program ce prelucrează instrucţiunile scrise într-un limbaj simbolic

orientat către calculator, schimbându-le în coduri ale limbajului maşină. Această traducere se realizează de

obicei în raport de unu la unu, fiecare instrucţiune din limbajul simbolic de programare fiind tradusă într-o

singură instrucţiune în limbajul maşină.

Fiecare tip de procesor deține propriul său limbaj numit "codul mașină", care reprezintă modul binar de

codificare a instrucțiunilor și datelor în memorie, în forma direct executabilă. Instrucțiunile pot fi în general

operații elementare (aritmetice, logice, transfer de date) sau și operații de comandă și control a procesorului.

Codul mașină 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 instrucțiunile sale de adunare și scădere codurile mașină 5B și 5C.

Însă, în limbajul de asamblare, aceste două operații ar putea fi simbolizate prin ADD și SUB, care sunt mult mai

ușor de reținut și folosit.

Pentru a putea fi interpretate de procesor, programul scris de om ("codul sursă", scris de exemplu în limbaj de

asamblare) trebuie întâi redus prin compilare (sau asamblare sau interpretare) la "codul obiect" (în cod mașină),

în acest scop fiind folosite "compilatoarele", "asambloarele" sau "interpretorii".

23

Page 24: Atestat Microcontrolere

Programarea în limbaj de asamblare presupune o bună cunoaștere 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 funcționa 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 alcătuirii de așa numite macrouri, după

necesitățile programului. Un macro este o pseudo-instrucțiune (formal ea arată ca și o instrucțiune standard),

creată și definită chiar de către programator, care constă într-o grupare de mai multe instrucțiuni obișnuite și

care primește un nume cu care poate apoi fi chemată în programul popriu-zis. Macrourile măresc eficiența

programării, deoarece prescurtează programarea și o fac mai facilă. În cursul asamblării macrourile sunt

înlocuite cu gruparea de instrucțiuni obișnuite, conform definiției respective, proces care se

numește macrosubstituție. Din cauza facilităților de tip macro limbajul "assembler" este numit uneori și "macro

assembler".

Într-un sens macrourile se aseamănă cu subprogramele / subrutinele.

Asamblarea este procesul prin care codul sursă, scris în limbaj de asamblare, este transformat în cod

mașină sau cod obiect. Codul sursă poate fi dispus pe mai multe module. Procesul invers se numește

"dezasamblare".

Etapele asamblării:

Mai întâi se generează o tabelă de simboluri, ce conține toate numele simbolice din programul sursă, exceptând

numele simbolice externe (din alte module), instrucțiuni și directive de asamblare.

Asamblorul contorizează instrucțiunile ș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 spațiul 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 obține programul obiect, traducând fiecare instrucțiune și înlocuind numele simbolice cu valoarea sau adresa

din tabela de simboluri.

Programul executabil se obține în urma etapei de editare de legături (linkage edit), care permite legarea

mai multor module relocabile într-un singur fișierexecutabil, rezolvându-se referințele încrucișate dintre ele.

24

Page 25: Atestat Microcontrolere

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 fișier cu comenzi (de tip batch), numit de ex. ASM.BAT, pentru asamblarea,

editarea de legături și eventual, ștergerea fișierelor intermediare (.OBJ), de forma:

Fișierul 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 fișier sursă poate fi compilat, obținându-se executabilul.

CAPITOLUL V. Programarea Microcontrolerelor utilizând Limbajul C

25

Page 26: Atestat Microcontrolere

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, având limitare de asamblare (compilare) a programelor

ce depăşesc 2K octeţi. Acest program este un simulator de microcontrolere, ajutând programatorul să-şi testeze

programul, în timp real sau pas cu

pas, înainte de a-l înscrie în microcontroler.

Utilizarea programului:

Se porneşte 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 librărie 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 fişierul mai devreme salvat. Atenţie la

extensia fişierului! Odată ales fişierul, se apasă butonul „close” pentru a închide fereastra de dialog. Începând

din acest moment, se poate trece la editarea programului. Programul oferă o interfaţă uşoară 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, apăsând „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 căruia se poate implementa întregul ciclu de dezvoltare a unei aplicaţii software (sau

26

Page 27: Atestat Microcontrolere

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.

27

Page 28: Atestat Microcontrolere

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 ini i le  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

Page 29: Atestat Microcontrolere

#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. Ediția II" - Vasile Lungu, Editura

Teora, 2004, București

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