Sunteți pe pagina 1din 12

Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr.

Lecia nr. 1

STRUCTURA HARDWARE A MICROCONTROLERULUI PIC 12F675

1.1. INTRODUCERE
Microcontrolerele sunt circuite integrate special concepute, n general pentru aplicaii
de tipul comand i control, specifice sistemelor dedicate (nglobate). Firma MICROCHIP
pune la dispoziia utilizatorilor o gam larg de microcontrolere performante i la preuri
acceptabile, utilizate pe scar larg n aceste aplicaii.
Ne propunem n cadrul leciilor care urmeaz s prezentm structura hardware,
mediul de programare precum i cteva aplicaii reprezentative cu microcontrolere PIC
(Programmable Integrated Circuit).
Din familia de microcontrolere a firmei MICROCHIP am ales pentru a fi prezentat
varianta PIC 12F675 deoarece este un microcontroler cu arhitectur RISC prevzut cu o
memorie de program de tip FLASH i cu o structur potrivit pentru aplicaii de tip
comand i control.
Alegerea este motivat i de faptul c firma comercializeaz un sistem de dezvoltare
PICkit 1 FLASH Starter Kit mpreun cu mediul de programare MPLAB la un pre accesibil
studenilor, sistem pe care acetia i pot dezvolta primele aplicaii.
n descrierile care urmeaz au fost utilizate informaiile puse la dispoziie de firm n
urmtoarele documentaii: PIC 12F629/675 Data Sheet, Pickit 1 Flash Starter Kit Users
Guide i MPLAB IDE V6 Quick Start Guide.

1.2. CARACTERISTICI GENERALE


PIC 12F629/675 este un microcontroler de 8 bii realizat ntr-o tehnologie CMOS
echipat cu o memorie de tip FLASH i este ncorporat ntr-o capsul minidip (cu 8
terminale). Kit-ul de dezvoltare este echipat cu microcontrolerul PIC 12F675 care, spre
deosebire de PIC 12F629, are n structura intern un convertor A/D de 10 bii.

Figura 1.1. Legturile la terminale pentru PIC 12F675

Unitatea central de prelucrare (CPU) a microcontrolerului este caracterizat prin:


o Arhitectur RISC;
o 35 de instruciuni executabile ntr-un singur ciclu main cu excepia instruciunilor
de salt;
o Durata minim a unui ciclu main este de 200 ns;

7
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

o Faciliti de a lucra n ntreruperi inclusiv ntreruperi generate la schimbarea


semnalelor de pe pini;
o Memorie stiv de 8 nivele realizat hardware;
o Suport modurile de adresare direct, indirect i relativ.
Faciliti speciale ale microcontrolerului:
o Opiuni de a lucra cu oscilatorul intern (4 MHz) sau cu unul extern;
o Gam larg pentru tensiunea de alimentare: de la 2V la 5,5 V;
o Posibilitatea de a trece n SLEEP mode pentru a reduce consumul de energie;
o Prezena unui Watchdog Timer asigur o fiabilitate sporit n funcionare.
Memoria intern este format din:
o 1 Koctet de memorie de program (FLASH);
o 64 octei de memorie de date (SRAM);
o 128 octei de memorie de date suplimentar (EEPROM);
Microcontrolerul fiind gndit pentru aplicaii de tip comand i control, vom gsi n
structura sa intern o serie de circuite care ofer facilitile practice necesare n astfel de
aplicaii. Acestea sunt:
6 terminale (pini) de intrare-ieire, multifuncionale, cu un control individual al
direciei semnalului i cu posibilitatea comenzii directe a unor LED-uri;
Un comparator analogic;
Un convertor analog-digital de 10 bii cu patru canale analogice de intrare;
Dou circuite de tip Timer pentru aplicaii de numrare sau temporizare:
o Timer0 de 8 bii prevzut i cu un circuit de prescalare programabil,
o Timer1 de 16 bii cu circuit de prescalare programabil prevzut cu comand
extern;
Circuit pentru programarea serie din exterior a memoriei program.

1.3. SCHEMA BLOC A MICROCONTROLERULUI


