aplicaţii cu microcontrolere de uz general

Upload: testery20041

Post on 18-Oct-2015

147 views

Category:

Documents


4 download

DESCRIPTION

Aplicaţii cu microcontrolere de uz general

TRANSCRIPT

  • Vladimir Melnic tefan Suceveanu

    Aplicaii cu microcontrolere de uz general

  • CUPRINS

    INTRODUCERE..................................................................................1

    1. FAMILIA DE MICROCONTROLERE 8XC552 ..................................5

    1.1. UNITATEA CENTRAL I REGISTRELE SALE ................................. 6 a) Acumulatorul ................................................................ 8 b) Registrul B ................................................................... 8 c) Pointerul stivei .............................................................. 8 d) Registrul de stare .......................................................... 9 e) Registrul pointer la memoria de date ............................... 9

    1.2. REGISTRELE SPECIALE SFR................................................ 9 1.3. SETUL DE INSTRUCIUNI ....................................................11

    a) Transferul de date ........................................................12 b) Instruciuni aritmetice ...................................................13 c) Instruciuni logice ........................................................13 d) Controlul programului. ..................................................14

    1.4. PORTURILE DE INTRARE-IEIRE.............................................15 1.5. MODULATORUL DE IMPULSURI N DURAT .................................17 1.6. CONVERTORUL ANALOG NUMERIC...........................................18 1.7. TIMERE/NUMRTOARE......................................................19

    1.7.1 Modul 0 .................................................................20 1.7.2 Modul 1 .................................................................20 1.7.3 Modul 2 .................................................................20 1.7.4 Modul 3 .................................................................21

    1.8. TIMERUL INIIALIZARE T3 (WATCHDOG) .................................24 1.9. INTERFAA SERIAL ASINCRON ............................................26

    1.9.1 Interfaa serial SIO0 n modul 0 ..............................26 1.9.2 Interfaa serial SIO0 n modul 1 ..............................27 1.9.3 Interfaa serial SIO0 n modul 2 ..............................29 1.9.4 Interfaa serial SIO0 n modul 3 ..............................29

    1.10. INTERFAA SERIAL SINCRON I2C ........................................30 1.10.1 Modul emisie circuit principal ....................................32 1.10.2 Modul recepie circuit principal..................................33 1.10.3 Modul recepie circuit secundar .................................34 1.10.4 Modul transmisie circuit secundar ..............................36 1.10.5 Alte stri ................................................................37

    1.11. SISTEMUL DE NTRERUPERI..................................................37 1.12. CONSUMUL REDUS DE ENERGIE .............................................39

    1.12.1 Modul inactiv ..........................................................40 1.12.2 Modul oprit.............................................................40

    2. FAMILIA DE MICROCONTROLERE 80C16X ................................41

  • 2.1. ORGANIZAREA MEMORIEI ....................................................44 2.1.1 Memoria ROM intern ..............................................45 2.1.2 Memoria RAM intern i zona registrelor speciale

    (SFR).....................................................................45 a) Stiva sistem .................................................................46 b) Registrele de uz general (GPR).......................................46 c) Indicatorii pentru Interfaa pentru evenimente de la

    periferice ....................................................................47 d) Registrele speciale (SFR) ...............................................47 e) Memoria extern ..........................................................52

    2.2. UNITATEA CENTRAL .........................................................52 2.2.1 Stiva de instruciuni.................................................54 a) Actualizarea indicatorului context ...................................55 b) Actualizarea indicatorului paginii de date .........................55 c) Actualizarea explicit a indicatorului stivei .......................55 d) Controlul ntreruperilor ..................................................55 e) Iniializarea porturilor de intrare-ieire ............................56 f) Schimbarea configuraiei sistemului ................................56 2.2.2 Timpul de execuie al instruciunilor ..........................56 2.2.3 Registrele speciale ale unitii centrale.......................57 a) Registrul de configurare a sistemului (SYSCON)................57 b) Registrul de stare a procesorului (PSW)...........................58 c) Indicatorul de instruciuni (IP) i indicatorul segmentului

    de program (CSP).........................................................59 d) Indicatorii paginilor de date (DPP0, DPP1, DPP2 i DPP3) ..60 e) Indicatorul context (CP) ................................................61 f) Indicatorii stiv sistem (SP), depire superioar stiv

    (STKOV) i depire inferioar stiv (STKUN) ...................62 g) Registrele pentru nmulire/mprire (MDH, MDL i MDC) ..63 h) Registrele constante (ZEROS i ONES) ............................63

    2.3. INTERFAA CU MAGISTRALA EXTERN (EBC) .............................63 2.3.1 Modurile de lucru ale magistralei externe ...................64 a) Magistral multiplexat .................................................64 b) Magistral demultiplexat ..............................................64 c) Comutarea ntre tipurile de magistral ............................65 d) Dimensiunea magistralei externe de date ........................66 e) Generarea segmentului de adrese...................................67 f) Generarea semnalelor de selecie ...................................68 2.3.2 Caracteristici programabile ale magistralei ..................69 a) Controlul semnalului ALE ...............................................69 b) Stri de ateptare.........................................................69 c) Programarea intervalului de nalt impedan...................70 d) ntrzierea semnalelor RD i WR ....................................70

  • e) Controlul semnalului READY...........................................71 2.3.3 Registrele speciale ale interfeei cu magistrala

    extern ..................................................................71 a) Registrele pentru controlul magistralei (BUSCON04,

    ADDRSEL14) .............................................................72 b) Registrul de control la iniializare (RP0H).........................73 2.3.4 Starea inactiv a interfeei cu magistrala extern ........73 2.3.5 Arbitrarea magistralei externe ...................................73 a) Cedarea magistralei ......................................................74 b) Preluarea magistralei ....................................................74 2.3.6 Interfaa cu magistrala X-BUS ...................................74

    2.4. SISTEMUL DE NTRERUPERI I REGISTRELE PEC .........................75 2.4.1 Structura sistemului de ntreruperi.............................76 2.4.2 Funcionarea canalelor Controlerului pentru evenimente

    de la periferice (PEC)...............................................79 2.4.3 Prioritile sistemului de ntreruperi ...........................80 2.4.4 Salvarea strii programului pe durata ntreruperii ........81 2.4.5 Timpul de rspuns la ntrerupere ...............................82 2.4.6 ntreruperile externe ...............................................83 2.4.7 Excepii ..................................................................85 a) Excepiile software .......................................................85 b) Excepiile hardware ......................................................85

    2.5. PORTURILE DE INTRARE-IEIRE.............................................87 2.5.1 Portul P0 ................................................................88

    Funciile alternative ale portului P0 .................................89 2.5.2 Portul P1 ................................................................89

    Funciile alternative ale portului P1 .................................90 2.5.3 Portul P2 ................................................................91

    Funciile alternative ale portului P2 .................................91 2.5.4 Portul P3 ................................................................92

    Funciile alternative ale portului P3 .................................93 2.5.5 Portul P4 ................................................................94

    Funciile alternative ale portului P4 .................................94 2.5.6 Portul P5 ................................................................95

    Funciile alternative ale portului P5 .................................95 2.5.7 Portul P6 ................................................................95

    Funciile alternative ale portului P6 .................................96 2.5.8 Portul P7 ................................................................96

    Funciile alternative ale portului P7 .................................96 2.5.9 Portul P8 ................................................................97

    Funciile alternative ale portului P8 .................................97 2.6. MODULATORUL DE IMPULSURI N DURAT .................................98

    2.6.1 Moduri de operare ...................................................98

  • a) Modul 0.......................................................................99 b) Modul 1.......................................................................99 c) Modul 2..................................................................... 100 d) Modul 3..................................................................... 100 2.6.2 Registrele speciale ale PWM.................................... 101 a) Numrtorul PTx ........................................................ 101 b) Registrul de perioad PPx ............................................ 101 c) Registrul de durat PWx .............................................. 102 d) Registrele de control PWMCON0 i PWMCON1 ................ 102 2.6.3 ntreruperile modulului PWM................................... 103

    2.7. CONVERTORUL ANALOG NUMERIC......................................... 103 2.7.1 Moduri de lucru..................................................... 103

    Conversii singulare ..................................................... 104 Conversii multiple ....................................................... 104 Ateptare semnal citire rezultat .................................... 105 Inserare canal............................................................ 105

    2.7.2 Timpii de conversie ............................................... 106 2.7.3 Controlul ntreruperilor ADC.................................... 107

    2.8. TIMERE/NUMRTOARE.................................................... 108 2.8.1 Blocul de timere GPT1............................................ 108 a) Timerul T3................................................................. 108

    Modul timer ............................................................... 108 Modul timer comandat ................................................ 109 Modul numrtor ........................................................ 110

    b) Timerele T2 i T4 ....................................................... 110 Concatenarea timerelor T2 i T4................................... 111 Rencrcarea timerului T3 ............................................ 111 Capturarea valorii timerului T3 ..................................... 112

    2.8.2 Blocul de timere GPT2............................................ 112 a) Timerul T6................................................................. 113

    Modul timer ............................................................... 113 Modul timer comandat ................................................ 114 Modul numrtor ........................................................ 114

    b) Timerul T5................................................................. 114 Concatenarea timerelor T5 i T6................................... 115 Rencrcarea timerului T6 ............................................ 115 Capturarea valorii timerului T5 ..................................... 115 Multiplicarea frecvenei ............................................... 116

    2.8.3 ntreruperile blocurilor de timere GPT1 i GPT2 ......... 116 2.9. COMPARATOARELE I REGISTRELE DE CAPTUR ........................ 117

    2.9.1 Timerele CAPCOM.................................................. 118 Modul timer ............................................................... 118 Modul numrtor ........................................................ 118

  • Modul rencrcare ....................................................... 119 2.9.2 Registrele captur i comparare .............................. 119 a) Modul captur ............................................................ 120 b) Modurile de comparare................................................ 120

    Modul de comparare 0 ................................................ 120 Modul de comparare 1 ................................................ 121 Modul de comparare 2 ................................................ 121 Modul de comparare 3 ................................................ 121 Modul de comparare cu registru dublu .......................... 121

    2.9.3 ntreruperile modulului CAPCOM.............................. 122 2.10. TIMERUL DE INIIALIZARE WATCHDOG ................................ 122 2.11. INTERFAA SERIAL ASINCRON/SINCRON............................. 123

    2.11.1 Modul asincron ..................................................... 125 2.11.2 Modul sincron ....................................................... 126 2.11.3 Generarea ratei de transmisie ................................. 127 2.11.4 Controlul ntreruperilor........................................... 128

    2.12. INTERFAA SERIAL SINCRON DE VITEZ .............................. 128 2.12.1 Operarea full-duplex .............................................. 131 2.12.2 Operarea half-duplex ............................................. 132 2.12.3 Viteza de transmisie .............................................. 133 2.12.4 Detectarea erorilor ................................................ 133 2.12.5 Controlul ntreruperilor SSC .................................... 134

    2.13. NCRCTORUL BOOTSTRAP ............................................... 134 2.13.1 Intrarea n modul BSL ............................................ 134 2.13.2 Procedura de lucru BSL .......................................... 135

    2.14. CONSUMUL REDUS DE ENERGIE ........................................... 136 2.14.1 Modul inactiv ........................................................ 136 2.14.2 Modul oprit........................................................... 136 2.14.3 Starea pinilor de ieire pe parcursul modurilor

    economice ............................................................ 137 2.15. SETUL DE INSTRUCIUNI .................................................. 137

    Instruciuni aritmetice ................................................. 138 Instruciuni logice ...................................................... 138 Comparri i control bucle ........................................... 138 Instruciuni booleene bii............................................. 138 Instruciuni deplasare i rotire ..................................... 139 Instruciuni normalizare .............................................. 139 Instruciuni mutare date.............................................. 139 Instruciuni stiva sistem .............................................. 139 Instruciuni salt.......................................................... 139 Instruciuni apel subrutine ........................................... 139 Instruciuni rentoarcere subrutine................................ 140 Instruciuni control sistem ........................................... 140

  • Instruciuni diverse..................................................... 140

    3. DEZVOLTAREA SISTEMELOR CU MICROCONTROLERE..............143

    3.1. SOFTWARE ................................................................... 143 3.1.1 Compilatorul C ...................................................... 144

    Tipuri de date ............................................................ 145 Spaiul de memorie..................................................... 146 Modelul de memorie ................................................... 147 Pointeri ..................................................................... 147 Bancuri de registre i mascarea registrelor .................... 148 ntreruperi ................................................................ 149 Transmiterea parametrilor ........................................... 150 Fiiere de configurare ................................................. 151

    3.1.2 Asamblorul ........................................................... 152 Operanzi i expresii .................................................... 152 Directive ................................................................... 154 Controlul asamblorului ................................................ 157

    3.1.3 Editorul de legturi ................................................ 158 3.1.4 Programe utilitare ................................................. 160

    Administratorul de biblioteci ........................................ 160 Convertorul fiiere obiect-hexazecimal .......................... 160

    3.1.5 Depanatoare......................................................... 161 3.1.6 Monitoare............................................................. 161

    3.2. SISTEME DE DEZVOLTARE.................................................. 162 3.2.1 Microcontrolerul 80C552......................................... 163 3.2.2 Microcontrolerul 80C167......................................... 165

    3.3. AFIAREA INFORMAIILOR................................................. 168 3.3.1 Afiarea pe tub catodic .......................................... 168 3.3.2 Afiarea pe display LCD.......................................... 172

    3.4. TASTATUR MATRICIAL ................................................... 177 3.4.1 Rutine pentru utilizarea tastaturii pe sistemele cu

    80C552 ................................................................ 178 3.4.2 Rutine pentru utilizarea tastaturii i display-ului LCD

    n sistemele cu 80C167 .......................................... 181 3.4.3 Funcii de citire i editare iruri de caractere ............ 185

    3.5. EXTINDEREA CAPACITILOR ARITMETICE............................... 190 3.5.1 Aritmetic BCD...................................................... 190 3.5.2 Creterea preciziei de reprezentare a numerelor n

    virgul fix i virgul flotant.................................. 192 3.6. FILTRE NUMERICE .......................................................... 198 3.7. CEAS DE TIMP REAL ........................................................ 205

    Registrul de control D ................................................. 209 Registrul de control E ................................................. 210 Registrul de control F.................................................. 210

  • 3.8. PERIFERICE I2C............................................................. 216 3.8.1 Ceas de timp real .................................................. 216

    Descrierea circuitului .................................................. 216 Ieire de ntrerupere INT............................................. 219 Oscilatorul ................................................................. 220 Iniializarea ............................................................... 220 Protocolul de legtur I2C ........................................... 221

    3.8.2 Convertoare A/D i D/A .......................................... 221 Conversia D/A ............................................................ 223 Conversia A/D ............................................................ 223 Oscilatorul ................................................................. 223

    3.8.3 Memorii E2ROM ..................................................... 223 Protecia la scriere...................................................... 224 Adresarea memoriei .................................................... 224 Operaia de scriere ..................................................... 225 Scrierea unui octet ..................................................... 225 Scrierea mai multor octei ........................................... 225 Scrierea paginat ....................................................... 225 Citirea din memorie .................................................... 226 Citirea de la adresa curent a unuia sau mai muli octei . 226 Citirea de la o adres oarecare a unuia sau mai muli octei ........................................................................ 227

    3.8.4 Extensii ieiri paralele ............................................ 228 3.8.5 Emularea unei interfee I2C .................................... 229

    3.9. TIMERE DE VITEZ MARE .................................................. 239 3.10. SINTEZ DE FRECVEN ................................................... 242 3.11. SISTEME PENTRU CONTROLUL POZIIEI.................................. 245

    4. ACCESORII PENTRU SISTEMELE CU MICROCONTROLERE........249

    4.1. SURSE DE ALIMENTARE .................................................... 249 4.1.1 Surse liniare ......................................................... 249 4.1.2 Surse n comutaie ................................................ 250

    4.2. INTERFEE SERIALE ........................................................ 251 4.2.1 Detectarea automat a vitezei de transmisie seriale ... 251 4.2.2 Implementarea unei transmisii seriale cu pachete

    CRC16 ................................................................. 254 4.2.3 Sistem de transmisie cu cureni purttori.................. 255 4.2.4 Interfaa CAN ....................................................... 256 a) Concepte de baz CAN ................................................ 257 b) Caracteristici generale................................................. 258 c) Tipuri de cadre .......................................................... 259 d) Prelucrarea erorilor..................................................... 262 e) Limitarea erorilor........................................................ 262 f) Module CAN din microcontrolere ................................... 264

  • Circuitul 80C592 ......................................................... 264 Registrul de control (CR) ............................................. 265 Registrul de comand (CMR) ........................................ 266 Registrul de stare (SR) ................................................ 268 Registrul de ntreruperi (IR)......................................... 268 Registrul cod de acceptare (ACR) ................................. 269 Registrul masc de acceptare (AMR) ............................. 269 Registrul 0 de sincronizare a magistralei (BTR0) ............. 269 Registrul 1 de sincronizare a magistralei (BTR1) ............. 270 Registrul de control a ieirii (OCR) ................................ 270 Bufferul de transmisie (DSCR1, DSCR0 i cmpurile de date) .................................................................... 271 Bufferul de recepie (DSCR1, DSCR0 i cmpurile de date) .................................................................... 272 Registrele speciale pentru interfaare cu unitatea central .................................................................... 272 Conectarea microcontrolerului 8xC592 la magistrala CAN . 272

    ANEXE ..........................................................................................276

    BIBLIOGRAFIE .............................................................................279

  • 1 _________________________________________Aplicaii cu microcontrolere de uz general

    Introducere

    Lucrarea de fa se adreseaz unui cerc larg de cititori interesai de problemele ridicate de implementarea, n viaa de zi cu zi, a unor dispozitive, aparate, sisteme care au n compunere elemente automate de coordonare, control, comand etc. Se presupune c cititorii sunt familiarizai cu termenii specifici utilizatorilor de microprocesoare, pentru a ctiga n concizie unele expresii nefiind explicate.

    Complexitatea sistemului poate fi extrem de variat, de exemplu, de la un filtru de cafea sau o main de splat, pn la un telefon mobil sau un automobil. Marele avantaj al microcontrolerelor fa de microcalculatoarele clasice, cu microprocesor, const n faptul c sistemul este astfel proiectat pentru a fi prietenos, aparatul inteligent fiind uor de manevrat i de ctre nespecialiti.

    Spre deosebire de calculatoare (sau computer n limba englez desemnnd calcule, lucrul cu numere), controlerul mai degrab lucreaz cu informaii despre sistemul controlat: care este starea unui motor electric, temperatura unui lichid etc., funcie de acestea i de algoritmul de lucru programat lund deciziile necesare. Deci, controlerele pot fi considerate calculatoare obinuite n care predomin interfeele ctre exterior.

    Istoria timpurie a calculatoarelor poate fi considerat ncepnd cu Charles Babbage, un inventator britanic, autorul mainii analitice n anul 1830. Ideea teoretic descria principii asemntoare cu ceea ce fac i calculatoarele din ziua de astzi dar, dezvoltarea tehnologic din secolul trecut nu a permis realizarea practic a mainii.

    O idee mai practic a avut-o americanul Hermann Hollerith care a patentat o main de calculat n anul 1889. Maina lui Hollerith lucra cu cartele perforate i a fost utilizat ani de zile n scopuri statistice. Compania lui Hollerith, denumit Tabulating Machine Company a fost absorbit n anul 1924 de alt firm, formnd mpreun vestita International Business Machines Corporation.

    Un pas esenial n progresul calculatoarelor l-a constituit introducerea algebrei booleene, o algebr care lucreaz numai cu dou cifre 0 i 1. Algebra dezvoltat de Boole a permis implementarea ulterioar a calculatoarelor electronice, sisteme uriae care conineau milioane de mici comutatoare care nu puteau avea dect dou stri: deschis (asociat de regul cifrei 0) i nchis (1). Comutatoarele sunt cunoscute astzi sub denumirea de bii. n calculatoarele moderne, grupul de 8 bii este un bloc fundamental i are numele de octet (n limba englez byte i prescurtat B).

    n Marea Britanie Alan Turing a pus bazele logicii simbolice n anul 1937 (articolul On Computable Number), printr-o analiz comparat cu activitatea mental uman. De asemenea, el a fost primul care a introdus conceptul de

  • Introducere _________________________________________________________________2

    algoritm, o metod de prelucrare a datelor stabilit de un operator uman, precum i automatul capabil s execute instruciunile algoritmului.

    Al doilea rzboi mondial a constituit un stimul puternic pentru dezvoltarea tehnicii de calcul. n Statele Unite, Mark Aiken a realizat MARK 1, un calculator format din 3304 comutatoare. Destinaia sa era, din pcate, strict militar: tabele de tragere pentru artilerie. Dezvoltarea teoretic adus de Turing, a permis unei echipe britanice realizarea unei maini automate bazate pe comutatoare cu tuburi electronice, main folosit pentru descifrarea mesajelor Enigma ale marinei militare germane. Din pcate, realizarea practic a unei maini abstracte universale Turing a euat n anul 1946

    Din punct de vedere istoric, primul calculator electronic universal din lume poate fi considerat ENIAC. Acesta a fost realizat de Statele Unite, coninea 17 468 tuburi electronice ocupnd o suprafa de 450 m2. Din punct de vedere al puterii de calcul al calculatoarelor actuale, ENIAC era mai puin performant dect un calculator de buzunar.

    Un salt tehnologic extraordinar a fost realizat de Bell Laboratories prin invenia tranzistorului, dispozitivul minune: mai rapid, mai mic i mai ieftin dect tubul electronic. Progresele microelectronicii au permis realizarea, n anul 1958, de ctre firma Texas Instrument, a primului circuit integrat, o reuniune de tranzistoare, diode, rezistene i condensatoare. Avntul tehnologic al microelectronicii, a fcut posibil realizarea primelor calculatoare universale iniial cu tranzistoare (generaia a II-a), ulterior cu circuite integrate (generaia a III-a).

    n anul 1969 firma Intel a primit o comand de circuite integrate pentru o structur necesar unui calculator. Structura nu prea a avut succes dar, ideea de a crea un calculator cu programul modificabil prin intermediul unei memorii externe, a permis ca n doi ani firma Intel s scoat pe pia primul microprocesor, Intel 4004. Acest prim procesor avea o memorie volatil (RAM) de 32 bii, o memorie nevolatil pentru programe (ROM) de 1024 bii, un registru de deplasare de 10 bii, avnd un set de 16 instruciuni. i urmtorul contract al firmei Intel necesar pentru realizarea unor terminale finalizat cu microprocesorul Intel 8008 nu a avut, iniial, succesul scontat. O politic de pia inteligent, realizat prin vnzarea de kituri compuse din microprocesor, memorii externe i circuite de suport a avut ns un succes deosebit: volumul livrrilor a atins 330 milioane dolari n 1979.

    Pn la sfritul anului 1975, pe pia se gseau deja 40 de tipuri diferite de microprocesoare. Situaia a dus la dezvoltarea unor circuite periferice i de suport specifice pentru fiecare firm, multe dintre ele fiind gndite chiar nainte de lansarea microprocesorului.

    Integrarea n acelai integrat a circuitelor periferice a condus la realizarea microcalculatorului pe o singur structur microcontrolerul, Primul microcontroler, Intel 8048 (1971) avea urmtoarea structur: unitate

  • 3 _________________________________________Aplicaii cu microcontrolere de uz general

    central, memorii RAM i ROM, circuite de intrare-ieire. Nici acest circuit nu a avut un mare succes. Abia n anul 1981, o dat cu noul model IBM PC, microcontrolerul 8048 i-a dovedit versatilitatea, fiind folosit pentru controlul tastaturii acestor tipuri de calculatoare.

    Succesul deosebit al acestui microcontroler a condus la dezvoltarea continu a acestor dispozitive: au nceput s fie integrate periferice pentru comanda unor dispozitive de afiare, convertoare analog/numerice (ADC) i numeric/analogice (DAC), numrtoare etc.

    Astfel, unul din cele mai utilizate microcontrolere de 8 bii a fost Intel 8051, bazat pe o structur de 8048 la care se adugau i o interfa serial asincron, dou numrtoare de 16 bii, avnd de asemenea, capabiliti sporite pentru memorii.

    Avnd exemplul firmei Intel, majoritatea celorlali productori au nceput s produc circuite asemntoare, unele dintre ele fiind nevoite s cumpere licena de producie. Astfel, n anul 1991 Philips a achiziionat licena, deja anticului 8051, producnd seria de microcontrolere 8xC552. Acestea aveau un nucleu 8051, la care se mai aduga un convertor analog/numeric cu 16 intrri, un numrtor suplimentar cu registre de captur i comparare, un numrtor pentru iniializare (watchdog), dou ieiri de impulsuri modulate n durat, o interfa serial sincron pentru standardul I2C. De asemenea, 8xC552 coninea o memorie RAM intern de 256 octei, 83C552 o memorie PROM de 8 kB iar 87C552 o memorie EPROM de 8 kB.

    Succesul procesoarelor de 8 bii i nevoia de cretere a capacitii de calcul, a vitezei de lucru sau a mrimii memoriei, a impus dezvoltarea, de ctre marele firme, a unor circuite, din ce n ce mai performante: n anul 1974 apare primul procesor de 16 bii PACE (Processing and Control Circuit), urmat imediat de mai cunoscutele Intel 8086, Motorola 68000 sau Zilog Z8000. Utilizarea acestor procesoare n microcalculatoarele dezvoltate de Apple sau IBM au obligat la trecerea n faza urmtoare: microprocesoarele de 32 de bii (familia Intel iAPX432 I 80x86 sau Motorola M 680x0).

    Limitrile tehnologice au impus o limit n dezvoltarea unor alte procesoare, preferndu-se o reorganizare a logicii procesului: n loc de a dezvolta procesoare complexe, cu mii de instruciuni s-a simplificat la maxim structura intern a circuitului, reducnd drastic setul de instruciuni. Avantajul este evident: n locul unui procesor cu multe instruciuni (CISC - Complex Instruction Set Computing) la care se consum mult timp pentru fiecare instruciune, un procesor cu puine instruciuni (RISC Reduced Instruction Set Computing) va executa extrem de rapid orice instruciune. Simplificarea structurii interne prin micorarea decodificatorului de instruciuni, a permis integrarea unor module noi, cum ar fi procesoarele de virgul mobil, creterea vitezei de execuie i, nu n ultimul rnd, mrirea magistralelor interne sau externe pn la 128 de bii. Realizri deosebite n domeniul procesoarelor RISC constituie familiile SPARC (Sun Microsystems), PowerPC

  • Introducere _________________________________________________________________4

    (Motorola), MIPS (Silicon Graphics), Alpha (fost Digital Equipment Corporation, actualmente proprietatea Compaq) etc. Dominarea procesoarelor RISC este contrazis de o singur excepie CISC notabil: familia Intel Pentium.

    Procesoarele RISC au permis realizarea unui mainframe impresionant: calculatorul Cray 3D, realizat de firma Cray Research n anul 1991 are n compunere 256 procesoare RISC de 64 bii, o frecven a ceasului de 300 MHz i un hard-disk de 430 TB (430 000 000 MB).

    Controlerele au urmat ndeaproape evoluia procesoarelor: concomitent cu circuitele pe 16 bii au aprut controlere similare (de exemplu Intel 80186); filozofia RISC a fost implementat i n universul controlerelor prin circuitele Siemens 80C16x sau Motorola 68332.

    n ncheiere, trebuie amintit de circuitele DSP (Digital Signal Processor) o sintez a procesoarelor standard i a controlerelor. Aceste circuite, special proiectate pentru prelucrarea semnalelor n timp real, beneficiaz de o unitate de calcul n virgul fix i flotant extrem de performant, au integrate circuitele principale de interfa (memorii, convertoare analog/numerice i numeric/analogice ultrarapide, comunicaii seriale sincrone i asincrone, numrtoare etc.), fiind capabile, de exemplu, s efectueze calculul pentru o transformat Fourier rapid n 1024 de puncte n mai puin de 1 s.

    Astfel, ultima creaie a firmei Advanced Micro Device, procesorul Athlon, are un nucleu DSP care execut instruciuni specifice pentru: modem, Dolby stereo, fiiere MP3 i software ADSL.

  • 5 _________________________________________Aplicaii cu microcontrolere de uz general

    1. Familia de microcontrolere 8xC552

    Familia 8xC552 este reprezentat de o serie de circuite de 8 bii de nalt performan destinate utilizrii n aplicaii n timp real, cum ar fi automatizri industriale, controlul unor sisteme automate, aparate de msur i control etc.

    Aceast familie constituie o perfecionare a controlerului 8051, n sensul adugrii de noi periferice, creterii vitezei de lucru sau a integrrii de faciliti suplimentare. Setul de instruciuni al 8xC552 este compatibil cu cel al lui 8051, n sensul c programele pentru 8051 pot rula i pe 8xC552.

    Funcie de tipul memoriei ROM interne, cei trei membri ai familiei 8xC552 sunt: 87C552, cu memorie EPROM de 8 kB; 83C552, cu memorie PROM de 8 kB; 80C552, fr memorie ROM intern.

    n lucrare se va folosi n continuare termenul generic 8xC552 pentru toi membrii familiei, cu excepia indicat circuitele avnd structura i instruciunile identice.

    O modificare a familiei 8xC552 fa de modelul iniial 8051 const n adugarea a dou moduri cu consum redus de energie selectabile prin program: inactiv (IDLE), care las n funciune numai componentele existente i n

    8051 (numrtoarele 0 i 1, memoria RAM, interfaa serial asincron); oprit (POWER-DOWN), care blocheaz oscilatorul circuitului, lsnd activ

    numai memoria RAM. Descrierea funcional a pinilor circuitului este prezentat n figura 1.1. Controlerul 8xC552 conine:

    unitate central de 8 bii; 256 octei de memorie RAM, suprapui cu 128 octei de memorie alocai

    registrelor speciale; controler de ntreruperi; ase porturi de intrri/ieiri digitale; dou timere/numrtoare de 16 bii; un numrtor de 16 bii cu registre de captur i comparaie; un timer pentru deblocarea sistemului (watchdog); un convertor analog/numeric de 10 bii cu 8 intrri; dou ieiri de impulsuri modulate n durat (utilizabile pentru convertoare

    numeric/analogice); dou interfee seriale (una asincron, compatibil RS-232, cealalt

    sincron, compatibil I2C). Structura intern a controlerului 8xC552 este prezentat n figuraFigura

    1.2.

  • Familia de microcontrolere 80C16x ______________________________________________6 Funcii alternative

    35 5734 56

    5549 5447 5348 52

    514 505

    1660 1761 1859 1958 20

    213 22

    23168 3967 4066 4165 4264 4363 4462 45

    4678 249 2510 2611 2712 2813 2914 30

    31156

    01234567

    01234567

    01234567

    01234567

    Port 0

    AD0AD1AD2AD3AD4AD5AD6AD7

    CT0ICT1ICT2ICT3IT2RT2SCLSCA

    A8A9A10A11A12A13A14A15

    RXD/DATATXD/CLOCKINT0

    INT1

    T0T1WR

    RD

    Magistraldate iadrese

    Port 1

    Port 2Magistral

    date iadrese

    Port 3

    XTAL1XTAL2

    EAPSEN

    ALE

    PWM0

    PWM1

    AVSSAVDD

    AVREF+AVREF-

    STADC

    01234567

    01234567

    RSTEW

    Port 5

    Port 6

    Funcii alternative

    ADC0ADC1ADC2ADC3ADC4ADC5ADC6ADC7

    CMSR0CMSR1CMSR2CMSR3CMSR4CMSR5

    CMT0CMT1

    Figura 1.1. Microcontrolerul 8xC552

    1.1. Unitatea central i registrele sale

    Funciile de baz ale unitii centrale sunt: aducerea instruciunii din memoria program i decodificarea ei, executarea operaiilor aritmetice i logice, memorarea rezultatelor anterioare, controlul perifericelor etc.

    Sincronizarea funcionrii unitii centrale i a ntregului sistem de periferice este asigurat de un oscilator stabilizat cu un cristal de cuar sau un rezonator ceramic. Controlerul poate lucra i cu oscilator extern, situaie n care semnalul este aplicat la pinul XTAL1. Pentru reducerea consumului de energie, un bit al registrului special PCON poate dezactiva oscilatorul

    circuitului, blocnd funcionarea tuturor modulelor (modul POWER-DOWN);

    totui, n acest mod este conservat coninutul memoriei RAM.

  • 7 _________________________________________Aplicaii cu microcontrolere de uz general T0 T1 INT0 INT1 PWM0 PWM1 STADC ADC0-7 SCA SCL

    ProcesorTimereT0 i T1

    PorturiI/O

    P0-P3

    Interfaserial

    asincron

    Memorieprogram

    8k8

    Memoriedate

    2568

    Modulatorn

    impulsuri

    Convertoranalog

    numeric

    Interfaserial

    sincron

    Nucleu8051

    PorturiI/O

    P4-P5

    5 registrecaptur

    TimerT2

    3 registrecomparare

    Timer T3Watchdog

    P0 P3 TX RX P5 P4 CT0I-CT3I T2 RT2 CMSR0-CMSR5 RST EWCMT0,CMT1

    Magistralintern

    1616

    XTAL1

    XTAL2

    EA

    ALE

    PSEN

    WR

    RD

    AD0-7

    A8-15

    Figura 1.2. Structura intern a microcontrolerului 83C552

    Un ciclu main al unitii centrale este format din 12 oscilaii complete, mprite n 6 stri (S1-S6), fiecare stare fiind format din dou faze (P1 i P2). Cele 12 oscilaii sunt astfel codificate de la S1P1 la S6P2. Cele mai multe din instruciunile controlerului sunt executate ntr-un ciclu main (cu un oscilator de 12 MHz, un ciclu main reprezint 1 s), o alt parte sunt executate n dou cicluri main (2 s) iar nmulirea i mprirea n 4s.

    Unitatea central are un contor program (PC) de 16 bii, cu capacitate de

    adresare de 64 kB pentru memoria de program. Memoria de date, cu o capacitate maxim tot de 64 kB, este adresabil n dou moduri, prin intermediul unor registre interne: R0 sau R1, respectiv DPTR.

    Unitatea central controleaz urmtoarele blocuri de memorie: pn la 64 kB memorie program (ROM); pn la 64 kB memorie date (RAM); 256 octei memorie RAM intern, suprapui cu 128 octei pentru registrele

    speciale. Selecia modulului de memorie program, intern sau extern, este

    asigurat de semnalul EA: dac acesta are valoarea 1 LOGIC este selectat

    memoria program intern (numai la 83C552); n cazul 0 LOGIC sunt aduse instruciuni numai din memoria extern, de la 0000h la 1FFFh. De menionat faptul c zona de memorie program de la 0000h la 0002h este rezervat pentru adresa programului de iniializare, n timp ce locaiile de la 0003h la 0073h sunt folosite pentru adresele rutinelor de tratare a ntreruperilor.

    Diferenierea tipului de memorie adresat (program sau date) este asigurat de starea semnalului PSEN. Cu excepia acestuia, n situaia lucrului

    cu memorie program extern, cnd magistrala de date i adrese este multiplexat pe P0 i P2, separarea magistralei inferioare de adrese este asigurat de semnalul ALE.

  • Familia de microcontrolere 80C16x ______________________________________________8

    Memoria de date interne este mprit n trei seciuni: un bloc de 128 octei la adrese mici, un bloc de 128 octei la adrese mari i o zon de 128 de octei destinat registrelor speciale.

    Primul bloc de memorie (de la 00h la 07Fh) este adresabil direct sau indirect. Zona de memorie de la 00h la 1Fh conine patru bancuri de registre, fiecare format din 8 registre, de la R0 la R7; la un moment dat, poate fi selectat un singur banc de registre prin intermediul a doi bii definii n registrul special de stare (PSW). Urmtoarele 16 locaii, de la 20h la 2Fh, conin 128 de bii adresabili direct. Aceast zon este folosit, de regul, pentru operaii booleene sau pentru indicatoare de program. Zona de memorie de la 30h la 7Fh este utilizabil pentru variabile.

    Locaiile de la 80h la FFh sunt mprite ntre memoria de date i registrele speciale iar adresarea lor poate fi indirect (pentru memoria date) sau direct (pentru registrele speciale).

    Controlerele din familia 8xC552 are posibilitatea s adreseze o memorie de date externe cu o capacitate de pn la 64 kB. n acest scop sunt utilizate semnalele PSEN (selectare memorie date sau program), ALE (magistrala de

    adrese A0-A7 activ pe portul P0), RD i WR (citire, respectiv scriere date). Cu excepia celor 256 de octei de memorie intern, unitatea central

    mai dispune de cteva registre importante: a) acumulatorul A;

    b) registrul B;

    c) pointerul stivei SP;

    d) registrul de stare PSW;

    e) registrului pointer la memoria de date DPTR.

    a) Acumulatorul

    Acest registru este direct adresabil i este referit mnemonic ca A. Este

    adresabil la nivel de bit. Este registrul principal de lucru al unitii aritmetice i logice (ALU). De asemenea, prin intermediul su se pot face schimburi de date cu memoria extern, salturi relative la coninutul su etc.

    b) Registrul B

    Este un registru adresabil la nivel de bit. Este destinat ca registru auxiliar pentru operaiile de nmulire i mprire dar poate fi folosit i ca registru general.

    c) Pointerul stivei

    Acest registru de 8 bii este folosit pentru poziionarea stivei n memoria intern. Mrimea stivei este de maxim 256 octei i este limitat de memoria RAM intern disponibil.

  • 9 _________________________________________Aplicaii cu microcontrolere de uz general

    d) Registrul de stare

    Acest registru de 8 bii conine informaii referitoare la starea programului. Structura sa este prezentat n tabelul 1.1.

    Tabelul 1.1 PSW (D0h) CY AC F0 RS1 RS0 OV F1 PCY Indicator transport (carry). AC Indicator transport auxiliar (pentru operaiile BCD). F0 Indicator utilizator 0 (de uz general).

    Bii selectare banc registre de lucru: RS1 RS0 Banc registre selectat

    RS1RS0

    0 0 1 1

    0 1 0 1

    Banc 0 (00h 07h) Banc 1 (08h 0Fh) Banc 2 (10h 17h) Banc 3 (18h 1Fh)

    OV Indicator depire. F1 Indicator utilizator (de uz general). P Indicator paritate acumulator.

    e) Registrul pointer la memoria de date

    Registrul pointer la memoria de date (DPTR) este un registru de 16 bii

    destinat lucrului cu memoria extern. Este format dintr-un octet inferior (DPL), respectiv unul superior (DPH).

    DPTR permite accesul indirect la memoria de date extern sau la

    constante din memoria program. De asemenea, el poate fi utilizat ca un registru de 16 bii sau ca dou registre de 8 bii independente.

    Trebuie amintit c memoria de date extern poate transfera indirect un octet n acumulator nu numai folosind adresa locaiei din DPTR (situaie n

    care capacitatea de adresare este maxim 64 kB) dar poate fi adresat i pe 8 bii, prin intermediul registrelor R0 sau R1 (situaie n care capacitatea de adresare este de 256 octei). Mrirea spaiului de adresare prin intermediul R0 sau R1 se poate face utiliznd pentru adresarea memoriei externe bii din porturile de intrare-ieire neutilizai n alte scopuri.

    1.2. Registrele speciale SFR

    Registrele speciale, poziionate n memoria intern de date n domeniul 80h-FFh, conin toate registrele sistemului, cu excepia contorului program (PC) i a celor 8 bancuri de registre. SFR sunt destinate controlului modulelor

    interne, strii controlerului, setrii modurilor economice de lucru etc. Cele 56 de registre speciale ale familiei 8xC552 sunt prezentate n tabelul 1.2 clasificate dup adres. Pentru o identificare mai rapid a registrelor, tabelul 1.3 le prezint clasificate dup funciuni.

    Detaliile referitoare la seturile de registre speciale care controleaz modulele interne ale familiei 8xC552 sunt prezentate n subcapitolele destinate fiecrui modul.

  • Familia de microcontrolere 80C16x _____________________________________________10 Tabelul 1.2

    Simbol Descriere Adres Adres bit, funcie alternativ port T3 Timer 3 FFh PWMP Prescaler PWM FEh PWM1 Registru PWM 1 FDh PWM0 Registru PWM 0 FCh IP1 Registru prioriti 1 F8h PT2 PCM2 PCM1 PCM0 PCT3 PCT2 PCT1 PCT0B Registru B F0h RTE Comutare/validare comp. T2 EFh TP47 TP46 RP45 RP44 RP43 RP42 RP41 RP40STE Setare registre comp. T2 EEh TG47 TG46 SP45 SP44 SP43 SP42 SP41 SP40TMH2 Registru T2 EDh TML2 Registru T2 ECh CTCON Control captur T2 EBh CTN3 CTP3 CTN2 CTP2 CTN1 CTP1 CTN0 CTP0TM2CON Registru control T2 EAh T2IS1T2ISO T2ER T2B0 T2P1 T2P0 T2MS1 T2MS0IEN1 Validare ntreruperi 1 E8h ET2 ECM2 ECM1 ECM0 ECT3 ECT2 ECT1 ECT0ACC Acumulator E0h S1ADR Registru adres slave I2C DBh Adres slave GCS1DAT Registru date I2C DAh S1STA Registru stare I2C D9h SC4 SC3 SC2 SC1 SC0 0 0 0S1CON Registru control I2C D8h EN51 STA ST0 SI AA CR1 CR0PSW Registru stare program D0h CY AC F0 RS1 RS0 OV F1 PCTH3 Registru captur 3 CFh CTH2 Registru captur 2 CEh CTH1 Registru captur 1 CDh CTH0 Registru captur 0 CCh CMH2 Registru comparare 2 CBh CMH1 Registru comparare 1 CAh CMH0 Registru comparare 0 C9h TM2IR Registru ntreruperi T2 C8h T2OV CMI2 CMI1 CMI0 CTI3 CTI2 CTI1 CTI0ADCH Registru convertor A/D C6h ADCON Registru control ADC C5h ADC.1 ADC.0 ADEX ADCI ADCS AADR2 AADR1 AADR0P5 Port 5 C4h ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0P4 Port 4 C0h CMT1 CMT0 CMSR5 CMSR4 CMSR3 CMSR2 CMSR1 CMSR0IP0 Registru prioriti 0 B8h PAD PS1 PS0 PT1 PX1 PT0 PX0P3 Port 3 B0h RD WR T1 T0 INT1 INT0 TXD RXDCTL3 Registru captur 3 AFh CTL2 Registru captur 2 AEh CTL1 Registru captur 1 ADh CTL0 Registru captur 0 ACh CML2 Registru comparare 2 ABh CML1 Registru comparare 1 AAh CML0 Registru comparare 0 A9h IEN0 Validare ntreruperi 0 A8h EA EAD ES1 ES0 ET1 EX1 ET0 EX0P2 Port 2 A0h P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0S0BUF Registru buffer UART 99h S0CON Registru control UART 98h SM0 SM1 SM2 REN TB8 RB8 T1 R1P1 Port 1 90h SDA SCL RT2 T2 CT3I CT2I CT1I CT01TH1 Registru T1 8Dh TH0 Registru T0 8Ch TL1 Registru T1 8Bh TL0 Registru T0 8Ah TMOD Registru mod T0 i T1 89h GATE C/T M1 M0 GATE C/T M1 M0TCON Registru control T0 i T1 88h TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0PCON Registru control consum 87h SMOD WLE GF1 GF0 PD IDLDPH Registru pointer date 83h DPL Registru pointer dat 82h SP Indicator stiv 81h P0 Port 0 80h P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0

    OBSERVAIE: caracterele italice indic registre numai citire.

  • 11 ________________________________________Aplicaii cu microcontrolere de uz general Tabelul 1.3

    Registre aritmetice Acumulator, registru B, registru stare program (PSW)

    Porturi Port0 (P0), Port1 (P1), Port2 (P2), Port3 (P3), Port4 (P4), Port5 (P5)

    Timere/Numrtoare Timer T0 (TL0 i TH0), timer T1 (TL1 i TH1), registru mod T0 i T1 (TMOD), registru control T0 i T1 (TCON), timer T2 (TML2 i TMH2), timer T3, registru control T2 (TM2CON)

    Indicatori Indicator stiv (SP), pointer date (DPH i DPL)

    Modulatorul de impulsuri n durat Prescaler PWM, registru PWM0, registru PWM1

    Sistemul de ntreruperi Registru prioriti 0 (IP0), registru prioriti 1(IP1), validare ntreruperi 0 (IEN0), validare ntreruperi 1 (IEN1)

    Logic captur i comparare Control captur T2 (CTCON), registru ntreruperi T2 (TM2IR), captur 0 (CTL0 i CTH0), captur 1 (CTL1 i CTH1), captur 2 (CTL2 i CTH2), captur 3 (CTL3 i CTH3), comparare 0 (CML0 i CMH0), comparare 1 (CML1 i CMH1), comparare 2 (CML2 i CMH2), comutare/validare registre comparare T2 (RTE), setare registre comparare T2 (STE)

    Convertorul analog/numeric Registru convertor A/D (ADCH), control ADC(ADCON)

    Control consum energie Registru control consum (PCON)

    Interfee seriale Registru control UART (S0CON), buffer UART (S0BUF), registru control I2C (S1CON), date I2C (S1DAT), registru stare I2C (S1STA), adres slave I2C (S1ADR)

    1.3. Setul de instruciuni

    Setul de instruciuni al familiei 8xC552 este o modernizare a predecesorului su, 8051. Sunt introduse instruciuni suplimentare pentru controlul modulelor nou adugate, precum i cteva instruciuni noi: scdere cu mprumut, comparare, nmulire i mprire.

    Instruciunile controlerului acioneaz la nivel de bit, 4 bii, 8 bii sau 16 bii. Fa de circuitul originar, 8051, modurile de adresare au fost diversificate, existnd acum 5 tipuri: a) adresare la registre; b) adresare direct; c) adresare indirect; d) adresare imediat; e) adresare cu registru de baz i index.

    Adresarea registrelor permite accesul la cele opt registre R0-R7 selectate de doi bii (RS0 i RS1) din registrul PSW. Accesul la locaiile respective de memorie (00h-1Fh) se poate face ns i prin adresare direct, bancul de registre situndu-se n zona 00h-7Fh care este adresabil n mod direct. n zona registrelor speciale, registrele care controleaz modulele interne sunt de asemenea adresabile direct.

    n cadrul memoriei interne exist dou blocuri de 16 octei care sunt adresabile direct la nivel de bit: 128 de bii pot fi adresai direct n zona (20h-2Fh), ceilali 128 de bii gsindu-se la adresele 80h-FFh care sunt divizibile cu opt.

    Adresarea indirect este folosit pentru accesul zonei de memorie de la 80h la FFh care nu este adresat ca SFR, precum i pentru memoria extern

    de date. Pentru memoria intern adresarea este fcut prin intermediul

  • Familia de microcontrolere 80C16x _____________________________________________12

    registrelor R0 sau R1. Memoria extern este adresat fie prin registrele R0 i R1 (caz n care blocul maxim de memorie este de 256 octei), fie prin registrul DPTR (caz n care capacitatea de adresare este de 64 kB).

    Adresarea imediat este folosit pentru ncrcarea de constante numerice ca parte a instruciunii din memoria program.

    Adresarea cu registru de baz i index este folosit pentru lucrul cu tabele de conversie, tabele de salturi etc. Pentru aceasta este folosit ca registru de baz DPTR sau PC, registrul index fiind acumulatorul.

    Instruciunile familiei 8xC552 sunt optimizate att din punct de vedere al lungimii codului (49 de instruciuni pe un octet, 45 pe doi octei i 17 pe trei octei), ct i al timpului de execuie (64 de instruciuni sunt executate ntr-un ciclu main, 45 n dou cicluri main i dou n 4 cicluri main).

    Cele 111 instruciuni se pot clasifica n patru grupe funcionale: a) transfer de date; b) instruciuni aritmetice; c) instruciuni logice; d) controlul programului.

    a) Transferul de date

    Operaiunile de transfer de date sunt mprite n trei clase: de uz general; specifice acumulatorului; adresare imediat pe 16 bii.

    Transferul de date de uz general const n trei tipuri de operaii: MOV realizeaz transferul unui bit sau octet de la operandul surs la

    operandul destinaie. Combinnd operanzii i modurile de adresare rezult 57 de instruciuni diferite.

    PUSH incrementeaz registrul SP i apoi transfer octetul desemnat de

    operandul surs n memoria adresat de SP.

    POP transfer octetul desemnat n operandul surs de la locaia adresat

    de SP i apoi decrementeaz registrul SP.

    Operaiile specifice acumulatorului sunt: XCH schimb operandul surs cu acumulatorul.

    XCHD schimb 4 bii ai operandul surs cu 4 bii ai acumulatorului.

    MOVX realizeaz transferul unui octet ntre memoria extern i acumulator.

    Adresa extern este specificat de R0 i R1 sau DPTR. MOVC realizeaz transferul unui octet ntre memoria program i

    acumulator. Adresarea este cu registru de baz (PC sau DPTR) i index

    (A).

    Adresarea imediat pe 16 bii semnific ncrcarea registrului DPTR cu o

    valoare pe doi octei.

  • 13 ________________________________________Aplicaii cu microcontrolere de uz general

    b) Instruciuni aritmetice

    Familia 8xC552 dispune de patru operaii aritmetice de baz. Indicatorul depire (OV) poate fi folosit pentru operaii de adunare i scdere pentru

    numere n cod BCD cu semn sau fr semn; de asemenea, pentru numerele BCD exist o instruciune pentru corecia acumulatorului.

    Cu excepia indicatorului OV mai exist nc trei indicatori care reflect

    rezultatul operaiei: C (transport) setat dac n urma operaiei rezult o depire a

    acumulatorului; AC (transport auxiliar) setat dac rezult un transport ntre biii 3 i 4 ai

    acumulatorului; P (paritate) setat dac suma modulo 2 a acumulatorului este 1.

    Cele patru instruciuni aritmetice sunt: Adunare: INC adun 1 la operandul surs. Rezultatul este returnat n operand.

    ADD adun acumulatorul cu operandul surs. Rezultatul este returnat

    n acumulator. ADDC - adun acumulatorul cu operandul surs i bitul C. Rezultatul este

    returnat n acumulator. DA realizeaz o corecie a adunrii n situaia lucrului cu numere

    codificate BCD. Scdere: DEC scade 1 din operandul surs. Rezultatul este returnat n operand.

    SUBB scade din acumulator operandul surs i bitul C. Rezultatul este

    returnat n acumulator. nmulire: MUL realizeaz o nmulire fr semn ntre registrele A i B. Rezultatul

    este returnat n registrele A (octetul mai puin semnificativ) i B (octetul

    mai semnificativ). mprire: DIV realizeaz o mprire fr semn ntre registrele A i B. Ctul

    rezultatului este pstrat n registrul A iar restul mpririi n B.

    c) Instruciuni logice

    Arhitectura familiei 8xC552 care execut operaii logice poate fi considerat un procesor boolean de sine stttor. Astfel acesta dispune de instruciuni proprii, acumulator (bitul C din PSW), execut instruciuni pe un

    bit, 4 bii sau un octet i poate adresa direct locaii de memorie sau porturile de intrare-ieire.

    Instruciunile logice sunt: CLR terge coninutul acumulatorului sau al altui registru adresat direct.

    SETB seteaz bitul C sau alt bit adresat direct.

  • Familia de microcontrolere 80C16x _____________________________________________14

    CPL complementeaz (n complement fa de 1) acumulatorul sau orice

    bit adresabil direct. RL rotete la stnga coninutul acumulatorului. Este echivalent cu o

    nmulire cu 2. RR rotete la dreapta coninutul acumulatorului. Este echivalent cu o

    mprire cu 2. RLC rotete la stnga coninutul acumulatorului prin intermediul bitului C

    care devine egal cu ultimul bit deplasat. RRC rotete la dreapta coninutul acumulatorului prin intermediul bitului

    C care devine egal cu ultimul bit deplasat.

    SWAP rotete la stnga de 4 ori coninutul acumulatorului. Este echivalent

    cu o schimbare a biilor 0-3 cu 4-7. ANL execut o operaie I ntre doi operanzi. Rezultatul este returnat n

    primul operand. ORL execut o operaie SAU ntre doi operanzi. Rezultatul este returnat

    n primul operand. XRL execut o operaie SAU exclusiv ntre doi operanzi. Rezultatul este

    returnat n primul operand.

    d) Controlul programului.

    Instruciunile pentru controlul programului determin, uneori concomitent cu ndeplinirea unei condiii, executarea nesecvenial a instruciunilor din program.

    Exist trei clase de astfel de instruciuni: apel necondiionat la subrutin, ntoarcere din subrutin i salt; salturi condiionale; revenire din ntrerupere. Apeluri i salturi necondiionate: ACALL memoreaz urmtoarea adres n stiv, incrementeaz SP cu 2

    i apoi transfer controlul adresei de salt; ACALL poate fi utilizat pentru

    apeluri ntr-o pagin de memorie de 2 kB (locaia de salt este adresat pe 11 bii).

    LCALL memoreaz urmtoarea adres n stiv, incrementeaz SP cu 2

    i apoi transfer controlul adresei de salt; LCALL poate fi utilizat pentru

    apeluri ntr-o pagin de memorie de 64 kB. AJMP execut un salt la adresa specificat; AJMP poate fi utilizat

    pentru salturi ntr-o pagin de memorie de 2 kB (locaia de salt este adresat pe 11 bii).

    LJMP execut un salt la adresa specificat; LJMP poate fi utilizat

    pentru apeluri ntr-o pagin de memorie de 64 kB. SJMP execut un salt la adresa specificat; SJMP poate fi utilizat

    pentru apeluri ntr-o pagin de memorie de 256 octei. SJMP este un

    salt relativ fa de adresa de pornire n domeniul (-128+127).

  • 15 ________________________________________Aplicaii cu microcontrolere de uz general

    JMP execut un salt relativ la coninutul registrului DPTR, ca

    deplasament folosind valoarea din acumulator. RET transfer controlul adresei de salt salvate n stiv de o

    instruciune CALL anterioar i decrementeaz SP cu 2.

    Salturi condiionate: JZ execut salt dac acumulatorul este zero. Saltul este relativ

    fa de adresa curent. JNZ execut salt dac acumulatorul este diferit de zero. Saltul este

    relativ fa de adresa curent. JC execut salt dac bitul C este 1. Saltul este relativ fa de

    adresa curent. JNC execut salt dac bitul C este 0. Saltul este relativ fa de

    adresa curent. JB execut salt dac bitul operandului este 1. Saltul este relativ

    fa de adresa curent. JNB execut salt dac bitul operandului este 0. Saltul este relativ

    fa de adresa curent. CJNE compar primul operand cu al doilea i execut salt dac nu

    sunt egali. DJNZ decrementeaz operandul surs i execut salt dac rezultatul

    este diferit de zero. Revenire din ntrerupere: RETI transfer controlul ntr-o manier asemntoare cu RET, cu

    deosebirea c aceast instruciune valideaz ntreruperile pentru nivelul curent de prioriti.

    1.4. Porturile de intrare-ieire

    Controlerul 80C552 are 6 porturi de 8 bii pentru intrri/ieiri digitale. Fiecare port const ntr-un registru (registrele speciale P0-P5), un amplificator tampon de intrare (buffer de intrare) i un buffer de ieire (numai porturile P0 i P4). Porturile P0-P3 sunt identice cu cele ale lui 8051, cu excepia funciilor adiionale ale portului P1 (liniile P1.6 i P1.7 pot fi setate ca linii de comunicaie pentru interfaa serial sincron I2C; acest lucru implic un buffer de ieire de tip dren n gol) i a porturilor suplimentare P4 i P5: portul P4 are o funcionalitate asemntoare cu a porturilor P0-P3; portul P5 poate fi utilizat numai ca port de intrare.

    Figura 1.3 arat structura funcional a porturilor de intrare-ieire a circuitului 80C552. Un bit al registrului portului corespunde unui bit din registrul special al portului i const ntr-un bistabil D.

    Pentru porturile P0-P4 fiecare linie poate fi configurat ca linie de intrare sau de ieire. n situaia configurrii ca linie de intrare, amplificatorul de ieire trebuie blocat, blocare realizat prin setarea portului. Aceast

  • Familia de microcontrolere 80C16x _____________________________________________16

    procedur nu trebuie aplicat dect dac portul a fost folosit ca port de ieire, ntruct iniial, dup RESET, toate registrele porturilor P0-P4 sunt ncrcate cu FFh.

    Adres/Date VDD Citire Control Citire VDD

    Bus Bus

    Scriere Scriere Pin citire Pin citire Funcie alternativ Citire Citire Control VDD Funcie alternativ Adres

    Bus X=6;7 Bus

    Scriere Scriere Pin citire Pin citire Funcie alternativ Citire VDD Citire Setat de funcia alternativ Funcie alternativ VDD

    Bus Bus

    Scriere Scriere Pin citire Pin citire ters de funcia alternativ Funcie alternativ Bus Pin citire Spre ADC

    D QRegistru

    P0.XCK Q

    PinP0.X D Q

    RegistruP1.X

    CK Q

    Pin P1.X

    MUX

    MUX

    D QRegistru

    P1.XCK Q

    Pin P1.X

    D QRegistru

    P2.XCK Q

    Pin P2.X

    D QRegistru

    P3.XCK Q

    Pin P3.X

    D QRegistru

    P4.XCK Q

    Pin P4.X

    Pin P5.X

    Figura 1.3. Porturile de intrare-ieire

    Portul P0, n situaia controlerului 80C552, este folosit numai ca magistral multiplexat de adrese (octetul inferior) i date.

    Portul P2 poate fi utilizat ca octet superior pentru adresarea memoriei externe pe 16 bii. Dac este folosit adresarea pe 8 bii, este implicat numai portul P0 i atunci P2 devine port de uz general.

    Portul P5 este port numai de intrare i poate utiliza liniile lsate libere de convertorul analog-numeric.

    Amplificatoarele de ieire ale porturilor P2, P3, P4 i P1.0-P1.5 sunt capabile s conduc 4 intrri compatibile LSTTL. Folosit ca port de ieire, P0 are o capabilitate de 8 intrri LSTTL, dar necesit rezistene externe deoarece ieirile sunt cu dren n gol.

  • 17 ________________________________________Aplicaii cu microcontrolere de uz general

    Citirea porturilor, aa cum se observ i din figura 1.3. poate fi fcut fie citind direct pinul, fie citind bistabilul portului respectiv. Selectarea modului de citire este fcut automat de unitatea central, funcie de instruciune.

    Funciile alternative ale porturilor sunt descrise n figura 1.1 i tabelul 1.4, detalii suplimentare despre acestea gsindu-se la descrierea modulelor interne.

    Tabelul 1.4

    Semnale captur pentru timer T2

    P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

    AD0AD1AD2AD3AD4AD5AD6AD7

    Magistral multiplexat date i adrese (octetul mai puin semnificativ) pe durata accesului la memoria extern

    P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

    CT0ICT1ICT2ICT3IT2RT2SCLSDA

    Ieire timer T2 Reset extern timer T2 Ceas interfa serial I2C Date interfa serial I2C

    P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7

    A9A9A10A11A12A13A14A15

    Magistral de adrese (octetul mai semnificativ) pe durata accesului la memoria extern

    P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7

    RXDTXDINT0

    INT1

    T0 T1 WR RD

    Intrare date UART Ieire date UART ntrerupere extern 0 ntrerupere extern 1 Intrare extern timer T0 Intrare extern timer T1 Scriere memorie extern Citire memorie extern

    Comparare cu timer T2 i setri/resetri ieiri

    P4.0P4.1P4.2P4.3P4.4P4.5P4.6P4.7

    CMSR0CMSR1CMSR2CMSR3CMSR4CMSR5CMT0CMT1

    Comparare cu timer T2 i comutri ieiri

    P5.0P5.1P5.2P5.3P5.4P5.5P5.6P5.7

    ADC0ADC1ADC2ADC3ADC4ADC5ADC5ADC5

    Opt intrri analogice pentru convertorul analog numeric

    1.5. Modulatorul de impulsuri n durat

    Familia 8xC552 conine dou modulatoare de impulsuri n durat, codificate PWM0, respectiv PWM1. Impulsurile generate de aceste modulatoare au controlate independent durata i perioada de repetiie.

    Structura intern a modulatorului de impulsuri al circuitului 8xC552 este prezentat n figura 1.4.

    PWM0

    PWM1fOSC

    1/2

    PWM0

    PWM1

    Numrtor

    Comparator

    Comparator

    >>

    >>

    Prescaler

    Mag

    istr

    al

    inte

    rn

    Figura 1.4. Modulatorul de impulsuri n durat

    Frecvena de repetiie pentru ambele modulatoare este stabilit de un prescaler care furnizeaz frecvena de ceas pentru numrtor. Coeficientul de divizare al prescalerului este definit de registrul special PWMP.

  • Familia de microcontrolere 80C16x _____________________________________________18

    Perioada de repetiie a modulatorului PWM este dat de relaia:

    ( ) 255PWMP12f

    fOSC

    PWM+

    =

    i, pentru un oscilator de 12 MHz semnific frecvene de repetiie de la 92 Hz la 23.5 kHz.

    Valoarea contorului numrtorul de 8 bii (ntre 0 i 254) este examinat de dou comparatoare comandate de cte un registru special pentru fiecare modulator: PWM0, respectiv PWM1.

    Coeficientul de umplere stabilit de cele dou registre se determin cu formula:

    PWMx255PWMx

    umplere.coef

    =

    Aceast structur este capabil s asigure celor dou ieiri impulsuri cu coeficieni de umplere ntre 0 i 1, n incremente de 1/255.

    1.6. Convertorul analog numeric

    Modulul analogic const ntr-un multiplexor analogic cu opt intrri, un registru de aproximaii succesive de 10 bii, un comparator, un convertor numeric/analogic i logica de comand a acestor blocuri. Tensiunea de referin i alimentrile sunt asigurate din exterior, pe pini separai.

    O conversie dureaz 50 de cicluri main iar semnalul analogic de intrare trebuie s ndeplineasc condiia: 0 AVSS VREF Semnal VREF+ AVDD +5V, unde AVSS i AVDD reprezint tensiunile de alimentare analogice iar VREF tensiunile de referin.

    Controlul convertorului analog/numeric este asigurat de registrul special ADCON, prezentat n tabelul 1.5.

    Structura funcional a modulului analogic este prezentat n figura 1.5. P5 STADC

    VREF+VREFAVDD

    AVSS

    0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ADCON ADCH

    Multiplexoranalogic

    Registruaproximaiisuccesive

    DAC

    Magistral intern Figura 1.5. Convertorul analog/numeric

    Rezultatul conversiei este regsit n registrul ADCH (biii mai

    semnificativi), ultimii doi bii fiind citii din registrul ADCON (ADC.1 i ADC.0). Ct timp o conversie este n curs (ADCI i ADCS diferite de zero), un

    semnal extern STADC sau o comand software nu este luat n consideraie i

    nu este iniializat o nou conversie.

  • 19 ________________________________________Aplicaii cu microcontrolere de uz general Tabelul 1.5

    ADCON (C5h) ADC.1 ADC.0 ADEX ADCI ADCS AADR2 AADR1 AADR0ADC.1 Bitul 1 al rezultatului conversiei ADC.0 Bitul 0 al rezultatului conversiei ADEX Validare conversie extern (pin ADCS):

    0: conversia este iniializat numai prin program (bitul ADCS) 1: conversia este iniializat prin program sau hardware.

    ADCI Indicator ntrerupere ADC: - dac este setat, rezultatul conversiei poate fi citit; - dac este validat, sfritul conversiei poate genera o ntrerupere; - ct timp este setat nu se poate declana o alt conversie.

    Acest bit este numai citire. ADCI ADCS Stare convertor ADCS Starea convertorului

    ADC. Poate fi setat prin program sau hardware (semnalul STADC). Semnificaia sa este:

    0 0 1 1

    0 1 0 1

    se poate iniia conversie; ADC neocupat. nu poate fi iniiat o nou conversie. nu poate fi iniiat o alt conversie. rezervat

    AADR2 AADR1 AADR0 Intrare analogicAADR2AADR1AADR0

    Comanda multiplexorului analogic. Selectarea intrrilor portului P5este:

    0 0 0 0 1 1 1 1

    0 0 1 1 0 0 1 1

    0 1 0 1 0 1 0 1

    ADC.0 (P5.0)ADC.1 (P5.1)ADC.2 (P5.2)ADC.3 (P5.3)ADC.4 (P5.4)ADC.5 (P5.5)ADC.6 (P5.6)ADC.7 (P5.7)

    Valoarea numeric a tensiunii analogice convertite este dat de relaia:

    +

    =

    REFREF

    REFINADC VV

    VV1024V

    Este recomandabil ca toate tensiunile analogice (AVSS, AVDD i AVREF) s fie asigurate de o surs de alimentare separat.

    1.7. Timere/Numrtoare

    Familia 8xC552 dispune de patru timere: timerele T0 i T1 sunt identice cu cele din 8051, T2 este un timer de 16 bii cu faciliti suplimentare iar T3 este un timer de 8 bii pentru resetarea programului controlerului.

    Timerele 0 i 1 constau n dou numrtoare de 16 bii i pot ndeplini urmtoarele funcii: msurarea unor intervale de timp; numrarea unor evenimente; generarea unor cereri de ntrerupere.

    Configurat ca timer, contorul este incrementat la fiecare ciclu main (la fiecare microsecund pentru oscilator de 12 MHz). Astfel, timpul poate fi msurat n uniti de cicluri main.

    Configurat ca numrtor, contorul este incrementat la fiecare tranziie 10 a semnalului de pe pinul de intrare corespunztor. Deoarece o recunoatere a unei tranziii dureaz dou cicluri main, frecvena maxim de numrare este de 500 kHz (pentru oscilator de 12 MHz).

    Fa de aceste moduri, timerele T0 i T1 mai au patru moduri de funcionare, de la MOD0 la MOD3.

  • Familia de microcontrolere 80C16x _____________________________________________20

    Selectarea modului de lucru i controlul timerelor T0 i T1 sunt asigurate de registrele speciale TMOD, respectiv TCON descrise n tabelul 1.6.

    Tabelul 1.6Timer 1 Timer 0

    TMOD (89h) GATE C/T M1 M0 GATE C/T M1 M0

    GATE Dac este setat, timerul x funcioneaz dac pinul INTx este la 1 logic i bitulTRx (din registrul TCON) este setat. Dac este ters, timerul este condiionatnumai de starea bitului TR.

    C/T Dac este setat, modulul funcioneaz ca numrtor (numr tranziiile 10 alepinului Tn). Dac este ters funcioneaz ca timer, numrnd ciclurile main.

    M1 M0 Mod Descriere

    M1, M0 Selecie mod: 0 0 1 1

    0 1 0 1

    0 1 2 3

    Numrtor de 8 bii cu prescaler divizor cu 32 Numrtor de 16 bii Numrtor de 8 bii cu rencrcare automat T0: numrtor de 8 bii; T1: oprit.

    TCON (88h) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

    TFxIndicator depire timer Tx. El este setat n momentul depirii i este ters automat n momentul n care unitatea central d controlul rutinei de ntrerupere.

    TRx Comand funcionarea timerului Tx. Dac este setat sau ters, timerul funcioneaz, respectiv este oprit.

    IExIndicator pentru frontul ntreruperii externe. Dac ITx este setat, o tranziie 10 a intrrii INTx va seta acest bit. Bitul este ters automat n momentul n care unitatea central d controlul rutinei de ntrerupere.

    ITx

    Stabilete dac ntreruperea extern acioneaz pe front sau pe nivel. Dac este setat, ntreruperea extern este activ pe frontul descresctor al semnalului de pe pinul INTx; dac este ters, ntreruperea extern este activ pe nivelul zero logic al pinului INTx.

    Semnificaia celor patru moduri de funcionare este prezentat n paragrafele urmtoare.

    1.7.1 Modul 0 n acest mod timerele T0 sau T1, sunt configurate ca registre de 13 bii.

    n momentul n care valoarea numrtorului x trece de la 1FFFh la 0h este setat automat bitul TFx. Intrarea n numrtor este validat dac bitul TRx

    este setat iar bitul GATE i intrarea INTx respect condiiile descrise anterior.

    Registrul de 13 bii este format din 8 bii ai registrului THx i 5 bii ai

    registrului TLx. Cei 3 bii mai semnificativi ai lui TLx sunt nedeterminai i

    trebuie ignorai.

    1.7.2 Modul 1 Este identic cu modul 0, numai c registrul de numrare este de 16 bii.

    1.7.3 Modul 2 Acest mod configureaz timerele T0 sau T1 ca dou numrtoare de 8

    bii, avnd facilitatea de rencrcare: n momentul n care TLx trece de la FFh

    la 0h, nu se seteaz numai bitul TFx, dar TLx este ncrcat cu valoarea lui

    THx. THx rmne nemodificat.

  • 21 ________________________________________Aplicaii cu microcontrolere de uz general

    1.7.4 Modul 3 n acest mod, timerul T0 funcioneaz ca dou registre separate, TL0 i

    TH0, fiecare a cte 8 bii. Registrul TL0 este controlat de biii standard ai timerulului T0 iar registrul TH0 de biii timerului T1, inclusiv ntreruperea timerului T1.

    Modul 3 este adoptat dac este necesar un timer suplimentar. n aceast situaia T0 lucreaz ca dou timere independente iar T1 poate funciona, de exemplu, ca generator de rat de transmisie sau n orice alt aplicaie care nu necesit o ntrerupere.

    Configuraia intern a timerelor T0 i T1 n cele patru moduri de funcionare se prezint n figura 1.6.

    Pin INTnC/T=0 ntrerupere GATEnC/T=1

    Pin Tn TRnTRn Pin TnGATEn

    ntrerupere C/T=1Pin INTn C/T=0

    Rencrcarec) Modul 2

    ntrerupere

    Pin T0TR0GATE0

    Pin INT0ntrerupere

    TR1

    d) Modul 3

    OSC M12

    M12 OSC

    TLn(8 bii)

    TFn

    TLn THn(5/8 bii) (8 bii)

    TFn

    THn(8 bii)

    a),b) Modul 0 i 1

    OSC M12TL0

    (8 bii)TF0

    TH0(8 bii)

    TF1

    Figura 1.6. Modurile de lucru al timerelor T0 i T1

    ntreruperile generate de timerele T0 i T1 sunt gestionate de biii ET0, respectiv ET1 aflate n registrul special pentru controlul ntreruperilor (IEN0.1, respectiv IEN0.3).

    Timerul T2 este un numrtor de 16 bii conectat la patru registre de captur de 16 bii i trei registre de comparare de 16 bii. Registrele de captur sunt folosite pentru a nregistra coninutul registrului timerului T2 n momentul n care survine o tranziie pe pinul corespunztor (CT0I, CT1I, CT2I i CT3I). Registrele de comparare sunt folosite pentru a seta, terge sau comuta biii corespunztori din portul P4 atunci cnd coninutul registrului T2 este atinge valorile din cele trei registre.

    Timerul T2 este format din dou registre de 8 bii TMH2 (octetul mai semnificativ), respectiv TML2 (octetul mai puin semnificativ).

  • Familia de microcontrolere 80C16x _____________________________________________22

    Frecvena de numrare poate fi furnizat de oscilatorul intern (divizat cu 12) sau de la o surs extern (un front cresctor pe pinul T2 P1.4), ulterior aceste frecvene fiind divizate ntr-un prescaler programabil cu 1, 2, 4 sau 8.

    n situaia folosirii timerului T2 ca numrtor, frecvena maxim de lucru este dubl fa de timerele T0 i T1, respectiv de 1MHz.

    Valoarea timerului poate fi citit fr ca acesta s fie oprit dar, acesta neavnd registre suplimentare de citire, trebuie luate msuri de precauie n situaia apariiei unei depiri a registrului chiar n timpul citirii.

    Registrul timerului T2 nu poate fi scris ci numai ters prin intermediul unor semnale externe: RST sau un front cresctor pe pinul RT2 (validarea tergerii pe pinul RT2 este produs prin setarea bitului T2ERTM2CON.5).

    Pot fi generate cereri de ntreruperi pentru depiri ale registrului TM2, att la nivel de 8 bii (depirea registrului TML2), ct i la 16 bii (depirea registrului TMH2); n ambele situaii, vectorul de ntrerupere este acelai. n situaia depirii registrului TML2 este setat indicatorul TLBO (din registrul special TM2CON) iar cnd se produce depirea registrului TMH2 sunt setai indicatorii T2OV i TLBO. Pentru validarea ntreruperii generate de TMH2 este necesar setarea biilor ET2 (IEN1.7) i T2IS0 (TM2CON.4). Validarea ntreruperii produse de TMH2 este fcut prin setarea biilor ET2 (IEN1.7) i T2IS1 (TM2CON.7). Indicatorii setai de depire trebuie teri prin programul de tratare a ntreruperii.

    Timerul T2 are n structur patru registre de captur: CT0, CT1, CT2 i CT3. Aceste registre de 16 bii sunt ncrcate funcie de semnalele externe CT0I, CT1I, CT2I i CT3I. Funcie de starea registrului special TM2IR, o dat cu aplicarea semnalelor CTxI se genereaz i o ntrerupere. Coninutul

    registrului de control al capturii CTCON ofer posibilitatea selectrii modului

    de aciune al semnalelor CTxI: pe front cresctor, pe front descresctor sau

    pe ambele tipuri de fronturi. Timerul TM2 mai conine i trei registre de comparare CM0, CM1 i CM2.

    Coninutul acestor registre este verificat la fiecare incrementare a numrtorului T2. Atunci cnd unul din registrele CMx are aceeai valoare cu registrul TM2, este setat bitul corespunztor din registrul special TM2IR. Suplimentar, registrele de comparare mai pot comanda i biii portului P4 funcie de registrele speciale STE i RTE. Astfel, CM0 poate seta biii 0-5 ai P4 dac sunt setai biii corespunztori din registrul STE; CM1 terge biii 0-5 ai P4 dac sunt setai biii corespunztori din registrul RTE; biii 6 i 7 ai P4 sunt inversai de CM2 dac este setat corespunztor registrul RTE.

    Structura intern a timerului T2 i a registrelor de captur i comparare este prezentat n figura 1.7.

  • 23 ________________________________________Aplicaii cu microcontrolere de uz general

    Timerul T2 poate genera nou ntreruperi. Opt indicatoare de ntreruperi se gsesc n registrul TM2IR iar al noulea este bitul TM2CON.4. Prioritile ntreruperilor generate de TM2 sunt controlate de registrul IP1.

    CT0I Int CT1I Int CT2I Int CT3I Int

    Int Int Int

    Int Int Stop

    fOSC M12 Prescaler TML2 TMH2

    T2

    RT2 T2ER

    CT0

    CTI0

    CT1

    CTI1

    CT2

    CTI2

    CT3

    CTI3

    CM0(s) CM1(r) CM2(k)

    = ==

    Figura 1.7. Timerul T2

    n concluzie, registrele speciale folosite de timerul T2 sunt TM2CON, CTCON, STE, RTE, TM2IR, IEN1 i IP1. Coninutul acestora la nivel de bit este prezentat n tabelul 1.7.

    Tabelul 1.7 TM2CON (EAh) T2IS1 T2IS0 T2ER T2BO T2P1 T2P0 T2MS1 T2MS0

    T2IS1T2IS0T2ERT2BO

    Selectare ntrerupere depire 16 bii. Selectare ntrerupere depire 8 bii. Validare resetare extern; T2 poate fi ters de un front cresctor pe pinul RT2 (P1.5). Indicator ntrerupere depire 8 bii.

    T2P1T2P0 Selectare valoare prescaler.

    0 0 1 1

    0 1 0 1

    M1 M2 M4 M8

    T2MS1T2MS0 Selectare mod de lucru.

    0 0 1 1

    0 1 0 1

    Oprit Mod timer (fOSC/12) Rezervat Mod numrtor (pin T2)

    CTCON (EBh) CTN3 CTP3 CTN2 CTP2 CTN1 CTP1 CTN0 CTP0CTN3CTP3CTN2CTP2CTN1CTP1CTN0CTP0

    Registrul captur 3 comandat de front cztor pe pinul CT3I Registrul captur 3 comandat de front cresctor pe pinul CT3I Registrul captur 2 comandat de front cztor pe pinul CT2I Registrul captur 2 comandat de front cresctor pe pinul CT2I Registrul captur 1 comandat de front cztor pe pinul CT1I Registrul captur 1 comandat de front cresctor pe pinul CT1I Registrul captur 0 comandat de front cztor pe pinul CT0I Registrul captur 0 comandat de front cresctor pe pinul CT0I

    STE (EEh) TG47 TG46 SP45 SP44 SP43 SP42 SP41 SP40

  • Familia de microcontrolere 80C16x _____________________________________________24

    TG47TG46SP45SP44SP43SP42SP41SP40

    Dac sunt setai, la comutarea comparatorului CM2, biii corespunztori din P4 sunt setai. Dac sunt teri, la comutarea comparatorului CM2, biii corespunztori din P4 sunt teri. Dac este setat, P4.5 va deveni 1 logic cnd CM0=TM2. Dac este setat, P4.4 va deveni 1 logic cnd CM0=TM2. Dac este setat, P4.3 va deveni 1 logic cnd CM0=TM2. Dac este setat, P4.2 va deveni 1 logic cnd CM0=TM2. Dac este setat, P4.1 va deveni 1 logic cnd CM0=TM2. Dac este setat, P4.0 va deveni 1 logic cnd CM0=TM2.

    RTE (EFh) TP47 TP46 RP45 RP44 RP43 RP42 RP41 RP40TP47TP46RP45RP44RP43RP42RP41RP40

    Dac sunt setai, la comutarea comparatorului CM2, bitul din portul P4 este inversat. Dac este setat, P4.5 va deveni 0 logic cnd CM1=TM2. Dac este setat, P4.4 va deveni 0 logic cnd CM1=TM2. Dac este setat, P4.3 va deveni 0 logic cnd CM1=TM2. Dac este setat, P4.2 va deveni 0 logic cnd CM1=TM2. Dac este setat, P4.1 va deveni 0 logic cnd CM1=TM2. Dac este setat, P4.0 va deveni 0 logic cnd CM1=TM2.

    TM2IR (C8h) T2OV CMI2 CMI1 CMI0 CTI3 CTI2 CTI1 CTI0T2OVCMI2CMI1CMI0CTI3CTI2CTI1CTI0

    Indicator ntrerupere CM2. Indicator ntrerupere CM1. Indicator ntrerupere CM0. Indicator ntrerupere CT3. Indicator ntrerupere CT2. Indicator ntrerupere CT1. Indicator ntrerupere CT0.

    IEN1 (E8h) ET2 ECM2 ECM1 ECM0 ECT3 ECT2 ECT1 ECT0ET2ECM2ECM1ECM0ECT3ECT2ECT1ECT0

    Validare ntrerupere CM2. Validare ntrerupere CM1. Validare ntrerupere CM0. Validare ntrerupere CT3. Validare ntrerupere CT2. Validare ntrerupere CT1. Validare ntrerupere CT0.

    IP1 (F8h) PT2 PCM2 PCM1 PCM0 PCT3 PCT2 PCT1 PCT0PT2PCM2PCM1PCM0PCT3PCT2PCT1PCT0

    Nivel prioritate depire numrare. Nivel prioritate CM2. Nivel prioritate CM1. Nivel prioritate CM0. Nivel prioritate CT3. Nivel prioritate CT2. Nivel prioritate CT1. Nivel prioritate CT0. Dac bitul este setat se selecteaz nivelul superior de prioritate.

    1.8. Timerul iniializare T3 (watchdog)

    Acest timer este destinat iniializrii periodice a controlerului n situaia existenei unei erori de program (bucl infinit) sau apariiei unor perturbaii externe care pot comanda aleator procesorul. Dac este validat, timerul T3 genereaz resetul sistemului dac programul nu reiniializeaz periodic coninutul acestui timer.

    Timerul T3 const ntr-un numrtor de 8 bii i un divizor de 11 bii; prescalerul divizeaz o frecven de 1 MHz (n situaia utilizrii unui oscilator de 12 MHz).

  • 25 ________________________________________Aplicaii cu microcontrolere de uz general

    Dac numrtorul de 8 bii are o tranziie FFh0h, este produs un impuls care reseteaz controlerul. De asemenea, prin intermediul unui buffer, semnalul este scos i pe pinul RST unde poate fi utilizat pentru iniializarea

    circuitelor de suport. Deoarece este un impuls scurt (circa 3 s), existena unei capaciti n circuitul extern de reset face semnalul produs de controler inutilizabil.

    Perioada de repetiie a timerului T3 este dictat de valoarea cu care este rencrcat: perioada minim este de 2 ms, dac timerul este ncrcat cu FFh; perioada maxim de repetiie este de 512 ms i corespunde unei valori de rencrcare de 0h. Relaia pentru determinarea perioadei de repetiie este:

    ( ) [ ]sf

    13T24576TOSC

    R+

    =

    Pentru iniializarea automat a programului, este necesar mai nti, determinarea timpului de execuie al programului, dup care timerul T3 este programat cu o valoare acoperitoare. Dac timpul de execuie este mai mare de 512 ms, este necesar partiionarea programului n mai multe module, fiecare modul asigurnd o reprogramare a timerului T3.

    Pentru a preveni erori de program la rencrcarea sa, timerul T3 este programat n doi pai: mai nti, este setat bitul WLE (PCON.4), apoi T3 poate fi ncrcat cu valoarea dorit. Dup ncrcare, WLE este ters automat.

    Suplimentar, modulul de iniializare este condiionat i de semnalul extern EW. Cnd EW are valoarea 0 logic, funcionarea timerului T3 nu se poate dezactiva prin program.

    Schema bloc a modului timer T3 este indicat n figura 1.8. Bus intern

    Divizor fOSC/12 11 bii Timer T3 Bufer RST

    tergere ncrcare

    Reset

    Scriere

    tergere OpritWLE ncrcare

    EW

    PCON

    Figura 1.8. Timerul T3

    n modurile de funcionare cu consum redus de energie, IDLE i

    POWER-DOWN, funcionarea timerului T3 poate pune probleme. Astfel, dac n modul IDLE timerul este funcional, n modul POWER-DOWN funcionarea

    timerului este contradictorie cu modul de lucru ales. Pentru a preveni acest lucru, semnalul extern EW nu las funcionale simultan cele dou module.

  • Familia de microcontrolere 80C16x _____________________________________________26

    Bitul de control al timerului T3, WLE, va fi prezentat la paragraful 1.12.1. unde este descris registrul special PCON.

    1.9. Interfaa serial asincron

    Aceast interfa serial, cunoscut i sub numele de SIO0, poate transmite i recepiona date simultan, adic este o interfa full duplex. De asemenea, registrul de recepie este bufferat: modulul poate iniia o recepie a unui nou octet chiar dac octetul anterior nu a fost citit din registrul de recepie. Suplimentar fa de interfaa serial a circuitelor 8051 are cteva faciliti suplimentare: protecia la erori de ncadrare (framing error) prin intermediul bitului de

    stop; protecia la erori de paritate, fiind posibil transmisia bitului de paritate; are un mod de lucru destinat comunicaiei multiprocesor.

    Interfaa serial asincron poate opera n patru moduri. a) modul 0; b) modul 1; c) modul 2; d) modul 3.

    Controlul interfeei seriale este fcut de registrul special S0CON, cu structura prezentat n tabelul 1.8.

    Tabelul 1.8 S0CON (98H) SM0 SM1 SM2 REN TB8 RB8 T1 R1

    SM0 SM1 Mod Descriere Vitez de transmisie

    SM0SM1 Selectare mod lucru:

    0 0 1 1

    0 1 0 1

    0 1 2 3

    Registru de deplasare UART de 8 bii UART de 9 bii UART de 9 bii

    fOSC/12 Variabil fOSC/32 sau fOSC/64 Variabil

    SM2Folosit pentru comunicarea multiprocesor n modurile 2 i 3. Dac este setat, RI nu va fi activat dac bitul 8 de date nu este 0 logic. n modul 1 condiioneaz RI de primirea unui bit valid de stop. n modul 0 trebuie ters.

    REN Validarea recepiei seriale. Se poate seta prin program pentru a activa sau dezactiva recepia serial.

    TB8 Bitul 9 de date transmis n modul 2 sau 3. Este setat sau ters prin program de regul, funcie de bitul de paritate.

    RB8 Bitul 9 de date recepionat n modul 2 sau 3. n modul 1, dac SM2=0, constituie bitul de stop. n modul 0 nu este folosit.

    TI Indicator ntrerupere transmisie. Este setat automat la terminarea mesajului. Trebuie ters prin program.

    RI Indicator ntrerupere recepie. Este setat automat la recepionarea unui mesaj. Trebuie ters prin program

    1.9.1 Interfaa serial SIO0 n modul 0 n acest mod interfaa este capabil s transmit sau s recepioneze

    mesaje de 8 bii (mai nti bitul mai puin semnificativ), la o vitez de transmisie egal cu fOSC/12.

    Datele seriale sunt recepionate sau transmise numai de pinul RXD, TXD

    fiind folosit pentru semnalul de ceas.

  • 27 ________________________________________Aplicaii cu microcontrolere de uz general

    Transmisia este iniiat de orice instruciune care scrie n registrul special S0BUF, activnd semnalul SEND (emisie). Acest semnal seteaz pinul RXD s funcioneze ca ieire a registrului de deplasare i, de asemenea,

    determin ca pinul TXD s funcioneze ca ieire a semnalului de ceas.

    Semnalul de ceas are o perioad egal cu ciclul main, fiind 1 logic n strile S6, S1 i S2, respectiv 0 logic n strile S3-S5. Dup transmiterea ultimului bit, semnalul SEND este dezactivat i indicatorul TI este setat.

    Recepia este demarat de tergerea bitului RI, tergere condiionat de setarea bitului REN. Registrul de control al recepiei este ncrcat cu valoarea

    1 1111 1110 i activeaz semnalul RECEIVE (recepie). Ct timp acest semnal

    este activ, valoarea portului P3.0 (RXD) este ncrcat i deplasat la stnga o dat la fiecare ciclu main. n momentul n care valoarea zero, ncrcat iniial n poziia celui mai puin semnificativ bit, ajunge pe poziia celui mai semnificativ bit se semnaleaz registrului de control al recepiei s realizeze o ultim deplasare i ncarc registrul S0BUF. n urmtorul ciclu main semnalul RECEIVE este dezactivat i indicatorul RI este setat.

    Modul 0 este folosit, de regul, pentru interfaarea cu registre externe de deplasare TTL sau CMOS pentru extinderea numrului de porturi de intrare-ieire.

    1.9.2 Interfaa serial SIO0 n modul 1 Procedura de lucru n acest mod permite transmiterearecepionarea a

    10 bii (un bit de start, 8 bii date, un bit de stop) cu o vitez de transmisie variabil, determinat de frecvena depirilor date de timerul T1.

    Structura intern simplificat a interfeei seriale n modul 1 este prezentat n figura 1.9.

  • Familia de microcontrolere 80C16x _____________________________________________28 Magistral internTB8

    Scriere S0BUFD S Q S0BUF TXDCL

    Mod1 Mod2 Mod3 Detector zero T1 1/2fosc T1

    STOP SHIFTSTART DATA

    SMOD=1 Control emisieM2 M16 CL TI SEND

    SMOD=0 ntrerupere S0

    Detector CL RI LOAD10 START S0BUF

    Control recepie1FFH SHIFT

    Detectormajoritar

    RXD Registru deplasare9 bii

    S0BUF Figura 1.9. Interfaa serial SIO0 (modurile 1, 2 i 3)

    Transmisia este iniiat de orice instruciune care scrie n registrul special S0BUF. Adresarea S0BUF seteaz bitul 9 al registrului de serializare al transmisiei, ntiineaz unitatea de control c este solicitat o transmisie i activeaz semnalul SEND (emisie). Transmisia ncepe n urmtorul ciclu

    main dar este sincronizat cu depirile date de timerul T1. Semnalul SEND transmite un bit la ieirea TXD (bitul de start), urmat de

    cei 8 bii de date. n momentul n care al noulea bit (bitul setat iniial) din registrul de deplasare ajunge la extremitatea dreapt a registrului, este semnalat unitii de control a emisiei c mai este de emis un bit (bitul de stop), se dezactiveaz semnalul SEND i este setat indicatorul TI.

    Recepia este declanat de o tranziie 10 a semnalului de pe pinul RXD. Pentru a asigura sin