Page 20 - Microcontrolere - Indrumator de laborator
P. 20
un interval de timp de 10µs, executăm instrucțiunea NOP sau alte instrucțiuni
executate într-un ciclu mașină, de 10 ori.
Circuitul prezentat are două utilizări majore care depind direct de perioada
semnalului de comandă al sistemului de iluminat. Astfel, dacă perioada semnalului de
tact este mare, de ordinul zecilor, sutelor de milisecunde sau secunde, ochiul uman va
percepe semnalizarea luminoasă ca atare, semnal luminos activ, respectiv semnal
luminos inactiv. În cazul în care perioada semnalului de tact este de ordinul zecilor de
milisecunde sau mai mică, ochiul uman nu va mai percepe semnalizarea luminoasă ca
atare, acesta va percepe oarecum o valoare medie a semnalului de semnalizare luminos
generat. În consecință, dacă durata impulsurilor va fi mică, ochiul uman va percepe o
iluminare continuă de slabă intensitate, iar dacă durata impulsurilor va fi mare, ochiul
uman va sesiza o iluminare continuă de intensitate ridicată. Se poate obține printr-o
comandă de tip PWM efectul unui control al nivelului de iluminare, prin modificarea
duratei impulsurilor de comandă. Semnalele generate cu o perioadă scurtă de timp pot
fi vizualizate ușor cu ajutorul osciloscopului.
În continuare este prezentată o secvență de program care poate fi folosită la
generarea fie a unui impuls de comandă, fie a unui semnal digital periodic cu durata
impulsului constantă, sau cu puține modificări, a unui semnal digital periodic cu durata
impulsului variabilă / reglabilă. Presupunem că avem invalidat sistemul de întreruperi
al microcontrolerului și sunt declarate deja în memoria de date două locații de
memorie cu etichetele COUNT1 și COUNT2, de preferat în același bank de memorie
de mate.
...
BANKSEL(COUNT2)
adr_1: MOVLW 7H ; la alegere în funcție de
; temporizarea dorită
MOVWF COUNT2
BANKSEL(COUNT1) ; poate lipsi dacă COUNT1 și
; COUNT2 se găsesc în același bank
; de memorie de date
MOVLW 0FAH ; 250 în zecimal
adr_2: MOVWF COUNT1
; din acest loc se calculează temporizarea realizată
DECFSZ COUNT2, 1
GOTO adr_3
GOTO adr_4 ; sau după caz la adr_1
adr_3: NOP
DECFSZ COUNT1, 1
GOTO $-1
GOTO adr_2
adr_4: ...
În secvența de program prezentată sunt folosite două instrucțiuni DECFSZ,
care decrementează cu o unitate conținutul unei locații de memorie identificată printr-o
17