n figura 1.2 este prezentat schema bloc a microcontrolerului PIC 12F675.
Conlucrarea unitii centrale de procesare (CPU) cu memoria intern este gndit
ntr-o arhitectur de tip Harward cu memorie program i memorie de date separate.
Contorul de instruciuni (Program Counter PC) este legat printr-o magistral de
13 bii de memoria program. Tot PC comunic cu o memorie stiv (realizat hardware
HW) de 8 nivele utilizat pentru stocarea adreselor de revenire n program n cazul unor
ntreruperi sau salturi la subrutine.
Memoria program FLASH (FLASH Program Memory) fiind organizat pe cuvinte
de 14 bii va comunica cu exteriorul Registrul de instruciuni (Instruction Register)
printr-o magistral de 14 bii.
Codul instruciunii mpreun cu operandul (dat sau adres) sunt concatenate ntr-o
instruciune de 14 bii. Codul operaiei va fi transmis din registru de instruciuni n
Decodificatorul de instruciuni (Instruction Decode) iar operandul va fi dirijat fie ctre
memoria de date blocul Multiplexor de adres (Addr MUX) dac este adres, fie ctre
Unitatea aritmetic logic (ALU Arithmetic Logic Unit) dac este dat.

8
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Unitatea de comand (Control) va genera toate comenzile necesare execuiei


instruciunii, pe baza codului operaiei, dup ce acesta a fost decodificat.
Memoria de date comunic cu restul componentelor interne prin intermediul unei
magistrale de 8 bii. Registrul FSR (File Select Register) este utilizat pentru o adresare
indirect a memoriei de date (Data Memory Address Pointer).
Unitatea aritmetic logic (ALU) este conectat cu magistrala de date (Data Bus),
cu registrul de instruciuni, cu registrul W (W Reg) i cu Registrul de stare (STATUS
Register). Registrul W joac un rol deosebit deoarece fluxul de date este gndit s treac
aproape n totalitate prin acest registru, deci are rol de acumulator cu deosebirea c dac
unul dintre operanzi este luat din registrul W, rezultatul operaiei efectuate de ALU poate fi
memorat fie n W, fie ntr-un alt registru intern.

Figura 1.2. Schema bloc a microcontrolerului PIC 12F675

9
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Cel de-al doilea operand pentru ALU poate proveni din instruciunea care se va
executa sau de la oricare alt component legat la magistrala intern de date. n funcie de
rezultatul operaiei efectuat de ALU, n Registrul de stare sunt setai sau nu anumii bii
(cum ar fi bitul de transport C, bitul de transport intermediar DC sau bitul Z care indic dac
rezultatul operaiei a fost zero sau diferit de zero etc.).
De magistrala intern de 8 bii sunt legate i celelalte componente ale sistemului: cei
6 pini multifuncionali (GP0 GP5) care constituie portul general de intrare-ieire,
Comparatorul analogic i referina (Analog Comparator & reference), Convertorul
analog-numeric (Analog to Digital Converter) cu patru canale de intrare, circuitele
temporizatoare Timer0 i Timer1 precum i Memoria suplimentar de date (DATA
EEPROM).
Circuitul mai conine Oscilatorul intern (Internal Oscillator), Generatorul de
secvene de timp (Timing Generation) precum i o serie de componente suplimentare:
Temporizatorul de alimentare (Power-up timer), Temporizatorul de pornire a
oscilatorului (Oscilator Start-up-Timer), Circuitul de resetare la alimentare (Power-on
Reset), Temporizatorul circuitului de supraveghere (Watchdog Timer) i Detectorul de
avarie a tensiunii de alimentare (Brown-out Detect).

1.4. DESCRIEREA LEGTURILOR LA TERMINALE


