pic microcontroladores -...

125
Microcontroladores Microcontroladores PIC PIC Ing. Horacio D. V Ing. Horacio D. V allejo allejo EDITORIAL QUARK Precio en: Precio en: Ar Arg entina: entina: $15 $15 México $60 M.N. México $60 M.N. Venezuela: enezuela: $4,500.00 $4,500.00 Colombia: Colombia: $18.000 $18.000 Otr Otr os P os Países: aíses: U$S12 U$S12

Upload: dinhkhuong

Post on 31-Jan-2018

238 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Mic

roc

on

tro

lad

ore

s

Mic

roc

on

tro

lad

ore

s P

ICP

ICIn

g.

Ho

raci

o D

. V

Ing

. H

ora

cio

D.

Val

lejo

alle

jo

EDITORIALQUARK

Precio en:Precio en: ArArggentina:entina: $15$15México $60 M.N.México $60 M.N.

VVenezuela:enezuela: $4,500.00$4,500.00Colombia:Colombia: $18.000$18.000

OtrOtros Pos Países:aíses: U$S12U$S12

Page 2: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Autor: Ing. Horacio D. VallejoColaboración: Federico Prado

Egon StraussAlberto Picerno

Editado por:

EDITORIAL QUARK S.R.L. ISBN 987-922789-1

Herrera 761/63 (1295) Buenos Aires, ArgentinaTel./fax: (0054-11) 4301-8804

Director: Horacio D. Vallejo

Impresión: Imprenta Rosgal - abril 2002Queda hecho el depósito que previene la ley 11723Distribución en Argentina: Capital: Distribuidora Cancellaro e Hijo SH, Gutenberg 3258, Buenos Aires - Interior:Distribuidora Bertrán S.A.C., Av. Vélez Sarsfield 1950, Buenos Aires Distribución en Uruguay: Berriel y Martínez, Paraná 750, Montevideo.Distribución en México: Pernas y Cía., S.A. de C.V., Calle Poniente 134 Nº 650, Col. Ind. Vallejo, DelegaciónAzcapotzalco, CP 02300, México DF, Tel.: 55 87 44 55, FAX: 53 68 50 25, email: [email protected]ón en otros países: Colombia: Proespind Ltda. - Cra. 54 Nº 171-21, Depto. Cundinamarca, Bogotá D.C. -Tel.: 091 526 4208, Fax.: 091 679 5415, Uruguay: Amexi, Paraná 750, Tel.: 209-4709, Chile: Tel.: 01221-3356, Pa-raguay: Tel.: 621-698, Costa Rica: (506) 250-86-42, Ecuador: (593) 445-17-49, El Salvador: (503) 260-71-51, Guatemala: (502) 361-17-50, Honduras: (504) 557-91-52, Puerto Rico: (787) 764-89-09, Rep. Domini-cana: (809) 684-88-44, España: (93) 429-32-72

Representante exclusivo para todo el mundo: Centro Japonés de Información Electrónica, Norte 2 Nº 4, Col. Hogares Mexi-canos Ecatepec, Edo. de México. - Director: Atsúo Kitaura - Tel.: (0155) 5787-1779 - www.centrojapones.comSolicite información al (005411)4301-8804 o por Internet a: www.webelectronica.com.ar

(Los compradores de esta edición tienen acceso a información adicional con el password: pic2)

La editorial no se responsabiliza por el contenido del material firmado. Todos los productos o marcas que se mencionan son a los efectosde prestar un servicio al lector, y no entrañan responsabilidad de nuestra parte. Está prohibida la reproducción total o parcial del materialcontenido en esta publicación, así como la industrialización y/o comercialización de los circuitos o ideas que aparecen en los menciona-dos textos, bajo pena de sanciones legales, salvo mediante autorización por escrito de la editorial.

Con el aval de

Page 3: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

IndiceCap tulo 1Arquitectura de un PIC

Introducci n ......................................................5Caracter sticas del PIC .....................................5Caracter sticas Perif ricas ................................5Caracter sticas Especiales del Microcontrolador ...............................................6Patas del PIC....................................................6Resumen del Dispositivo ..................................9Ficha Did ctica ...............................................10Lo que Debe Saber Sobre los PICs................................................13a) El Procesador es segmentado tipo "pipe line" .................................................13b) El Procesador es de tipo RISC ..................14c) Poseen una arquitectura tipo Harvard ....................................................14d) Son de arquitectura ortogonal basada en banco de registros .....................................15Palabras de Configuraci n e Identificaci n ................................................18Organizaci n de la Memoria...........................19Organizaci n de la Memoria de Programas .................................................19Organizaci n de la Memoria de Datos..........................................................19Los Registros del PIC.....................................20Archivo de Registro de Uso General....................................................20Registros de Funciones Especiales (SFR) ............................................21Registro de Status ..........................................23Registro OPTION_REG..................................25

El Registro INTCON .......................................27PCL y PCLATH ...............................................28STACK (PILA) .................................................28Registros INDF y FSR ....................................29PORTS I/O......................................................30Registros PORTA y TRISA .............................30Registros PORTB y TRISB.............................32M dulo Temporizador TIMER0 .......................34Prescaler (Divisor de Frecuencia) ..................35Interrupci n de Timer0....................................36Memoria de Datos EEPROM..........................36Lectura de la Memoria de Datos de EEPROM.........................................38Escritura de la Memoria de Datos EEPROM..............................................39Verificaci n de Escritura .................................40La CPU del PIC ..............................................42Bits de Configuraci n......................................43Configuraciones del Oscilador........................43Oscilador de Cristal o Resonador de Cer mica.................................44Oscilador RC...................................................44Reset...............................................................44Reset de Encendido .......................................47Temporizador de Arranque del Oscilador (OST) ..............................................48Temporizador de Encendido (PWRT) ...........................................................48El Perro Guardi n (WDT) ...............................48Interrupciones del Micro .................................49Interrupci n Externa (INT) ..............................51Interrupci n por Desborde del TMR0 ........................................................51Interrupci n por Cambio de Estado en las patas RB7 y RB4 .....................51Interrupci n por Finalizaci n de la Escritura en la EEPROM de datos ................................51

2 Microcontroladores PIC

Page 4: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Cap tulo 2Manejo de las Instrucciones de un PIC

Introducci n ....................................................53Instrucci n: SUMA ..........................................54C digo de la instrucci n ADDWf ....................55El Set de Instrucciones del 16X84........................................................56

ADDLW...................................................59ADDWF ..................................................60ANDLW...................................................61ANDWF ..................................................62BCF ........................................................63BSF ........................................................64BTFSC ...................................................65BTFSS....................................................67CALL ......................................................68CLRF......................................................69CLRW.....................................................70CLRWDT................................................71COMF.....................................................72DECF .....................................................73DECFSZ.................................................74GOTO.....................................................75INCF.......................................................76INCFSZ ..................................................77IORLW....................................................78IORWF ...................................................79MOVLW..................................................80

MOVF.....................................................81MOVWF .................................................82NOP .......................................................83RETFIE ..................................................83RETLW...................................................84RETURN ................................................85RLF ........................................................85RRF........................................................86SLEEP....................................................87SUBLW...................................................88SUBWF ..................................................90SWAPF...................................................92XORLW ..................................................93XORWF..................................................94

Palabras de Configuraci ne Identificaci n...............................................96

Cap tulo 3Aprendiendo a Programar

Circuito de un Entrenador...............................97Encendido Intermitente de un Led......................................................100Secuenciador de 4 Canales .........................108Generador de Se ales de Audio...................112Los Formatos de los Archivos.......................115Secuenciador de 8 Canales..........................115Compilaci n de un Programa .......................118Carga del Programa en un PIC ....................121

Indice

Microcontroladores PIC 3

Dedico este libro a todos los que trabajan por una Argentina mejor, a los que creen quees posible cambiar las cosas desde el trabajo y el esfuerzo colectivo, a los que creenque las respuestas est n en casa... en esta hermosa y bendita Am rica Latina.Dedico este libro a quienes saben construir en paz...Dedico este libro a quienes integran Editorial Quark, Imprenta Rosgal y Centro Japon sde Informaci n Electr nica.

Horacio Daniel Vallejo

Page 5: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Microcontroladores PICs

4 Microcontroladores PICs

Pr logo:Los microcontroladores de la empresa Microchip, los PIC , est n ocupando un lugarde privilegio dentro de la industria electr nica, gracias a la facilidad de implementarprogramas con un set reducido de instrucciones y a la importancia que poseen sus ca-racter sticas. Cuando en 1998 publiqu el primer art culo sobre estos circuitos integrados, no creque su divulgacii n llegar a tan lejos; sin embargo, cuatro a os despu s debo recono-cer que trabajar con estos chips es un placer del que no se deben privar los amantesde la electr nica.Hace algo m s de un a o Editorial Quark public el primer libro sobre este tema titu-lado: Todo Sobre PICs , texto que trata sobre las caracter sticas fundamentales de es-tos dispositivos y qu es necesario para editar programas, simularlos y cargarlos en lamemoria de los integrados. Dicho libro fue el punto de partida de una serie que conti-n a con el presente tomo y muy pronto continuar con Sistemas y Dispositivos conPICs , el tercer libro de una obra que vaya a saber en qu tomo va a culminar.Todo Sobre PICs (que tambi n fue el primer texto publicado por Editorial Quark en for-ma simult nea en varios pa ses de Am rica Latina) es el libro que debe leer todo aqu lque se inicia en esta disciplina, mientras que Microcontroladores PICs persigue ense-ar al lector a construir programas para armar sus propios dispositivos. ste es tam-

bi n un texto b sico dado que utilizamos estructuras muy sencillas para realizar los pri-meros programas. Somos conscientes que para que alguien pueda trabajar con un dis-positivo primero debe conocerlo y por ello en el cap tulo 1 hablamos sobre los diferen-tes bloques que integran a los PIC, bas ndonos en la familia 16X54/84 (que fue elcomponente que tomamos como referencia en el primer libro). De esta manera Ud. de-be saber qu es y c mo se emplea la memoria de datos, la memoria de programas, elperro guardi n, el registro STATUS, etc.Una vez que tiene conocimientos sobre los recursos con que cuenta, en el cap tulo 2presentamos las 35 instrucciones del set RISC de esta familia, dando ejemplos de usoen cada caso. Por ello, es probable que cuando lea algunos temas del cap tulo 1 (co-mo verificaci n de un dato escrito en la memoria) precise conocer c mo se manejandeterminadas instrucciones. Dicho de otra forma, si al leer un punto en particular noentiende alg n concepto, contin e la lectura y, seguramente, m s adelante compren-der lo que hemos querido decir.Por ltimo, en el cap tulo 3 damos ejemplos de programaci n sobre circuitos reales ,utilizando algunos temas escritos por el Ing. Picerno en Saber Electr nica, modifica-dos convenientemente para que aprenda mientras se ejercita .Estoy convencido que este texto es mejor que el primero, pero no caben dudas que,si Ud. no sabe nada sobre microcontroladores, precisar leer el libro Todo Sobre PICs.

Ing. Horacio D. Vallejo

Page 6: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ARQUITECTURA

DE UN PIC

Introducci n

El microcontrolador PIC16F84A de la marca Microchip es del tipo de 8 bits conEEPROM tipo flash reforzado encapsulado de 18 patas. El elevado rendimiento deeste microprocesador de dise o avanzado permite realizar una gran cantidad defunciones y prestaciones como veremos a continuaci n.

Caracter sticas del PIC

Esta familia de microcontroladores PIC se destaca por las siguientes prestacio-nes especiales:

• S lo se necesitan 35 instrucciones de una sola palabra para usarlo.• Todas las instrucciones son de un solo ciclo con excepci n de las ramificacio-

nes del programa que son de dos ciclos.• La velocidad de funcionamiento es de DC a 20MHz en la entrada del clock y de

DC a 200 ns (nanosegundos) en el ciclo de instrucciones.• La memoria del programa tiene capacidad para 1024 palabras (1kB).• La memoria RAM de datos es de 68 bytes.• La memoria de datos EEPROM es de 64 bytes.• Las palabras de instrucciones tienen una extensi n de 14 bits.• Los bytes de datos tienen una extensi n de 8 bits.• Posee 15 registros de hardware de funciones especiales.• Tiene una Pila de hardware de ocho niveles. • Procesa modos de acceso directo, indirecto y relativo.• Tiene cuatro fuentes de interrupciones:

-Pata externa RB0/INT-Exceso del temporizador TMR0-Interrupci n al cambio PORTB<7:4>-Al completar la escritura del EEPROM de datos.

Caracter sticas Perif ricas• 13 patas I/O con control individual de direcci n.• Fuente de alta corriente para excitaci n directa de LED«s:

Arquitectura de un PIC

Microcontroladores PIC 5

Page 7: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

-25 mA m ximo de sink ( nodo) por pata-25 mA m ximo de source (c todo) por pata.

• Temporizador/contador de 8 bits TMR0 con preescaler (divisor de frecuencia)programable de 8 bits.

Caracter sticas Especiales del Microcontrolador• Memoria de programa de 1000 ciclos de escritura/borrado de flash reforzado.• Memoria de datos EEPROM de 1.000.000 de ciclos de borrado/escritura t pica.• Retenci n de datos de EEPROM de >40 a os.• Programaci n en serie dentro del circuito (ICSP = In Circuit Serial Program-

ming) mediante dos patas.• Power-on Reset (POR), Power-up Timer (PWRT), Oscillator Start-up Timer

(OST). • Watchdog Timer (WDT) con su propio oscilador RC incorporado en el chip pa-

ra un funcionamiento confiable.• Protecci n de c digos.• Modo SLEEP para economizar consumo.• Opciones seleccionables de oscilador.• Tecnolog a CMOS con Flash reforzado y EEPROM.• Tecnolog a de baja potencia y alta velocidad.• Dise o est tico completo.• Rango amplio de tensiones de funcionamiento:

-Comercial: 2,0 Volt a 5,5 Volt-Industrial: 2,0 Volt a 5,5 Volt.

• Consumo muy bajo:- < 2mA t pico a 5 Volt, 4MHz- 15 A t pico a 2 Volt, 32kHz- < 0,5 A t pico de corriente en reposo a 2 Volt.

Patas del PIC

El microcontrolador PIC16C84 es un chip que como puede apreciarse en la figu-ra 1, dispone de 18 patas.

La funci n que cumple cada una de ellas es la siguiente:

Patas 1, 2, 3 17 y 18 - RA0-RA4/TOCK1 : Es el PORT A. Corresponden a 5 l -neas bidireccionales de E/S. Es capaz de entregar niveles TTL cuando la tensi n dealimentaci n aplicada en VDD es de 5V – 5%. El pin RA4, si se programa como sa-

Arquitectura de un PIC

6 Microcontroladores PIC

Page 8: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

lida es de colector abierto. Como entrada puede programarse en funcionamientonormal o como entrada del contador/temporizador TMR0.

______Pata 4 - MLCR / Vpp: Es una pata de m ltiples aplicaciones, es la entrada de

Reset si est a nivel bajo y tambi n es la habilitaci n de la tensi n de programaci ncuando se est programando el dispositivo. Cuando su tensi n es la de VDD el PICfunciona normalmente.

Patas 5 y 14 - VSS y VDD: Son respectivamente las patas de masa y alimenta-ci n. La tensi n de alimentaci n de un PIC est comprendida entre 2V y 6V aunquese recomienda no sobrepasar los 5,5V.

Dependiendo de la letra que posea al final, el PIC ser la tensi n admisible. Losmodelos que contienen las letras C, F o CR admiten tensiones de alimentaci n com-prendidas entre 4V y 4,5V como m nimo hasta 5,5V a 6V como m ximo. Los mode-los que contienen las letras LC, LF o LCR admiten desde 2V a 6V.

Patas 6, 7, 8, 9, 10, 11, 12, 13 - RB0-RB7: Es el PORT B. Corresponden a ochol neas bidireccionales de E/S. Pueden manejar niveles TTL cuando la tensi n de ali-mentaci n aplicada en VDD es de 5V – 5%. RB0 puede programarse adem s comoentrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarsepara responder a interrupciones por cambio de estado. Las patas RB6 y RB7 se co-rresponden con las l neas de entrada de reloj y entrada de datos respectivamente,cuando est en modo programaci n del integrado.

Patas 15 y 16 - OSC1/CLKIN y OSC2/CLKOUT: Corresponden a los pines de laentrada externa de reloj y salida de oscilador a cristal respectivamente. Los distintoselementos de la familia 16X84X, dependiendo de la nomenclatura que utilizan tienen

Arquitectura de un PIC

Microcontroladores PIC 7

Figura 1Figura 1

Page 9: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

distintas caracter sticas de frecuencia m xima de funcionamiento, tipo de osciladorutilizado para generar frecuencias de reloj y margen de la tensi n de alimentaci n.

Los microcontroladores PIC, permiten cuatro tipos de osciladores externos paraaplicarles la frecuencia de funcionamiento. Durante el proceso de grabaci n, antesde introducir el programa en memoria, debe indicarse el tipo de oscilador empleadoen los bits FSOC1 y FSOC2 de la Palabra de Configuraci n. Los tipos de oscilado-res que pueden utilizar los PIC16X54/84 son:

* Oscilador de cristal o resonador de alta velocidad "HS"(High Speed Crystal/Re-sonator): Es un oscilador con una frecuencia comprendida entre 4MHz y 20MHz (fi-gura 2).

* Oscilador o resonador cer mico "XT" (Crystal/Resonator): Es un oscilador es-t ndar que permite una frecuencia de clock m xima de 4MHz.

* Oscilador a cristal o resonador cer mico de baja potencia "LP" (Low PowerCrystal): Se trata de un oscilador de bajo consumo construido con un cristal de cuar-zo o un resonador dise ado para trabajar con frecuencias comprendidas entre30kHz y 200kHz.

* Oscilador RC (resistencia capacitor): Tambi n es posible construir un osciladormediante la colocaci n de una resistencia y un capacitor externo. Se trata de un os-cilador de bajo costo.

Su circuito de aplicaci n es el que se muestra en la figura 3. Posee baja preci-si n la cual depende de la estabilidad de la red RC, pero es f cil de construir y debajo precio lo que lo hace interesante para muchas aplicaciones. La resistencia de-be tener un valor comprendido entre 5k‰ y 10k‰.

El circuito que opera con un cristal o un resonador se muestra en la figura 2 y de-pende de los valores de C1, C2 y del cristal para el buen funcionamiento del mismo.Se recomienda ver la tabla de datos del fabricante, aunque para los PIC16X54/84los capacitores pueden ser del orden de los 27pF para casi todo el rango de frecuen-cias.

En la figura 3 se muestra un oscilador construido a partir de una celda RC.

Arquitectura de un PIC

8 Microcontroladores PIC

Figura 2Figura 2Figura 3Figura 3

Page 10: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Resumen del DispositivoEl PIC16F84A, utilizado en muchas aplicaciones y que ha servido de base para

la elaboraci n del primer texto de esta serie titulado: Todo Sobre PICs , pertene-ce a la familia de rango medio de los microcontroladores PIC. Un diagrama en blo-ques se encuentra en la figura 4.

Arquitectura de un PIC

Microcontroladores PIC 9

Figura 4Figura 4

Page 11: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Ficha Did cticaAntes de avanzar sobre la estructura interna de un PIC, vamos a realizar el pri-

mer resumen mediante una ficha t cnica que contiene la descripci n interna del cir-cuito integrado.

Los circuitos integrados programables (PIC) de Microchip son microcontrolado-res con una estructura interna como la mostrada en la figura 4.

Existe un grupo de bloques dedicados a mejorar el funcionamiento pero sin in-fluir directamente en el flujo de señales. Vemos un temporizador de encendido, untemporizador de arranque del oscilador de CLOCK, un circuito de reset y un circui-to llamado de vigilancia o WATCHDOG. Los dos primeros bloques procuran unarranque ordenado para no producir una carga al mismo tiempo sobre la fuente.El circuito interno de reset se encarga de volver a “cero” el funcionamiento del cir-cuito cuando sea requerido. Por último, existe un circuito con un nombre curioso, siel lector sabe algo de inglés habrá traducido el nombre literalmente como “perroguardián”. Su función es estar vigilante el máximo tiempo que tarda el microproce-sador en completar su programa (o mejor sería decir, la derivación más larga desu programa) y en caso de superarse ese tiempo, provocar un reset automático por-que el microprocesador se quedó trabado en alguna parte de su programa. Tam-bién se dice que el microprocesador se quedó colgado o congelado.

Este bloque de circuitos no trabaja independientemente sino que requiere cone-xiones al exterior y al interior del dispositivo. Por ejemplo, no siempre son utiliza-dos y es el programa quien determina su utilización y además ajusta sus paráme-tros. Esto se realiza a través del bloque de control o decodificador de instruccio-nes.

Analicemos ahora la sección de arriba a la izquierda en donde observamos lamemoria de programa, el contador de programa, el registro de instrucciones y lapila o STACK de 8 niveles.

Cuando hablamos de registros nos referimos a pequeñas unidades de memoriatransitoria, construida por lo general con un registro de desplazamiento. Son me-morias volátiles que se utilizan para guardar información por un tiempo mínimo conel fin de realizar una operación compleja de varios pasos.

El contador de programa es el responsable de que el microprocesador vayaanalizando las instrucciones en orden ascendente. El guarda el número de instruc-ción en el STACK y la instrucción misma le pasa registro de instrucciones desdedonde se envía al resto del microprocesador.

El STACK es, en realidad, una pila de registros (en nuestro ejemplo hay 8) de-bido a que el programa puede tener derivaciones (en la jerga LOOPS, rulos o sub-programas). Cuando se termina de ejecutar un loop se debe volver al mismo pun-to del programa en donde se había producido la bifurcación y eso es posible por-que ese número de instrucción quedó guardado en uno de los registros de la pila.Es común que un loop tenga, a su vez, un loop secundario y cuando se ejecuta eseloop secundario se debe volver al mismo punto del loop primario, eso se consigue

Arquitectura de un PIC

10 Microcontroladores PIC

Page 12: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

guardando ese número de instrucción del loop secundario en otro registro de lapila.

