Page 19 - Microcontrolere - Indrumator de laborator
P. 19
MOVLW 0
MOVWF PORTA
BANKSEL(TRISA)
MOVLW 0FH
MOVWF TRISA ; pinii RA4-RA7 sunt pini de ieșire
BANKSEL(ANSEL)
CLRF ANSEL ; se anulează celelalte funcții analogice
Configurarea portului A în conformitate cu instrucțiunile de mai sus permite
acum generarea unor nivele de tensiune la pinii folosiți, RA4-RA7. Astfel, dacă setăm
bitul RA7 (bitul 7) din registrul PORTA, la pinul RA7 (pinul 30 la o capsulă de tip
TQFT44) vom avea o tensiune aproximativ egală cu tensiunea de alimentare a
microcontrolerului. În cazul în care resetăm bitul RA7 din registrul PORTA, tensiunea
la pinul RA7 al microcontrolerului va fi aproximativ egală cu 0V.
Întrucât registrele cu funcții speciale folosite se găsesc plasate în memoria de
date, în bancuri diferite, se folosește directiva BANKSEL pentru a preciza bancul
curent care este folosit la un moment dat. Registrul STATUS care a fost folosit în
cadrul laboratorului anterior, are particularitatea că se regăsește în toate cele 4 bancuri
de memorie ale microcontrolerului. O astfel de poziționare este necesară întrucât
registrul STATUS conține cei doi biți care trebuie setați în așa fel încât să avem la un
moment dat activ unul din cele patru bancuri. Directiva BANKSEL nu face nimic
altceva decât că generează instrucțiuni care activează bancul de memorie de date în
care se află registrul indicat. Acest mod de lucru degrevează utilizatorul de a reține
poziționarea unui număr mare de registre cu funcții speciale încadrate în bancuri de
memorie diferite.
2.2. Rutină de temporizare software
Generarea unor semnale de temporizare la pinii microcontrolerului se poate
realiza prin mai multe modalități, de exemplu folosind circuitele de temporizare cu
sistemul lor de întreruperi, sau folosind un modul de generare de impulsuri cu
modulare în durată (lb. engl. pulse width modulation - PWM), sau folosind alte resurse
interne. O altă posibilitate de a genera impulsuri digitale folosită des este aceea de a
implementa rutine de temporizare. Se pleacă de la faptul că durata de execuție a unei
instrucțiuni, un ciclu mașină, sau durata de execuție a unei secvențe de instrucțiuni este
un submultiplu al perioadei și duratei semnalului dorit. Aceste instrucțiuni sau
secvențe de instrucțiuni se execută apoi repetat, de un număr exact de ori, astfel încât
să se obțină timpii doriți la care nivelul semnalelor să fie apoi controlat. Este acum
evident faptul că pentru această lucrare de laborator s-a ales un semnal de tact cu
frecvența de 4 MHz, pentru a calcula mai ușor timpii necesari de comandă, pe baza
duratei unui ciclu mașină de 1µs. De exemplu, execuția unei instrucțiuni NOP (abrev.
lb. engl. no operation) nu va realiza nicio altă acțiune decât faptul că vom constata că
pentru execuția ei a fost nevoie de un interval de timp de 1µs. Dacă dorim să generăm
16