Documente Academic
Documente Profesional
Documente Cultură
Lecia nr. 5
5.1. INTRODUCERE
Microcontrolerul PIC 12F675 este ncapsulat ntr-o structur cu 8 terminale (pini)
dintre care dou sunt folosite pentru alimentarea circuitului, iar restul de 6 sunt folosite
pentru a conecta cu exteriorul componentele interne.
Portul general de intrare-ieire, GPIO (General Purpose Input-Output), este un port
bidirecional de 6 bii. El va putea fi folosit ca atare, ca port digital de intrare-ieire, cu
condiia dezactivrii celorlalte componente interne cum ar fi, de exemplu, comparatorul
analogic sau convertorul analog-digital. Dac lucrul acesta nu se ntmpl, atunci pinii
asociai perifericelor respective (comparator analogic sau convertor analog-digital) nu vor
putea fi folosii ca pini de port digital de intrare-ieire (vezi figura 1.3 din lecia 1).
Datorit multifuncionalitii lor, fiecare pin de port are asociat o schem hardware
particularizat, corespunztoare funciilor pe care trebuie s le ndeplineasc.
47
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
Descriere hardware
Schema conine ase bistabile notate cu FF1, FF2, ..., FF6.
FF2 este bistabilul de date asociat portului. Direcia fluxului de date prin port este
dictat de bistabilul FF3 notat cu TRISIO. Dac TRIOSIO = 0, bufferul care leag ieirea lui
FF2 de pin va fi transparent i bitul memorat n FF2 va apare la ieire (funcia de port digital
de ieire). n cazul n care bitul TRISIO = 1, bufferul va trece n starea de impedan mare la
ieire (High Z) ceea ce va determina caracterul de intrare (digital sau analogic) al pinului.
48
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
Trebuie specificat faptul c toate operaiile de scriere n port sunt de fapt operaii de
tipul read-modify-write, ceea ce nseamn c se citete semnalul digital de pe pinul portului,
aceast valoare este modificat iar apoi nscris n bistabilul de date al portului.
Weak pull up
n cazul n care pinul este configurat pentru a ndeplini funcia de intrare digital,
pentru o funcionare sigur exist posibilitatea legrii acestuia la sursa de alimentare VDD
prin intermediul tranzistorului notat cu WEAK i comandat de poarta P1. Legtura la VDD se
activeaz dac sunt ndeplinite simultan urmtoarele condiii:
o n bistabilul FF1 este nscris valoarea 1 logic cu comanda WR WPU,
o portul este configurat ca fiind de intrare, prin setarea bistabilului FF3 (trecerea lui
n starea 1 logic) cu comanda WR TRISIO,
o comanda Analog Input Mode este dezactivat (Analog Input Mode = 0),
o comanda GPPU (General Port Pull Up) este activat ( GPPU = 0 )
Interrupt on change
Fiecare pin al portului poate fi programat ca s genereze o cerere de ntrerupere la
schimbarea valorii sale digitale (ieirea porii P4).
Activarea acestei funcii se face prin:
o setarea bistabilului FF4 cu comanda WR IOC, pinul respectiv fiind configurat n
prealabil ca pin de intrare (bistabilul FF3 n stare logic 1),
o generarea semnalului de schimbare a valorii logice de ctre circuitul SAU-
EXCLUSIV (P3) conectat la ieirea bistabilelor FF5 i FF6.
n tabelul 5.1, n celulele marcate cu gri sunt bii ai cror valoare nu influeneaz
programarea portului de intrare-ieire.
49
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
50
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
51
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
&
GP2
&
1
52
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
53
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
movlw 0x3B
movwf TRISIO ;Setare GP0, 1, 3, 4, 5 - intrari, GP2 - ieire
clrf ANSEL ;Configurarea intrrilor/ieirilor conv A/D ca I/O digitale
bsf OPTION_REG,7
;Activare Weak pull-up general
movlw 0x30 ;Weak pull-up pentru pinii definii ca intrri
movwf WPU
bcf STATUS,RP0 ;Selectare bank 0
movlw 0x07
movwf CMCON ;Dezactivarea comparatorului
clrf GPIO ;Resetarea registrului portului I/O
clrf LOG_INTERM1
clrf LOG_INTERM2
clrf LOG_FINAL
;Read_pin secvena de citire a semnalelor logice pe pinii de intrare
Read_pin
clrf IN_3
clrf IN_4
clrf IN_5
btfsc GPIO,3 ;Citete GP3 - dac este 0, sare instruciunea urmtoare
bsf IN_3,0 ; dac nu scrie 1 in IN_3,0
btfsc GPIO,4 ;Citete GP4 - dac este 0, sare instruciunea urmtoare
bsf IN_4,0 ; dac nu scrie 1 in IN_4,0
btfsc GPIO,5 ;Citete GP5 - dac este 0, sare instruciunea urmtoare
bsf IN_5,0 ; dac nu scrie 1 in IN_5,0
;Execute secvena de executare a operaiilor logice i de scriere a rezultatului pe pinul GP2
Execute
movf IN_3,0 ;Se transfer coninutul registrului IN_3 in W
andwf IN_4,0 ;Execut SI logic, rezultatul se va gsi in W
movwf LOG_INTERM1
comf LOG_INTERM1 ;n LOG_INTERM1 se va gsi rezultatul operaiei
; GP3 NAND GP4
movf IN_5,0 ;Se transfer coninutul registrului IN_5 in W
iorwf IN_4,0
movwf LOG_INTERM2
comf LOG_INTERM2,0
;n W se va gsi rezultatul operaiei
; GP5 NOR GP4
andwf LOG_INTERM1,0
;n W se va gsi rezultatul operaiilor
; (GP3 NAND GP4) AND (GP4 NOR GP5)
movwf LOG_FINAL
comf LOG_FINAL ;n LOG_FINAL se va gsi rezultatul final al operaiei logice
btfsc LOG_FINAL,0 ;Citete bitul 0 din LOG_FINAL - dac este 0 (rezultatul
; operaiilor logice este 0), se sare instruciunea urmtoare
bsf GPIO,2
end
54
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
55
Aplicaii hardware i software cu microcontrolerul PIC 12F675 Lecia nr. 5
mouse n dreptul liniei pn la care se dorete rularea), cu rularea pas cu pas (cu comanda
sau butonul Step Into).
Se va urmri modificarea coninutului registrelor conform cu logica programului i
valoarea final a registrului GPIO: 24 (0010 0100B adic GP5 = 1, GP4 = 0, GP3 = 0 i
GP2 = 1).
56