Analicemos ahora la sección inferior derecha. En ese sector se ubican los blo-ques responsables de efectuar operaciones matemáticas y lógicas binarias; recor-demos que el nombre ALU proviene de Aritmetic Logic Unite (unidad arimética y ló-gica). En este sector es imprescindible utilizar un registro ya que una operación arit-mética o lógica siempre se efectúa entre dos números. Los números binarios que de-ben procesarse se toman de la memoria de datos, el primero se acumula en el re-gistro de trabajo o registro W (de Work = trabajo) el segundo es el presente en elinstante en que se invoca la memoria de datos.

Como las operaciones pueden ser encadenadas (cuando el resultado sirve co-mo operando de la siguiente operación, tal como el caso de un producto) el regis-tro W tiene un retorno a la ALU.

Vemos además que la ALU está comandada por el bloque MUX (MUltipleXa-dor). En efecto, la ALU requiere que se le envíen números para procesar que le lle-guen desde la memoria de datos pero antes se la debe predisponer para que efec-túe la operación requerida (comparación, rotación de dígitos, etc.).

El registro de estado o estatus colabora durante las operaciones matemáticas. Piense cómo opera Ud. para realizar una resta: primero ubica el primer núme-

ro, luego el segundo y después comienza a analizar los bits menos significativos(las unidades), pero si el número de arriba es menor que el número de abajo, en-tonces toma prestado de la columna de las decenas, luego debe recordar esto por-que el número de arriba en la columna de las decenas se redujo en una unidad.

En realidad, aunque se trate de una operación entre dos números su ejecuciónrequiere guardar lo que se llama acarreo en otro registro y este no es otra cosamás que el registro STATUS.

En resumen, las características sobresalientes de los PICs son las siguientes:

Denominación: PIC1XXXX.Longitud de palabra: 14 bits.Memoria: EEPROM. Desde 512bytes de ROM y 32bytes de RAM a 4kB de

ROM y 256bytes de RAM.Interface I/O: 13 patas seleccionables de entrada/salida en los modelos están-

dar.Arquitectura: Von Neumann (Instrucciones y datos juntos). La mayoría de las ins-

trucciones se ejecutan en un ciclo. Pero posee un set de sólo 35 instrucciones de ti-po RISC (Reduced Instruction Set Computer).

Alimentación: 4 a 6V.Encapsulado: Múltiples versiones, lo normal es DIP de 18 patas.Fácil de programar, fácil de cargar, extremadamente confiable, económico. Se

encuentra gran cantidad de software y hardware sin cargo.Ideal para Aplicaciones en servicio de equipos, diseños y construcción de "cir-

cuitos integrados a medida".

Arquitectura de un PIC

Microcontroladores PIC 11

Page 13: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

La memoria de programa contiene palabras de 1kB, lo que permite la formaci nde 1024 instrucciones, ya que cada palabra del programa posee el mismo ancho quecada instrucci n. La memoria de datos RAM contiene 68 bytes. La memoria de da-tos EEPROM contiene 64 bytes.

Adem s existen 13 patas de I/O que se pueden configurar para el usuario en for-ma individual. Algunas patas son multiplexadas con otras funciones del dispositivo(tal como vimos anteriormente). Estas funciones incluyen:

• Interrupciones externas.• Cambios en la interrupci n de PORTB.• Entrada de clock Timer0.

La Tabla 1 muestra las funciones de las patas del dispositivo con las descripcio-nes y detalles de cada una.

Arquitectura de un PIC

12 Microcontroladores PIC

Page 14: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Lo que Debe Saber Sobre los PICs

El PIC16X84 al igual que los dem s miembros de su familia, se caracterizan por-que:

a) El Procesador es segmentado tipo "pipe-line": Lo que significa que aplicala t cnica de segmentaci n que permite al procesador realizar simult neamente laejecuci n de una instrucci n y la b squeda del c digo de la siguiente instrucci n.Esto permite que se pueda ejecutar una instrucci n en un ciclo. (Cada ciclo de ins-trucci n son cuatro ciclos de reloj).

Es decir, la mayor a de las instrucciones se realizan en un ciclo de contador deprograma (ciclo de instrucci n) excepto las instrucciones de salto que necesitan dosciclos para ejecutarla.

Se determina el ciclo de instrucci n dividiendo por cuatro la frecuencia del osci-lador, elegida para el funcionamiento del microcontrolador tal como se observa en lafigura 5.

Es decir, la se al que proviene del oscilador externo, conectado a los pinesOSC1/CLKIN y OSC2/CLKOUT del microcontrolador, se divide en cuatro ciclos, ob-teni ndose as la se al requerida por el procesador interno para realizar las opera-

Arquitectura de un PIC

Microcontroladores PIC 13

Figura 5Figura 5

Page 15: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ciones. De esta manera se puede realizar la b squeda y ejecuci n de la instrucci n. El reloj de instrucci n es el ciclo interno que posee el microcontrolador para cro-

nometrar el tiempo de ejecuci n de las instruciones. Los pulsos entrantes del reloj son divididos por 4, generando diferentes se ales

denominadas Q1, Q2, Q3 y Q4. El estado Q1 hace incrementar el contador de pro-grama, Q2 y Q3, se encargan de la decodificaci n y ejecuci n de la instrucci n y porltimo, Q4 es la fase de b squeda de la instrucci n. El c digo se almacena en el re-

gistro de instrucciones.b) El procesador es de tipo RISC: Esto implica que el P puede operar con un

juego de instrucciones m nimo (35 instrucciones). Las CPU«s atendiendo al tipo deinstrucciones que utilizan pueden clasificarse en:

• CISC: (Complex Instruction Set Computer). Procesadores de juego de ins-trucciones complejo, que disponen de un elevado n mero de instrucciones (unas80), algunas de ellas complejas y potentes, pero que requieren muchos ciclos dem quina para ejecutar las instrucciones m s poderosas.

• RISC: (Reduced Instruction Set Computer). Controladores que manejan unjuego de instrucciones reducido, en los que la cantidad de instrucciones es m nima(en nuestro caso 35). Las instrucciones son muy simples y suelen ejecutarse en unciclo m quina. Adem s los RISC deben tener una estructura pipeline (vea nueva-mente la figura 1) y ejecutan todas las instrucciones a la misma velocidad.

• SISC: (Specific Instriction Set Computer). Computadoras que manejan unset de instrucciones espec fico.

c) Poseen una arquitectura tipo Harvard: Para la construcci n de microproce-sadores existen b sicamente dos tipos de arquitecturas, una en la que los datos yla memoria del programa poseen la misma direcci n (denominada Von Neumann) yotra en la que existe un BUS de comunicaci n independiente para la memoria de da-tos y la memoria de programa (arquitectura Harvard).

La mayor a de los microprocesadores tradicionales se basan en la estructura ti-po Von Neumann (figura 6), que se caracteriza por disponer de una nica memoria

Arquitectura de un PIC

14 Microcontroladores PIC

Figura 6Figura 6

Page 16: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

principal en la que se almacenan los datos y las instrucciones, teniendo en cuentaque existe un sistema de BUS de acceso formado por:

• Bus de datos • Bus de direcciones • Bus de control

El modelo Harvard, representado en la figura 7, dispone de dos memorias:• Memoria de datos • Memoria de Programa

En los procesadores basados en esta arquitectura cada memoria dispone de surespectivo bus, lo que permite, que la CPU pueda acceder de forma independientey simult nea a la memoria de datos y a la de programa (instrucciones). Como los bu-ses son independientes stos pueden tener distintos contenidos en la misma direc-ci n .

d) Son de arquitectura ortogonal basada en banco de registros: Esto signi-fica que cualquier instrucci n puede utilizar cualquier elemento de la arquitectura co-mo fuente o destino. Adem s todos los elementos del sistema (temporizadores,puertos de entrada/salida, posiciones de memoria, etc.), est n implementados f si-camente como registros (de ah el nombre banco de registros ). Al tener manejo debanco de registros, la ALU (Unidad Aritm tico-L gica) efect a sus operaciones condos operandos, uno que proviene del registro W (Work -que en otras CPUs recibeel nombre de Acumulador-), y el otro que se encuentra en cualquier otro registro del

P. En la figura 8 vemos el diagrama que indica c mo se ejecuta una instrucci n, laALU recibe datos del registro de trabajo y un registro MPX y el resultado puede ir acualquier registro o al registro W.

El PIC 16X54/84 posee caracter sticas importantes que lo hace til para el dise-o de circuitos generales. Entre las caracter sticas m s importantes podemos resal-

tar las siguientes:• Memoria de programa EEPROM de 1Kx14 bits • Memoria de datos dividida en 2 reas:

Arquitectura de un PIC

Microcontroladores PIC 15

Figura 7Figura 7

Page 17: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

rea RAM formada por 22 registros de prop sito espec fico (SFR) y36 de prop sito general (GPR).

rea EEPROM formada por 64 bytes. • ALU de 8 bits y registro de trabajo W del que normalmente recibe un operando

que puede ser cualquier registro, memoria, puerto de Entrada/Salida o el propio c -digo de instrucci n.

• Varios canales para conectar al bus de datos: PortA de 5 bits <RA0:RA4> ,PortB de 8 bits <RB0:RB7>, Temporizador con Preescaler TMR0, etc.

• Contador de programa de 13 bit (lo que en teor a permitir a direccionar 4kB dememoria, aunque el 16X84 solo dispone de 1kB de memoria implementada).

• Pila de 8 niveles.

La arquitectura del PIC16X84 se mantiene para todos los microcontroladores deesta subfamilia, diferenci ndose unos de otros por las siguientes caracter sticas:

• PIC 16F84: La memoria de programa es de lk, las palabras son de l4 bits, pe-ro de tipo Flash. La memoria de datos RAM tiene 68 registros de tama o byte deprop sito general, en lugar de 36.

• PIC16CR84: La memoria de programa es de 1k con palabras de 14 bits tipoROM y la de datos tiene iguales caracter sticas que el PIC16F84.

• PIC16F83: La memoria de programa es de 512 palabras de 14 bits y la RAMde datos tiene 36 bytes de registros de prop sito general.

• PIC16CR83: Es igual que el PIC16F83, pero la memoria de instrucciones es detipo ROM, o sea, s lo grabable durante el proceso de fabricaci n para ser utilizadoscon fines espec ficos (circuito integrado a medida).

La caracter stica m s importante del PIC16C84 es que su memoria de programaes del tipo EEPROM y en el caso del PIC16F84 la principal caracter stica es que su

Arquitectura de un PIC

16 Microcontroladores PIC

Figura 8Figura 8

Page 18: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

memoria es del tipo flash, por lo dem s, otros dispositivos de esta familia disponende m s memoria, tienen m s perif ricos, etc.

Los microcontroladores de la gama media disponen de un Contador de Progra-ma (PC CP) de 13 bits, cuyos bits de menor peso corresponden a los 8 bits del re-gistro PCL, implementado en la posici n de memoria RAM 02h (y duplicado en laposici n 82h),y los cinco bit de mayor peso del CP corresponden con los 5 bits demenor peso del registro PCLATCH, implementado en la posici n de memoria RAM0Ah (y duplicado en la posici n 8Ah), lo que le permite direccionar hasta 8k x 14 bitsdividido en p ginas de 2k x 14 bits. El PIC16C84 dispone de 1k x14 bits de memo-ria implementada, desde la posici n 0000h hasta la 03FFh, los 3 bit de mayor pesodel CP no se utilizan, as pues la direcci n 20h, 320h, 420h, A20h,1420h, etc. seconsidera como la misma (figura 9).

Un Reset provoca que se pongan acero todos los bits del los registros PCL(parte baja del PC) y PCLATCH, forzan-do que la direcci n de inicio sea la0000h. El vector de reset se almacena enla direcci n 0000h, mientras que el vec-tor de interrupci n est en la direcci n0004h (figura 10).

La memoria de programa de usuariopropiamente dicha, comienza en la posi-ci n 0005h y llega hasta la 03FFh.

La pila es una zona de memoria, quese encuentra separada tanto de la me-moria de programa como de la de datos.Tiene una estructura LIFO (Last In FirstOut), lo que significa que el ltimo datoque se guarda es el primero que sale.

Arquitectura de un PIC

Microcontroladores PIC 17

Figura 9Figura 9

Figura 10Figura 10

Page 19: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Tiene 8 niveles con una longitud de 13 bits cada uno. Su funcionamiento es como elde un buffer circular, de tal forma que el valor que se obtiene al realizar nueve des-plazamientos, es igual al primer desplazamiento. La nica manera de cargar la Pilaes a trav s de la instrucci n CALL (llamada a subrutina) o por una interrupci n quehacen que con cada una de ellas, se cargue el contenido del PC en el valor supe-rior de la Pila. Para recuperar el contenido de la Pila en el PC hay que ejecutar unainstrucci n RETURN, RETLW o RETFIE (vuelta del programa de atenci n a una su-brutina o interrupci n).

Palabras de Configuraci n e Identificaci n

Los PIC de la gama media disponen de una palabra de configuraci n de 14 bitsque se escribe durante el proceso de grabaci n del dispositivo y que debe hacersede acuerdo con el sistema en el que se va a insertar. Dichos bits ocupan la posici nreservada de memoria de programa 2007h. La estructura de la palabra de configu-raci n es la mostrada en la figura 11.

Bit 4: CP, bit de configuraci n de la protecci n 1= Protecci n de c digo desactivado0= Protecci n de c digo activado

Bit 3: PWRTE, activaci n del temporizador "Power-Up"1= Desactivado0= Activado

Bit 2: WDTE, bit de configuraci n habilitaci n del Watchdog (WDT)1: WDT activado0: WDT desactivado

Bit 1 y Bit 0: FOSC<1:0>, tipo de oscilador empleado11: Oscilador RC10: Oscilador HS ( 8 - 20MHz)01: Oscilador XT ( 100 KHz- 4MHz)00: Oscilador LP (Bajo consumo 32- 200Hz)

Arquitectura de un PIC

18 Microcontroladores PIC

Figura 11Figura 11

Page 20: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Adem s dispone de cuatro posiciones de memoria de programa ubicadas en lasdirecciones <2000h:2003h>, reservadas para las Palabras de Identificaci n ID. Es-tas palabras que se escriben durante el proceso de grabaci n, s lo emplean los 4bits de menos peso y se utilizan por el programador para indicar el c digo del dis-positivo, el n mero de serie, la versi n del programa, etc.

Organizaci n de la MemoriaEn el PIC16F84A existen dos bloques de memoria. Estos son la memoria del pro-

grama y la memoria de datos. Cada bloque posee su propio bus, de tal forma que elacceso a cada uno puede producirse durante el mismo ciclo del oscilador.

La memoria de datos puede dividirse m s a n en la RAM de fines generales ylos Registros de Funciones Especiales (SFR).

El rea de la memoria de datos contiene tambi n los datos de la memoria EE-PROM. Esta memoria no est directamente introducida en la memoria de datos, sino es registrada en forma indirecta. Esto significa que un puntero indirecto de direc-ciones especifica la direcci n de la memoria de datos EEPROM para escribir y leer.Los 64 bytes de la memoria de datos EEPROM poseen el rango de direcciones de0h a 3Fh. M s detalles sobre la memoria EEPROM veremos en otro apartado.

Organizaci n de la Memoria de Programas.El PIC16FXX posee un contador de programas de 13 bits capaz de direccionar

un espacio de memoria de programas de 8k x 14. Para el Pic16F84A, los primeros1k x 14 (0000h-03FFh) est n f sicamente implementados como vimos en la figura10. Tal como se muestra, el acceso a una locaci n por encima de la direcci n f sica-mente implementada, causar un plegado. Por ejemplo, las locaciones 20h, 420h,820h, C20h, 1020h,1420h, 1820h y 1C20h tendr n la misma instrucci n.

El vector de reset est en 000h y el vector de interrupt en 0004h.Nota: Como puede observar, estamos repitiendo algunos conceptos; esto lo ha-

cemos porque tratamos de ver un tema desde distintos puntos de vista con el obje-to de facilitar el aprendizaje del lector.

Organizaci n de la Memoria de Datos.La memoria de datos est repartida en dos reas. El primero es el rea de Re-

gistros de Funciones especiales (SFR), mientras que el segundo es el Registro deFines Generales (GPR). Los registros SFR controlan el funcionamiento del disposi-tivo. Partes de la memoria de datos est n colocados en bancos. Esto es v lido tan-to para el rea de SFR como para el rea GPR. El rea de GPR es apilado para per-mitir m s que 116 bytes de RAM de uso general. Los reas de apilados del SFR se

Arquitectura de un PIC

Microcontroladores PIC 19

Page 21: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

destinan a los registros que controlanlas funciones perif ricas. El apilado re-quiere el uso de bits de control para laselecci n de bancos. Estos bits de con-trol se encuentran en el registro de STA-TUS. La figura 12 muestra la organiza-ci n del mapa de datos de la memoria.

Las instrucciones MOVWF y MOVFpermiten mover valores del registro Whasta cualquier locaci n en el archivode registros ( F ) y viceversa.

Se puede acceder a la memoria dedatos entera en forma directa usando ladirecci n absoluta de cada registro o enforma indirecta mediante el Registro deSelecci n de Archivos (FSR). El direc-cionamiento indirecto usa el bit RP0 pa-ra acceder a las reas apiladas de lamemoria de datos.

La memoria de datos est divididaen dos bancos que contienen los regis-tros de uso general y los registros defunciones especiales. El Banco 0 es se-leccionado eliminando el bit RP0 (STA-TUS<5>). El ajuste del bit RP0 seleccio-na el Banco 1. Cada Banco se extiendehasta 7Fh (128 bytes). Las primeras do-ce locaciones de cada Banco est n re-servadas para los Registros de Funcio-nes Especiales (SFR). El resto son Re-gistros de Uso general implementados como RAM.

Los Registros del PIC

Archivo de Registro de Uso General.Cada Registro de Uso general (GPR) tiene un ancho de 8 bits y se accede en for-

ma directa o indirecta mediante el FSR, como se explica m s adelante.Las direcciones GPR en el banco 1 est n conectados con direcciones en el Ban-

co 0. Como ejemplo, la direcci n de la locaci n 0Ch o 8Ch, llamar el mismo GPR.

Arquitectura de un PIC

20 Microcontroladores PIC

Fig. 12Fig. 12

Page 22: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Registros de Funciones Especiales (SFR).Los Registros de Funciones especiales de la Figura 13 son usados por la CPU y

las funciones Perif ricas para controlar el funcionamiento del dispositivo. Estos re-gistros son RAM Est ticos (si bien mantenemos la figura en ingl s para preservar elformato dado por los manuales de Microchip, tambi n brindamos la versi n en cas-tellano).

Arquitectura de un PIC

Microcontroladores PIC 21

Figura 13.AFigura 13.A

Page 23: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Arquitectura de un PIC

22 Microcontroladores PIC

Figura 13.BFigura 13.B

Page 24: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Los Registros de Funciones Especiales pueden clasificarse en dos grupos:

a) n cleo y b) perif rico.

Aquellos asociados con las funciones del n cleo se describen en esta Secci n.Los relacionados con el funcionamiento de las caracter sticas perif ricas se descri-ben en la Secci n respectiva.

Leyendas de la figura 13 A y B:x = desconocido, u = sin cambio, - = sin implementar, leer como ceroq = valor depende de las condiciones.

Nota:1. El byte superior del contador de programa no es directamente accesible.

PCLATH es un registro esclavo para PC<12:8>. El contenido de PCLATH puede sertransferido al byte superior del contador de programa, pero el contenido dePC<12:8> no es transferido nunca a PCLATH.

2. Los bits de Status TO y PD del registro de STATUS no son afectados por elreset de MCLR.

3. Otros resets que no son POWER UP incluyen: reset externo por MCLR y el re-set del temporizador de watchdog.

4. En todos los resets del dispositivo, estas patas son configuradas como entra-das.

5. Este es el valor que se encontrar en el latch de la salida del port.

Registro de StatusEl registro del STATUS contiene el status aritm tico de la ALU, el status de reset

y el bit selector de bancos para la memoria de datos.Como en todo registro, el registro de STATUS puede ser el destino de cualquier

instrucci n. Si el registro de STATUS es el destino de una instrucci n que afecta losbits Z, DC o C, entonces la escritura de estos tres bits es desactivado. Estos bits sonajustados o anulados en concordancia con la l gica del dispositivo. Adem s, los bitsTO y PD (la notaci n TO significa que el bit est activo con 1 o lo que es lo mis-mo: TO = negado de TO) no pueden ser escritos. Por lo tanto, el resultado de unainstrucci n con el registro de STATUS como destino, puede ser diferente al previsto.

Por ejemplo, CLRF STATUS anular los tres bits superiores y ajustar el bit Z.Esto dejar el registro de STATUS como 000u u1uu (donde u queda sin cambio).

S lo las instrucciones BCF, BSF, SWAPF y MOVWF deben ser usados para al-

Arquitectura de un PIC

Microcontroladores PIC 23

Page 25: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

terar el registro STATUS, como veremos en el cap tulo dedicado al Set de Instruc-ciones, debido a que estas instrucciones no afectan ning n bit de status.

Notas:1. Los bits IRP y RP1 (STATUS<:6>) no se usan en el PIC16F84A y deben ser

programados como anulados. El uso de estos bits como bits R/W de uso general, noes recomendado, debido a que puede afectar la compatibilidad para arriba con pro-ductos futuros.

2. Los bits C y DC funcionan como bits de BORROW (BORROW es el negadode BORROW), en operaciones de resta. Ver ejemplos en las instrucciones deSUBLW y SUBWF del cap tulo de Set de Instrucciones.

3. Cuando el registro de STATUS es el destino para una instrucci n que afectalos bits Z, DC o C, entonces se impide la escritura de estos tres bits. El bit espec fi-co ser actualizado en concordancia con la l gica del dispositivo.

En la Figura 14 vemos aspectos del registro de STATUS.

Veamos qu significado y qu valor puede tener cada bit del registro STATUS:

Bit 7, IRP: Bit de Selecci n de Banco de Registro, usado para direccionamientoindirecto. El bit IRP no es usado por el PIC16F84A. Mantenga IRP desactivado.

Bit 6-5, RP1:RP0: Bits de Selecci n de Banco de Registro, usado para direccio-namiento directo.

