microprocesoare,cursul 6

Upload: petrovai-alexandru

Post on 14-Oct-2015

61 views

Category:

Documents


2 download

DESCRIPTION

Microprocesoare

TRANSCRIPT

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    99

    6. PORTURI DE INTRARE-IEIRE

    Cuprins

    Introducere

    Obiective

    6.1 STRUCTURA GENERAL A PORTURILOR

    6.1.1 Preliminarii

    6.1.2 Implementarea hardware a porturilor

    6.1.3 Iniializarea porturilor

    6.2 CONECTAREA CIRCUITELOR EXTERNE

    6.3 APLICAII

    6.3.1 Implementarea unui program de test al

    butoanelor

    6.3.2 Implementarea unui protocol Handshake

    6.3.3 Comanda unui afiaj cu 7 segmente i 4 digii

    Concluzii

    ntrebri de autoevaluare

    Termeni eseniali

  • PORTURI DE INTRARE-IEIRE

    100

    Introducere

    Microcontrolerele nu i-ar justifica existena dac nu ar oferi posibilitatea

    de a modifica sau monitoriza, prin intermediul programului implementat,

    starea pinilor conectai la diferite circuite din lumea exterioar. Aceti pini

    de intrare-ieire sunt de obicei dispui n grupuri avnd dimensiunea

    maxim egal cu dimensiunea magistralei interne de date. La familia de

    microcontrolere PIC18 porturile paralele de intrare-ieire permit ca un

    numr de pn la 8 bii de date externi s poat fi citii sau scrii simultan.

    Numrul total al acestor linii de date paralele difer de la un

    microcontroler la altul, n cazul PIC18F4455 fiind disponibili 34 de pini

    de intrare-ieire din totalul de 40 de pini ai capsulei.

    Obiective

    Dup parcurgerea acestui capitol cursantul va trebui:

    - s neleag principiul de funcionare al porturilor paralele de intrare-ieire ale microcontrolerului;

    - s poat configura porturile; - s neleag structura porturilor de intrare-ieire; - s poat realiza aplicaii care utilizeaz porturile de intrare-ieire.

    6.1 STRUCTURA GENERAL A PORTURILOR

    6.1.1 Preliminarii Porturile de intrare-ieire ale unui microcontroler reprezint legtura cu lumea

    exterioar prin care acesta poate s trimit sau s primeasc date.

    Microcontrolerul PIC18F4455 (Fig. 6.1) are 5 porturi de intrare-ieire (notate cu A, B,

    C, D i E) fiecare pin al acestora fiind multiplexat cu mai multe funcionaliti. De exemplu,

    pinul 2 al microcontrolerului (RA0/AN0) poate fi pin de intrare-ieire digital, bitul 0 al portului A (RA0) sau pin de intrare analogic, reprezentnd canalul 0 al convertorului analog digital (AN0). n general, dac se folosete un periferic atunci pinii corespunztori acestuia nu pot fi utilizai ca pini de intrare-ieire digitali.

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    101

    Fig. 6.1. Pinii i porturile microcontrolerului PIC18F4455 conform foii de catalog [15]

    Numrul de bii disponibil n porturile microcontrolerului PIC18F4455 i denumirea

    pinilor asociai se prezint n Tabelul 6.1 Tabel 6.1.Porturile microcontrolerului PIC18F4455 i pinii asociai

    Portul Nr bii disponibili Denumire pini

    PORTA 7 RA[6:0] PORTB 8 RB[7:0] PORTC 7 RC[7:4], RC[2:0] PORTD 8 RD[7:0] PORTE 4 RE[3:0]

    n mod normal porturile de intrare-ieire ar trebui s se comporte asemenea unor

    regitri al cror coninut poate fi vizibil i accesat din lumea exterioar. Totui, porturile de

    intrare-ieire sunt puin diferite fa de regitrii interni. De exemplu, fiecare bit al portului

    paralel poate fi configurat individual pentru a reflecta starea fizic a pinului sau pentru a pune

    pe 1 sau 0 logic pinul asociat. Altfel spus, fiecare pin poate fi configurat ca pin de intrare, care

    poate fi citit sau pin de ieire care poate fi scris.

    Astfel, fiecare port n={A,B,C,D,E} are trei regitri folosii pentru configurarea i manipularea lui:

    - registrul TRISn (de configurare a direciei portului) - registrul PORTn (de citire a strii pinilor microcontrolerului) - registrul LATn (de scriere a datelor pe port)

    Fiecare bit al portului are echivalent un bit n registrul TRIS prin care se poate configura direcia individual a pinului asociat. Astfel, un bit egal cu 0 n registrul TRIS va seta pinul corespunztor pe ieire, iar un bit egal cu 1 va seta pinul corespunztor pe intrare.

  • PORTURI DE INTRARE-IEIRE

    102

    Exemplu

    S considerm o situaie n care pinul RA0 i pinii RB[7:0] sunt ieiri, iar restul de pini ai portului A sunt intrri. Urmtoarea subrutin realizeaz

    configurarea direciei pinilor utilizai.

    Initializare MOVLW b1111110 ;RA0 ieire MOVWF TRISA ;RA[1:7] intrri CLRF TRISB ;RB[0:7] ieiri RETURN

    Orice resetare a microcontrolerului va conduce la setarea tuturor biilor din regitrii

    TRIS. Altfel spus, n urma resetrii toi pinii microcontrolerului vor fi pini de intrare. Aceast configuraie se poate explica prin faptul c n situaia n care un pin ar fi de ieire nainte ca

    programul s-l iniializeze cu aceast stare, atunci acest pin ar putea iei din starea de reset

    avnd o tensiune neprevzut care ar putea aciona diferite circuite conectate la

    microcontroler ntr-un mod nedorit.

    Odat realizat configurarea direciei porturilor utilizate, se poate efectua citirea sau

    scrierea datelor ntr-o manier similar accesului la regitrii interni, realizndu-se n acest fel

    interaciunea cu mediul exterior. Astfel,

    - pentru a monitoriza / citi starea oricrui pin configurat ca intrare se pot folosi

    instruciunile BTFSC sau BTFSS. De exemplu, BTFSS PORTB,1 sare peste instruciunea urmtoare dac pinul RB1 este n stare logic 1. Pentru a citi simultan starea mai multor pini se poate copia coninutul registrului PORT n WREG (ex. MOVF PORTB, W) sau ntr-un registru de uz general pentru procesri suplimentare (MOVFF PORTB, 0x00)

    - pentru a modifica / scrie starea oricrui pin configurat ca ieire se pot utiliza

    instruciunile pe bit BCF, BSF sau BTG. De exemplu, BCF LATA, 2 va aduce starea pinului RA2 pe 0 logic. De asemenea, exist posibilitatea de a modifica simultan starea mai multor pini prin copierea coninutului unui registru oarecare n registrul

    LAT corespunztor. De exemplu, dac toi pinii portului B sunt pini de ieire atunci instruciunile urmtoare: MOVLW b1111000: MOVWF LATB vor seta pinii RB[7:4] i vor reseta pinii RB[3:0].

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    103

    6.1.2 Implementarea hardware a porturilor

    Pentru a nelege modul de funcionare al porturilor de intrare-ieire vom analiza n

    continuare implementarea hardware a acestora. n Fig. 6.2 se prezint structura simplificat a

    unui singur bit al unui port de intrare-ieire.[15] n figur se evideniaz trei componente

    majore care intervin n structura portului: bistabilul D pentru date, bistabilul TRIS care comand circuitul tristate (2) i latch-ul de intrare.

    Fig. 6.2. Implementarea hardware a unei linii a unui port de intrare-ieire

    Bistabilul D reprezint celula elementar de memorie. Scrierea datelor pe port va

    ncrca bistabilul D cu data disponibil pe magistral. Acesta va menine datele ct timp

    microcontrolerul este alimentat sau pn la suprascrierea acestora cu date noi.

    De exemplu:

    MOVLW b11110000 MOVWF LATB

    va ncrca cele patru bistabile superioare ale registrului cu 1, iar cele patru bistabile inferioare

    cu 0. ncrcarea acestor bistabile cu date se va realiza indiferent de modul n care este

    configurat pinul, ca intrare sau ieire. Pentru ca datele din bistabil s se regseasc pe pin,

  • PORTURI DE INTRARE-IEIRE

    104

    circuitul tristate (2) aflat la ieirea bistabilului trebuie activat. n aceast situaie (Fig. 6.3-b),

    ieirea bistabilului este conectat direct la lumea exterioar prin intermediul pinului, care

    acum este pin de ieire. Pentru a activa circuitul tristate (2), bistabilul D TRIS trebuie ncrcat n prealabil cu valoarea 0.

    Citirea strii pinului se poate realiza prin intermediul latch-ului de date inferior a crui

    ieire reflect starea fizic a pinului. La execuia unei comenzi de citire a portului, intrarea EN

    a acestui latch este 0, bitul citit este meninut la ieirea circuitului tristate (4) pe durata citirii.

    Aceast citire nu este influenat de direcia pinului (Fig. 6.3-a,c).

    Din Fig. 6.2 se poate observa c bitul TRIS poate fi scris i citit. Chiar dac citirea registrului TRIS este aparent nejustificat s considerm cazul n care utilizatorul dorete s configureze direcia unui pin. Pentru acest lucru se poate utiliza instruciunea:

    BCF TRISB,2 ;terge bitul 2 al registrului TRISB Instruciunea BCF (Bit Clear File) este un exemplu de instruciune care realizeaz operaiile de citire-modificare-sciere, prin care starea registrului TRISB este mai nti citit n UCP, apoi modificat i n cele din urm scris napoi n TRISB (vezi capitolul 1, fazele instruciunilor). Pentru a putea realiza acest lucru, UCP trebuie s aib posibilitatea de a

    accesa registrul TRIS att pentru scriere ct i pentru citire. Acest lucru este valabil i pentru alte instruciuni. De fapt, majoritatea instruciunilor (ex. MOVWF) realizeaz un microciclu de citire n Q2, naintea operaiei efective de scriere din Q4.

    Pentru a evita problemele ce pot aprea din citirea strii fizice a pinilor,

    microcontrolerele din seria PIC18 au introdus un circuit tristate suplimentar (1), asociat

    bistabilului D de date, care permite UCP s realizeze direct citirea biilor de date ca o

    alternativ la citirea strii pinilor. Astfel, scrierea datelor n registrul LATn este echivalent cu scrierea datelor n registrul PORTn, iar citirea LATn va furniza datele stocate n registrul de date, care de cele mai multe ori vor fi identice cu datele privind starea fizica a pinilor.

    Deoarece pinii unui port pot fi configurai ca intrri, ieiri sau combinaii de intrri i

    ieiri, este interesant de tiut ce se ntmpl atunci cnd se citesc sau se scriu regitrii

    implicai. De exemplu, ce s-ar ntmpla dac se realizeaz din program citirea unui port de

    ieire? Cele patru situaii prezentate n Fig. 6.3 sunt descrise n continuare:

    a. Citirea unui port de intrare (TRIS = 1) n aceast situaie circuitul tristate (2) este dezactivat, iar starea bistabilului de date

    rmne neschimbat. De exemplu, instruciunea MOVF PORTB, W citete starea pinilor portului B n registrul de lucru WREG.

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    105

    b. Scrierea la un port de ieire (TRIS = 0) n acest caz circuitul tristate (2) este activat, iar coninutul bistabilului de date este

    modificat ca urmare a operaiei de scriere. Ieirea bistabilului D este reflectat i n

    starea pinului de ieire. De exemplu, dac toi pinii portului B sunt configurai ca

    ieiri, atunci MOVLW 0x01: MOVWF LATB va aduce pinul RB0 n stare logic 1, ceilali pini RB[7:1] fiind n stare logic 0

    c. Citirea unui port de ieire (TRIS = 0) n acest caz circuitul tristate (2) este activat, iar pinul de ieire reflect starea ieirii

    bistabilului de date. Prin citire se va realiza copierea efectiv a valorii de la ieirea

    bistabilului de date n UCP.

    d. Scrierea la un port de intrare (TRIS = 1) n aceast situaie se realizeaz modificarea coninutului bistabilului de date. Totui,

    datele din bistabil nu vor fi puse pe pin pn la schimbarea direciei pinului.[6]

    Fig. 6.3. Citirea i scrierea unui bit al unui port conectat la un pin de intrare sau de ieire

  • PORTURI DE INTRARE-IEIRE

    106

    6.1.3 Iniializarea porturilor nainte de a utiliza porturile pentru operaii de intrare-ieire acestea trebuie iniializate.

    Iniializarea presupune urmtoarele etape:

    - tergerea regitrilor de date PORTn i LATn pentru a elimina datele reziduale care s-ar putea gsi acolo pentru porturile A, B, C, D i E;

    - Configurarea pinilor ca pini digitali de intrare-ieire de uz general n registrul

    ADCON1 al convertorului Analog/Digital pentru porturile A, B i E. Pinii acestor porturi sunt multiplexai cu convertorul Analog/Digital

    - Oprirea comparatoarelor prin configurarea registrului CMCON pentru portul A; - Configurarea direciei pinilor, prin intermediul regitrilor TRISn pentru porturile

    A, B, C, D i E.

    Cele patru etape de iniializare de mai sus sunt puse n eviden n exemplul urmtor

    Exemplu

    Se consider o seciune de cod care realizeaz iniializarea portului A.

    CLRF PORTA ;tergerea reg. PORTA

    CLRF LATA ;tergerea reg. LATA MOVLW 0x0F ;Configurare convertor A/D MOVWF ADCON1 ;pt. pini I/O digitali MOVLW 07h ;Oprire comparatoare MOVWF CMCON MOVLW B11111100 ;pinii RA[7:2] intrari MOVWF TRISA ;i RA[1:0] ieiri

    6.2 CONECTAREA CIRCUITELOR EXTERNE

    Pentru conectarea butoanelor, a LED-uri, dar i a altor componente externe la un

    microcontroler, trebuie respectate cu strictee limitele curenilor de intrare i ieire ale

    microcontrolerului (Tabelul 6.2) precum i cele asociate componentelor externe.

    Nerespectarea limitelor impuse poate conduce la arderea pinilor sau chiar a porturilor precum

    i la arderea componentelor externe.

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    107

    Tabel 6.2. Caracteristici electrice ale porturilor [8,15]

    Caracteristica Valoare [mA]

    Curentul maxim de ieire pe Vss 300

    Curentul maxim de intrare pe Vdd 250

    Curentul maxim de intrare pe pinul oricrui port 25

    Curentul maxim de ieire pe pinul oricrui port 25

    Curentul maxim de intrare pe toate porturile 200

    Curentul maxim de ieire pe toate porturile 200

    n cele ce urmeaz se prezint cteva exemple de conectare a unor circuite externe la

    microcontroler.

    a. Conectarea butoanelor

    b. Conectarea LED-urilor

    Fig. 6.4. Conectarea butoanelor (a ntreruptoarelor) i a LED-urilor cu consum mai mic de 20mA

    Pentru conectarea unor LED-uri la microcontroler trebuie respectate specificaiile

    electrice ale acestora. Cteva dintre caracteristicile LED-urilor sunt prezentate n Tabelul 6.3.

    Tabel 6.3. Caracteristicile principale ale LED-urilor [8]

    Culoare Lungimea de und coresp. intensitii luminoase maxime

    [nm]

    Materialul de baz

    Tensiunea de deschidere la

    10mA [V]

    Intensitatea luminous la

    10mA [m cd]

    Infrarou 900 Galiu-Arseniu 1.3-1.5

    Rou 655 Galiu-Arseniu-Fosfor 1.6-1.8 0.4-1.0

    Rou deschis 635 Galiu-Arseniu-Fosfor 2.0-2.2 2.0-4.0

    Galben 583 Galiu-Arseniu-Fosfor 2.0-2.2 1.0-3.0

    Verde 565 Galiu-Fosfor 2.2-2.4 0.5-3.0

    Albastru 490 Galiu-Fosfor 3.0-5.0 0.5-2.0

    Dup cum se vede i din Fig. 6.4-b nu se recomand conectarea direct a LED-urilor

    la microcontroler, ci prin intermediul unei rezistene. Dac se iau n considerare datele din

  • PORTURI DE INTRARE-IEIRE

    108

    Tabelul 6.3, pentru un LED avnd tensiunea de deschidere de 2V la un curent de 10mA,

    valoarea rezistenei se calculeaz n felul urmtor: =

    300101025

    3 .

    Pentru conectarea unor LED-uri cu un consum mai mare de 20mA se recomand

    utilizarea schemei din Fig. 6.5.

    Fig. 6.5. Conectarea LED-urilor cu consum mai mare de 20mA

    Numeroase aplicaii pentru microcontrolere necesit activarea sau dezactivarea unor

    circuite de putere. Acest lucru se realizeaz de multe ori cu ajutorul releelor. Pentru a realiza

    comanda unui releu cu ajutorul unui microcontroler se poate utiliza schema din Fig. 6.6.

    Fig. 6.6. Schema de comand a unui releu

    n ciuda utilizrii tot mai frecvente a afiajelor cu cristale lichide, afiajele cu apte

    segmente nu au disprut din practic acestea avnd nc multiple utilizri mai ales n aplicaii

    care necesit afiarea unor valori numerice, aceste module fiind foarte eficiente n condiii de

    iluminare sczut sau atunci cnd se doresc afiaje de dimensiuni mari. Afiajele cu apte

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    109

    segmente sunt n esen afiaje cu LED-uri, fiecare segment fiind reprezentat de un LED, i

    sunt disponibile n dou variante de implementare: cu anod comun, respectiv cu catod comun.

    Dispunerea segmentelor i cele dou variante de implementare se prezint n Fig. 6.7.

    Fig. 6.7. Afiaj cu apte segmente

    n cazul utilizrii unor afiaje multiplexate cu apte segmente cu patru digii se pot

    utiliza urmtoarele scheme de conectare la microcontroler (Fig. 6.8 anod comun, Fig.6.9

    catod comun). Liniile de date (a,b,c,..g,dp) fiind comune pentru toate cele patru afiaje, prin

    multiplexare se asigur comanda succesiv a fiecrui afiaj. Practic, la un moment dat doar un

    afiaj este comandat. Prin baleerea de la un afiaj la altul cu o frecven suficient de mare se

    creaz impresia c toate cele patru cifre sunt afiate simultan. n paragraful 6.3.3 se va

    prezenta un exemplu de aplicaie care realizeaz comanda acestui tip de afiaje.

    Fig.6.8. Conectarea unui afiaj multiplexat de 7 segmente cu anod comun de 4 digii

  • PORTURI DE INTRARE-IEIRE

    110

    Fig. 6.9. Conectarea unui afiaj multiplexat de 7 segmente cu catod comun de 4 digii

    6.3 APLICAII 6.3.1 Implementarea unui program de test al butoanelor

    n cele ce urmeaz se va prezenta schema electric de conectare (Fig. 6.10), diagrama

    de activitate (Fig. 6.11) i implementarea unui simplu program care testeaz apsarea a dou

    butoane, conectate pe pinii RD0 i RD1. Dac butoanele sunt apsate, se vor aprinde LED-urile corespunztoare (pentru butonul de pe RD0 se va aprinde LED-ul conectat pe RD2, iar pentru butonul de pe RD1 se va aprinde LED-ul conectat pe pinul RD3).[8]

    Fig. 6.10. Schema electric de conectare

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    111

    Conform montajului din Fig. 6.10, la apsarea unui buton se va citi pe port valorea 0

    logic, iar atunci cnd butonul este eliberat se citete valoarea 1 logic. LED-urile se vor aprinde

    prin setarea bitului corespunztor.

    Fig. 6.11. Diagrama de activiate

    LIST P=18F4455 ;definire tip procesor #include ;definire variabile procesor ORG 0x800 ;Adresa de reset ;Programul principal Initializare_port: CLRF PORTD ;tergere buffere CLRF LATD

    MOVLW b'00000011' ;configurare direcie pini MOVWF TRISD ;RD0, RD1 intrri

    ;RD2, RD3 ieiri Test_buton1:

    BTFSS PORTD, 0 ;test buton legat pe pinul RD0 GOTO Buton1_apasat

    GOTO Buton1_eliberat

  • PORTURI DE INTRARE-IEIRE

    112

    Test_buton2: BTFSS PORTD, 1 ;test buton legat pe pinul RD1 GOTO Buton2_apasat

    GOTO Buton2_eliberat Buton1_apasat: BSF LATD, 2 ;aprinde LED conectat la RD2 GOTO Test_buton2 Buton1_eliberat: BCF LATD, 2 ;stinge LED conectat la RD2 GOTO Test_buton2 Buton2_apasat: BSF LATD, 3 ;aprinde LED conectat la RD3 GOTO Test_buton1 Buton2_eliberat: BCF LATD, 3 ;stinge LED conectat la RD3 GOTO Test_buton1

    END ;sfritul programului

    6.3.2 Implementarea unui protocol Handshake

    S considerm cazul unei aplicaii n care un echipament periferic extern solicit

    microcontrolerului un octet de date din registrul 0x2C, care va fi transferat prin intermediul portului B, de fiecare dat cnd aduce linia de intrare RD7 n stare logic 0. Semnalul provenit de la periferic este denumit ready i indic disponibilitatea sa de a primi datele de la

    microcontroler. Cnd microcontrolerul rspunde, acesta pune datele pe portul B apoi d un

    impuls pe pinul RD6, denumit strobe , prin care informeaz perifericul despre prezena datelor pe liniile paralele, urmnd ca acesta s le citeasc. La resetare pinii portului B trebuie adui n

    stare logic 0, iar pinul RD6 n stare logic 1. Un asemenea protocol (Fig. 6.12) poart denumirea de handshake i permite

    realizarea unei comunicaii fr pierdere de date ntre dou echipamente ne-sincrone.

    n Fig. 6.13 se prezint scheama de conectare a microcontrolerului cu echipamentul

    periferic (ex. imprimant).

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    113

    Fig. 6.12. Protocolul handshake

    Fig. 6.13. Schema electric de conectare

    Programul care implementeaz protocolul de comunicaie se prezint n continuare.

    Dup etapa de iniializare a porturilor se va iniializa i starea liniilor conform specificaiilor.

    Astfel, liniile de date corespunztoare pinilor RB[7:0] vor fi aduse n stare logic 0 (toi biii de date sunt 0), iar linia RD7 va fi adus n stare logic 1.

    Dup iniializare se testeaz starea pinului RD7. La apariia unui 0 logic pe acest pin, datele din registrul de la adresa 0x2C se copiaz pe port prin intermediul registrului de lucru, apoi pinul RD6 este adus n stare logic 0. Pentru a genera impulsul se utilizeaz o instruciune NOP nainte de a pune un 1 logic pe acest pin. Se utilizeaz instruciunea NOP, deoarece n exemplul considerat nu se specific durata impulsului. n alte situaii, NOP poate fi nlocuit cu apelul unei subrutine care implementeaz o ntrziere.

    Starea pinului RD7 este testat din nou, n ateptarea unui 1 logic care s indice citirea datelor de ctre periferic i implicit ncheierea transferului.

  • PORTURI DE INTRARE-IEIRE

    114

    LIST P=18F4455 ;definire tip procesor #include ;definire variabile procesor Date EQU 0x2C ORG 0x800 ;Adresa de reset ;Programul principal Initializare_port: CLRF PORTB ;tergere buffere CLRF LATB CLRF PORTD CLRF LATD

    MOVLW 0x0F ;Configurare convertor A/D MOVWF ADCON1 ;pt. pini I/O digitali MOVLW 07h ;Oprire comparatoare MOVWF CMCON

    BCF TRISD, 6 ;pin RD6 ieire (strobe) BSF TRISD, 7 ;pin RD7 intrare (ready) CLRF TRISB ;pini RB[7:0] ieire BSF LATD, 6 ;stare iniial pini CLRF LATB

    ;testare pin RA7 (ready) n ateptarea unui 0 logic Test_Ready_0:

    BTFSC PORTD, 7 GOTO Test_Ready_0

    MOVFF Date, LATB ;se pun datele pe linie BCF LATD, 6 ;impuls pe RD6 NOP BSF LATD, 6

    ;testare pin RA7 (ready) n ateptarea unui 1 logic Test_Ready_1:

    BTFSS PORTD, 7 GOTO Test_Ready_1 GOTO Test_Ready_0

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    115

    6.3.3 Comanda unui afiaj cu 7 segmente i 4 digii

    Se consider montajul din Fig. 6.9 n care la microcontroler este conectat un afiaj

    multiplexat cu 7 segmente cu catod comun de 4 digii. Liniile de date ale afiajului (a,b,...,g,

    dp) sunt conectate la portul B (a-RB[0], b-RB[1],...,g-RB[6],dp-RB[7]), iar cele patru linii de selecie la pinii RA[3:0]. Avnd n vedere c afiajul este cu catod comun, LED-urile se vor aprinde atunci cnd pe pinii corespunztori liniilor de date vom avea un 1 logic.

    Multiplexarea se va realiza prin intermediul liniilor de selecie, iar programul va trebui s

    asigure selectarea succesiv a fiecrui digit prin comanda tranzistorilor i meninerea datelor

    adecvate pentru fiecare digit pe port. Dac multiplexarea se realizeaz suficient de repede (ex.

    la fiecare 10ms se selecteaz un nou digit i se trimit datele spre el) se va crea impresia c

    toate cele 4 cifre sunt aprinse simultan.

    Se dorete afiarea numrului 1234 pe afiajul cu apte segmente i patru digii. n

    acest scop trebuie identificate valorile care se transmit pe port pentru aprinderea cifrelor

    dorite. Analiznd Fig. 6.14 se pot identifica aceste valori care se vor regsi i n program.

    Fig. 6.14. Afiarea valorii 1234 pe un afiaj cu 7 segmente i 4 digii

    Dup etapa de iniializare a porturilor fiecare digit va fi selectat pe rnd prin activarea

    tranzistorilor de pe portul A i se vor transmite datele dorite spre afiaj care vor fi meninute

    un timp de 10ms nainte de a se trece la afiarea pe urmtorul digit. n programul urmtor se

    consider implementat rutina de ntrziere de 10ms

    LIST P=18F4455 ;definire tip procesor #include ;definire variabile procesor Unit EQU b01100110 ;4 Zeci EQU b01001111 ;3 Sute EQU b01011011 ;2 Mii EQU b00000110 ;1 ORG 0x800 ;Adresa de reset [...]

  • PORTURI DE INTRARE-IEIRE

    116

    ;Programul principal Initializare_port: CLRF PORTB ;tergere buffere CLRF LATB CLRF PORTA CLRF LATA

    MOVLW 0x0F ;Configurare convertor A/D MOVWF ADCON1 ;pt. pini I/O digitali MOVLW 07h ;Oprire comparatoare MOVWF CMCON

    MOVLW 0xF0 MOVWF TRISA ;pini RA[3:0] ieire CLRF TRISB ;pini RB[7:0] ieire

    Aprindere_LED:

    MOVLW Unit MOVWF LATB BSF LATA,0 ;selectare digit uniti BCF LATA,1 BCF LATA,2 BCF LATA,3 CALL Delay_10ms MOVLW Zeci MOVWF LATB BCF LATA,0 BSF LATA,1 ;selectare digit zeci BCF LATA,2 BCF LATA,3 CALL Delay_10ms MOVLW Sute MOVWF LATB BCF LATA,0 BCF LATA,1 BSF LATA,2 ;selectare digit sute BCF LATA,3 CALL Delay_10ms MOVLW Mii MOVWF LATB BCF LATA,0 BCF LATA,1 BCF LATA,2 BSF LATA,3 ;selectare digit mii CALL Delay_10ms GOTO Aprindere_LED END

  • SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455

    117

    Concluzii

    Capacitatea de a fi n legtur cu lumea exterioar prin intermediul

    porturilor de intrare-ieire reprezint funcionalitatea cea mai important

    pe care o poate furniza un microcontroler. Cele cinci porturi ale

    microcontrolerului sunt controlate prin intermediul a trei regitrii speciali

    care permit configurarea direciei pinilor, scrierea i citirea datelor de pe

    port.

    1. Care sunt regitrii care controleaz funcionarea porturilor i ce rol

    ndeplinesc acetia?

    2. Care sunt etapele iniializrii porturilor?

    3. n Fig. 6.2 ce rol ndeplinete circuitul tristate (3)?

    4. Cum se realizeaz protocolul handshake?

    ntrebri de autoevaluare

    5. Cum se realizeaz configurarea direciei pinilor?

    Termeni eseniali

    Afiaj cu apte segmente

    Afiaj cu LED-uri ce permite afiarea cifrelor

    Bistabil D

    Celul elementar de memorie. Circuit cu dou stri (0 i 1 logic) utilizat

    pentru stocarea informaiei de un bit.

    Handshake

    Protocol de comunicaie care permite realizarea unei comunicaii fr

    pierdere de date ntre dou echipamente ne-sincrone. Nu exist un tact

    comun de sincronizare. Sincronizarea se realizeaz prin mesaje.

    LATn

    Registru de citire/scriere a datelor de pe port

    LED

    Diod electroluminescent

    PORTn

    Registru de citire/scriere a datelor de pe port. La citire va conine starea

    fizic a pinilor.

    Porturi de intrare-ieire

    Circuite de interfa prin intermediul crora se poate realiza schimbul de

    informaii cu dispozitive periferice externe.

  • PORTURI DE INTRARE-IEIRE

    118

    Protocol de comunicaie

    Un ansamblu de mesaje / semnale i reguli de schimbare a acestor mesaje

    / semnale ntre sisteme

    TRISn

    Registru n care se configureaz direcia unui port

    Tristate

    Circuit cu trei stri la ieire: 0 logic, 1 logic i impedan ridicat. Aceste

    circuite dispun de o intrare de activare (ENABLE). Cnd circuitul este

    activ acesta se comporta ca un circuit logic normal. Cnd circuitul este

    inactiv ieirea este n stare de impedan ridicat (ieirea este deconectat

    de la circuit)

    UCP

    Unitate central de prelucrare.

    /ColorImageDict > /JPEG2000ColorACSImageDict > /JPEG2000ColorImageDict > /AntiAliasGrayImages false /CropGrayImages true /GrayImageMinResolution 300 /GrayImageMinResolutionPolicy /OK /DownsampleGrayImages true /GrayImageDownsampleType /Bicubic /GrayImageResolution 300 /GrayImageDepth -1 /GrayImageMinDownsampleDepth 2 /GrayImageDownsampleThreshold 1.50000 /EncodeGrayImages true /GrayImageFilter /DCTEncode /AutoFilterGrayImages true /GrayImageAutoFilterStrategy /JPEG /GrayACSImageDict > /GrayImageDict > /JPEG2000GrayACSImageDict > /JPEG2000GrayImageDict > /AntiAliasMonoImages false /CropMonoImages true /MonoImageMinResolution 1200 /MonoImageMinResolutionPolicy /OK /DownsampleMonoImages true /MonoImageDownsampleType /Bicubic /MonoImageResolution 1200 /MonoImageDepth -1 /MonoImageDownsampleThreshold 1.50000 /EncodeMonoImages true /MonoImageFilter /CCITTFaxEncode /MonoImageDict > /AllowPSXObjects false /CheckCompliance [ /None ] /PDFX1aCheck false /PDFX3Check false /PDFXCompliantPDFOnly false /PDFXNoTrimBoxError true /PDFXTrimBoxToMediaBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXSetBleedBoxToMediaBox true /PDFXBleedBoxToTrimBoxOffset [ 0.00000 0.00000 0.00000 0.00000 ] /PDFXOutputIntentProfile () /PDFXOutputConditionIdentifier () /PDFXOutputCondition () /PDFXRegistryName () /PDFXTrapped /False

    /Description > /Namespace [ (Adobe) (Common) (1.0) ] /OtherNamespaces [ > /FormElements false /GenerateStructure false /IncludeBookmarks false /IncludeHyperlinks false /IncludeInteractive false /IncludeLayers false /IncludeProfiles false /MultimediaHandling /UseObjectSettings /Namespace [ (Adobe) (CreativeSuite) (2.0) ] /PDFXOutputIntentProfileSelector /DocumentCMYK /PreserveEditing true /UntaggedCMYKHandling /LeaveUntagged /UntaggedRGBHandling /UseDocumentProfile /UseDocumentBleed false >> ]>> setdistillerparams> setpagedevice