Documente Academic
Documente Profesional
Documente Cultură
Zilele acestea am primit mai multe mail-uri in legatura cu acest subiect, multi nu au stiut cum pot programa un
microcontroler. Programarea unui microcontroler este destul de simpla, necesita putina atentie si cunostinte minime in
electronica si informatica. Am folosit pentru acest tutorial un microcontroler destul de renumit care poate fi gasit cu
usurinta in orice magazin de specialitate, este vorba despre PIC16F84. Pentru inceput este recomandat a se citi foaia de
lucru (datasheet-ul) microcontrolerului.
Mai jos este o diagram care arat pini microcontrolerului. Voi incerca sa explic rolul fiecarui pin.
De la RA0 la RA4
RA este un port bidirecional. Asta poate fi configurat ca o intrare sau ca o ieire. Urmtorul numr dupa RA este
numrul de bii (0-4). Deci, avem un port cu 5 bii direcionali unde fiecare bit poate fi configurat ca bit de intrare sau de
ieire.
De la RB0 la RB7
RB este un al doilea port bidirecional. Se comport n exact acelai mod ca RA, cu excepia ca exist 8 bii.
VSS si VDD
Acestia sunt pinii de alimentare. VDD este borna pozitiva, i VSS este borna negativa, sau 0V. Tensiunea de alimentare
maxim pe care o putei folosi este 6V, iar cea minim este de 2V.
OSC1/CLK IN i OSC2/CLKOUT
Aici conectam un ceas extern, astfel nct microcontrolerul are un fel de sincronizare.
MCLR
Acest pin este folosit pentru a terge locatii de memorie din interiorul PIC (adic atunci cnd vrem s-l re-program). n
condiii normale de utilizare este conectat la linia de alimentare pozitiv.
INT
Acesta este un pin de intrare care poate fi folosit pentru monitorizare. Dac PIN-ul primeste tensiune programul se
poate reporni, opri sau orice alt funcie dorim. Nu vom folosi asta foarte mult.
TOCK1
Acesta este un alt ceas de intrare, care opereaza un temporizator intern. Acesta funcioneaz n independent fata de
ceasul microcontrolerului. Din nou, nu vom folosi aceasta functie foarte mult.
Sa presupunem ca dupa cele spuse mai sus am realizat o schema ca in modelul prezentat mai jos:
Pentru a introduce programul in microcontroler avem nevoie de doua programe, unul este MPLAB IDE si PonyProg.
Deschidem MPLAB IDE selectam microcontrolerul.
;------------------------------------------------------------------------------------
; definim variabilele in 'General Purpose Register' (GPR)
; nota: memoria GPR a 16F84A incepe la 0x0C dar in alte PIC-uri incepe la 0x20
; Aici folosim 0x20 pentru compatibilitate cu noile PIC-uri
cblock 0x20
copiePORTB ; variabila pentru a copia PORTB
ltime ; folosit pentru functia de intarziere
dtime ; folosit pentru functia de intarziere
endc
;------------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------
; Definim o constanta pentru bit-ul din partea stanga si alta pentru bit-ul din dreapta
BitStanga equ 7 ;|_______________PORTB
BitDreapta equ 0 ;_______________|PORTB
; ----------------------------------------------------------------------------------
; Programul incepe aici
RESET_VECTOR org 0x000
;-------------------------------------------------------------------------------------
; Codul principal
MUTASTANGA clrc
rlf copiePORTB,F ; roteste variabila spre stanga
call OUTPUT ; apeleaza functia de afisare
call DELAY ; apeleaza functia de intarziere
btfss copiePORTB, BitStanga ; verifica daca s-a ajuns la bit-ul din stanga
goto MUTASTANGA ; daca nu se intoarce la eticheta MUTASTANGA
MUTADREAPTA clrc
rrf copiePORTB,F ; roteste varibila spre dreapta
call OUTPUT ; apeleaza functia de afisare
call DELAY ; apeleaza functia de intarziere
btfss copiePORTB, BitDreapta ; verifica daca s-a ajuns la bit-ul din dreapta
goto MUTADREAPTA ; daca nu se intoarce la eticheta MUTADREAPTA
goto MUTASTANGA ; altfel se intoarce inapoi la MUTASTANGA
;---------------------------------------------------------------------------------
;Functia OUTPUT
OUTPUT movfw copiePORTB ; adauga aceasta variabila in registrul W
movwf PORTB ; si scrie din W in iesirea portului B
return ; apoi se intoarce
;--------------------------------------------------------------------------------------
;functia DELAY
DELAY
end
Dupa ce a fost scris, programul trebuie asamblat (in MPLAB IDE) si apoi introdus in microcontroler, pentru asta putem
folosi PonyProg.
http://electrodb.ro/atelier/microcontroler/pic/cum-programam-un-microcontroler-pic/