00 = Banco 0 (00h — 7Fh)01 = Banco 1 (80h — FFh)Cada Banco posee 128 bytes. En el PIC16F84A se usa solo RP0. Mantenga.RP1 se mantendr desactivado.

Bit 4, TO : Bit de Time out (fin de tiempo). 1 = Despu s de Encendido, instrucci n CLRWDT, o instrucci n SLEEP (to-

ma el estado 1 ).

Arquitectura de un PIC

24 Microcontroladores PIC

Figura 14Figura 14

Page 26: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Arquitectura de un PIC

Microcontroladores PIC 25

0 = Cuando est en 0 es porque sucedi un Time out WDT (perro guar-di n).

Bit 3, PD: Bit de Power Down.1 = Despu s de Power up o por la instrucci n CLRWDT.0 = Al ejecutar la instrucci n SLEEP.

Bit 2, Z: Bit cero.1 = El resultado de una operaci n aritm tica o l gica es cero.0 = El resultado de una operaci n aritm tica o l gica no es cero.

Bit 1, DC: Bit de llevar o prestar en las instrucciones ADDWF y ADDLW. Paraprestar la polaridad es invertida.

1 = Cuando ocurre un exceso en el resultado del 4… bit de menos peso. Aca-rreo en la suma.

0 = Cuando no ocurre un exceso en el resultado del 4… bit de menos peso.No hay acarreo en la suma (en la resta es lo contrario).

Bit 0, C: Bit de carry/borrow (llevar/prestar) para las instrucciones ADDWF yADDLW.

1 = Cuando ocurre un exceso en el resultado del bit m s significativo. Aca-rreo en la suma y no en la resta.

0 = Cuando no ocurre un exceso en el resultado del bit m s significativo.Acarreo en la resta y no en la suma.

Nota: Para BORROW (prestar d gitos) se invierte la polaridad. Una resta se eje-cuta al sumar el complemento de dos del segundo operando. Para instrucciones derotaci n (RRF, RLF), este bit es cargado con el bit de orden superior o inferior delregistro de fuente.

Recuerde que:_________ ___ ___

BORROW = BORROW TO = TO PD = PD

Registro OPTION_REG. Ocupa la posici n la 81h del banco de registro 1. Es recomendable darle otro

nombre por ejemplo "OPTION" en el programa ensamblador, para que el programaensamblador no d mensajes de error, ya que en los PIC de la gama baja existe lainstrucci n OPTION.

El registro OPTION_REG (o simplemente registro OPTION) es un registro paraescribir y leer que contiene varios bits de control para configurar el prescalerTMR0/WDT, el interrupt INT externo, el TMR0 y el pull-up d bil de PORTB.

Page 27: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Arquitectura de un PIC

26 Microcontroladores PIC

Nota: Cuando el prescaler es asignado a WDT (PSA = 1), TMR0 tiene una asignaci n

de prescalador de 1:1.En la figura 15 vemos el Registro de OPTION_REG (direcci n 81h).

bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit1: Desactivadas0: Activadas

bit 6, INTEDG: Flanco activo para el control de interrupciones1: Con flanco Ascendente0: Con flanco Descendente

bit 5, TOCS: Fuente de Reloj para TMR01: Pulsos introducidos a trav s de RA4/T0CK1 (Contador)0: Pulsos de reloj interno Fosc/4 (Temporizador)

bit 4, TOSE: Tipo de flanco en TOCK11: Incremento de TMR0 cada flanco descendente0: Incremento de TMR0 cada flanco ascendente

bit 3, PSA: Bit de asignaci n del prescaler divisor de frecuencia1: El divisor de frecuencia se asigna al WDT0: El divisor de frecuencia se asigna al TMR0

bit 2-0, PS2:PSO: Rango con el que act a el divisor de frecuencia, ste procedede acuerdo con la siguiente tabla:

Figura 15Figura 15

Page 28: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Arquitectura de un PIC

Microcontroladores PIC 27

El Registro INTCONEl registro INTCON es un registro de lectura y escritura que contiene los diferen-

tes bits de activaci n de todas las fuentes de interrupci n. Sus detalles se encuen-tran en la figura 16.

Las siglas de esta figura significan lo siguiente: R = Bit LegibleW = Bit EscribibleU = Bit sin implementar, leer como cero- X = valor en reset POR.

Cada bit posee el significado y toma el valor que describimos a continuaci n:

Bit 7, GIE: Bit Global Interrupt Enable.1 = Activa todos los Interrupt sin m scara.0 = Desactiva todos los Interrupt.

Bit 6, EIIE: Bit EE Write Complete Interrupt Enable.1 = Activa el EE Write Complete Interrupt.0 = Desactiva el EE Write Complete Interrupt.

Bit 5, T0IE: Bit de TMR0 Overflow Interrupt Enable.

Figura 16Figura 16

Page 29: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

1 = Activa el TMR0 Interrupt.0 = Desactiva el TMR0 Interrupt.

Bit 4, INTE: Bit de Interrupt Enable RB0/INT.1 = Activa el Interrupt RB0/INT.0 = Desactiva el Interrupt RB0/INT.

Bit 3, RBIE: Bit de RB Port Change Interrupt Enable.1 = Activa el RB Port Change Interrupt.0 = Desactiva el RB Port Change Interrupt.

Bit 2, T0IF: Bit de TMR0 Overflow Interrupt Flag.1 = TMR0 tiene exceso y debe ser limpiado en software.0 = TMR0 no tiene exceso.

Bit 1, INTF: Bit de RB0/INT Interrupt Flag. 1 = Ocurri un RB0/INT Interrupt.0 = No ocurri un RB0/INT Interrupt.

Bit 0, RBIF: Bit de RB Port Change Interrupt Flag.1 = Cuando por lo menos una de las patas de RB7 a RB4 cambi (debe ser

limpiado en software). 0 = Ninguna de las patas RB7:RB4 cambi .

PCL y PCLATHEl contador de programas (PC de program counter , tambi n denominado CP en

este texto) especifica la direcci n de la instrucci n a buscar para la ejecuci n. El an-cho del PC es de 13 bits. El byte bajo se denomina Registro PCL. Este Registro eslegible y escribible. El byte alto se denomina Registro PCH. Este Registro contienePC<12:8> bits y no es legible ni escribible en forma directa. Todas las actualizacio-nes del Registro PCH se canalizan a trav s del Registro PCLATH.

STACK (PILA)La pila permite que ocurra una combinaci n de hasta 8 llamadas de programa e

interrupciones. La pila contiene la direcci n de retorno de esta rama de la ejecuci nde programas.

Los dispositivos de rango medio poseen una pila de hardware de una profundi-dad de 8 niveles por 13 bits de ancho. El espacio de la pila no es parte de ning nprograma ni de espacio de datos y el puntero de la pila no es legible ni escribible. Elcontador PC ( CP) es colocado a la pila v a PUSH cuando una instrucci n CALL esejecutada o cuando una orden de interrupt produce una ramificaci n. La pila ejecu-

Arquitectura de un PIC

28 Microcontroladores PIC

Page 30: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ta la orden POP cuando se ejecutan las rdenes RETURN, RETLW o RETFIE.PCLATH no se modifica cuando la pila ejecuta PUSH o POP.

Despu s de ejecutar ocho veces la orden PUSH, la novena sobrescribe el valorque fuera almacenado del primer PUSH. El d cimo PUSH sobrescribe el segundoPUSH y as sucesivamente.

REGISTROS INDF y FSREl registro INDF no es un registro f sico. Dirigirse a INDF en realidad produce la

direcci n del registro que est contenido en el registro FSR. FSR es un puntero. Es-to se denomina Direccionamiento Indirecto.

EJEMPLOS:1: Direccionamiento Indirecto.• El archivo de registro 05 contiene el valor 10h.• El archivo de registro 06 contiene el valor 0Ah.• Cargue el valor 05 al registro FSR.• La lectura del registro INDF devuelve el valor de 10h.• Incremente el valor del registro INDF por uno (FSR = 06).• La lectura del registro INDF devuelve ahora el valor de 0Ah.La lectura indirecta de INDF mismo (FSR = 0), producir 00h. Escribir al registro

indirectamente resulta en una no-operaci n, si bien el bit de STATUS puede quedarafectado.

Un programa simple para desactivar las locaciones 20h-2Fh del RAM, usando eldireccionamiento indirecto, puede verse en el siguiente ejemplo

Movlw 0x22 ; cargo al registro W con el n mero 22 ; en hexadecimal

Movwf FSR ; transfiero el contenido de W al registro FSR

PROX Clrf INDF ; borro el contenido del registro INDF

Incf FSR ; incremento en una unidad el contenido ; del registro FSR

Btfss FSR,4 ; que el CP salte una unidad si el bit 4 ; del FSR es 1

Goto PROX ; si el bit 4 de FSR = 0, entonces vuelva ; a PROX

Una direcci n efectiva de 9 bits se obtiene por la concatenaci n del registro FSRde ocho bits con el bit IRP (STATUS<7>), como vemos en la figura 17.

Arquitectura de un PIC

Microcontroladores PIC 29

Page 31: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Sin embargo, IRP no es usado en el PIC16F84A.

PORTS I/OAlgunas patas de ports I/O est n multiplexadas con una funci n alternativa para

las prestaciones perif ricas del dispositivo. En general, cuando se activa un perif -rico, esta pata no debe usarse como pata I/O de uso general.

Registros PORTA y TRISAPORTA es un puerto bidireccional de un ancho de 5 bits. El registro de direccio-

nes de datos correspondiente es TRISA. Ajustar el bit de TRISA a 1 , har de la pa-ta correspondiente de PORTA una entrada, lo que significa que el driver de salidacorrespondiente adquiere un modo de alta impedancia. Desactivar un bit de TRISA(= 0) convierte la pata correspondiente de PORTA en salida, lo que significa que elcontenido del latch de salida se encuentra en la pata seleccionada.

NOTA: En un Reset de Fuente (POWER RESET), estas patas son configuradascomo entradas y leen como 0 .

En la lectura, el registro de PORTA lee el status de las patas, mientras que al es-cribir, se escribe en el latch del port.

Un latch o cerrojo es un circuito que permite retener datos en una posici n depreparaci n hasta que sea pedido, generalmente por medio de otro circuito.

Todas las operaciones de escritura son del tipo de lectura-modificaci n-escritu-ra . Esto significa que escribir a un port implica que las patas del port son le das, es-

Arquitectura de un PIC

30 Microcontroladores PIC

Figura 17Figura 17

Page 32: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

te valor es modificado, y despu s escrito al latch del port. La pata RA4 es multiple-xada con el temporizador, entrada Timer0 de la entrada del m dulo del clock y setransforma en la pata RA4/T0CKI. Esta pata RA4/T0CKI es la entrada de un dispa-rador Schmitt y posee una salida de colector abierto. Las dem s patas de port RAposeen niveles de entrada TTL y son drivers completos del tipo CMOS. En la figura18 vemos el diagrama en bloques de una de las patas RA3 a RA0.

Para inicializar el PORTA, podemos realizar la siguiente rutina:

CLRF PORTA ; borro el contenido del registro PORTA

BSF STATUS, RPO ; pone a 1 el bit RPO del registro STATUS

MOVLW B 0000 1111 ; cargo a W con el n mero 0x0F

MOVWF TRISA ; selecciono a las patas RA3 a RA0 como salidas ; y la pata RA4 como entrada.

En el ejemplo del programa, las dos primeras instrucciones no tienen nada quever con la definici n de las patas del puerto A, en realidad la inicializaci n comienzacon la tercera instrucci n o l nea de programa. En la figura 19 se observa el diagra-ma de la pata RA4.

Una s ntesis de la funci n que cumple cada pata del PORT se muestra en la si-guiente tabla:

Arquitectura de un PIC

Microcontroladores PIC 31

Figura 18Figura 18 Figura 19Figura 19

Page 33: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Registros PORTB y TRISBPORTB es un port bidireccional con un ancho de 8 bits. El registro de direccio-

nes de datos correspondiente es TRISB. Si se ajusta el bit TRISB = 1, la pataPORTB correspondiente se transforma en entrada, quiere decir que coloca el driverde salida correspondiente en el modo de alta impedancia.

Limpiar el bit TRISB (= 0), transforma la pata correspondiente de PORTB en sa-lida, quiere decir que el contenido del latch de salida aparece en la pata selecciona-da.

Para inicializar el PORTB podemos ejecutar la siguiente sentencia:

MOVLW B 0010 1111 ; cargo a W con el n mero 0x0F

MOVWF TRISB ; selecciono las patas RB0 a RB3 y RB5 como salidas, ; mientras que las patas RB4, RB6 y RB7 ; ser n entradas.

Cada una de las patas de PORTB posee un resistor de polarizaci n interno. Unbit de control nico puede activar todos los resistores. Se realiza esto limpiando elbit RBPU (OPTION<7>).

Este circuito es desactivado autom ticamente cuando la pata del port es configu-rada como salida. Estos circuitos son desactivados en un reset de encendido.

Cuatro de las patas de PORTB, RB7:RB4, poseen una caracter stica de interruptal cambiar. Solo las patas configuradas como entradas pueden producir este inte-rrupt.

Esto significa que toda pata RB7 a RB4 configurada como salida est excluida dela comparaci n de interrupt al cambiar. Las patas de entrada de RB7 a RB4, se com-paran con el valor anterior asentado en el latch de la ltima lectura de PORTB. Lassalidas de desequilibrio de RB7 a RB4 son combinadas en una funci n l gica ORpara generar el cambio del RB Port con el bit de indicaci n RBIF (INTCON<0>) co-mo flag.

Arquitectura de un PIC

32 Microcontroladores PIC

Page 34: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Esta interrupci n puede despertar el dispositivo de SLEEP. El usuario puede lim-piar el interrupt en la rutina de service en la siguiente manera:

a) Toda lectura o escritura de PORTB. Esto termina con la condici n de desequi-librio.

b) Limpie el bit del flag RBIF.

Una condici n de desequilibrio har ajustar el bit de flag RBIF. La lectura dePORTB termina con la condici n de desequilibrio y permite la limpieza del bit RBIF.La prestaci n de interrumpir al cambiar es recomendada para operaciones de des-pertar al oprimir una tecla y para operaciones donde PORTB solo es usado para laprestaci n de interrupt al cambiar. No se recomienda el escrutinio (polling) dePORTB mientras se usa la prestaci n de interrupt al cambio. En la figura 20 se pue-de observar el diagrama en bloque correspondiente al sistema de patas RB4 a RB7,mientras que la figura 21 muestra lo propio para las patas RB0 a RB3.

En la siguiente tabla vemos las funciones de PORTB.

Arquitectura de un PIC

Microcontroladores PIC 33

Figura 20Figura 20 Figura 21Figura 21

Page 35: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

M dulo Temporizador TIMER0

El m dulo temporizador/contador posee las siguientes prestaciones:

• Temporizador/contador de 8 bits.• Legible y escribible.• Selector de clock interno o externo.• Prescalador de 8 bits programable por software.• Interrupt por exceso de FFh a 00h.

En la figura 22 vemos un diagrama en bloques simplificado del temporizador.

El temporizador TIMER0 puede funcionar como temporizador o como contador.El modo de temporizador se selecciona limpiando el bit T0CS (OPTION-

_REG<5>). En el modo de temporizador, el m dulo Timer0 incrementa cada ciclo deinstrucciones sin divisi n de frecuencia. Si se escribe en el registro TMR0, el incre-mento es inhibido durante los siguientes ciclos de instrucciones. El usuario puedeevitar eso escribiendo un valor ajustado al registro TMR0.

Arquitectura de un PIC

34 Microcontroladores PIC

Figura 22Figura 22

Page 36: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

El modo de contador se selecciona al ajustar el bit T0CS (OPTION_REG<5>). Enel modo de contador, el m dulo Timer0 incrementa en el flanco ascendente o des-cendente de la pata RA4/T0CKI. El flanco ascendente es determinado por el bit Ti-mer Source Edge Select, T0SE (OPTION_REG<4>). Limpiando el bit T0SE selec-ciona el borde ascendente.

Cuando se usa una entrada de clock externo en el Timer0, se deben cumplir cier-tos requisitos para que el clock externo pueda ser sincronizado con la fase del clockinterno (Tosc). Adem s existe un retardo en el incremento real del Timer0 despu sde la sincronizaci n.

Prescaler (Divisor de Frecuencia)Se dispone de un contador de 8 bits como prescaler en el m dulo Timer0, o co-

mo post escalador para el temporizador Watchdog, respectivamente. En la Figura 23vemos este esquema.

Para mayor simplicidad, nos referimos a este contador como prescaler. Observeque s lo existe un divisor que es compartido mutuamente en forma exclusiva por elm dulo del Temporizador y el Temporizador del Watchdog. De esta manera, unaasignaci n del prescaler para el m dulo del temporizador significa que no hay divi-sor para el Temporizador del Watchdog y viceversa.

El prescaler no es legible ni escribible.

Los bits PSA y PS2:PS0 (OPTION_REG<3:0>) determinan la asignaci n y la ta-

Arquitectura de un PIC

Microcontroladores PIC 35

Figura 23Figura 23

Page 37: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

sa de la divisi n. Al limpiar el bit PSA se asignar el prescaler al m dulo del Timer0.Cuando ste es asignado al m dulo Timer0, los valores de divisi n son selecciona-bles en 1:2, 1:4,..... 1:256.

El ajuste del bit PSA asignar el prescaler al Temporizador Watchdog (WDT).Cuando el prescaler es asignado a WDT, los valores de divisi n son seleccionablesen 1:1, 1:2, ..... 1:128.

Cuando est asignado al m dulo Timer0, todas las instrucciones escritas al re-gistro TMR0, como por ejemplo: CLRF 1, MOVWF 1, BSF 1,x ...y otros, limpiar n elprescaler. Cuando est asignado al WDT, una instrucci n CLRWDT limpiar el pres-caler junto con WDT.

NOTA: Escribir a TMR0 cuando el prescaler est asignado a Timer0, limpiar elconteo del prescaler, pero no modificar su asignaci n.

Cabe aclarar que la asignaci n del prescaler est completamente bajo el controldel software y por lo tanto puede ser cambiado durante la ejecuci n del programa.

NOTA: Para evitar un RESET no intencional del dispositivo, es necesario ejecu-tar una secuencia de instrucciones espec ficas cuando se cambia la asignaci n delprescaler del Timer0 a WDT. Esta secuencia debe ser seguida a n cuando WDT es-t inactivo.

Interrupci n de Timer0La interrupci n de TMR0 se genera cuando el registro TMR0 excede su capaci-

dad de FFh a 00h. Este exceso ajusta el bit T0IF (INTCON<2>). La interrupci n pue-de ser enmascarada limpiando el bit T0IE (INTCON<5>). El bit T0IF se limpia porsoftware por la rutina de service del m dulo Timer0, antes de reactivar esta interrup-ci n. La interrupci n TMR0 no puede despertar al procesador de SLEEP, debido aque el temporizador est desconectado durante SLEEP.

En la siguiente tabla vemos los registros asociados con el Timer.

Memoria de Datos EEPROMLa memoria de datos EEPROM se puede leer y escribir durante el funcionamien-

to normal del P, para el rango completo de Vdd. Esta memoria no est ordenada

Arquitectura de un PIC

36 Microcontroladores PIC

Page 38: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

en forma de mapa directamente en el espacio de los archivos del registro sino quees direccionada indirectamente mediante los Registros de Funciones Especiales(SFR). Existen cuatro SFR usados para leer y escribir en esta memoria. Estos regis-tros son:

• EECON1• EECON2 (este registro no est implementado f sicamente) • EEDATA• EEADR

EEDATA contiene los datos de 8 bits para leer y escribir, y EEADR contiene lasdirecciones de las locaciones del EEPROM que son accedidos. Los dispositivosPIC16F84A poseen 64 bytes de datos de EEPROM con un rango de direcciones queabarca de 0h a 3Fh.

La memoria de datos EEPROM permite leer y escribir bytes. Una escritura de by-te borra autom ticamente la locaci n y escribe los datos nuevos (borra antes de es-cribir). La memoria de datos EEPROM est preparada para ciclos elevados de leery escribir. El tiempo de escribir es controlado por un temporizador incorporado en elchip. El tiempo de escritura puede variar con la tensi n y temperatura y tambi n en-tre una unidad y otra. Para l mites exactos s rvase referir a las especificaciones decorriente alterna.

Cuando el dispositivo posee protecci n codificada, la unidad CPU puede conti-nuar de leer y escribir los datos en la memoria del EEPROM. El programador del dis-positivo no tiene m s acceso a la memoria.

En la figura 24 vemos el registro EECON1 en su direcci n 88h.

Las siglas de esta figura tienen el siguiente significado:R = Bit Legible W = Bit EscribibleS = Bit Ajustable U = Sin Implementar, lea como cero, -n = Valor de acuerdo al Reset POR (donde n puede ser x, o).

El significado y estado de los bits de la memoria son los siguientes:

Bits 7, 6 y 5: Sin Implementar, lea como cero.

Bit 4, EEIF: Bit indicador de EEPROM Write Operation Interrupt (FLAG). 1 = La operaci n de escritura est cumplida, debe ser borrado en el software.

Arquitectura de un PIC

Microcontroladores PIC 37

Figura 24Figura 24

Page 39: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

0 = La operaci n de escribir no est cumplida o no empez a n.

Bit 3, WRERR: Bit indicador de Error en EEPROM.1 = Una operaci n de escribir termin en forma prematura. Causado

por un RESET MCLR o un RESET WDT durante el funcionamiento normal.0 = La operaci n de escribir est terminada.

Bit 2, WREN: Bit de Activar la Escritura.1 = Permite ciclos de escritura.0 = Inhibe la escritura al EEPROM.

Bit 1, WR: Bit de Control de Escritura.1 = Inicia un ciclo de escritura. El bit es anulado por hardware una

vez terminada la operaci n. El bit WR s lo puede ser ajustado por software, pero no borrado.

0 = El ciclo de escritura al EEPROM est completo.

Bit 0, RD: Bit de Control de Lectura.1 = Inicia una lectura del EEPROM. La lectura ocupa s lo un ciclo.

RD es borrado con hardware. El bit RD s lo puede ser ajustado por software, pero no borrado.