Microcontrolerul PIC 12F675 este ncapsulat ntr-o structur de 8 terminale. Dintre
acestea, dou sunt rezervate alimentrii (VSS, respectiv VDD) rmnnd doar 6 disponibile
pentru a permite conectarea cu exteriorul a componentelor interne.
Avnd n vedere numrul mare al componentelor interne care trebuie s comunice cu
exteriorul, precum i numrul redus de terminale (6), acestea trebuie s fie multifuncionale,
n sensul c vor fi atribuite acelei componente interne care tocmai este folosit la un
moment dat.
De exemplu, n cazul n care microcontrolerul este utilizat pentru un transfer
bidirecional de date, cei 6 pini (GP0, GP1, GP2, GP3, GP4, GP5) sunt alocai acestei
funcii (constituind un port bidirecional de 6 bii), iar n cazul n care microcontrolerul este
folosit ca un sistem de achiziii de date, atunci primii patru pini vor fi utilizai ca intrri
analogice n convertorul A/D.
Funciile ndeplinite de terminale sunt prezentate n figura 1.3.

10
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Figura 1.3. Funciile ndeplinite de terminalele microcontrolerului

1.5. ORGANIZAREA MEMORIEI

1.5.1. MEMORIA DE PROGRAM


Microcontrolerul conine un contor de instruciuni (PC) de 13 bii capabil a adresa un
spaiu de 8K x 14 de memorie program. La microcontrolerul 12F675 numai 1K din acest
spaiu este fizic implementat (de la 0000H la 3FFH). Vectorul de iniializare (prima
instruciune executat dup o operaie de resetare hardware) (RESET) se afl stocat la adresa
0000H iar vectorul de ntrerupere la adresa 0004H. Memoria stiv de 8 nivele este
implementat pe o zon special de memorie cu 8 locaii interconectate pentru a realiza
funcia LIFO (Last In First Out) necesare memoriei stiv.
Harta memoriei program este prezentat n figura 1.4.

11
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Figura 1.4. Harta memoriei program

1.5.2. MEMORIA DE DATE


Memoria de date este de tip SRAM, organizat pe cuvinte de 8 Bii i format din
dou bancuri. Fiecare banc conine n primele 32 de locaii (adresele de la 00H la 1FH,
respectiv 80H la 9FH) registre cu funcii speciale (Special Function Register) iar pe
urmtoarele 64 locaii sunt realizate registrele de uz general (aceleai n ambele banc-uri!)
de la adresa 20H la 5FH.
Selectarea bancului de lucru se face cu ajutorul bitului 5 din registrul de stare
(STATUS, 5) notat cu RP0 avnd urmtoarea semnificaie:
RP0 = 0 Banc-ul 0 este selectat,
RP0 = 1 Banc-ul 1 este selectat.

Registrele de uz general
Aa cum s-a menionat mai sus, sunt implementate n total 64 de registre de uz
general n spaiul de adresare de la 20H la 5FH. Fiecare dintre aceste registre poate fi
accesat fie direct, fie n mod indirect prin intermediul registrului FSR.
n figura 1.5 sunt prezentate cele dou moduri de adresare (direct i indirect) a
memoriei interne de date a microcontrolerului.

12
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Figura 1.5. Modul de adresare direct/indirect a memoriei de date

Registrele cu funcii speciale


Aceste registre sunt folosite de CPU respectiv de circuitele de intrare-ieire
(periferice) pentru a selecta anumite opiuni i a asigura n felul acesta buna funcionare a
microcontrolerului. Registrele cu funcii speciale pot fi mprite n dou categorii:
Registre cu funcii speciale de baz, n care intr registrele:
STATUS STATUS Register (03H sau 83H),
OPTION_REG OPTION REGister (81H),
INTCON INTerrupt CONtrol Register (0BH sau 8BH),
PIE1 Peripheral Interrupt Enable Register 1 (8CH),
PIR1 Peripheral Interrupt Register 1 (0CH),
PCON Power CONtrol Register (90H),
OSCCAL OSCilator CALibration Register (8EH).
Registre cu funcii speciale pentru circuitele de intrare-ieire n care se vor gsi
bii cu ajutorul crora se vor putea alege funciile ndeplinite precum i condiiile
de lucru ale diverselor circuite de intrare-ieire.
n tabelul 1.1 sunt prezentate registrele cu funcii speciale ale microcontrolerului
PIC 12F675.
Vom descrie n continuare trei registre de baz n setarea opiunilor de configurare
hardware i de calibrare a frecvenei de lucru: registrul de stare (STATUS), registru de
calibrare a frecvenei de lucru (OSCCAL) i registrul de configurare hardware (CONFIG).