0 = No comienza una lectura del EEPROM.

Lectura de la Memoria de Datos de EEPROMPara leer una locaci n de memoria de datos, el usuario debe escribir la direcci n

al registro EEADR y despu s ajustar el bit de control RD (EECON1<0>). El dato es-t disponible en el siguiente ciclo en el registro EEDATA y por lo tanto puede ser le -do en la instrucci n siguiente. EEDATA conservar este valor hasta otra lectura ohasta que sea escrito por el usuario durante una operaci n de escribir.

Ejemplo:Lectura de EEPROM de Datos. Veamos como podr a ser la secuencia de un pro-

grama para leer una locaci n de memoria:

BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 0

MOVLW 0x20 ; cargo al registro W con la direcci n de la memoria; de datos que voy a leer

MOVWF EEADR ; muevo el contenido del registro W al registro ; EEADR que es el registro de direccionamiento de ; la EEPROM, dicho de otra manera, estoy ; realizando el direccionamiento para leer

Arquitectura de un PIC

38 Microcontroladores PIC

Page 40: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 1

BSF EECON1, RD ; pone a uno el bit 0 (RD) de control de lectura del ; registro de la memoria de datos (EECON1), esto ; significa que se inicia la lectura del dato ; contenido en la direcci n que hemos ; cargado en EEADR

BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 0

MOVF EEDATA, W ; como en la instrucci n anterior dijimos que ; har amos un direccionamiento directo y EEDATA; es el registro de datos donde est la informaci n ; le da, ahora, con la instrucci n MOVF hemos ; cargado al registro de trabajo con el dato le do ; de la memoria de datos.

Escritura de la Memoria de Datos EEPROMPara escribir una locaci n de memoria de datos EEPROM, el usuario debe escri-

bir la direcci n primero al registro EEADR y los datos al registro EEDATA. Despu sel usuario debe seguir una secuencia espec fica para iniciar la escritura de cada by-te. Cabe aclarar que si deseo leer o escribir una direcci n de memoria tambi n esposible nombrar una variable , tema que analizaremos m s adelante.

Ejemplo Escritura de EEPROM de Datos. Veamos c mo podr a ser la secuencia de un

programa para escribir una locaci n de memoria:

BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 1

MOVLW 0x18 ; cargo al registro de trabajo con la direcci n ; de la memoria donde escribir el dato

MOVWF EEADR ; en la direcci n de registro de escritura ; coloco la direcci n donde escribir el dato

MOVLW 0x12 ; cargo a W con el n mero 12 en hexadecimal que ; ser el dato que voy a escribir en la posici n 18h

MOVWF EEDATA ; escribimos el dato en EEDATA

Arquitectura de un PIC

Microcontroladores PIC 39

Page 41: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

BSF EECON1,WREN ; solicito el permiso de escritura y ; comienza la secuencia de escritura

MOVLW 0x55 ; cargo a W con 55h

MOVWF EECON2 ; se escribe el dato 12h en EECON2

MOVLW 0xAA ; cargo a W con AAh

MOVWF EECON2 ; se escribe AAh en EECON2

BSF EECON1, WR ; comienza la escritura

WI BTFSC EECON1,WR ; espera a que termine la escritura

GOTO WI ;

BCF STATUS,R0 ; selecci n del banco 0

La escritura no se inicia si las secuencias arriba mencionadas no se cumplenexactamente para cada byte. Escribir 55h a EECON2, escribir AAh a EECON2, des-pu s ajustar el bit WR. Recomendamos especialmente desactivar las interrupcionesdurante este segmento del c digo.

Adem s, el bit WREN en EECON1 debe ser ajustado para activar la escritura.Este mecanismo impide la escritura accidental al EEPROM de datos debido a ines-peradas ejecuciones del c digo, por ejemplo por programas perdidos. El usuario de-be mantener el bit WREN limpio en todo momento, excepto cuando est actualizan-do EEPROM: el bit WREN no se limpia con hardware.

Despu s de haber iniciado una secuencia de escritura, la limpieza del bit WRENno afectar el ciclo de escritura. El bit WR no podr ser ajustado hasta que el bitWREN est ajustado.

Al completar el ciclo de escritura, el bit WR es limpiado por el hardware y el bitindicador de EE Write Complete Interrupt (EEIF) tambi n se ajusta. EEIF debe serlimpiado por software.

Verificaci n de EscrituraDe acuerdo a la aplicaci n, la pr ctica de buena programaci n puede indicar que

los datos escritos a la EEPROM de Datos deben ser verificados. Este procedimien-to debe ser usado cuando un bit de la EEPROM est muy cerca de su l mite espe-cificado. Generalmente una falla de la EEPROM consiste en un bit que fue escritocomo 0 , pero se lee como 1 , debido a problemas.

Para verificar un dato escrito, debemos primero leer la posici n de memoria gra-bada (si tomamos el ejemplo de reci n deber amos leer el dato contenido en la di-recci n 22h); posteriormente deber amos cargar al registro W con el dato que espe-ramos encontrar, realizar una resta entre el dato le do (en EEDATA) y el contenido

Arquitectura de un PIC

40 Microcontroladores PIC

Sec

uenc

ia r

eque

rida

para

rea

lizar

la e

scrit

ura

Page 42: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

de W, luego por medio del flag Z del registro de STATUS, nos fijamos si la diferen-cia es cero; si esto ocurre, el programa continuar normalmente. Hay muchas for-mas de hacer este proceso, pero una alternativa ser a:

BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 0

MOVLW 0x22 ; cargo al registro W con la direcci n de la memoria; de datos que voy a leer, en este caso 22h

MOVWF EEADR ; muevo el contenido del registro W al registro ; EEADR que es el registro de direccionamiento de ; la EEPROM, dicho de otra manera, estoy ; realizando el direccionamiento para leer

BSF STATUS, RPO ; pone a uno el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 1

BSF EECON1, RD ; pone a uno el bit 0 (RD) de control de lectura del ; registro de la memoria de datos (EECON1), esto ; significa que se inicia la lectura del dato ; contenido en la direcci n que hemos ; cargado en EEADR, en EEDATA tendr el ; n mero 15h (si est todo bien), si hubo un error ; de escritura no habr ese valor

BCF STATUS, RPO ; pone a cero el bit 5 (RPO) del registro STATUS, ; dicho bit se usa para direccionamiento directo y, ; en este caso, elegimos el banco 0

MOVLW 0x15 ; cargo a W con 15h

SUBWF EEDATA, W ; resto el contenido de EEDATA con el de W

BTFSS STATUS, Z ; si el flag Z del STATUS es 1 es porque el ; resultado de la resta es cero (est todo bien),; luego, la siguiente instrucci n se ignora y el; programa contin a normalmente. Si Z = 0, ; entonces se ejecuta la pr xima instrucci n

GOTO ERROR ; el programa ir a una etiqueta que ejecuta una; rutina que indica que hubo error.

MOVLW ........ ; el programa contin a normalmente

Arquitectura de un PIC

Microcontroladores PIC 41

Page 43: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

En la pr xima tabla vemos los Registros y Bits asociados con la EEPROM de Da-tos.

La CPU del PICUn microcontrolador se diferencia de otros tipos de procesadores por tener cir-

cuitos especiales para atender las necesidades de ciertas aplicaciones en tiemporeal. El PIC16F84A, por ejemplo, posee una cantidad importante de este tipo deprestaciones cuyo prop sito es aumentar al m ximo la confiabilidad del sistema, mi-nimizar los costos por la eliminaci n de componentes externos, proveer modos ope-rativo de econom a del consumo y ofrecer una buena protecci n de c digos. Estasprestaciones son:

• Selecci n del oscilador.• Reset

-Reset al Encender (POR)-Temporizador de encendido (PWRT)-Temporizador de arranque del Oscilador

• Interrupciones• Temporizador Watchdog (WDT perro guardi n).• Sleep (modo de operaci n en bajo consumo)• Protector de C digos.• Locaciones de Identificaci n (ID).• Programaci n en serie (en la confecci n del programa).

El PIC16F84A posee un temporizador Watchdog que puede ser desactivado so-lamente mediante bits de configuraci n. Para mayor confiabilidad funciona con supropio oscilador RC. Existen dos temporizadores que ofrecen el retardo necesario alaplicar alimentaci n al PIC. Uno es el Temporizador de arranque del oscilador (Os-cillator Start-up Timer = OST), cuya funci n es la de mantener el chip en Reset has-ta que el oscilador a cristal se estabiliza. El otro es el Temporizador de Encendido

Arquitectura de un PIC

42 Microcontroladores PIC

Page 44: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

(Power-up Timer = PWRT) que provee un retardo fijo de 72ms (valor nominal) al apli-car tensi n VDD nicamente. Este dise o mantiene el dispositivo en Reset duranteel tiempo de estabilizaci n de la fuente de alimentaci n. Con estos dos temporiza-dores incorporados, la mayor a de las aplicaciones no necesita circuitos de Resetexternos.

El modo de SLEEP ofrece una forma de apagado de muy bajo consumo. Elusuario puede despertar desde SLEEP mediante un Reset externo, fin de tiempo delTemporizador de Watchdog o una Interrupci n. Se proveen varias opciones para lososciladores para poder adaptar el componente a diferentes aplicaciones. La opci nde oscilador RC ahorra costos del sistema aunque no es estable, mientras que laopci n con cristal ahorra consumo, es muy estable pero es m s costosa. Como vi-mos, en la palabra de configuraci n del PIC se debe decir qu tipo de oscilador seva a emplear.

Bits de Configuraci nTal como vimos anteriormente en este cap tulo, los bits de configuraci n pueden

ser programados para leer 0 o quedar sin programaci n para leer 1 y de esta ma-nera seleccionar diferentes configuraciones del dispositivo. Estos bits se encuentranen la locaci n de memoria del programa 2007h.

A continuaci n vemos otro aspecto de la palabra de configuraci n:

Las referencias son las siguientes:R = bit que puede ser le doP = bit programableu = sin cambio

Ya hemos hablado de la funci n que cumple cada bit. La direcci n 2007h estfuera del espacio de la memoria del programa de usuario y pertenece al espacio dela memoria de test especial y configuraci n (2000h — 3FFFh). Este espacio s lo esaccesible durante la programaci n.

Configuraciones del OsciladorTipos de OsciladoresEl PIC16F84A puede funcionar con cuatro modos diferentes de oscilador. El

usuario puede programar dos bits de configuraci n (FOSC1 y FOSC0) para selec-cionar uno de estos cuatro modos:

Arquitectura de un PIC

Microcontroladores PIC 43

Page 45: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

• LP = Cristal de Baja Potencia• XT = Cristal o Resonador• HS = Cristal o Resonador de Alta Velocidad• RC = Oscilador RC

Oscilador de Cristal o Resonador de Cer micaEn los modos XT, LP o HS se conecta un cristal o resonador cer mico a las pa-

tas OSC1/CLKIN y OSC2/CLKOUT para establecer la oscilaci n de acuerdo a la fi-gura 2 de este cap tulo.

El dise o del oscilador del PIC16F84A requiere el uso de un cristal de corte pa-ralelo. El uso de un cristal de corte serie puede dar oscilaciones con una frecuenciafuera del rango especificado por el fabricante del cristal. En los modos XT, LP o HP,el dispositivo permite la conexi n de una fuente externa para excitar la pataOSC1/CLKIN, como vemos en la figura 25.

Oscilador RCPara aplicaciones insensibles a variaciones temporales, el uso de la opci n de

oscilador RC ofrece ventajas adicionales. La frecuencia del oscilador RC es una fun-ci n de la tensi n de la fuente, del valor de Rext, del valor de Cext y de la tempera-tura de funcionamiento. Adem s de estos par metros, tambi n puede haber una va-riaci n de la frecuencia del oscilador debido a las variaciones normales de los par -metros del proceso. Adem s, las diferencias en las capacidades de conductores deldispositivo puede introducir variaciones, especialmente con valores muy bajos deCext. El usuario debe tomar en cuenta asimismo variaciones debido a las toleran-cias de los componentes externos R y C usados. La figura 3 de este cap tulo, mues-tra c mo conectar una combinaci n RC al PIC16F84A.

ResetEl PIC16F84A distingue entre varios tipos de reset.

• Reset al encender (Power-on Reset POR).• Reset MCLR durante el funcionamiento normal.• Reset MCLR durante SLEEP.• Reset WDT durante el funcionamiento normal.• Reset WDT de despertar durante SLEEP.

Arquitectura de un PIC

44 Microcontroladores PIC

Figura 25Figura 25

Page 46: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Nota: La notaci n MCLR implica que el reset se activa con un 0 (negado), esdecir:

_____MCLR = MCLR

La figura 26 muestra un diagrama en bloques simplificado del circuito de reset in-corporado en el chip. El paso de reset MCLR posee un filtro de ruido para ignorarpulsos peque os. Las especificaciones el ctricas fijan los requisitos del ancho depulso necesario para la pata MCLR .

Algunos registros no son afectados por ninguna condici n de reset, su status esdesconocido en un reset POR y sin cambios en cualquier otro reset. La mayor a delos dem s registros se colocan en un estado de reset en resets POR, MCLR oWDR durante el funcionamiento normal y en un reset MCLR durante SLEEP. No sonafectados por un reset WDT durante SLEEP debido a que este reset es visto comoresumen del funcionamiento normal. En la siguiente tabla vemos la descripci n decondiciones de reset para el contador de programas PC y el registro de STATUS.

Arquitectura de un PIC

Microcontroladores PIC 45

Figura 26Figura 26

Page 47: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Leyenda: u = sin cambios,x = desconocido.

Nota 1. Cuando el Despertar (volver de SLEEP) se debe a una Interrupci n yel bit GIE es ajustado, el contador PC se carga con el vector de interrupt (0004h).

La siguiente tabla brinda una descripci n completa de los estado de reset paratodos los registros:

Leyenda: u = sin cambiosx = desconocido - = bit sin implementar, le do como 0, q = valor depende las condiciones.

Notas 1: Uno o m s bits de INTCON ser n afectados para causar despertar.Nota 2: Cuando el despertar se debe a un interrupt y el bit GIE es ajustado, el

contador PC se carga con el vector de interrupt (0004h).

Arquitectura de un PIC

46 Microcontroladores PIC

Page 48: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Nota 3: Los valores para cada condici n espec fica est n listados en la tabla decondiciones de reset para el contador de programas PC y el registro de STATUS.

Nota 4. En todo reset del dispositivo, estas patas son configurados como entra-das.

Nota 5: Este es el valor que se encuentra en el latch del port de salida.

Los bits TO y PD son ajustados o limpiados en forma diferente en diferentes si-tuaciones de reset. Estos bits se usan en software para determinar la naturaleza delreset.

Reset de Encendido (POR)Un pulso de reset de encendido se genera en el chip cuando se detecta una ele-

vaci n de VDD en el rango de 1,2 a 1,7 Volt. Para aprovechar el POR, solo debe co-nectar la pata MCLR directamente o a trav s de un resistor a VDD. Esto elimina loscomponentes RC externos que se necesitan generalmente para crear un reset deencendido. Se necesita un tiempo de crecimiento m nimo para VDD para que fun-cione correctamente. Las especificaciones respectivas surgen de las Especificacio-nes El ctricas.

Cuando el dispositivo comienza su funcionamiento normal al salir de la condici nde reset, es necesario asegurar los par metros (tensi n, frecuencia, temperatura,etc) en sus valores normales para garantizar el funcionamiento. Si estas condicio-nes no son cumplidas, el dispositivo debe mantenerse en reset hasta que se norma-lice. En la Figura 27 vemos un circuito de RESET de encendido externo para unaaplicaci n lenta de VDD.

El reset de encendido (POR) no produce un reset interno cuando VDD cae.Sobre el circuito de la figura anterior, debemos decir lo siguiente:

1. El circuito de Power-on Reset (externo) s lo es necesario cuando la tasa decrecimiento de VDD es demasiado lenta. El diodo D ayuda a descargar el capacitorr pidamente al apagar el equipo.

2. El resistor R < 40 k‰ es recomendado para estar seguro que la ca da de ten-si n sobre R no exceda 0,2 volt. La m xima corriente de fuga sobre la pata MCLR

Arquitectura de un PIC

Microcontroladores PIC 47

Figura 27Figura 27

Page 49: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

est especificada en 5 A. Una ca da de tensi n mayor producir la degradaci n delnivel de Vih en la pata MCLR .

3. El resistor R1 = 100‰ a 1000‰ limita toda corriente que circula en MCLR des-de un capacitor externo C en el supuesto que haya una ruptura de MCLR debido aESD o EOS.

Temporizador de Arranque del Oscilador (OST)El OST (Oscillator Start-up Timer = OST) tiene la funci n de mantener el chip en

Reset hasta que el oscilador a cristal se estabiliza y entra en funciones en los mo-dos XT, LP y HS del oscilador.

Temporizador de Encendido (PWRT)El PWRT (Power-up Timer) es un circuito interno que provee un retardo fijo de

72ms (valor nominal) al aplicar tensi n VDD nicamente. Este dise o mantiene eldispositivo en Reset durante el tiempo de estabilizaci n de la fuente de alimentaci n.Con estos dos temporizadores incorporados, la mayor a de las aplicaciones no ne-cesitan circuitos de Reset externos.

El Perro Guardi n (WDT)Se trata de un contador de 8 bits que act a como temporizador y tiene el objeti-

vo de generar un reset a todo el sistema cuando se desborda su valor. Su control detiempos es independiente del oscilador principal y se basa en una red RC. La tem-porizaci n nominal con la que se halla programado el Perro guardi n es de 18ms,pero puede aumentarse utilizando el Divisor de frecuencia, con el cual, trabajandoen el rango mayor, puede alcanzar hasta 2,3 segundos.

Para evitar que se desborde el WDT y genere un reset, hay que recargar o re-frescar su cuenta antes de que llegue a completarse. Este refresco, que en realidadconsiste en ponerlo a 0 para iniciar la temporizaci n, se consigue por software conlas instrucciones CLRWDT y SLEEP. El dise ador debe analizar el programa de tra-bajo y situar alguna de estas dos instrucciones en sitios estrat gicos por los que pa-sa el flujo de control antes que transcurra el tiempo que controla el Perro Guardi n.De esta manera, si el programa se cuelga (bucle infinito, espera de acontecimien-to que no se produce, etc.), no se refresca a tiempo al Perro guardi n y se produceuna reinicializaci n.

La instrucci n CLRWDT borra simplemente el valor de WDT, reiniciando la cuen-ta. Sin embargo, la instrucci n SLEEP, adem s de borrar el WDT, detiene a todo elsistema entrando en un modo de trabajo en el que el consumo es m nimo (modo deReposo o de bajo consumo). Si no se desactiva al Perro guardi n cuando se entra

Arquitectura de un PIC

48 Microcontroladores PIC

Page 50: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

en el modo de Reposo, al acabar su conteo provocar un reset y se saldr de dichomodo. Otra forma de salir del modo de Reposo es activando la patita MCLR . Comohemos visto, para desactivar al Perro Guardi n, hay que poner un 0 en el bit 2(WDTE) de la Palabra de configuraci n.

Existe la posibilidad de que el Divisor de frecuencia opere con el TMR0 o con elWDT, seg n el valor que tenga el bit PSA. Los impulsos de conteo pasan por el Di-visor antes de aplicarse al TMR0 (prescaler). Por el contrario, los impulsos pasan pri-mero por el WDT y luego por el Divisor (Post-divisor).

Interrupciones del MicroLas interrupciones son el mecanismo m s importante para la conexi n del mi-

crocontrolador con el mundo exterior, sincronizando la ejecuci n de programas conacontecimientos externos.

Las interrupciones son una especie de subrutinas de las cuales se diferencianen los procedimientos que las ponen en marcha. Por otra parte las subrutinas se eje-cutan cada vez que en el programa aparece una instrucci n CALL, mientras que lasinterrupciones se ponen en marcha al aparecer en cualquier instante un evento ex-terno al programa, es decir por un mecanismo de hardware. El PIC16X84/PIC, porejemplo, dispone de 4 posibles fuentes de interrupci n:

1. Activaci n del pin RB0/INT 2. Desborde del temporizador TMR0 3. Cambio de estado en una de las 4 patas de m s peso (RB7:RB4) del PORTB 4. Finalizaci n de la escritura en la EEPROM de datos.

Cuando se produce alguno de estos estados, se origina una petici n de interrup-ci n, que si se acepta, guarda el valor del contador de programa (PC CP) actualen la Pila, pone a cero el bit GIE (Global Interrupt Enable), lo que prohibe cualquierotra interrupci n y se carga el PC con el valor 0004H , que es la posici n del vectorde interrupci n, y comienza a ejecutarse el programa de atenci n a la interrupci nque se encuentra a partir de esta direcci n.

Una interrupci n est controlada mediante dos bit. Uno de ellos act a como se-alizador o flag que indica si se ha producido o no la interrupci n, y la otra funciona

como bit de permiso o inhibici n de la interrupci n en s .

Los bits de control que se encuentran en el registro INTCON (0Bh 8Bh) habili-tan y configuran las interrupciones.

Para que se pueda producir una interrupci n por alguna de estas fuentes, el bit

Arquitectura de un PIC

Microcontroladores PIC 49

Page 51: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

correspondiente debe estar en 1 , mientras que los bits se alizadores o flags queest n en los registros INTCON y EEDATA (08h) informan si se ha producido la inte-rrupci n cuando stos se ponen a 1 . Cualquiera de las interrupciones tambi n pue-de sacar al procesador del modo de reposo SLEEP.

El bit GIE (Global Interrupt Enable) es el de activaci n global del permiso de in-terrupci n, y se borra autom ticamente cuando aparece una interrupci n, con el ob-jeto de evitar que se produzca otra interrupci n mientras se est atendiendo a la pri-mera. Cuando por programa se retorna de la interrupci n con una instrucci n RET-FIE, el bit GIE se vuelve a activar poni ndose a 1. Para el resto de los flags o bitsindicadores de interrupci n, no est previsto mecanismo de puesta a cero, por lo quees el programa de atenci n a la interrupci n el que debe realizar el tratamiento de lacorrespondiente interrupci n y adem s, el que debe poner el o los flags de indica-ci n de interrupci n a 0. De no ser as , no se podr salir de la rutina de atenci n ala interrupci n.

Esta familia de PICs posee un vector de interrupci n en la direcci n 0004h; estoquiere decir que, sea cual sea la fuente de la interrupci n, el PC se carga con 0004h.Por lo tanto, el programa de atenci n a la interrupci n debe encargarse de compro-bar el estado de cada uno de los flags para saber cu l es la fuente de interrupci ny actuar seg n el caso.

Si se necesita preservar alg n otro registro adem s del PC, cuando se atiendeuna interrupci n, debe ser el propio programa de atenci n a la interrupci n el que seencargue de salvar su estado al inicio de la rutina y de devolverlos al final del mis-mo, de igual modo que se hac a en las subrutinas.

Por lo dicho, el P debe realizar determinados procesos autom ticamente mien-tras que otros se ejecutan por programa, estos procesos son:

1. Cuando se activa una interrupci n, el flag correspondiente se activa. Si el bitde permiso correspondiente est en 1 y el bit de habilitaci n de todas las interrup-ciones (GIE) est en 1 , se produce la interrupci n.

2. Para evitar que se produzca otra interrupci n mientras se est atendiendo aotra anterior, el bit GIE se pone en 0 .

3. El valor del PC se guarda en la PILA4. El PC se carga con el valor 0004h, que es el vector de interrupciones 5. El programador, debe comenzar la rutina de atenci n a la interrupci n con un

salto a la posici n de memoria donde se encuentra el programa de atenci n a dichainterrupci n, seguidamente se guardan todos los registros que puedan ser modifica-dos por sta, luego si est n habilitadas varias v as de interrupci n, se debe verificarel valor de los flag para determinar la causa de la interrupci n.

6. La rutina de interrupci n lleva al programa a la subrutina correspondiente. 7. Antes de retornar al programa principal se deben reestablecer los valores que

ten an los registros antes de producirse la interrupci n y se deben borrar por softwa-re los flags que indican las fuentes de las interrupciones.

Arquitectura de un PIC

50 Microcontroladores PIC

Page 52: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

8. Cuando se llega a la ltima instrucci n de la rutina de interrupci n, RETURN,se carga el PC con el valor que se guard inicialmente en la PILA y el bit GIE se po-ne autom ticamente en 1 .

Interrupci n Externa (INT)La fuente de interrupciones INT es sumamente importante para atender eventos

externos en tiempo real. Cuando en la l nea RB0/INT se hace una petici n de inte-rrupci n, entonces, de forma autom tica, el bit INTF del registro INTCON se poneen 1 y si el bit GIE=1. Luego se pone en marcha el mecanismo de atenci n a la in-terrupci n. Mediante el bit INTDEG del registro OPTION, se puede seleccionar elflanco activo de RBO/INT, ya que con esta puesta en 1 el flanco activo es el de su-bida y cuando est en 0 el flanco activo es el de bajada.

El programa de atenci n a la interrupci n antes de regresar al programa princi-pal debe borrar el flag INTF, para que no se repita el proceso de atenci n a la inte-rrupci n cuando se ejecuta la instrucci n de retorno de interrupci n RETFIE.

Interrupci n por Desborde del TMR0Para activar la interrupci n del TMR0, los bit T0IE y GIE del registro INTCON de-

ben estar en 1 ; bajo estas condiciones cuando el temporizador TMR0 se desbordaal pasar de FFh a 00h, se activa el flag TOIF del registro INTCON.

Si no se carga de nuevo TMR0 cuando se desborda, ste sigue contando desde00h hasta FFh. Este registro puede escribirse o leerse en cualquier momento, perohay que tener en cuenta que al escribir sobre l, se pierden dos ciclos de reloj paramantener el sincronismo.

Cuando se carga el registro TMR0 con un valor XXh, ste cuenta FFh-XXh im-pulsos y el tiempo que tarda en hacerlo viene dado por la expresi n:

Temporizaci n = 4 . Tosc . (256 —N10). Rango del Divisor de Frecuencia

Interrupci n por Cambio de Estado en las patas RB7 y RB4Para activar la interrupci n por cambio de nivel en las patas RB4 y RB7, los bits

RBIE y GIE del registro INTCON deben estar a 1 . Cuando esto es as y se produ-ce un cambio de nivel en cualquiera de los pines RB4 RB7, se activa el flag RBIFdel registro INTCON. Este tipo de interrupciones est especialmente pensada parael control de un teclado matricial 4 x 4 de 16 teclas.

Interrupci n por Finalizaci n de la Escritura en la EEPROM de DatosEl rea de EEPROM dispone de 64 bytes donde se pueden almacenar datos que

no se pierden al desconectar la alimentaci n. La memoria EEPROM no est mapea-

Arquitectura de un PIC

Microcontroladores PIC 51

Page 53: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

da en la zona de memoria de datos donde se encuentran los registros SFR y GPR.Para poder leerla y escribirla durante el funcionamiento normal del microcontroladorhay que utilizar los registros especiales EEDATA, EEADR, EECON1 y EECON2, talcomo ya hemos visto. Recuerde que el Registro EEADR, se encuentra en la posi-ci n de memoria 09h del banco 0, en l se carga directamente la direcci n a la queacceden de la EEPROM de datos. Las 64 posiciones de un byte ocupan las direc-ciones de un mapa que comienza en la posici n 00h y termina en la 3Fh, por esolos 2 bits de m s peso del registro EEADR siempre valen 0.

Los bit RD y WR indican respectivamente lectura o escritura. No hay que poner-los a 0 s lo a 1. Se borran autom ticamente cuando la operaci n de lectura ha sidocompletada.

El registro EECON2 no est implementado f sicamente, por lo que es imposibleleerlo (si se intenta leer, todos sus bits se ponen a 0). Se emplea como dispositivode seguridad durante el proceso de escritura de la EEPROM, para evitar las interfe-rencias en el tiempo que precisa su desarrollo. La seguridad se consigue escribien-do los valores concretos 55h y AAh. Un ciclo de escritura en una posici n EEPROMde datos tiene una duraci n de 10 ms, que es un tiempo muy grande para la veloci-dad del procesador.

******************************************************

Arquitectura de un PIC

52 Microcontroladores PIC

Page 54: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

MANEJO DE LAS

INSTRUCCIONES DE UN PIC

INTRODUCCI N

Una instrucci n es un comando, parte del programa, que se le aplica alPIC para que lo interprete y ejecute su cumplimiento. La instrucci n secompone de una serie de bits presentada en secciones o posiciones per-fectamente delimitadas, que el procesador interpreta para cumplir una or-den deseada, quedando establecidas las variables que se modifican.

Dicho de otra forma, las instrucciones poseen un formato de acuerdo aun sistema de codificaci n. El formato cambia de acuerdo con la operaci nque se va a realizar.

Cada instrucci n, para la l nea baja de los PICs tipo 16C5X, consiste enuna palabra de 12 bits que codifica en un solo bloque, la orden, el opera-dor y la ubicaci n del resultado o el salto (en caso de que lo hubiere). Enlos microcontroladores PICs tipo 16X84 cada instrucci n tiene una longitudde 14 bits.

Los bits que act an como datos de la memoria EPROM se reciben en eldecodificador de instrucciones, y operan con el contador de programa y elregistro de trabajo W, para acceder a lugares espec ficos del microcontro-lador, tales como la ALU, posiciones de memoria, registros, etc.

Como sabemos, los PICs 16X84, entre otros, manejan un set reducidode instrucciones (35 instrucciones en lo que se denomina RISC) que pre-sentan una codificaci n muy particular llamada formato de la instrucci n .

Cada instrucci n posee su formato y es totalmente definido por MICRO-CHIP.

En la figura 1 de la p gina siguiente podemos apreciar la sintaxis deuna instrucci n del set. Se trata de la instrucci n que suma el contenido delregistro de trabajo con el contenido de un registro cuya direcci n est de-terminada por el operador f .

En esta figura, en primer lugar se observa la sintaxis , es decir, la for-ma en que el programador escribir la instrucci n en el lenguaje entendi-ble por el operador (el programa en .asm). La codificaci n es el formato dela palabra que define la instrucci n y que veremos en detalle luego. Noteque para que se complete la instrucci n se necesita una sola palabra y unsolo ciclo del contador de programas.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 53

Page 55: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Como veremos, el resultado de la operaci n se guarda en un sitio defi-nido por el programador (dependiendo de qu estado tome el bit d ) y queesta instrucci n modifica los bits C, DC y Z del registro de estado (STA-TUS).

Esto quiere decir que cuando coloco la instrucci n:

ADDWF f,d

El ensamblador generar el c digo:

0001 11df ffff

En este c digo, los seis bits de mayor peso (bits 6 al 11 en la figura 2)definen la operaci n que va a realizar la instrucci n de acuerdo a lo reque-rido por el programador. Aqu se define una orden que el PIC interpreta yejecuta sobre un operando determinado, cuya direcci n la busca seg n lo

Manejo de las Instrucciones de un PIC

54 Microcontroladores PIC

Figura 1Figura 1

Page 56: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

indicado por los 5 bits menos significativos (bits 0 al 4 en la figura 2).

El bit 5 es un c digo de reconocimiento de destino y determina en qulugar se va a alojar el resultado de la operaci n. Si este bit es 0 el desti-no de la operaci n ser puesto en el registro de trabajo (W). Si el bit d espuesto a 1 el destino ser el de la posici n de memoria definido por f .

Los cinco bits de menor peso en el formato de la instrucci n represen-tan la direcci n donde est guardado el operando (f), que est en la me-moria de datos y por tener cinco bits s lo podemos direccionar una de las32 posiciones de memoria de datos.

La mayor a de las instrucciones se realizan en un ciclo de contador deprograma (ciclo de instrucci n) excepto las instrucciones de salto que ne-cesitan dos ciclos para ejecutarla.

Se determina el ciclo de instrucci n dividiendo por cuatro la frecuenciadel oscilador, elegida para el funcionamiento del microcontrolador tal comose observa en la figura 3.

Es decir, la se al que proviene del oscilador externo, conectado a los pi-nes OSC1/CLKIN y OSC2/CLKOUT del microcontrolador, se divide en cua-

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 55

Figura 2Figura 2

Page 57: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

tro ciclos, obteni ndose as la se al requerida por el procesador interno pa-ra realizar las operaciones. De esta manera se puede realizar la b squeday ejecuci n de la instrucci n.

El reloj de instrucci n es el ciclo interno que posee el microcontroladorpara cronometrar el tiempo de ejecuci n de las instruciones.

Los pulsos entrantes del reloj son divididos por 4, generando diferentesse ales denominadas Q1, Q2, Q3 y Q4. El estado Q1 hace incrementar elcontador de programa, Q2 y Q3, se encargan de la decodificaci n y ejecu-ci n de la instrucci n y por ltimo, Q4 es la fase de b squeda de la instruc-ci n. El c digo se almacena en el registro de instrucciones.

El Set de Instrucciones del 16X84Vimos c mo es la estructura de una instrucci n, raz n por la cual le re-

comendamos que lea nuevamente el comienzo de este cap tulo si no en-tiende lo que a continuaci n expresaremos.

Manejo de las Instrucciones de un PIC

56 Microcontroladores PIC

Figura 3Figura 3

Page 58: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Los c digos (denominados mnem nicos) que simbolizan un conjunto deinstrucciones, representan la tarea que debe hacer el microcontrolador unavez que las analice en funci n del operando.

Un mnem nico ayuda a recordar el significado que tiene la instrucci n. Para poder analizar al conjunto de instrucciones que conforman el set

RISC, se los suele agrupar teniendo en cuenta el tipo de operaci n querealizan, as es com n que se las presente bajo cuatro posibles formas, asaber:

1. Instrucciones orientadas a registros.2. Instrucciones orientadas a bits.3. Instrucciones con literales.4. Instrucciones de control y especiales.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 57

Figura 4Figura 4

Page 59: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

En la figura 4 vemos un cuadro donde se reproducen las instruccionesorientadas a registros, la figura 5 muestra las operaciones orientadas a bitsy la figura 6 nos permite conocer cu les son las instrucciones con literalesy de control.

Sobre las notas a las que hacemos referencia en dichas figuras, debetener en cuenta lo siguiente:

Nota 1. Al modificar un registro de entrada/salida (E/S) con una opera-

Manejo de las Instrucciones de un PIC

58 Microcontroladores PIC

Figura 5Figura 5

Figura 6Figura 6

Page 60: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ci n sobre l mismo (por ejemplo MOVF PORTB,1), el valor utilizado es elque se encuentre presente en las patas del PORTB. Por ejemplo, si el bies-table tiene un "1" para una pata configurada como entrada y se pone a ni-vel bajo desde el exterior, el dato se volver a escribir como un "0".

Nota 2. Si se ejecuta esta instrucci n sobre el TMR0 y d=1, ser borra-do el divisor de frecuencia (preescaler), si est asignado al TMR0.

Nota 3. Si se modifica el Contador de Programa (PC CP) o es verda-dera una condici n de prueba, la instrucci n requiere dos ciclos de m qui-na. El segundo ciclo se ejecuta como un NOP .

Veamos a continuaci n, c mo deben emplearse cada una de estas ins-trucciones:

C Se pone a 1 si se produce un acarreo desde el bit de mayor peso.DC Se pone a 1 si se genera un acarreo del bit 3 al bit 4.Z Se pone a 1 si el resultado de la operaci n es cero.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 59

Page 61: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO: Queremos sumar el contenido del registro de trabajo con el n mero 10

expresado en hexadecimal, la instrucci n ser :

ADDLW H«10«

La notaci n H«10« significa que el n mero est expresado en hexadeci-mal. Si la notaci n fuese D«10« significa que el n mero est expresado endecimal y si fuese B«10« entonces el n mero est en notaci n binaria.

Volviendo a nuestro ejemplo:Si antes de la instrucci n ten a en cada registro:

W = 21h (21h significa que el n mero est expresado en hexadecimal,que es lo mismo que 0010 0001 b —expresado en binario-)

Al ejecutarse la instrucci n, se sumar n ambos n meros y el resultadose guarda en el registro W, es decir:

W = 21 h + 10 h = 31 h (en hexadecimal), W = 0001 0000 b + 0001 0000 b = 0010 0000 b (en binario)

Manejo de las Instrucciones de un PIC

60 Microcontroladores PIC

Page 62: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

C Se pone a 1 si se produce un acarreo desde el bit de mayor peso.DC Se pone a 1 si se genera un acarreo del bit 3 al bit 4.Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO: Supongamos querer sumar el contenido del registro de trabajo con el

contenido de un registro llamado REG, y queremos guardar el resultado enel registro de trabajo, la notaci n ser :

ADDWF REG,0

Si antes de la instrucci n W = 10 h y REG = 21 h, el resultado de la su-ma ser 31 h que se guardar en el registro de trabajo, es decir, luego dela suma el contenido de los registros ser :

W = 31 h REG = 21 h

Note que el contenido del registro REG no se modific luego de la ope-raci n. Si la instrucci n hubiese sido:

ADDWF REG,1

Entonces el resultado se hubiese guardado en REG, por lo tanto, luegode la operaci n el contenido de los registros ser a:

W = 10 h REG = 31 h

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 61

Page 63: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO: Supongamos querer hacer la funci n l gica AND entre el n mero 0001 0010 b

que est almacenado en el registro de trabajo y el n mero 0011 1001 b. La ins-trucci n ser :

ANDLW B«00111001«

Luego, antes de la instrucci n ten amos:

W = 0001 0010 b

Se realiza la operaci n:

(0001 0010) AND (0011 1001) = 0001 0000

Luego de la instrucci n, en W tendremos:

W = 0001 0000 b

Manejo de las Instrucciones de un PIC

62 Microcontroladores PIC

Page 64: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero

EJEMPLO: Queremos realizar la operaci n AND entre el n mero 0001 1110 b que

est almacenado en el registro ST y el n mero 1001 0110 b que est alma-cenado en el registro de trabajo, la instrucci n ser :

ANDWF ST,1

Antes de ejecutarse la instrucci n tenemos:

W = 1001 0110 b ST = 0001 1110 b

Se realizar la operaci n:

(1001 0110) AND (0001 1110) = 0001 0110

Es decir que en los registros, luego de ejecutada la instrucci n tendremos:

W = 1001 0110 b (no ha cambiado)ST = 0001 0110 (se ha almacenado el resultado).

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 63

Page 65: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO:Queremos poner a 0 el bit N… 5 del registro DESC, luego la instrucci n

ser :

BCF DESC, 5

Si antes de la instrucci n el registro DESC ten a:

DESC = 1111 0111 b

Al ejecutarse la instrucci n, el registro queda con el valor:

DESC = 1110 0111 b

Nota: Recuerde que el bit menos significativo es el cero y el m s signi-ficativo es el 7, es decir, los ocho bits de un registro se numeran de 0 a 7.

Manejo de las Instrucciones de un PIC

64 Microcontroladores PIC

Page 66: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO:Queremos poner a 1 el bit N… 0 del registro DESC, luego la instrucci n ser :

BSF DESC, 0

Si antes de la instrucci n el registro DESC ten a:

DESC = 1111 0111 b

Al ejecutarse la instrucci n, el registro queda con el valor:

DESC = 1111 0110 b

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 65

Page 67: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO:

RUTINA BTFSC REG,2GOTO DECGOTO SIM

Bien, aqu hemos introducido algunas variables a saber:RUTINA es una etiqueta, de modo tal que cuando alguna instrucci n ha-

ga que el contador de programa apunte a dicha etiqueta, entonces se eje-cutar la instrucci n BTFSC.

REG es un registro que yo deb a haber postulado con anterioridad en elprograma.

DEC y SIM son etiquetas, de modo que cuando el contador de progra-ma est apuntando a la l nea:

GOTO DEC

Entonces el programa se seguir ejecutando desde la l nea donde estla etiqueta DEC.

Si antes de la instrucci n el contador de programa (PC CP) est en lal nea donde se encuentra la etiqueta RUTINA, entonces se ejecutar la ins-trucci n BTFSC. Al ejecutarse, si el BIT 2 del registro REG es igual a cero,el contador de programa saltar una l nea e ir a ejecutar la instrucci n:

GOTO SIM

Por ltimo, note que en esta instrucci n tenemos tres columnas y es laforma en que, en general, vamos a escribir un programa en lenguaje deusuario (editar un programa). En la primera columna se colocan las etique-tas , en la segunda columna se escribe siempre la instrucci n y en la ter-cera columna se escribe el operando de la instrucci n. Normalmente vauna cuarta columna precedida del signo ; (punto y coma) que se utiliza pa-ra escribir observaciones que no ser n tenidas en cuenta por el compiladoro el ensamblador que convertir al programa que estaba en lenguaje deusuario en un programa en lenguaje de m quina (para los PICS es un len-guaje hexadecimal o .hex).

La misma instrucci n de nuestro ejemplo la podr amos escribir de la si-guiente manera:

RUTINA BTFSC REG,2 ;comienzo de una rutina

Manejo de las Instrucciones de un PIC

66 Microcontroladores PIC

Page 68: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

La cuarta columna no ser tenida en cuenta dado que est precedidadel signo ;

EJEMPLO:

RUTINA BTFSS REG,0GOTO DECGOTO SIM

Igual que en el caso anterior hemos introducido algunas variables a sa-ber:

RUTINA es una etiqueta, de modo tal que cuando alguna instrucci n ha-ga que el contador de programa apunte a dicha etiqueta, entonces se eje-cutar la instrucci n BTFSS.

REG es un registro que yo deb a haber postulado con anterioridad en elprograma.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 67

Page 69: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

DEC y SIM son etiquetas, de modo que cuando el contador de progra-ma est apuntando a la l nea:

GOTO DEC

Entonces el programa se seguir ejecutando desde la l nea donde estla etiqueta DEC.

Si antes de la instrucci n el contador de programa PC est en la l neadonde se encuentra la etiqueta RUTINA, entonces se ejecutar la instruc-ci n BTFSS. Al ejecutarse, si el BIT 0 del registro REG es igual a uno, elcontador de programa saltar una l nea e ir a ejecutar la instrucci n:

GOTO SIM

EJEMPLO:

DIV CALL RUTIN

Manejo de las Instrucciones de un PIC

68 Microcontroladores PIC

Page 70: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

En la l nea DIV se encuentra la instrucci n CALL. Cuando el PC apuntaa esta l nea, autom ticamente va a ejecutar un programa que se encuen-tra en la l nea que posee la etiqueta RUTIN. Cuando termina de ejecutar-se la subrutina, se vuelve al programa principal a la l nea siguiente a DIV(se dice DIV+1).

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO: CLRF REG

Si antes de la instrucci n:

REG = 5A h

Al ejecutarse:

REG = 00 hflag Z = 1

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 69

Page 71: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO: CLRW

Si antes de la instrucci n:

W= 0011 1111 b

Al ejecutarse:

W = 00flag Z = 1

En definitiva, es una instrucci n que se utiliza cuando debemos asegu-rarnos que el contenido del registro de trabajo es igual a 0 .

Manejo de las Instrucciones de un PIC

70 Microcontroladores PIC

Page 72: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Cuando se ejecutan las instrucciones CLRWDT o SLEEP, T0# se ponea 1. Se pone a 0 si el temporizador Watchdog se desborda.

PD# se pone a 1 cuando se ejecuta la instrucci n CLRWDT o SLEEP.

EJEMPLO:

CLRWDT

Si antes de ejecutarse la instrucci n:

WDT = 0000 0100 b

Al ejecutarse:

WDT = 0000 0000 b

Preescaler WDT = 0bit de estado T0 = 1bit de estado PD = 1

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 71

Page 73: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO:

COMF DIS,0

Realiza el complemento del n mero almacenado en el registro DIS yguarda el resultado en el registro W. Si antes de la instrucci n:

DIS = 0011 1110 bW = 0000 0000 b

Al ejecutarse:

DIS = 0011 1110 bW = 1100 0001 bflag Z = 0

Manejo de las Instrucciones de un PIC

72 Microcontroladores PIC

Page 74: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 73

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO:

DECF SINT,1