13
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Tabelul 1.1. Registre cu funcii speciale Banc 0

Legend: Locaiile Unimplemented se vor citi 0.


Not: 1) Acest registru nu exist fizic.
2) Aceti bii sunt neutilizai la acest microcontroler. Trebuie meninui pe 0.
3) Exist numai la microcontrolerul PIC 12F675.

14
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Tabelul 1.1. (continuare) Registre cu funcii speciale Banc 1

Legend: Locaiile Unimplemented se vor citi 0.


Not: 1) Acest registru nu exist fizic.
2) Aceti bii sunt neutilizai la acest microcontroler. Trebuie meninui pe 0.
3) Exist numai la microcontrolerul PIC 12F675.

15
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

STATUS Register
Registrul de stare prezentat n figura 1.5 conine biii de stare ai unitii aritmetice
logice (ALU), bitul de selecie a bancului de registre precum i biii care caracterizeaz
starea de RESET.
Rezervat Rezervat
IRP RP1 RP0 T0 PD Z DC C
Bit 7 Bit 0
Figura 1.5. Registrul de stare STATUS
Semnificaiile biilor acestui registru sunt urmtoarele:
Bit 7 IRP: bit rezervat pentru alte structuri hardware, trebuie inut pe valoarea 0
Bit 6 RP1: bit rezervat pentru alte structuri hardware, trebuie inut pe valoarea 0
Bit 5 RP0: bit de selecie a bancului de registre
RP0 = 0 Banc 0, cu adresele cuprinse ntre 00H7FH
RP0 = 1 Banc 1, cu adresele cuprinse ntre 80HFFH
Bit 4 T0 : Time Out bit
T0 = 1 este setat la pornire (Power-up) i cu instruciunile CLRWDT sau SLEEP
T0 = 0 indic o depire la WDT (WatchDog Timer)
Bit 3 PD : Power Down bit
PD = 1 este setat la pornire (Power-up) sau cu instruciunea CLRWDT
PD = 0 n timpul execuiei instruciunii SLEEP
Bit 2 Z: Zero bit
Z = 1 dac rezultatul unei operaii aritmetice sau logice este egal cu zero
Z = 0 n caz contrar
Bit 1 DC: Digital Carry/ Borow bit (bitul de transport intermediar); valoarea acestui bit
este influenat de instruciunile ADDWF, ADDLW, SUBLW i SUBWF
DC = 1 dac a aprut un transport din poziia bitului 3 (digitul inferior) ctre bitul 4
(digitul superior)
DC = 0 n cazul n care nu s-a generat transport de la bitul 3 la bitul 4
Obsevaie: n cazul operaiilor de scdere polaritatea bitului se inverseaz.
Bit 0 C: Carry/ Borow bit (bitul de transport); valoarea acestui bit este influenat de
instruciunile ADDWF, ADDLW, SUBWF i SUBLW
C = 1 indic un transport din poziia bitului cel mai semnificativ (bit 7) al
rezultatului
C = 0 n cazul n care nu s-a generat un transport din poziia bitului cel mai
semnificativ
Observaie: n cazul instruciunilor de scdere polaritatea bitului se
inverseaz. n cazul instruciunilor RRF, respectiv RLF acest bit este
ncrcat fie cu bitul cel mai semnificativ, fie cu bitul cel mai puin
semnificativ al registrului F din instruciune.

16
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