Cuando el PC llega a esta l nea, se decrementa el contenido del regis-tro SINT y en dicho registro se guarda el resultado. El registro de trabajono interviene para nada. Si antes de la instrucci n:

SINT = 0011 0111 b Z = 0

Al ejecutarse:

SINT = 0011 0110 b Z = 0

Page 75: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Manejo de las Instrucciones de un PIC

74 Microcontroladores PIC

EJEMPLO:

TEMP DECFSZ DEL,1GOTO TEMPCLRF REG

Con estas l neas de programa estamos realizando una temporizac n ,consumiendo ciclos de reloj. Cuando el PC se ubica en la l nea TEMP, sedecrementa el contenido del registro DEL. Supongamos que el registroDEL estaba cargado con el n mero 50 expresado en notaci n decimal, alejecutarse la instrucci n, ahora el contenido de dicho registro ser 49 (dis-tinto de cero) por lo tanto el PC se ubicar en la siguiente l nea (GOTOTEMP). Cuando esto ocurre, la instrucci n est enviando al PC nuevamen-te a la etiqueta TEMP, con lo cual se volver a decrementar el contenidodel registro DEL que ahora tendr cargado el n mero 48. Este ciclo se re-pite constantemente hasta que en el registro DEL se encuentre el n mero

Page 76: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

00 en cuyo caso el CP saltar una l nea y ejecutar la siguiente instrucci nque en este caso es CLRF REG.

EJEMPLO: GOTO TEMP

Al ejecutarse la instrucci n, el contador de programa se dirige a la direc-ci n donde se encuentra la etiqueta TEMP.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 75

Page 77: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero al haber desbor-damiento.

EJEMPLO: INCF REG,1

Cuando el PC llega a esta instrucci n se incrementa el contenido del re-gistro REG y el resultado se guarda en el mismo registro, en este caso elregistro de trabajo no interviene para nada. Si antes de la instrucci n:

REG = FF hflag Z = 0

Al ejecutarse:

REG = 00 (FF h +1 h = 00 h)flag Z = 1

Manejo de las Instrucciones de un PIC

76 Microcontroladores PIC

Page 78: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO:

ABA INCFSZ DEN,1GOTO ABAGOTO SIGA

Para entender c mo es que si incrementamos un n mero en alg n mo-mento ste puede llegar a cero, hay que decir que cuando se llega a la ca-pacidad m xima de un registro, el pr ximo incremento har que ste se co-loque en cero (en todos sus bits) produci ndose un desborde.

Si el registro DEN ten a el n mero:

DEN = 0111 0001 b

Al ejecutarse la instrucci n INCFSZ:

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 77

Page 79: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

DEN = 0111 0010 b (se increment en una unidad)

Entonces el PC va a la direcci n GOTO ABA lo que hace que se vuelvaa incrementar nuevamente el contenido de DEN. Este ciclo se repite hastaque el contenido de DEN sea cero en cuyo caso el PC salta una instruc-ci n y ejecutar la l nea GOTO SIGA (SIGA es el nombre que le hemos da-do a otra variable o registro).

Z Se pone a 1 si el resultado de la operaci n es cero

EJEMPLO: IORLW 0x32

Esto quiere decir que se realiza la operaci n OR entre el contenido delregistro de trabajo y el n mero 32 expresado en hexadecimal, luego:

32 h = 0011 0010 b

Manejo de las Instrucciones de un PIC

78 Microcontroladores PIC

Page 80: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Si en W est almacenado el n mero:

W = 0001 1110 b, luego de la instrucci n, en el registro de trabajo se al-macenar el resultado es decir:

W = 0010 1100 b

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO: IORWF RES,1

Si antes de la instrucci n:

RES = 13 h = 0001 0011 bW = 91 h = 1001 0001 b

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 79

Page 81: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Al ejecutarse la instrucci n:

RES = 0001 0011 b OR 1001 0001 b = 1001 0011 b = 93 h

El contenido del registro de trabajo no se altera.

EJEMPLO: MOVLW 0x50

Al ejecutarse la instrucci n, en el registro de trabajo tendremos:

W = 50 h

La instrucci n MOVLW suele emplearse en la construcci n de las deno-minadas tablas que se construyen mediante la comparaci n de n meros.En ese caso se carga directamente en el registro de trabajo el n mero dereferencia que se comparar con cantidades almacenadas en memoria(datos) mediante una instrucci n posterior.

Manejo de las Instrucciones de un PIC

80 Microcontroladores PIC

Page 82: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 81

Z Se pone a 1 si el resultado de la operaci n es cero.

EJEMPLO:MOVF SER,0

Si el contenido del registro SER es:

SER = 12 h

Luego de ejecutarse la instrucci n se tendr :

W = 12 hSER = 12 h

Note que en este caso si el operando hubiese sido SER,1, entonces elpropio contenido del registro se hubiese cargado en el mismo registro, loque se emplea para corroborar que realmente esa posici n de memoria tie-ne el dato esperado.

Page 83: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Manejo de las Instrucciones de un PIC

82 Microcontroladores PIC

EJEMPLO: MOVWF DIR

En este caso se carga al registro DIR con el contenido del registro detrabajo (W). Si antes de la instrucci n:

W = 4C h

Al ejecutarse:

DIR = 4C hW = 4C h

MOVWF es una de las instrucciones m s empleadas para la construc-ci n de programas dado que suele ser el medio empleado para cargar da-tos en posiciones de memoria RAM. Para que tenga una idea, es muy co-m n encontrar la siguiente secuencia:

MOVLW d 22MOVWF DIR

Page 84: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 83

Aqu hemos cargado al registro DIR con el n mero 22 expresado en de-cimal.

EJEMPLO: NOP

Page 85: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO: RETFIE

Al ejecutarse esta instrucci n el contador de programa se dirige a la di-recci n cargada en la posici n m s alta de la pila y el bit GIE se pone a 1con el objeto de habilitar nuevamente la posibilidad de interrupci n.

EJEMPLO: RETLW k

Como es l gico, esta instrucci n est ligada con las subrutinas, dadoque nos indica que sta ha terminado y el retorno inmediato con la cargaen el registro de trabajo W de un n mero que est expresado en la siguien-te columna de la instrucci n. Adem s carga al CP con el valor que previa-mente almacen en la PILA (STACK).

Esta instrucci n tarda dos ciclos de instrucci n.

Manejo de las Instrucciones de un PIC

84 Microcontroladores PIC

Page 86: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Siempre W debe regresar con un literal (muchas veces ese literal es ce-ro). Muchas veces es til esta instrucci n, especialmente cuando desea-mos regresar al programa principal con alg n valor obtenido de la subruti-na.

Esta instrucci n no amerita ejemplo alguno, dado que cuando sta seejecuta, se vuelve al programa principal a una direcci n que est almace-nada en el STACK.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 85

Page 87: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO:RLF REG,0

Si antes de la instrucci n:

REG = 1110 0110 bflag C = 0

Como d = 0 el resultado se guardar en W.Al ejecutarse la instrucci n:

REG = 1110 0110 bW = 1100 1100 bflag C = 1

Manejo de las Instrucciones de un PIC

86 Microcontroladores PIC

Page 88: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO: RRF REG,0

Si antes de la instrucci n:

REG1 = 1110 0110 bflag C = 1

Como d = 0 el resultado se guardar en W.Al ejecutarse la instrucci n:

REG = 1110 0110 bW = 0111 0011 bflag C = 0

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 87

Page 89: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

TO Se pone a 1 al ejecutar la instrucci n SLEEP o CLRWDT.PD Se pone a 0 al ejecutar la instrucci n SLEEP.

Es una instrucci n muy usada en programas almacenados en los micro-procesadores empleados en controles remoto. Normalmente el circuito es-t en modo SLEEP mientras no se detecte la acci n de una tecla, perocuando no hay ninguna orden, vuelve a este estado.

Manejo de las Instrucciones de un PIC

88 Microcontroladores PIC

Page 90: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la operaci n es cero.DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior.C Se pone a 1 si se genera un acarreo del bit de mayor peso.

EJEMPLO: SUBLW 0x 05

a) Si antes de la instrucci n:

W = 01 h

Al ejecutarse la instrucci n:

W = (05 — 01) = 04flag C = 1 ; el resultado es positivo

b) Si antes de la instrucci n: W = 05 h

Al ejecutarse la instrucci n: W = (05 — 05) = 00 h

flag C = 1 ; el resultado es ceroflag Z = 1

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 89

Page 91: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

c) Si antes de la instrucci n. W = 07 h

Al ejecutarse: W = (05 — 07) = FE h

flag C = 0 ; el resultado es negativo.

Z Se pone a 1 si el resultado de la operaci n es cero.DC Se pone a 1 si se genera un acarreo del bit 3 al grupo de 4 bits superior.C Se pone a 1 si se genera un acarreo del bit de mayor peso.

Tenga presente que el complemento a 2 de un registro (sustraendo),equivale a restar dicho registro de 256 (255+1). Si el resultado se lo debe-mos sumar a otro registro (minuendo), si el minuendo (que lo vamos a su-mar), es mayor o igual que el sustraendo (que se lo restamos a 256), el re-sultado ser mayor que 255 y por ende se producir un desborde u over-flow con lo que C="1". Esto quiere decir que si C=1 entonces el reultado dela resta es positivo.

Manejo de las Instrucciones de un PIC

90 Microcontroladores PIC

Page 92: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Para el acarreo decimal, el bit DC se colocar en "1" cuando el valor delnibble menos significativo (desde el bit 0 al 3) del registro W, sea menorque el nibble menos significativo del registro REG (registro fuente).

EJEMPLO: SUBWF REG,1

a) Si antes de la instrucci n:

REG = 04 hW = 02 h

Al ejecutarse la instrucci n:

REG = (04 — 02) = 02hW = 02 hflag C = 1 ; el resultado es positivo

b) Si antes de la instrucci n:

REG = 04 hW = 04 h

Al ejecutarse la instrucci n:

REG = (04 — 04) = 00hW = 04 hflag C = 1 ; el resultado es ceroflag Z = 1 ; el resultado es cero

c) Si antes de la instrucci n:

REG = 0100 0110 b (70 en decimal)W = 1110 0000 b (224 en decimal)Aqu ocurre un caso especial, veamos por qu . La operaci n es la si-

guiente:¥ Se realiza el complemento a 2 del sustraendo (complemento a 2 de W)¥ Se suma el contenido de REG con dicho complemento a 2 de W.¥ El resultado de esta adici n, ser el resultado de la resta.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 91

Page 93: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Registro w 1110 0000Complemento a 1 0001 1111Sumando 1 + 1Resultado 0010 0000 (complemento a 2 del

contenido de W = 32 en decimal)

Ahora debemos sumar 32 m s 70 que es el contenido de REG, el resul-tado ser :

32 + 70 = 102

¥ El resultado no excede de 255, por lo que no hay bit de acarreo y enconsecuencia "C" es igual a 0 (lo que indica resultado negativo).

Cuando el minuendo sea menor que el sustraendo, el n mero que de-bemos restar de 256, es mayor que el que habr que sumar (REG), por lotanto no habr desbordamiento y el bit Carry C ser siempre igual a "0".

El acarreo decimal DC se ha colocado en 1, ya que el valor del pack me-nos significativo (del bit 0 al 3), del registro de trabajo W (es 0000) y es me-nor que el del registro REG (registro fuente, es 0110). Por ltimo el bit Z es0, ya que el resultado de la operaci n no es cero.

Como consecuencia de un resultado negativo, el registro Reg permane-ce inalterable y en el registro W estar el resultado de la operaci n:

W = 0010 0110 b (decimal 102)REG = 0100 0110 b (decimal 70)Flaf C = 1Flag DC = 0Flag Z = 0

Manejo de las Instrucciones de un PIC

92 Microcontroladores PIC

Page 94: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO: SWAPF INDI,0

Si antes de la instrucci n:

INDI = 1010 0101 h

Como d=0 el resultado se almacenar en W, luego de la ejecuci n de lainstrucci n tendremos:

INDI = 1010 0101 bW = 0101 1010 b

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 93

Page 95: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Z Se pone a 1 si el resultado de la ltima operaci n es cero.

EJEMPLO: XORLW B 0011 1000

Si antes de la instrucci n:

W = 1011 0101 b

Al ejecutarse la instrucci n:

W = 1011 0101 b ⊕ 0011 1000 b = 1000 1101

Manejo de las Instrucciones de un PIC

94 Microcontroladores PIC

Page 96: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

EJEMPLO: XORWF REG,1

Si antes de la instrucci n:

REG = 0011 1000 bW = 1011 0101 b

Como d=1, el resultado se almacena en REGAl ejecutarse la instrucci n:

REG = 1011 0101 b ⊕ 0011 1000 b = 1000 1101W = 1011 0101 b

**************************************************

Nota 1:En las instrucciones CALL y GOTO los 11 <10:0> bits de menos peso

corresponden al c digo de operaci n, mientras que los 2 bit de mayor pe-so <12:11> los suministran respectivamente los bit 4 y 3 del registroPCLATH que realmente apuntan a una de las 4 p ginas del mapa de me-moria que puede direccionar el PC.

Manejo de las Instrucciones de un PIC

Microcontroladores PIC 95

Page 97: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Palabras de Configuraci n e Identificaci nLos PIC de la gama media disponen de una palabra de configuraci n de

14 bits que se escribe durante el proceso de grabaci n del dispositivo y quedebe hacerse de acuerdo con el sistema en el que se va a insertar. Dichosbits ocupan la posici n reservada de memoria de programa 2007h. La es-tructura de la palabra de configuraci n es la siguiente:

Bit 4: CP, bit de configuraci n de protecci n de c digo 1= Protecci n de c digo desactivado0= Protecci n de c digo activado

Bit 3: PWRTE, Activaci n del temporizador "Power-Up"1= Desactivado0= Activado

Bit 2: bit de configuraci n habilitaci n del Watchdog (WDT)1: WDT activado0: WDT desactivado

Bit 1 y Bit 0: FOSC<1:0>, tipo de oscilador empleado11: Oscilador RC10: Oscilador HS ( 8 - 20MHz)01: Oscilador XT ( 100 KHz- 4MHz)00: Oscilador LP (Bajo consumo 32- 200Hz)

**************************************************************

Manejo de las Instrucciones de un PIC

96 Microcontroladores PIC

Page 98: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Aprendiendo a ProgramarIntroducci nHace aproximadamente tres a os, comenzamos a mostrar c mo se deben

escribir programas en nuestra querida revista Saber Electr nica; fue as quetanto Federico Prado, el Ing. Alberto Picerno y este autor hemos escrito art cu-los con la explicaci n de programas sencillos que le permitan aprender a utili-zar las instrucciones del PIC 16X84.

En este cap tulo utilizaremos la misma t cnica comenzando desde el princi-pio, bas ndonos en prototipos reales.

Circuito de un EntrenadorEn Saber Electr nica hemos desarrollado un entrenador para aprender a

programar y cargar PICs, este entrenador se muestra en la figura 1.

Aprendiendo a Programar

Microcontroladores PIC 97

Figura 1Figura 1

Page 99: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Sea el programa:

; Primer programa de pr ctica

List p = 16C84 ; voy a utilizar el PIC16C84

ptob equ 0x06 ; inicializo la variable ptob en

; la direcci n 06h

Reset org h 0 ; comienza el programa

Inicio movlw h 0 ; cargo a W con 0

tris ptob ; mando el contenido de W a ptob

movlw h 0f ; cargo a W con el n mero binario 15

ciclo nop ; rutina nula

goto ciclo ; vaya a ciclo

El programa comienza con un (;), por lo tanto, lo que sigue en el rengl n estomado como un comentario. Los signos = forman un resalte para indicar el ini-cio del programa y ayudan a darle una distribuci n agradable a la vista.

El programa se lista en cuatro columnas; la primera sirve para colocar lasvariables que utilizaremos como registros y las etiquetas que son ubicacio-

nes del programa ad nde se debe ir cuando el operando de una instrucci n aslo requiera. En la segunda columna se coloca la instrucci n y en la tercera eloperando de la instrucci n. La cuarta columna siempre va precedida de (;) y seutiliza para colocar observaciones que le sirvan al programador como gu a pa-ra saber qu quiso hacer o qu funci n cumple esa sentencia, obviamente, alcompilar esa instrucci n, las observaciones no son tenidas en cuenta.

List p = 16C84Es el encabezado del programa que le indica al ensamblador qu tipo de

PIC se est utilizando para que ste pueda reconocer qu set de instrucci n de-be utilizar.

ptob equ 06Nombr a la variable ptob y la coloqu en la direcci n 06 de la RAM, esta

direcci n est reservada para el PUERTO B , es decir, ratifico que ptob es el re-gistro del PORT B. Cuando, m s adelante, deba enviar informaci n al puerto b,s lo debo mencionar ptob.

Reset org 0 Significa que al realizarse el reset, el programa comienza por la posici n 0

de la memoria del programa. Pero de inmediato pasa a la posici n 1 que tiene

Aprendiendo a Programar

98 Microcontroladores PIC

Page 100: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

escrita la siguiente sentencia:

Inicio movlw 0Con esto se carga el registro w con el hexadecimal 0 (es decir el binario

00000000)

tris ptobEsta instrucci n env a la informaci n del registro W al puerto B para indicar-

le que todos sus pines son de salida (si se hubiera cargado el binario 11111111todos los pines ser an de entrada y si se hubiera cargado 11001010 algunos se-r an entradas y otros salidas).

movlw 0f Carga el registro W con el hexadecimal 15 que equivale al binario 00001111 y

movlw ptobEnv a el valor cargado al puerto "B" que producir un estado alto en RB0,

RB1, RB2 y RB3 y un estado bajo en RB4, RB5, RB6 y RB7. La informaci n delpuerto pasa al buffer que lleva las patas 15, 16, 17 y 18 de un PIC16C84 a ma-sa encendiendo los leds D7, D8, D9 Y D10.

Ciclo nopRealiza una rutina nula, es decir, que no efect a operaci n alguna.

goto cicloEnv a el programa hacia la etiqueta "ciclo". Las dos ltimas operaciones

hacen que al ejecutarse un programa, ste se quede en un lazo que se llamaloop cerrado .

La nica manera de salir de este loop es pulsando RESET. Entonces se ob-serva que los leds se apagan hasta que se suelta el pulsador y el programa co-mienza nuevamente por la etiqueta RESET.

Obviamente, este programa debe ser editado en un utilitario adecuado(MPLAB, por ejemplo) y luego debe ser compilado (utilizando el MPASM o elmismo MPLAB) para obtener el archivo .hex que me permitir cargar el PIC quedeber colocar en el circuito de la figura 1 para verificar que realmente hacelo que estamos diciendo.

Para cargar el PIC con el programa .hex se utiliza un prototipo adecuado(cargador de PICs) que consiste en un circuito que es manejado por un progra-ma para permitir la carga. Todo este proceso se explica con total claridad en elprimer texto de esta serie, titulado: Todo Sobre PICs .

Aprendiendo a Programar

Microcontroladores PIC 99

Page 101: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

En la figura 2 se puede observar un dia-grama de flujo que refleja el funcionamien-to del programa que acabamos de explicar.

Cu nto tardan en encenderse losleds luego de soltar el bot n de reset?

Si se observa el circuito, se ver uncristal de clock de 4MHz (0,25 S de per o-do); como internamente existe un divisorx4 cada operaci n se realizar en 0,25 x 4= 1 S. Si contamos las sentencias hastallegar a cargar el puerto B, veremos quehay 5 (cinco renglones de programa); porlo tanto, la demora es de 5 S.

Encendido Intermitente de un Led

Si Ud. no quiere armar el entrenador completo (que sirve para un sinf n deaplicaciones que se ense an en el Curso: Todo Sobre PICs , que est en ven-ta en varios pa ses de Am rica a trav s de la red de distribuidores de EditorialQuark y Centro Ja-pon s - vea en Inter-net la direcci n:www.webelectroni-ca.com.ar) le propo-nemos que arme s -lo lo imprescindiblepara encender losleds seg n el circuitode la figura 3; un cir-cuito tan simple queno requiere plaque-ta, puede armarse ti-po ara a sobre lamesa de trabajo,

Aprendiendo a Programar

100 Microcontroladores PIC

Fig. 2Fig. 2

Fig. 3Fig. 3

Page 102: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

porque no es algo para mostrar sino para aprender. Observe que los leds est nconectados directamente al puerto B predispuesto como de salida por el pro-grama. En efecto, el puerto de salida admite perfectamente los 3mA que tomacada led al conectarlos con resistores en serie de 1k5. Como nica precauci npara el armado debe utilizar un z calo de 18 patas para el PIC. Las conexionesde X1, C1 y C2 deben ser lo m s cortas posibles. Si usted repara TV y video-grabadores seguramente tendr cristales de 3,58MHz (de PALN o NTSC o in-clusive de PALM). Puede utilizarlos sin mayor inconveniente pero recuerde quelos tiempos calculados estar n afectados de un coeficiente igual a 3,58/4.

Nuestro programa va a hacer uso de lo que se llama una subrutina. Una su-brutina es como un segundo programa anexo al principal. El programa principalva a la subrutina a trav s de una instrucci n "CALL" que no hab amos emplea-do hasta ahora.

Esta instrucci n salta del paso del programa donde se encuentra, a la su-brutina y cuando se ejecuta por completo vuelve al mismo punto del programaen donde se hab a producido el salto.

Una subrutina debe estar siempre dirigida a una etiqueta para que el saltose realice con un destino bien determinado. Por lo general, las subrutinas se es-criben a continuaci n del programa principal, pero esto es simplemente unacostumbre, bien podr an ubicarse en otro lugar como el principio. Recuerde quetodo comienza cuando se pulsa reset o cuando se enciende el equipo y, en esemomento, se ejecuta lo indicado con la etiqueta reset y se salta al rengl n si-guiente. Cuando termina una subrutina, se debe colocar una referencia "RE-TURN", que significa retornar al siguiente rengl n del programa principal don-de est la invocaci n a la subrutina.

Otra instrucci n nueva que no hab amos utilizado es "decfsz" que siempreva acompa ada de un n mero hexadecimal. Esta instrucci n se utiliza paraprogramar retardos. Por ejemplo, si su paso del programa fuera:

CONST equ 06decfsz CONST

En el encabezado se declara que la variable CONST estar en la direcci n06 luego, al ejecutarse la instrucci n el contenido de la variable CONST se hadecrementado en una unidad.

Esto parece m s una complicaci n sin sentido, pero no es as ; en un pro-grama bien estructurado los cambios se realizan en el encabezado y, adem s,muchas veces es necesario cambiar solidariamente varios operandos y el m -todo propuesto lo logra f cilmente.

Tambi n vamos a utilizar una instrucci n de doble uso y que forma parte de

Aprendiendo a Programar

Microcontroladores PIC 101

Page 103: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

una subrutina (generalmente la cierra). Se trata de "retlw" que debe ir acompa-ado de un literal (n mero hexadecimal). Esta operaci n carga el registro w con

el literal que lo acompa a y retorna al programa principal todo en un solo ren-gl n. Su funcionamiento se apreciar mejor cuando veamos el programa deaplicaci n pero es equivalente a:

movlw 0x12 ; cargo a W con el n mero 12h return

A esta altura Ud. debe recordar unas cuantas sentencias y todav a faltanunas cuantas m s (recuerde todo lo visto en el cap tulo 2). Como ayuda paraque no deba estudiar todas las sentencias de memoria le decimos que lo me-jor es relacionarlas con palabras comunes del idioma ingl s. Por ejemplo "equ"proviene de "equal" que significa igual. En la figura 4 le damos una tabla conm s ayudas.

Para dise ar un programa usted debe tener en claro la funci n del proyec-to. En nuestro caso queremos que al encender la fuente el led conectado a RB0se encienda y apague con un tiempo que pueda modificarse f cilmente para al-terar el programa. Al apretar el pulsador de reset se debe apagar el led y al sol-tarlo se encender luego de un retardo y continuar alternando per odos de en-cendido y apagado.

Aprendiendo a Programar

102 Microcontroladores PIC

Fig. 4Fig. 4

Page 104: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

El programa completo lo vamos a dividir en dos partes: un programa princi-pal y una subrutina que llamamos retardar . Los hacemos as porque casi to-dos los programas incluyen retardo y el dise o de esa subrutina lo podemosemplear posteriormente y nos ahorraremos trabajo.

Un programa debe estar estructurado en forma clara, se deben diferenciarclaramente los distintos sectores y esto se hace no s lo para que sea agrada-ble a la vista, sino para facilitar los futuros cambios.

La primera secci n es el t tulo y la declaraci n de qu PIC se va a utilizar.La segunda es el encabezado en donde se le da nombre a los literales (n me-ros hexadecimales) m s importantes. La tercera es el programa principal y lacuarta las subrutinas:

;===========================================================; Secuenciador de encendido de un led

list p=16C84 ;micro PIC16C84;===========================================================portb equ 06 ;el puerto b se ubica en la dirección de ;memoria RAM06reg1 equ 0c ;asignación de los registros donde se cargan los reg2 equ 0d ;diferentes literalesreg3 equ 0e ;grueso equ 40 ;al literal 40 lo llamamos gruesomedio equ 40 ;al literal 40 lo llamamos mediofino equ 50 ;al literal 50 lo llamamos fino;===========================================================reset org 0 ;un reset envía a la posición 00 de la memoria

;de programa.Goto comienzo ;reenvío al comienzo del programa

;===========================================================

Analicemos el encabezado, las primeras l neas hasta la etiqueta portb yalas conocemos del programa anterior (aqu empleamos portb en lugar de ptob).Luego tenemos tres sentencias que le dan nombre reg1, reg2 y reg3 a tres re-gistros de uso general, ubicados en las posiciones de memoria RAM destina-das a los registros. Recuerde que las primeras 12 posiciones de memoria has-ta 0B est n ocupadas por registros fijos. A partir de 0C se ubican los registrosde prop sitos generales de los cuales usaremos 3, a saber: 0C, 0D y 0E (queson los registros que hemos denominado reg1, reg2 y reg3).

En esos registros volcamos inicialmente los literales 30, 40 y 50 que nom-bramos como grueso , medio y fino . Esto se realiza en las tres ltimas sen-tencias del encabezado que son aquellas que Ud. debe variar si desea que el

Aprendiendo a Programar

Microcontroladores PIC 103

Page 105: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ritmo de encendido se haga m s lento o m s r pido. Desde luego que estastres sentencias no son imprescindibles pero si no se usan, luego habr a quebuscar dentro de la subrutina para cambiar los literales. Trabajando de esta ma-nera es m s f cil introducir cambios porque los hacemos desde el encabezado.

La secci n principal del programa es muy similar a la utilizada en el primerprograma para encender permanentemente un led:

reset org 0 ;un reset envía el programa a la posición 0goto comenzar ;se envía el control al comienzo

comenzar movlw 00 ;se carga w con 00tris ptob ;se programa el puerto b como salida

ppal movlw 01 ;se carga w con 01movwf ptob ;se descarga w en el puerto b para

;encender el led conectado RB0call demora ;se mantiene el led encendido por

;un intervalo de tiempomovlw 00 ;se carga w con 00movwf ptob ;se descarga w en el puerto b para

;apagar el led de RB0call demora ;se mantiene el led apagado por

;un intervalo de tiempogoto ppal ;continua el programa en el principio

;hasta realizar un reset

Siempre se comienza a analizar el programa observando qu ocurre al rea-lizar un reset. En este caso, vemos que todo comienza en la posici n 00 de lamemoria de programa. En la siguiente posici n se env a el control del progra-ma a la posici n comenzar , en donde se predispone el puerto b para operarcomo salida. Luego, comienza el programa principal en el etiqueta ppal, en don-de se carga el registro w con el n mero hexadecimal 01. Cuando este n merose descarga en el puerto b se enciende el led conectado en RB0.

Ahora se env a el control a la subrutina demora porque pretendemos queel led quede encendido algo menos de un segundo. Cuando se cumpla esetiempo volver el control desde demora continuando por la carga de w con elhexadecimal 00. Al descargar w en el punto b se produce el apagado de ledconectado en RB0.

Nuevamente el control pasa a la subrutina demora, en donde se queda poralgo menos de 1 segundo antes de volver al programa principal. Cuando vuel-ve es enviado de inmediato al comienzo de ppal con un nuevo encendido deRB0 y as permanentemente hasta que se opere el reset.

Es el turno de platicar sobre la subrutina demora. Esta subrutina es m scomplicada que el programa principal. Lo que ocurre es que la dise amos pa-

Aprendiendo a Programar

104 Microcontroladores PIC

Page 106: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ra uso general, ya que la vamos a aplicar en una infinidad de programas. Enprincipio, la demora la vamos a poder variar con tres n meros hexadecimalesque fueron definidos en el encabezamiento como grueso , medio y fino por-que operan de ese modo sobre el retardo final:

demora movlw grueso ;recarga w con el número hexadecimal ;“grueso” es decir, con 30

movwf reg1 ;se vuelca “grueso” en el registro;reg 1

dem3 movlw medio ;se carga w con el número hexadecimal;“medio” es decir con 40

movwf reg2 ;se vuelca "medio" en el registro ;reg2.

dem2 movlw fino ;se carga w con el número hexadecimal "fino" ;es decir con 50.

movwf reg3 ;se vuelca "fino" en el registro reg3.dem1 decfsz reg3 ;se decrementa el registro reg3 en una unidad

;y si el resultado es cero se salta a la siguiente ;instrucción, si no se sigue decrementando.

goto dem1 ;retorno a la frecuencia etiqueta dem1.decfsz reg2 ;idem con reg2.goto dem2 ;retorno a la etiqueta dem2.decfsz reg3 ;idem con reg1.goto dem1 ;retorno a la etiqueta dem3.retlw 0 ;se carga w con 0 y se retorna al programa

;principalend

La subrutina comienza cargando los registros de uso general con los n me-ros hexadecimales declarados en el encabezado. Luego que los tres registrosespeciales est n cargados con los hexadecimales 30, 40 y 50 se comienza adecrementar el registro 3 de a una unidad; mientras el registro tenga un n me-ro mayor o igual a 1 se contin a este proceso, pero al llegar a cero se salta ala siguiente sentencia que justamente es un "goto". Es como si el control retor-nara y fuera a dem1 tantas veces como lo indica el n mero hexadecimal carga-do en el registro 1. Luego la subrutina pasa a la siguiente sentencia que co-mienza a decrementar el n mero cargado en reg2, s lo que el "goto" es a la eti-queta dem2 que es anterior a la dem1, es decir, que se vuelve a pasar por"dem1" a hacer todo el primer decremento del n mero guardado en "reg3" y re-ci n despu s se hace el siguiente decremento en el registro "reg2". Cuando"reg2" llega a cero se produce el primer decremento de "reg3" y para que seproduzca el segundo tienen que decrementarse a cero "reg2". En una palabra,que la subrutina da much simas vueltas sobre "dem 1", muchas sobre "dem2"

Aprendiendo a Programar

Microcontroladores PIC 105

Page 107: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

y pocas sobre "dem3". Finalmente cuando "reg3" llega a cero, se pasa retlwque reenv a el control al programa principal justo en la sentencia que invoc ala subrutina pero antes de retornar lleva el registro w a cero. El programa ter-mina en "end" que no puede considerarse como una sentencia, ya que no rea-liza ninguna tarea; sin embargo, su existencia es imprescindible para que elprogramador de PICs d por terminada su tarea. Cuando no se coloca el pro-grama ensamblador emite un mensaje de error.

Tenga en cuenta que le estamos ense ando a programar , es decir, a utili-zar las instrucciones del set del PIC. Si Ud. es programador, estos ejemplos levan a parecer muy torpes, dado que el experto sabe c mo utilizar rutinas quepermitan hacer lo mismo con menos esfuerzo de programaci n. Ud. est apren-diendo como cuando comenz a sumar y en aquella oportunidad seguramentele costaba entender que 1 + 1 es igual a dos, aunque hoy le parezca un ejem-plo muy burdo.

Volviendo a nuestro programa, sabemos que la subrutina "demora" tieneuna cierta duraci n. Con un m nimo conocimiento de matem ticas podemoscalcular ese retardo en funci n de los n meros hexadecimales que hallamoselegido.

Tomemos primero el "loop" (rulo) m s interno de la subrutina; mientras no secumpla que "reg 3" = 0 se consume un ciclo de instrucci n por vuelta (gen ri-camente podemos decir que todas las sentencias consumen un ciclo salvo lasde salto como la "goto" que consume dos).

N mero de ciclos "reg 3" = 3 x "grueso"= 3 x 80 (ya que 50 Hex = 80 decimal)= 240 ciclos de instrucci n

Para calcular la demora de los dos loops siguientes es conveniente realizarun diagrama de los mismos tal como el mostrado en la figura 5.

Ahora vemos que el loop intermedio dura 2 + 1 + 1 + 1 = 5 ciclos de instruc-ci n a los cuales se les suman los 240 ciclos del loop m s interno. En total se-r an 5 + 240 = 245. Pero este loop es recorrido hasta que el hexadecimal 40(equivalente al decimal 64) se anule:

n mero de ciclos "reg 2" = 245 x medio= 245 x 64= 15.860 ciclos de instrucci n.

El loop m s externo dura 2 + 1 + 1 + 1 = 5 ciclos de instrucci n a los cualesse les suman los 15.860.

Aprendiendo a Programar

106 Microcontroladores PIC

Page 108: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Pero este loop es recorrido hasta que el hexadecimal 40 (equivalente al de-cimal 64) se anule:

n mero de ciclos "reg 1" = 15.860 x fino= 15.860 x 64= 1.015.040 ciclos de instrucci n.

Nos quedar an 1 + 1 ciclos al comien-zo de la subrutina y 2 ciclos al final parallegar a un valor de 1.015.044 ciclos deinstrucci n.

La duraci n de un ciclo de instrucci ndepende del cristal utilizado. Si usamosun cristal de 4MHz cada ciclo de instruc-ci n dura 1 s y tendr amos una demorade 1,015 seg.

El led estar a encendido casi un se-gundo y apagado otro tanto.

El funcionamiento del programa princi-pal y la subrutina de demora pueden re-presentarse en un diagrama de flujo co-mo el mostrado en la figura 6 para el pro-grama principal.

Aprendiendo a Programar

Microcontroladores PIC 107

Fig. 5Fig. 5

Fig. 6Fig. 6

Page 109: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Secuenciador de 4 Canales

Elegimos trabajar con cuatro leds paraque usted pueda entender el tema conm s facilidad. Pero todo lo que veremospuede aplicarse a un secuenciador de 8leds. Nuestro dispositivo enciende cuatroleds en secuencia de manera que nuncaest n encendidos todos al mismo tiempo.

En el ejemplo anterior vimos primero elprograma y luego el diagrama de flujo. Enrealidad el m todo es el inverso. Un dia-grama de flujo permite visualizar el funcio-namiento de un programa y por lo tantodebe efectuarse previamente.

Por ejemplo, en la figura 7 puede ver eldiagrama de flujo correspondiente a la ru-tina demora del programa que permite elencendido intermitente de un led.

El programa es la interpretaci n deldiagrama de flujo; en el programa se plas-man los detalles que no tiene el diagramade flujo. Para construir el programa denuestro secuencial, nos basamos en eldiagrama de flujo de la figura 8.

Observe que luego de iniciado, el pro-ceso no se detiene jam s, ya que termina-da la secuencia, vuelve a comenzar. Ob-viamente, la aplicaci n de un reset apaga-r todos los leds mientras se mantenga elreset pulsado.

En este programa se van a utilizar nue-vas instrucciones que debemos detallar.Entre otras utilizamos la instrucci n movfque se acompa a con un doble operando.Es una sentencia que sirve para realizartransferencias en el contenido de cual-quier registro nombrado como primer ope-rando al registro W.

Otra instrucci n nueva es rlf, cuya fun-

Aprendiendo a Programar

108 Microcontroladores PIC

Fig. 7Fig. 7

Fig. 8Fig. 8

Page 110: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

ci n es desplazar el contenido de un registro nombrado como operando. El con-tenido se desplaza hacia la izquierda y el primer bit vuelve a ingresar como l-timo.

Finalmente se utiliza tambi n la instrucci n btfss que incluye dos operan-dos; el primer operando indica en qu registro se realiza la operaci n y el se-gundo que posici n del registro se analiza (en que bit, del bit 0 al bit 7). La ope-raci n consiste en analizar la posici n siguiente a la nombrada como segundooperando. Por ejemplo:

btfss rot,4

Aqu se analiza el estado de 5 bit (bit 4, dado que el primer bit o bit menossignificativo es el bit 0), si ste es cero se continua con la sentencia siguiente ,si es 1 se saltea en la siguiente secuencia. En la figura 9 se realiza un dibujoque explica estas ltimas instrucciones.

Aprendiendo a Programar

Microcontroladores PIC 109

Fig. 9Fig. 9

Page 111: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

Imag nese a movf como si volcara el contenido de un balde en otro, se loasimila a un transvasamiento. La sentencia rlf la puede imaginar como si apre-tara un registro con el dedo puesto por la derecha del mismo; el bit que se caepor la izquierda lo toma con la mano y lo pone por la derecha donde qued unespacio vac o.

Vea a btfss como si estuviera con la mano sobre el quinto bit. Si esa posi-ci n esta fr a, mande el control de programa al rengl n siguiente. Si est calien-te, saltee el que sigue y mande el control al posterior a ste.

Bien, el programa del secuenciador es en realidad una modificaci n del pro-grama de encendido y apagado de un led. Como vemos, los programas dif cil-mente se inicien desde cero siempre se utilizan otros programas que se modi-fican y adem s se utilizan subrutinas completas como la "demora":

; SECUENCIADOR

list P=16C84 ;el dispositivo usa el 16C84;------------------------------------------------------------------------------------------- ptob equ 06 ;el puerto f se ubica en 06 de la RAM.Rot equ 0d ;al registro ubicado 0d se lo llama est.Reg1 equ 0e ;al registro ubicado en 0e se lo llama reg1reg2 equ 0f ;al registro ubicado en 0f se lo llama reg1reg3 equ 10 ;al registro ubicado en 10 se lo llama reg3grueso equ 00 ;se asignan nombres a los literales.medio equ 40 ;se asignan nombres a los literales.fino equ 50 ;se asignan nombres a los literales.;-------------------------------------------------------------------------------------------reset org 0 ;reset en dirección 00h

goto comenzar ;se lleva el control a comienzocomenzar movlw 00 ;se carga w con 00h

tris ptob ;se programa el puerto "b" como salida.ppal movlw 01 se carga w con 01h

movwf rot ;se descarga w en el registro rot ;preparándolo para la rotación.

sec movf rot,0 ;el contenido de rot pasa a wmovwf ptob ;enciende el led conectado donde indica wcall demora ;se mantiene encendido el led.rlf rot ;se mueven los bits de "rot".btfss rot,4 ;se comprueba el 5º bit.goto sec ;si el 5º bit es cero se reenvía a sec.goto ppal ;si el 5º bit es uno se reenvía a ppal para

;comenzar una nueva secuencia.

Aprendiendo a Programar

110 Microcontroladores PIC

Page 112: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

demora movlw grueso ;recarga w con el número hexadecimal ;“grueso” es decir, con 30

movwf reg1 ;se vuelca “grueso” en el registro;reg 1

dem3 movlw medio ;se carga w con el número hexadecimal;“medio” es decir con 40

movwf reg2 ;se vuelca "medio" en el registro ;reg2.

dem2 movlw fino ;se carga w con el número hexadecimal;"fino" es decir con 50.

movwf reg3 ;se vuelca "fino" en el registro reg3.dem1 decfsz reg3 ;se decrementa el registro reg3 en una

;unidad y si el resultado es cero se salta a ;la siguiente instrucción, si no se sigue ;decrementando.

goto dem1 ;retorno a la frecuencia etiqueta dem1.decfsz reg2 ;idem con reg2.goto dem2 ;retorno a la etiqueta dem2.decfsz reg3 ;idem con reg1.goto dem1 ;retorno a la etiqueta dem3.retlw 0 ;se carga w con 0 y se retorna al

;programa principal.end

Todo comienza cargando el registro w con el hexadecimal 01, es decir queel registro se llenar con el binario correspondiente 00000001. Este contenidose transvasa a "rot" y luego devuelta a "w", desde donde se lo env a al puerto"b" para encender el ltimo led. Ahora el control del programa se env a a demo-ra para que el led permanezca encendido cerca de 1 segundo. A continuaci nse produce la rotaci n de los bits de "rot" con lo cual queda cargado con el bi-nario 00000010. Ahora se comprueba el estado del quinto bit; como es 0 sereenv a el control a "sec , se carga "w" con el contenido de "rot" se transvasa"rot" a "w" y luego se env a "w" al "ptob", entonces el segundo led se enciendey as sucesivamente, hasta que se enciende el cuarto led. En ese momento, alhacer la rotaci n se lleva el quinto bit a 1, momento en que se saltea el goto"sec", se hace un goto a ppal y comienza una nueva secuencia.

Si lo analizamos globalmente, lo nico que hace el programa es cargar elpuerto w con los binarios 00000001; 00000010; 00000100; 00001000 y realizarun cambio cada segundo aproximadamente.

Sugerimos que cambie inicialmente la subrutina demora para que la se-cuencia sea m s r pida. Luego lo invitamos a realizar un cambio mayor, que

Aprendiendo a Programar

Microcontroladores PIC 111

Page 113: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

implique secuenciar 8 leds en lugar de 4, y por ltimo lo invitamos a construiruna guirnalda para un arbolito de navidad. Lo nico que se modifica en este ca-so es que con el sistema simplificado, se requiere manejar un solo led. Paramanejar una cantidad mayor, le sugerimos el circuito de la figura 10.

Generador de Se ales de Audio

El programa que reci n vimos puede utilizarse para generar se ales de au-dio con forma de escalera, que son el medio id neo para comprobar la lineali-dad de los amplificadores de potencia de audio. En efecto, una escalera de 8escalones de 1kHz de frecuencia aproximada, nos permite probar si la amplifi-caci n es lineal. Basta con usar un osciloscopio y medir si los 8 escalones ge-nerados son id nticos.

En funci n del escal n deformado, se puede luego determinar en qu partedel amplificador se encuentra la falla. Por ejemplo, los escalones centrales sedeforman cuando falla el circuito de corriente vac o. Una falla en los escalonesextremos significa que no funcionan correctamente los circuitos de boostrap. (fi-

Aprendiendo a Programar

112 Microcontroladores PIC

Fig. 10Fig. 10

Page 114: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

gura 11). Esta forma de onda es tambi n ideal para controlar la respuesta enfrecuencia del amplificador de potencia, sin necesidad de realizar varias medi-ciones con un oscilador de audio. Un amplificador sobrecompensado en fre-cuencia (realce de agudos) producir sobreimpulsos en los escalones y unosubcompensado (falta de agudos) redondear los frentes (figura 12).

La fabricaci n de un generador escalera nos da motivo para estudiar el ma-nejo de llaves anal gicas con un PIC. Esta es una de las utilidades m s impor-tantes del PIC y se usa en una gran cantidad de aplicaciones. Por ejemplo, unuso frecuente es la codificaci n y decodificaci n de se ales de TV. En este pro-yecto usaremos dos llaves CD4066 para conmutar 8 valores de tensi n de sa-lida, que forman una se al escalera de 8 pelda os y 3,5V de amplitud pico a pi-co. El circuito se muestra en la figura 13.

Los resistores R15 a R23 forman cada pelda o de la escalera y su valor de-be ser sumamente exacto. Si no puede conseguir resistores al 1%, los debeconseguir con resistores en paralelo medidos con un buen t ster digital. Una

Aprendiendo a Programar

Microcontroladores PIC 113

Fig. 11Fig. 11

Fig. 12Fig. 12

Page 115: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

vez armada la serie y con CI1 fuera del z calo se deben controlar las tensio-nes continuas en las uniones de los resistores con un t ster digital.

Los resistores R6 a R9 y R11 a R14 se utilizan como reparadores para fa-cilitar el service. En el uso normal no cumplen funci n especial alguna.

El reset es autom tico al encender la fuente de 5V a trav s de R10 y C3 quedemoran el crecimiento de la tensi n sobre el terminal 4 (MCLR ).