OSCCAL Register
Registru de calibrare a frecvenei de lucru OSCCAL prezentat n figura 1.6 este
utilizat n calibrarea oscilatorului intern (de 4 MHz) al microcontrolerului. Conine 6 bii
prin intermediul crora se poate ajusta frecvena n jurul valorii de 4 MHz. Adresa
registrului este 90H.
CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 - -
Bit 7 Bit0
Figura 1.6. Registrul de calibrare a frecvenei OSCCAL
Semnificaiile biilor de calibrare sunt urmtoarele:
Bit 72 CAL5CAL0: 6 bii de configurare a oscilatorului
11111 = frecvena maxim
10000 = frecvena central
00000 = frecvena minim
Bit 10 Neimplementat: se citete 0
Pentru calibrarea efectiv a oscilatorului intern, exist instruciunea RETLW XX,
unde XX este valoarea de calibrare. Aceast instruciune este nscris, n timpul operaiei de
programare, n ultima locaie a memoriei program accesibil utilizatorului. Valoarea XX va
trebui nscris, prin program, de utilizator n OSCCAL. Secvena de program pentru
calibrare este:
bsf STATUS,RP0 ;selectare banc 1 de registre
call 0x3FF ;salt la adresa unde se afl instruciunea RETLW XX n urma
; execuiei acestei instruciuni, n acumulator se va afla valoarea XX
movwf OSCCAL ;ncrcarea valorii de calibrare n OSCCAL

CONFIG Register
Registrul de configurare hardware prezentat n figura 1.7 conine biii de configurare
a unor componente hardware i, deci, a unor opiuni de lucru pentru microcontroler. Adresa
lui este 2007H, adic n afara memoriei program de utilizator. Acest registru aparine unei
zone speciale de memorie de configurare (2000H3FFFH) care poate fi accesat numai n
timpul operaiei de programare.
Microcontrolerul PIC 12F675 dispune de 11 bii pentru configurarea/setarea unor
opiuni de lucru referitoare la oscilator, WDT, modul de resetare, protecia memoriei de date
i program i limitele tensiunii de alimentare corespunztoare unei funcionri corecte.
BG1 BG0 - - - CPD CP BODEN MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0
Bit 13 Bit 0
Figura 1.7. Registrul de configurare hardware CONFIG

Semnificaiile acestor bii sunt urmtoarele:


Bit 1312 BG1BG0: bii de calibrare pentru domeniul tensiunilor BOD i POR
00 = cea mai mic tensiune a domeniului acestor tensiuni
11 = cea mai mare tensiune a domeniului acestor tensiuni
Bit 119 neimplementat: se citete 0

17
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 1

Bit 8 CPD : bit de activare/dezactivare a codului de protecie pentru


memoria de date (Data Code Protection)
1 = dezactivare
0 = activare
Bit 7 CP : bit de activare/dezactivare a proteciei memoriei de program
1 = dezactivare
0 = activare
Bit 6 BODEN: bit pentru activare/dezactivare Brown-Out Detect
1 = activare BOD
0 = dezactivare BOD
Bit 5 MCLRE: bit de selectare a funciei Master Clear Reset pentru pinul GP3
1 = funcia pinului GP3 este MCLR
0 = funcia pinului GP3 este I/O logic iar MCLR este intern legat la
VDD.
Bit 4 PWRTE : bit de activare a meninerii resetrii pe durata de timp generat
de PWRT (Power-up Timer)
1 = PWRT este dezactivat
0 = PWRT este activat
Bit 3 WDTE: bit de activare a WDT (Watch Dog Timer)
1 = WDT este activat
0 = WDT este dezactivat
Bit 20 FOSC2FOSC0: bii de selectare a tipului de oscilator i a funciilor ndeplinite
de pinii GP4 i GP5
111 = oscilator cu R i C extern (RC): GP4 CLKOUT
GP5 intrare RC
110 = oscilator RC: GP4 I/O logic
GP5 intrare RC
101 = oscilator intern (INTOSC): GP4 CLKOUT
GP5 I/O logic
100 = oscilator intern (INTOSC): GP4 I/O logic
GP5 I/O logic
011 = oscilator cu intrare de tact extern (EC): GP4 I/O logic
GP5 CLKIN
010 = oscilator cu cristal de vitez mare (HS): GP4 OSC1
GP5 OSC2
001 = oscilator cu cristal (XT): GP4 OSC1
GP5 OSC2
000 = oscilator cu cristal de mic putere (LP): GP4 OSC1
GP5 OSC2

18

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