El puerto A se conecta con resistores de 1k‰ a los +5 V para evitar capta-ciones espurias. La salida de se al en escalera se produce sobre la conexi ncom n de salida de las llaves anal gicas y se aten a con el fin de reducir la im-pedancia de salida mediante R24 y RV1. La tensi n de salida m xima es de100mV pap aproximadamente. La nica modificaci n que requiere el progra-ma es la modificaci n de las constantes literales para que cada escal n dure12 S. (8 escalones duraran 8 x 125 = 1000 S = 1mS).

Si repasamos la secci n de la subrutina demora del art culo anterior vere-mos que cada instrucci n simple demora 1 S y que el loop definido con "FI-NO" dura 3 x FINO S. En nuestro caso, debemos buscar un n mero hexade-cimal cuyo equivalente anal gico sea 125.

Lo m s simple es recurrir al tanteo, usando hexadecimales que terminen encero; sabiendo que el hexadecimal 10 corresponde al anal gico 16, podemosdeducir que el anal gico 20 corresponde al 32, el 30 al 48 y as sucesivamen-

Aprendiendo a Programar

114 Microcontroladores PIC

Fig. 13Fig. 13

Page 116: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

te, ir multiplicando el hexadecimal x 1,6. Si 3 x FINO = 125 S implica que FI-NO = 125/3 = 41,6 anal gico, que dividido por 1,6 es 26. Aproximamos al he-xadecimal 30, ya que con ste tendremos que el loop "FINO" demorar 3 x 30Hex = 3 x 48 = 144 S. La frecuencia obtenida ser de F = 1/(144 x 8) = 868Hzque se aproxima a la buscada. Si desea mayor precisi n ajuste el literal "FI-NO".

Sintetizando: el programa debe variarse haciendo que fino valga 30 y me-dio y grueso sean ambos iguales a 00.

Piense que el circuito propuesto puede tener muchas posibilidades de mo-dificarse a voluntad y adaptarse a otros usos. Por ejemplo, si en lugar de co-nectar las entradas de las llaves a tensiones continuas, las aplican a se alesalternas provenientes de 8 osciladores sinusoidales, se puede hacer un barre-dor de audio. Si reduce la frecuencia de repetici n puede construir un genera-dor musical de acordes de 8 notas, similares a los utilizados como bocina mu-sical en autom viles y etc., etc., etc. Piense en otras posibilidades m s.

Los Formatos de los ArchivosMencionamos el programa MPASM, que es un ensamblador que transforma

el programa dise ado por nosotros en un idioma hexadecimal correspondienteal PIC. El programa generado a mano (el que escribe el programador, en basea las pautas dadas en este cap tulo) tienen una extensi n ASM (de ASEM-BLER" o ensamblador) y cuando lo aplic bamos al MPASM se generaban tresarchivos con terminaciones diferentes .err .err donde se encuentran los mensajesde error, si se cometi un error de sintaxis al escribir el archivo .asm.asm; un archi-vo .lst.lst con los renglones numerados para ubicar en cual se produce el error yel m s importante, el archivo .hex que contiene los datos que supuestamenteentiende el microprocesador.

En realidad del microprocesador no entiende el archivo con terminaci n.hex.hex. El necesita otro programa que transforma el .hex en un lenguaje binariode datos en serie que es lo nico que entiende el microprocesador PIC, sto eslo que hace un PROGRAMADOR o cargador de PICs.

Secuenciador de 8 Canales

Veamos un programa diferente al propuesto para rotar el encendido de 4leds. Este programa sirve para encender 8 leds en sucesi n de la figura 3 y conalgunos cambios para excitar las llaves anal gicas del generador de escaleraque acabamos de analizar:

Aprendiendo a Programar

Microcontroladores PIC 115

Page 117: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

En la primera sentencia se observa la declaraci n del microprocesador utili-zado. Como puede observar en lugar de utilizar el 16C84, como lo hicimos has-ta ahora, utilizamos el 16F84. La diferencia entre ambos radica en el tipo dememoria utilizada. El 16F84 contiene una memoria m s r pida del tipo EE-PROM FLASH que se puede reescribir un mill n de veces. El almacenamientode esta informaci n est garantizado por el fabricante por un lapso mayor a 40a os con el dispositivo sin alimentaci n. El 16C84 es totalmente similar, perocontiene una memoria EEPROM com n, de acceso m s lento y con menoresgarant as de mantenimiento de la informaci n grabada. Tambi n se puede uti-lizar el 16F83 similar al 16F84 pero con la mitad de capacidad de memoria y porlo tanto m s barato. Cualquiera de los tres integrados puede alimentarse contensiones de 4 a 6V.

En el sector entre l neas punteadas, se declara donde se van a ubicar 3 va-riables que utiliza el programa, llamadas ptob, j y k. Aqu se puede observar quela posici n de memoria puede declararse de diferentes modos. En el primerrengl n s lo escribimos 06. Cuando no se coloca el n mero entre acentos, nise coloca una letra adelante, se interpreta que se trata de un n mero hexade-cimal. Es decir que el programa ensamblador (el MPASM) interpreta un n me-ro "por defecto" como si fuera hexadecimal.

En el segundo y tercer rengl n se utiliza un criterio diferente. La letra H sig-nifica que el n mero entre acentos ser hexadecimal; en este caso particular seutilizar n las posiciones de memoria 1F y 1E para guardar a las variables j y k.

En la carpeta reset se ubica la parte del programa que se ejecuta s lo cuan-

Aprendiendo a Programar

116 Microcontroladores PIC

Page 118: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

do se presiona el pulsador de reset. Se trata de 5 renglones o sentencias de lascuales la primera ubica el control en la posici n de memoria de programa cero.En la segunda se carga el registro de trabajo w con el n mero cero. Observeque en este caso utilizamos otra notaci n diferente; la letra B indica que a con-tinuaci n se colocar un n mero binario de 8 d gitos (el PIC empleado s lopuede manejar hasta 8 bits). En la siguiente sentencia se vuelca el contenidodel registro de trabajo en ptob, que en el copete se declar ubicado en la posi-ci n de memoria 06. Esta posici n de memoria controla la disposici n del puer-to "B" como de salida (aclaramos que el uso del comando TRIS generar unmensaje de precauci n pero que por ahora no debemos tener en cuenta).

En la sentencia 4 de la carpeta "reset", se vuelve a cargar el registro de tra-bajo con el binario "00000001"; esto no implica que se realice ninguna modifi-caci n en la disposici n de puertos, ya que una vez cargada la posici n de me-moria, sta no se modificar hasta que se produzca un reset. El registro w seutiliza para cargar informaci n nueva y ubicarla luego donde se desea. Porejemplo, en la sentencia 5 se descarga w en el puerto de salida B, que conTRIS se declar como de salida. Esto significa que se va a encender el led ubi-cado en la pata 6 del mismo (B0). Aqu termina la carpeta reset y no se volve-r a ella hasta que se oprima reset o se desconecte y reconecte al microproce-sador.

La siguiente carpeta se llama "mciclo" y comienza con el comando "rlf" uti-lizado para mover posteriormente el bit puesto en uno del puerto B, una posi-ci n hacia la izquierda. De cualquier modo al ejecutar rlf no se producir toda-v a el cambio de estado en las salidas. En la segunda sentencia de la carpeta"mciclo" se carga el registro de trabajo, pero ahora utilizamos otra notaci n di-ferente. La letra D indica que vamos a cargar un n mero decimal y luego entreacentos decimos que ese n mero ser el 50 (esto es adecuado para usar el mi-croprocesador como generador de onda en escalera, pero debe cambiarse por500 si se va a utilizar como secuenciador; como vemos este n mero determinala duraci n de los escalones o el tiempo de encendido de cada led). En la ter-cera sentencia se descarga el n mero 50 en la variable "j" que antes se de-clar ubicada en la posici n de memoria 1F.

Aqu empieza la carpeta "jciclo" de una sola sentencia, en donde el mismon mero 50 se vuelca en la variable "k" que antes se declar ubicada en la po-sici n de memoria 1E.

La siguiente carpeta llamada "kciclo" se utilizar para decrementar estos n -meros 50 ubicados en 1F y en 1E de modo de establecer una demora necesa-ria para que los escalones o el encendido de los leds dure el valor que noso-tros impongamos.

La primer sentencia de la carpeta "kciclo", decrementa k en una unidad. El

Aprendiendo a Programar

Microcontroladores PIC 117

Page 119: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

comando "decfsz" es del tipo condicional; si el valor de k es superior a cero (1a 50 en nuestro caso), el control del programa va a la sentencia siguiente quees incondicional y reenv a el control de programa a la carpeta "kciclo". Cuan-do k llega al valor cero, env a el control a la sentencia posterior a "goto", ob-viando el bucle "kciclo". En una palabra que los dos primeros renglones de lacarpeta "kciclo" decrementan el n mero 50 hasta cero y como cada sentenciadura 1 seg, ya que estamos usando un cristal de 4MHz, podemos calcular queeste bucle del programa dura 100 seg.

En la tercera sentencia se decrementa la variable "j", del mismo modo quese hiciera con "k" pero se retorna a la carpeta "jciclo" para generar un nuevo bu-cle de 100 seg. Esto implica que los dos bucles tienen una duraci n de 100 x100 seg, es decir: 10.000 seg o 10mseg (con 500, cada bucle dura 1000 segy el producto es 1.000.000 de seg o 1seg). Transcurrido este tiempo el con-trol pasa a la quinta sentencia de la carpeta "kciclo" que es una sentencia in-condicional goto que env a el control a la carpeta "mciclo". Reci n en este mo-mento se produce la rotaci n de ptob, se apaga el primer led y se enciende elsiguiente por otro lapso de tiempo de 1seg.

El programa ir cambiando el binario acumulado en el puerto B, correr el 1a la izquierda hasta que salga del registro y vuelva a ingresar por la derecha.

Compilaci n de un ProgramaCuando uno tiene escrito el programa con el edit del DOS, debe verificarlo

exhaustivamente, controlar el encolumnado y los errores de sintaxis antes delpunto y coma separador. De cualquier modo siempre se puede deslizar un errorque provocar una falla en el programa. Si usted trabaja correctamente, el pro-grama ensamblador MPASM le avisar de los errores y le dar algunas adver-tencias tiles sobre el uso de algunas sentencias.

Para ver c mo funciona sto, volvamos a escribir el programa del secuen-cial de 8 canales modific ndolo de modo que presente algunos errores:

Aprendiendo a Programar

118 Microcontroladores PIC

Page 120: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

A continuaci n se abri el MPASM y se ejecut el archivo modificado con inten-ci n de obtener el archivo HEX que requiere el programador de pics. Pero si lo so-licitamos se pueden generar los archivos .err y .lst que ser n de gran utilidad paraencontrar errores de tipeo (si no sabe c mo se realiza este proceso, lea el texto: To-do Sobre PICs , deEditorial Quark).

Veamos c mose produce la lim-pieza de un progra-ma con errores. Alejecutar el archivocon F10 delMPASM, el ensam-blador ofrece un re-sultado como el in-dicado en la figura14.

Luego se mues-tra la pantalla grafi-cada en la figura 15donde se indican 5errores y 6 precau-ciones, adem s dela indicaci n de lacantidad de l neastotales ensambla-das (30 en este ca-so). Ahora se de-ben encontrar las l -neas con errores ypara eso se debe

Aprendiendo a Programar

Microcontroladores PIC 119

Fig. 14Fig. 14

Fig. 15Fig. 15

Page 121: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

editar el archivo .ERR con el mismo editor de DOS que estamos utilizando. Por cada error o advertencia hay una l nea de respuesta que comienza con

"WARNING" (advertencia) o ERROR (error) y un n mero de c digo por el que sepueden obtener m s detalles sobre el error o la advertencia, luego el nombre de ar-chivo analizado con el rbol de directorios correspondiente y el n mero de l nea quecontiene el error o advertencia. Luego un separador dos puntos y el tipo de error oadvertencia. Los mensajes de advertencia no impiden el desarrollo de la posteriorprogramaci n, pero los mensajes de error s . Vamos a atender primero los mensajesde error y luego los de advertencia. No es necesario numerar las l neas de progra-ma a mano, y a veces no es conveniente, porque la falta de un separador (punto ycoma) puede generar l neas fantasmas y confundirnos. Es preferible editar el archi-vo .lst (en nuestro caso SECU8NO.LST) que tiene al mismo tiempo los mensajes deerror y el n mero de l nea. Ver figura 16.

En la primera columna se marcan los errores o precauciones y la localizaci n yvalor de las variables. En la segunda, el n mero de l nea y a continuaci n la l nea deprograma. El primer error lo tenemos indicado antes de la l nea 00005: y nos indicaque las variables o s m-bolos LA y VARIABLEno est n definidos pre-viamente y que se pro-duzco un cambio deoperador. Mirando la l -nea se observa que elnico problema es que

falta el separador decomentarios y el en-samblador confundi elcomentario con unasentencia.

El siguiente errorest en la l nea 12 ynos indica que el errorse produce despu s dela primera columna, en-tre par ntesis se en-cuentra el argumento uorden equivalente(molw por movlw). En lal nea 22 est el siguien-te error y consiste en la

Aprendiendo a Programar

120 Microcontroladores PIC

Fig. 16Fig. 16

Page 122: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

orden GOTO escrita como GORO. Veamos ahora los mensajes de advertencia. Elprimero est en la primer l nea y se produce porque esta l nea est dirigida al pro-gramador y no puede ser entendida por el ensamblador.

Se puede dejar sin inconvenientes. La siguiente est en la l nea 12 y seguramen-te va a desaparecer cuando se corrija la orden movlw. Luego pasamos a la l nea 13en donde est la orden TRIS; ocurre que en los microprocesadores m s modernosesta orden se modifica por otra m s compleja; por ahora se puede seguir usandoTRIS para programar los puertos si se usa el 16C84 o el 16F84. La siguiente precau-ci n est en la l nea 18 y se debe a que el decimal 50000 est fuera del rango ad-mitido por el microprocesador. Esta precauci n debe ser considerada modificando elvalor por uno menor. La siguiente precauci n est en la l nea 22 y se corregir alreemplazar GORO por GOTO. Al corregir los errores y agregar el separador, elMPASM va a reportar s lo dos advertencias. Una en la l nea 1 por la declaraci n delmicroprocesador dirigida al programador de PICs y la otra es la referida a la ordenTRIS que puede ser ignorado por el momento.

Carga del Programa en un PICPara programar un PIC se deben conectar varias de sus patas en una disposi-

ci n determinada que hace accesible su memoria para recibir datos serie desde elpuerto paralelo de su PC. El puerto paralelo de la PC, en donde usted conecta habi-tualmente la impresora, tiene varias v as de conexi n, cuyo estado puede modificar-se por medio de un programa adecuado.

Con un programa adecuado como el NOPP Ud. podr a variar el estado de la pa-ta 14 del puerto paralelo de la PC en una r pida sucesi n que se corresponda conla informaci n serie necesaria para cargar el PIC. En una palabra que cada hilo deun puerto paralelo puede transformarse en un puerto serie. Cabe aclarar que esteprograma, de la empresa Gernsback, puede bajarlo de Internet de la direcci n:

ftp://ftp.gernsback.com/pub/EN/noppp.zip

En el momento de grabar un PIC se lo debe disponer seg n lo indicado en la fi-gura 17. Las conexiones de fuente y las se ales deben ser aplicadas seg n una se-cuencia predeterminada que debe respetarse invariablemente:

A) El primer paso es colocar el PIC en el z calo del programador con se ales y fuentesa potencial de masa.

B) Levantar la tensi n de fuente VDD a un potencial de 5V – 0,2V por la pata 14 (VDD).C) Levantar la tensi n de fuente VPP a un potencial de 13V – 0,3V por la pata 4 (MCLR

NEGADO).

Aprendiendo a Programar

Microcontroladores PIC 121

Page 123: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

D) Esperar en esas condiciones un tiempo superior a 1mS.E) Posicionar el primer dato en la pata 13 (RB7) con un potencial alto (mayor a 4V) o ba-

jo (menor a 1V). F) Cuando la pata 12 (RB6) pase a un estado alto, superior a 4V, el dato se carga en la

memoria.G) Continuar cargando los datos con el mismo criterio a un ritmo tal que el dato est pre-

sente por lo menos durante 100nS.H) Cuando todos los datos fueron cargados se debe esperar 1 segundo.I) Desconectar la fuente de 13V.J) Desconectar la fuente de 5V.K) Retirar el micro grabado.

Por sobre todas la cosas, debe respetarse el criterio de no sacar un PIC de suz calo con las fuentes conectadas porque puede desprogramarse o, peor a n, da-arse definitivamente. Tambi n es muy importante respetar las tensiones de fuente

y no demorar la llegada de datos, luego conectar VPP (porque podr an cargarse da-tos falsos por interferencias electromagn ticas).

Como usted puede observar de la descripci n anterior la entrada RB6 es utiliza-da como clock y la RB7 como entrada de datos en una cl sica operaci n de transfe-rencia de datos en serie. Hay un tiempo entre el momento en que MCLR (MCLR NE-GADO) sale de la condici n de reset hasta que aparece el primer dato o el primerpulso de clock. Tambi n hay un tiempo m nimo para la permanencia de un dato enla entrada (la representaci n usada para un dato significa que el mismo puede seralto o bajo, depende del bit que se est grabando). Lo que no hay es un tiempo m -ximo pero evidentemente cuando mayor es este tiempo m s lenta ser la carga delprograma.

El tiempo m s adecuado depende de factores tales como el largo del cable utili-zado para conectar el programador a la PC. Si el cable es largo, los pulsos tiendena deformarse y atenuarse, sobre todo cuando son de corta duraci n (100nS equiva-

Aprendiendo a Programar

122 Microcontroladores PIC

Fig. 17Fig. 17

Page 124: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

len a una frecuencia de 10MHz). Para evitar problemas todos los programadores tra-bajan a velocidades inferiores a la m xima, sobre todo considerando que la capaci-dad de memoria no es muy grande y para el uso casero no son imprescindibles gran-des velocidades de grabaci n.

Luego de grabar un PIC se puede verificar que su programa haya sido correcta-mente grabado. Esto se realiza utilizando la misma pata 13 del PIC (RB7) que, co-mo sabemos, es de I/O (Input/Output ; entrada/salida).

La transformaci n del modo de escritura a lectura no requiere cambios de hard-ware; es decir que vale lo indicado en la figura 17. El micro detecta los primeros bitemitidos para saber si debe grabar o leer y luego transforma RB7 en puerto de sali-da para poder leer los datos grabados. As contin a todo hasta el final de la lecturade datos.

La mejor prueba para saber si la grabaci n es exitosa consiste en modificar latensi n de la fuente VDD desde 4 a 6V. Primero se debe realizar una verificaci n a5V exactos, luego se debe pasar a 6V y realizar una nueva verificaci n; por ltimoubicar la fuente en 4V y realizar la ltima prueba.

Esta verificaci n es sumamente importante porque un PIC mal grabado puedepresentar fallas en su funcionamiento o peor a n puede funcionar correctamente alprincipio pero borrarse en pocos d as.

Vamos ahora a adaptar nuestro programador para que funcione con el softwareNOPP.

Las diferencias entre un programador y otro muchas veces se deben a la utiliza-ci n de diferentes patas del puerto paralelo de la PC. En efecto el software del pro-gramador puede elegir diferentes patas para utilizarlas como entradas y salidas dedatos serie. Tambi n es posible que se utilicen otras patas para generar las tensio-nes de control de fuentes y, por ltimo, algunos software s lo controlan la fuenteVPP; que es justamente el caso que nos ocupa. Por ltimo los programadores m scompletos utilizan una fuente regulada que puede ajustarse entre 4 y 6V para com-probar la efectiva grabaci n de los datos.

En la figura 18 realizamos dos modificaciones. Por un lado agregamos la llaveLL1 para operar la fuente de 5V a mano. Cuando la llave est cerrada Q1 conducey el micro est alimentado con 5V por la pata 14. La acci n de la llave se controlapor el encendido del led verde. Por lo tanto, usted debe colocar el PIC en el z caloo retirarlo s lo cuando el led verde est apagado.

Con referencia a la fuente agregamos un regulador LM317 en lugar del 78L5 quetiene la posibilidad de poder programar su tensi n de salida. En efecto el preset RV1en un extremo debe ajustar la salida en 4V y en el otro lo debe ajustar en 6V.

Tanto la secci n de fuente como el volt metro necesitan ajustes a realizar con unt ster digital. La fuente requiere el ajuste de R21. Comience colocando resistores de1k‰; luego debe variar ambos valores hasta que la salida cambie entre los l mites

Aprendiendo a Programar

Microcontroladores PIC 123

Page 125: PIC Microcontroladores - macchia.com.brmacchia.com.br/wp-content/uploads/2017/04/Microcontroladores-PIC... · Secuenciador de 4 Canales.....108 Generador de Seales de Audio.....112

especificados de 4 y 6V. En el volt metro se deben ajustar los resistores de 27 y 22k‰para que el led se encienda en el rango de 4,8 a 5,2V.

Con referencia a los cambios en el puerto paralelo preferimos modificar el cablede conexi n dejando el conector de la plaqueta sin modificaciones.

Observe que si la plaqueta est desconectada o la fuente est apagada el soft-ware NOPP reconoce este estado a trav s de la pata 5 de la ficha DB9 que est apotencial alto por medio de R9 y aborta la operaci n de carga.

El transistor Q2 que controla la fuente VPP se maneja a trav s de CI1 desde lapata 1 de la ficha DB9. Pero la fuente de 5V deber manejarse a mano por interme-dio de la llave LL1.

***************************************************

Con este tema damos por finalizada esta obra que complementa al texto: TodoSobre PICs que puede conseguir a trav s de la red de distribuidores de EditorialQuark y Centro Japon s. Aclaramos que en estos momentos estamos elaborando eltercer texto de la serie que explica la construcci n y programaci n de Sistemas conPICs para que Ud. pueda construir instrumentos electr nicos, codificadores y deco-dificadores de se ales de TV, aut matas programables, emuladores y un sinf n dedispositivos. ✪

Aprendiendo a Programar

124 Microcontroladores PIC

Fig. 18Fig. 18