Está en la página 1de 101

Hago constar que el presente Trabajo de Diploma fue realizado en la

Universidad Central “Marta Abreu” de Las Villas como parte de la


culminación de estudios de la especialidad de Ingeniería en Electrónica y
Telecomunicaciones autorizando a que el mismo sea utilizado por la
Institución, para los fines que estime conveniente, tanto de forma parcial
como total y que además no podrá ser presentado en eventos, ni publicados
sin autorización de la Universidad.

.
Firma del Autor.

Los abajo firmantes certificamos que el presente trabajo ha sido realizado


según acuerdo de la dirección de nuestro centro y el mismo cumple con los
requisitos que debe tener un trabajo de esta envergadura referido a la
temática señalada.

. .
Firma del Tutor. Firma del Jefe de Departamento
donde se defiende el trabajo.

.
Firma del Responsable de
Información Científico-Técnica.
Pen sam ien to

- I -
D ed icatoria

- II -
Agrad ecim ien tos

- III -
Tarea Técnica

TAREA TÉCNICA.

Para la consecución de los objetivos planteados en este Trabajo de Diploma se tomaron en


cuenta las siguientes tareas técnicas:

Realización de una revisión bibliográfica de temas relacionados con los


Microcontroladores PIC.
Revisión, modificación y actualización de la literatura docente sobre el tema.
Estudio, descripción y selección de herramientas de software para el montaje de
prácticas relacionadas con el tema.
Estudio y descripción de herramientas de hardware para montajes de prácticas
relacionadas con el tema.
Definir una metodología para el desarrollo de aplicaciones y elaboración de
ejemplos.
Redacción de un Informe Final.

. .
Firma del Autor. Firma del Tutor.

- IV -
Resu men

RESUMEN.

Con el presente Trabajo de Diploma se pretende dar una panorámica tanto


teórica como práctica acerca de los microcontroladores PIC con fines
docentes. Para lograr este objetivo se utiliza con los PIC de gama media de
la Microchip Technology, Inc. y en especial el PIC 16F84, por estar
considerado como uno de los mas representativos de la familia, de mayor
popularidad y para el cuál existe un gran número de aplicaciones. Se realiza
además breves descripciones de softwares para el trabajo con
microcontroladores así como de herramientas de hardware. Finalmente se
define una metodología para el desarrollo de aplicaciones y se brindan
ejemplos donde se emplean los editores, simuladores y dispositivos que
fueron abordados.

- V -
Índ ice

ÍNDICE.

PENSAMIENTO. .................................................................................. I

DEDICATORIA.................................................................................. II

AGRADECIMIENTOS. ...................................................................... III

TAREA TÉCNICA. ............................................................................ IV

RESUMEN. ......................................................................................... V

INTRODUCCIÓN. ............................................................................... 1
Organización del informe. ................................................................ 2

CAPÍTULO I. Principales características de los microcontroladores PIC


........................................................................................................... 3

1.1. Microprocesadores vs. Microcontroladores. .......................... 4


1.2. Arquitectura de los Microcontroladores PIC. ........................ 6
1.2.1. Memoria de Programa ROM. .........................................10
1.2.2. Contador de Programa (PC) y la Pila. ............................11
1.2.3. Memoria de datos RAM. ................................................12
1.2.3.1. Área EEPROM de la memoria de datos. .....................14
1.2.3.2. Procesos de lectura y escritura en la EEPROM. .........15
1.2.4. Direccionamiento de la memoria de datos. .....................15
1.2.4.1. Direccionamiento directo. .........................................16
1.2.4.2. Direccionamiento indirecto .......................................17
1.2.5. Puertos de Entrada/Salida ............................................17
1.2.5.1. El Puerto A. ..............................................................18
1.2.5.2. El Puerto B. ..............................................................18
1.2.6. Contadores/Temporizadores. .........................................19
1.2.6.1. Temporizador/Contador TMR0. ................................20
1.2.6.2. El Perro Guardián (WDT). .......................................21
1.2.6.3. El Divisor de Frecuencia. ..........................................21
1.3. Repertorio Risc. ..................................................................22
1.3.1. Operaciones y tipos de formatos. ...................................23
1.3.2. Instrucciones que manejan registros. .............................24
1.3.3. Instrucciones que manejan bits. .....................................25
1.3.4. Instrucciones de salto condicional. .................................25
1.3.5. Instrucciones que manejan operandos inmediatos. .........26
1.3.6. Instrucciones de control y especiales. .............................26

- VI -
Índ ice

1.4. Interrupciones y Reset. ........................................................28


1.4.1. Causas de interrupción. .................................................30
1.4.1.1. Interrupción externa INT. .........................................30
1.4.1.2. Interrupción por desbordamiento del TMR0. .............31
1.4.1.3. Interrupción por cambio de estado en las líneas RB7►4
del Puerto B. .............................................................................31
1.4.1.4. Interrupción por finalización de escritura en la
EEPROM de datos. ....................................................................31
1.4.2. Reinicialización o Reset. ................................................32
1.5. Estado del Arte. ......................................................................33
1.5.1. Principales Productores. ...................................................33
1.5.2. Las familias de los PICs. ...................................................33
1.5.3. Características de los PICs modernos. ...............................34
1.5.4. PICs wireless. ...................................................................35
1.5.5. PICs para procesamiento digital de señales (dsPICs) .........35
1.5.6. PICs con puerto USB (USB PICs) ......................................35
1.5.7. Ethernet PICs. ..................................................................36
1.5.8. PICs más comúnmente usados. ..........................................36
1.5.9. PICs en Internet. ..............................................................36
1.5.10. Los PIC como tema de estudio a nivel mundial. ................37

CAPÍTULO II. Herramientas para el desarrollo de aplicaciones ..........38

2.1. Herramientas de software para el trabajo con PICs. ................39


2.1.1. PROTEUS. ....................................................................39
2.1.1.1. Breve descripción del ISIS. .......................................40
2.1.1.2. Breve descripción del ARES. .....................................41
2.1.2. MPLAB. ........................................................................43
2.1.3. Integración del PROTEUS y el MPLAB. .........................45
2.1.4. Herramientas de software basadas en Linux. ..................45
2.1.4.1. KTechlab 0.3. ...........................................................46
2.1.4.2. YaPIDE. ...................................................................47
2.1.4.3. PiKdev. .....................................................................48
2.1.5. Melabs Programmer. .....................................................49
2.2. Herramientas de hardware para el trabajo con PICs. ..............50
2.2.1. In-Circuit Serial Programmed (ICSP). ...........................50
2.2.2. Descripción de un circuito para grabar PICs..................52
2.2.3. Dos periféricos muy comunes Display y Teclado. ............53

- VII -
Índ ice

CAPÍTULO III. Diseño de aplicaciones ...............................................56

3.1. Metodología para el desarrollo de aplicaciones para


microcontroladores. ........................................................................57
3.1.1. Desarrollo del Programa (Software). ..............................57
3.1.1.1. Especificación del programa......................................58
3.1.1.2. Diseño del programa. ................................................58
3.1.1.3. Edición y Ensamblaje. ...............................................58
3.1.1.4. Pruebas preliminares. ...............................................59
3.1.2. Desarrollo del hardware. ...............................................59
3.1.2.1. Especificación del hardware. .....................................59
3.1.2.2. Diseño del Hardware. ................................................59
3.1.2.3. Construcción del prototipo y pruebas preliminales. ...60
3.1.3. Integración y verificación.................................................60
3.2. Estructura básica de un Programa para microcontroladores
PIC. ................................................................................................60
3.3. Ejemplos de aplicaciones desarrolladas. ................................61
3.3.1. Timbre musical. ...............................................................62
3.3.2. Reloj. ...............................................................................64
3.3.3. Aplicación con display LCD. ............................................66

CONLUSIONES Y RECOMENDACIONES. .........................................69


Conclusiones. ..................................................................................69
Recomendaciones. ...........................................................................69

REFERENCIAS BIBLIOGRÁFICAS. ..................................................70

LISTA DE FIGURAS. .........................................................................74

LISTA DE TABLAS............................................................................76

ANEXOS. ...........................................................................................77

- VIII -
In troducció n

INTRODUCCIÓN.

Los microcontroladores están conquistando al mundo. La vanguardia de esta


expansión son los PIC Peripheral Interface Controller (Controlador de
Interfaz de Periférico), originados en la Universidad de Harvard para un
proyecto del Departamento de Defensa. Esta es una invasión que recién
comienza, se espera que el siglo XXI vea la mayoría de los aparatos
fabricados por los humanos gobernados por estos diminutos computadores.
Importantes sectores e industrias actuales no se conciben sin la utilización
de los microcontroladores. Tal es el caso de los sistemas de
comunicaciones, las diferentes líneas de equipos electrodomésticos, la
instrumentación y la electromedicina, la industria informática e incluso la
automovilística por solo citar algunas.

De todo lo anteriormente comentado se desprende la necesidad del estudio


de estos dispositivos y es esta precisamente la principal premisa de este
Trabajo de Diploma.

Entre los objetivos del presente trabajo está modificar y actualizar la


literatura docente que será empleada en la docencia para de esta forma
mejorar la comprensión de temas relacionados con los microcontroladores-
PIC e incentivar la investigación en ese campo. Analizar y describir las
herramientas de software y hardware para el trabajo con PICs y definir una
metodología para el desarrollo de aplicaciones. Todo esto deviene en la
creación de materiales de consulta acerca del tema.

Para asegurar el correcto cumplimiento de los objetivos planteados se


ejecutaron las siguientes tareas: primero, búsqueda bibliográfica y análisis
del estado del arte de los PICs; segundo, estudio y utilización de
simuladores y dispositivos electrónicos para el trabajo con PICs; tercero,

- 1 -
In troducció n

elaboración de aplicaciones de ejemplo utilizando las herramientas


estudiadas.

Organización del informe.

El presente Trabajo de Diploma se ha estructurado en tres capítulos con las


siguientes temáticas:

Capítulo I: Se realiza una descripción de los aspectos más


importantes de estructura y funciones de los microcontroladores PIC
de la gama media de la Microchip Technology, Inc.

Capítulo II: Se analiza y describe brevemente las herramientas de


software y hardware que responden a fines pedagógicos

Capítulo III: Se define una metodología para el desarrollo de


aplicaciones en PICs y se brindan ejemplos elaborados con la
utilización de las herramientas de software y hardware analizadas.

- 2 -
CAPÍTULO I.

Principales características de los


microcontroladores PIC
Cap ítu lo I

CAPÍTULO I. Principales características de los microcontroladores PIC

1.1. Microprocesadores vs. Microcontroladores.

Un microprocesador es un circuito integrado que contiene la parte más


importante de la Unidad Central de Procesamiento (UCP) de un computador
digital. En realidad según los modelos varía la estructura interna del
microprocesador, pero la gran mayoría contienen la Unidad de Control y la
Unidad Operativa. Figura 1.1.

Figura 1.1. Estructura de los microprocesadores.

Cuando con el microprocesador se implementa un sistema, hay que añadir


uno o varios circuitos integrados para conformar la Memoria Principal y los
Puertos de Entrada y Salida para que pueda enviar y/o recibir información
del mundo exterior. Figura 1.2.

Figura 1.2. Sistema microprocesador.

- 4 -
Cap ítu lo I

Los avances de la tecnología MOS aplicados en la fabricación de circuitos


integrados de alta densidad permitieron, antes del comienzo de la década de
los 80, implementar en un solo chip todos los bloques funcionales que
componen un microordenador. A dicho circuito integrado se le denomina
microcontrolador.

Un microcontrolador es un circuito integrado programable que contiene


todos los componentes de un computador. El microcontrolador es un
computador dedicado. En su memoria solo reside un programa destinado a
gobernar una aplicación determinada. Sus líneas de entrada y salida
soportan el conexionado de los sensores y adaptadores de los dispositivos a
controlar y todos los recursos complementarios disponibles tienen como
única finalidad atender todos sus requerimientos.

Un microcontrolador consta de los siguientes elementos básicos:


CPU
Memoria de programas (ROM)
Memoria de soporte de datos temporales (RAM)
Puertos de Entrada / Salida.
Temporizadores.

Las características y cantidad de estos elementos básicos están


determinadas por las funcionalidades asignadas a cada modelo. Estos
parámetros suelen ser bastante parecidos en microcontroladores de la
misma familia.

Con carácter general, los microcontroladores se usan en sistemas de control


que reúnan las siguientes propiedades:

El precio como factor crítico.

- 5 -
Cap ítu lo I

La capacidad de memoria necesaria es pequeña.


El procesamiento se realiza en tiempo real.
Se opera en decimal y se manipulan bits específicos.
No se gobiernan muchos periféricos.
Los sistemas son dedicados y siempre ejecutan el mismo programa de
aplicación.

En la Figura 1.3. se presentan los componentes de una pastilla


microcontroladora Se aprecia una memoria permanente tipo ROM o
EPROM, donde reside el programa fijo, que se repite con la finalidad de
controlar la aplicación de los microcontroladores en el procesamiento de
sucesos en tiempo real, y que exige un conjunto de interrupciones
multinivel, potente y flexible.

Figura 1.3. Estructura del microcontrolador 8048 de INTEL.

1.2. Arquitectura de los Microcontroladores PIC.

Los microcontroladores PIC para lograr una compactación de código óptima


y una velocidad superior a la de sus competidores incorporan tres avanzadas
características en su procesador:
Arquitectura Harvard
Procesador tipo RISC (Reduced Intruction Set Computer)
Procesador segmentado

- 6 -
Cap ítu lo I

La incorporación en los PIC de estos recursos permite ejecutar en un ciclo


todas las instrucciones excepto las de salto, que tardan el doble. La
simetría y ortogonalidad es un requisito imprescindible en el formato de las
instrucciones. De esta forma se consigue una compactación en el código de
programa, por ejemplo para un PIC 16X84 2,24 veces superior a la de un
68HC05, funcionando a la misma frecuencia. El juego de instrucciones se
reduce a 35 en la gama media y sus modos de direccionamiento se han
simplificado al máximo.

Con la estructura segmentada se pueden realizar simultáneamente las dos


fases en que se descompone cada instrucción. Al mismo tiempo que se
desarrolla la fase de ejecución de una instrucción se realiza la fase de
búsqueda siguiente.

La arquitectura Harvard es uno de los pilares que sustenta la organización


de los PIC. Gracias a ella se puede acceder de forma simultánea e
independiente a la memoria de datos y la de instrucciones. Figura 1.4.

Figura 1.4. Estructura del manejo de datos e instrucciones.

Este aislamiento y diferenciación de los dos tipos de memoria permiten que


cada uno tenga independencia en cuanto a la longitud y el tamaño más
adecuado.

- 7 -
Cap ítu lo I

Como se muestra en la Figura 1.5. la Unidad Lógico-Aritmética (ALU)


efectúa sus operaciones con dos operandos, uno que recibe desde el registro
W (Work), que hace las veces de acumulador en los microprocesadores
convencionales, y otro que puede provenir de cualquier registro o del
propio código de la instrucción.

Figura 1.5. Arquitectura de la ALU.

El resultado de la operación puede almacenarse en cualquier registro o en


W. Esta funcionalidad da un carácter completamente ortogonal a las
instrucciones que pueden utilizar cualquier registro como operando fuente y
destino.

La arquitectura interna de los PIC 16X84 es emblemática para este tipo de


dispositivos. Algunas variaciones en ella tales como el aumento de la
capacidad de las memorias, la inclusión de un mayor número de terminales
de Entrada/Salida y de nuevas prestaciones son las que han originado la
evolución hacia familias superiores. Por esta razón a partir de este momento
nos referiremos fundamentalmente a dicha familia. Figura 1.6.

- 8 -
Cap ítu lo I

Figura 1.6. Arquitectura interna del microcontrolador PIC 16X84.

La arquitectura de los PIC 16X84 consta de siete bloques fundamentales


que a continuación se mencionan:
Memoria de programa EEPROM de 1K x 14 bits.
Memoria de datos formada por dos áreas. Una RAM donde se alojan
22 registros de propósito específico (SFR) y 36 de propósito general
(GPR), y otra de tipo EEPROM de 64 bytes.
Camino de datos con una ALU de datos de ocho bits y un registro de
trabajo W del que normalmente recibe un operando y envía el
resultado. El otro operando puede provenir del bus de datos o del
propio código de la instrucción (literal).
Base de tiempo y circuitos auxiliares.

- 9 -
Cap ítu lo I

Direccionamiento de la memoria de programa en base al Contador de


Programa ligado a una Pila de ocho niveles.
Direccionamiento directo e indirecto de la memoria RAM.
Diversos recursos conectados al bus de datos, tales como Puertos de
entrada y salida, temporizador TMR0, etc.

Las operaciones de E/S con los periféricos la soportan los Puertos A y B.


Existe un temporizador, TMR0, para encargarse de las funciones de control
de tiempo. Existen también unos circuitos auxiliares que dotan al
procesador de interesantes posibilidades de seguridad, reducción de
consumo y reinicialización.

1.2.1. Memoria de Programa ROM.

La arquitectura de los PIC gama media admite un mapa de memoria de


programa capaz de contener 8 192 instrucciones de 14 bits cada una. Este
mapa se divide en páginas de 2 048 posiciones. Se necesitan 13 bits para
direccionar 8K posiciones, que es la longitud que tiene el contador de
programa. Sin embargo, el PIC 16F84 solo tiene implementadas 1K
posiciones, por lo que ignora los tres bit de más peso del PC. El rango de
direcciones que cubre el PIC 16F84 en su memoria de programa llega desde
la 00h a la 3FFh, o sea un total de 1024 posiciones, Figura 1.7.

- 10 -
Cap ítu lo I

Figura 1.7. Memoria de programa.


En la gama media, el PIC 16C84 aporta la utilización de una memoria de
programa del tipo EPROM, capaz de ser escrita y borrada eléctricamente.
Lo mismo sucede con el PIC 16F84, cuya memoria de instrucciones es de
tipo FLASH.

1.2.2. Contador de Programa (PC) y la Pila.

Debido a que los PIC 16X84 Tienen 1K de palabras de 14 bits en la


memoria de programa el PC, que dispone de 13 bits, emplea en el
direccionamiento de la misma solo los 10 de menos peso. Como los bits
ignorados son los tres de más peso, apuntar a la dirección 33h es lo mismo
que hacerlo a la 433h, 833h, C33h, 1033h, 1433h o a la 1C33h.

Al igual que todos los registros específicos que controlan la actividad del
procesador, el contador de programa está implementado sobre un par de
posiciones de la memoria RAM. Cuando se escribe el contador de programa
como resultado de una operación de la ALU, los ocho bits de menos peso
del PC residen en el registro PCL, que ocupa, repetido, la posición de los
dos bancos de memoria de datos.

- 11 -
Cap ítu lo I

Los bits de más peso PC <12:8>, reciben los cinco bits de menos peso del
registro PCLATH que ocupa la posición 0Ah de los bancos de la memoria
RAM.

La instrucción call y las interrupciones originan la carga del contenido PC


en el nivel superior o cima de la Pila. El contenido del nivel superior se
saca de la Pila al ejecutar las instrucciones return, retlw, retfie. El
contenido del registro PCLATH no es afectado por la entrada o salida de la
información de la Pila.
Los PIC no disponen de instrucciones específicas push y pop para manejar
directamente la Pila. Tampoco se dispone de ningún señalizador que indique
cuando se produce el rebosamiento de los ocho niveles de la Pila.

1.2.3. Memoria de datos RAM.

La memoria de datos del PIC 16F84 dispone de dos zonas diferentes:

Área de RAM estática o SRAM, donde reside el banco de Registros Específicos


(SFR), y el banco de Registros de Propósito General (GPR). El primer banco
tiene 24 posiciones de tamaño byte, aunque dos de ellas no son operativas, y el
segundo 36.
Área EEPROM de 64 bytes donde de manera opcional, se pueden almacenar
datos que no se pierden al desconectar la alimentación. Soporta 1000 000 ciclos
de escritura borrado y es capaz de guardar la información sin alteración por más
de 40 años.

La zona de memoria RAM se halla dividida en dos bancos (BANCO 0 y BANCO 1) de


128 bytes cada uno. En el PIC 16C84 solo se hallan implementadas físicamente las 48
primeras posiciones de cada banco (en el PIC 16F84 son 80), de las cuales 12 primeras
están reservadas a los registros de propósitos específicos, (SFR) que son los encargados del
control del procesador y sus recursos. Algunos de dichos registros se hallan repetidos en la

- 12 -
Cap ítu lo I

misma dirección de los dos bancos, para simplificar su acceso (INDF, ESTADO, FSR,
PCLATH e INTCON). La posición apuntada por la dirección 07h y la apuntada por la 87h
no son operativas. Los 36 registros restantes de cada banco se destinan a Registros de
Propósito General y en realidad solo son operativos los 36 del BANCO 0 porque los del
BANCO 1 se mapean sobre el BANCO 0, es decir cuando se apunta a un registro general
del BANCO 1, se accede al mismo del BANCO 0. Figura 1.8.

Figura 1.8. Memoria de Datos (RAM).

Para seleccionar el banco a acceder hay que manipular el bit cinco (RP0) del registro
ESTADO (Anexo 1). Si RPO = 0 se selecciona con este fin el BANCO 0. Tras un Reset
se accede automáticamente al BANCO 0. Para seleccionar un registro de propósito general
hay que tener en cuenta el estado del bit RP0, porque al estar mapeado el BANCO 1 sobre
el BANCO 0, cualquier direccionamiento del BANCO 1 corresponde al homólogo del
BANCO 0. En el direccionamiento directo de los registros GPR se ignora el bit de más
peso, que identifica el banco y sus direcciones están comprendidas entre el valor OxCh y
Ox2Fh.

- 13 -
Cap ítu lo I

Los registros SFR se clasifican en dos grupos. En uno se incluyen aquellos que controlan el
núcleo del microcontrolador (ESTADO, OPCION, INTCON, etc.) y en el otro los que
caracterizan la operatividad de los recursos auxiliares y periféricos. La Tabla 1.1. presenta
la estructura de los registros y los valores que toman después de un Reset valida para la
familia PIC 16X8X.

Tabla 1.1. Especificaciones de los registros SFR de los bancos de la memoria de datos.

1.2.3.1. Área EEPROM de la memoria de datos.

La memoria EEPROM no está mapeada en la zona de la memoria de datos donde se


ubican los registros SFR y GPR. Para poder leerla y escribirla durante el funcionamiento
normal del microcontrolador hay que utilizar cuatro registros del banco SFR:
El registro EEADR, ubicado en la novena dirección del BANCO 0, se carga la
dirección a acceder de la EEPROM de datos.
El registro EREDATA, ubicado en la dirección ocho del BANCO 0, en él se
depositan los datos que se leen o se escriben.

- 14 -
Cap ítu lo I

El registro EECON1, que ocupa la dirección 88h de la memoria de datos, o la


dirección 08h del BANCO 1, tiene misiones de control de las operaciones en la
EEPROM
El registro EECON2 en realidad no está implementado físicamente. Al tenerlo
todos sus bits son cero. Solo se emplea como un dispositivo de seguridad durante el
proceso de escritura de la EEPROM, para evitar las interferencias en el largo
intervalo de tiempo que precisa su desarrollo.

1.2.3.2. Procesos de lectura y escritura en la memoria EEPROM.

Se inicia un ciclo de lectura colocando la dirección a acceder en el registro EEADR y


poniendo el bit RD = 1 en el registro EECON1 (Anexo 4). El dato leído está disponible en
el registro EEDATA en el siguiente ciclo y permanecerá en él hasta que se realice una
nueva lectura o escritura en la EEPROM. Para escribir una posición de EEPROM de
datos el usuario debe seguir una determinada secuencia de instrucciones en la que participe
el registro EECON2. Este registro en realidad no se halla implementado físicamente solo
asume funciones de seguridad en el proceso, cargándose en él dos valores concretos: 55h y
AAh la duración típica de un ciclo de escritura es 10 ms que es notablemente larga en
comparación con la velocidad del PIC. El ciclo de escritura comienza cargando en EEADR
la dirección a escribir y en el registro EEDATA el valor a grabar.

1.2.4. Direccionamiento de la memoria de datos.

En los PIC de la gama media la memoria de datos esta organizada para alojar un máximo
de 4 bancos de 128 bytes cada uno pero el PIC 16C84 solo tiene implementados los 48
primeros bytes de los bancos 0 y 1. En el resto de los PIC de esta familia se destinan dos
bits del registro ESTADO (RP0 y RP1) (Anexo 1) para determinar el banco y otros siete
para elegir una de las 128 posiciones del banco seleccionado. Figura 1.9.

- 15 -
Cap ítu lo I

Figura 1.9. Organización de la memoria de datos.

Existen dos modos principales de direccionamiento en los PIC 16X84, el


Direccionamiento directo y el indirecto. A continuación nos referiremos a ellos.

1.2.4.1. Direccionamiento directo.

El operando que utiliza la instrucción en curso se referencia mediante su dirección que


viene incluida en el código de operación de la misma, concretamente en los siete bits de
menos peso. El banco a acceder lo determinan los bits RP0 y RP1 del registro ESTADO
(Anexo 1). En el caso del PIC 16C84 sólo se usa el bit RP0 al tener implementados
únicamente dos bancos. Figura 1.10.

Figura 1.10. Direccionamiento directo en los PIC 16C84.

- 16 -
Cap ítu lo I

1.2.4.2. Direccionamiento indirecto.

Este modo de direccionamiento se usa cuando en una instrucción se utiliza como


operando el registro INDF, que ocupa la posición cero de ambos bancos. En realidad el
registro INDF no está implementado físicamente, y cuando se le hace referencia, se accede
a la dirección de un banco especificada con los siete bits de menos peso del registro
FSR. El bit de más peso de FSR junto al bit IRP del registro ESTADO (Anexo 1) se
encargan de seleccionar el banco a acceder, mientras que los siete bits de menos peso
apuntan a la posición
Como sólo hay dos bancos en el PIC 16C84 en este modo de direccionamiento, el bit
IRP =0 siempre. Figura 1.11.

Figura 1.11. Selección del banco y la posición Direccionamiento indirecto.

1.2.5. Puertos de Entrada/Salida.

El microcontrolador PIC 16F84 dispone de dos puertos de Entrada/Salida


(E/S), el Puerto A y el Puerto B. Las líneas de ambos son configuradas por
los registros TRIS A y TRIS B respectivamente, como entradas si están a
uno y salida si están a cero. Al reinicializarse el PIC todos los bits de los
registros TRIS quedan a uno. La información de y hacia los puertos es
almacenada en los registros PUERTO A y PUERTO B. Con la instrucción
movwf Puerto se lee en un puerto y con la instrucción movf Puerto, w se
escribe en un puerto. También utilizan instrucciones para modificar el valor

- 17 -
Cap ítu lo I

de un bit particular correspondiente a una línea de un puerto o chequear su


valor. Cuando se lee una línea de un puerto se recoge el nivel lógico que
tiene en ese momento. Las líneas cuando actúan como salida están
“latcheadas” lo que significa que sus pines sacan el nivel lógico que se
haya cargado por última vez en los registros PUERTO A o PUERTO B. El
proceso de escritura de un puerto implica la operación
“lectura/modificación/escritura”. Primero se lee en el puerto luego se
modifica el valor y finalmente se escribe en el “LATCH” de salida.

1.2.5.1. El Puerto A.

Las líneas RA3►0 admiten niveles de entrada TTL y de salida


CMOC. La línea RA4/T0CK dispone de un circuito Schmitt Trigger
que proporciona una buena inmunidad al ruido y la salida tiene
drenador abierto. El pin RA4 multiplexa su función de E/S con la
entrada de impulsos externos para el TMR0. Cada línea de salida puede
suministrar una corriente máxima de 20 mA y si es de entrada puede
absorber hasta 25 mA. Al existir una limitación en disipación máxima de la
potencia al microcontrolador se le restringe la corriente máxima de
absorción del Puerto A a 80 mA y la de suministro a 50 mA.

1.2.5.1. El Puerto B.

Consta de 8 líneas bidireccionales de E/S, RB7►0. La línea RB0/INT tiene


dos funciones multiplexadas, además de pin de E/S, actúa como pin para la
petición de una interrupción externa, cuando se autoriza esta función
mediante la adecuada programación de registro INTCON (Anexo 5). El
Puerto B puede absorber un máximo de corriente de 150 mA, y suministrar
un total de 100 mA.

- 18 -
Cap ítu lo I

A todas las líneas de este puerto se les permite conectar una resistencia
pull-up de elevado valor con el positivo de la alimentación. Con este fin
Hay que programar en el registro OPTION (Anexo 3) el bit RBPU# igual
cero, afectando la conexión de la resistencia a todas las líneas. Con el
Reset todas las líneas quedan configuradas como entradas si se desactivan
las resistencias pull-up.

Las 4 líneas de los bits más significativos RB7►4 pueden programarse para
soportar una misión especial, cuando actúan como entradas se les puede
programar para generar una interrupción si alguna de ellas cambia su estado
lógico. El estado de estos pines se compara con el valor antiguo que tenía y
que se había “latcheado” durante la última lectura del PUERTO B. El
cambio de estado en alguna de esas líneas origina una interrupción y la
activación del señalizador RBIF.

La línea RB6 también se utiliza para la grabación serie de la memoria de


programa y sirve para soportar la señal de reloj. La línea RB7 constituye la
entrada de los datos en serie.

1.2.6. Contadores/Temporizadores.

Una de las labores más habituales en los programas de control de


dispositivos suele ser determinar intervalos concretos de tiempo y el
elemento encargado de realizarla recibe el nombre de temporizador
(timer). También suele ser frecuente contar los impulsos que se
producen en el exterior del sistema y el elemento destinado a este fin se
denomina contador. Si las labores del temporizador o contador la
asignamos al programa principal robarían mucho tiempo al procesador en
detrimento de tareas más importantes Por este motivo se diseñan recursos
específicamente orientados a estas misiones.

- 19 -
Cap ítu lo I

1.2.6.1. Temporizador/Contador TMR0.

Los PIC 16X8X poseen un temporizador/contador de ocho bits llamados


TMR0 que actúa de dos maneras diferentes:

Como contador de sucesos que están representados por los impulsos


que se aplican al pin RA4/TOCKL. Al llegar al valor FFh se
desborda el contador y con el siguiente impulso pasa a 00h,
advirtiendo esta circunstancia activando un señalizador y/o
provocando una interrupción.

Como temporizador, cuando se carga en el registro que implementa


al recurso un valor inicial se incrementa con cada ciclo de
instrucción (FOSC/4) hasta que se desborda, o sea pasa de FFh a
00h y avisa poniendo a uno un bit señalizador (bandera) y/o
provocando una interrupción. Figura 1.12.

Fig ura 1.12.Esquema simplif icado de un co ntado r t e mporiza dor.

El TMR0 se comporta como un registro de propósito especial (SFR)


ubicado en la primera dirección del BANCO 0 de la memoria de datos. El
TMR0 puede ser leído y escrito en cualquier momento al estar conectado
al bus de datos.

- 20 -
Cap ítu lo I

1.2.6.2. El Perro Guardián (WDT).

Se trata de un contador interno de ocho bits que origina un Reset


cuando se desborda. Su control de tiempo es independiente del TMR0 y
está basado en una simple red R-C. Su actuación es opcional y puede
bloquearse para que no funcione programando el bit WDTE de la
Palabra de Configuración (Anexo 2). La temporización nominal con la que
se haya programado el Perro Guardián es de 18 ms, pero utilizando el
divisor de frecuencia puede aumentarse hasta los 2,3 s.

La instrucción clrwdt borra al WDT y reinicia su cuenta. Sin embargo,


la instrucción sleep, además de borrar WDT detiene al sistema y lo lleva
a un estado de “reposo” o “de bajo consumo. Para desactivar al Perro
Guardián hay que escribir un cero en el bit dos (WDTE) de la Palabra
de Configuración (Anexo 2). En el registro ESTADO (Anexo 1) existe un
bit denominado TO# que pasa a valer cero después del desbordamiento
del WDT.

1.2.6.3. El Divisor de Frecuencia.

A menudo el TRM0 y el Perro Guardián precisan controlar largos


intervalos de tiempo y necesitan aumentar la duración del reloj que les
incrementa. Para cubrir este requisito se dispone de un registro
programable denominado Divisor de Frecuencia, que divide la frecuencia
utilizada por diversos rangos. Para programar el comportamiento del
TRM0, el Perro Guardián (WDT) y el divisor de frecuencia se utilizan
algunos bits del registro OPTION (Anexo 3) y una Palabra de
Configuración (Anexo 2). Figura 1.13.

- 21 -
Cap ítu lo I

F ig ura 1.13. Esq ue ma s imp lif icado de la s e cción d ed icada a l co ntro l de t ie mpo s de
l a a rq u it e ctu ra de l P IC 1 6X 8X .

1.3. Repertorio RISC.

Todos los modelos de microcontroladores PIC responden a la arquitectura


RISC, que significa “Computador de Juego de Instrucciones Reducido”.
Esto no sólo implica que el número de instrucciones máquina que es capaz
de interpretar y ejecutar cuando el procesador es pequeño, como sucede en
los PIC 16X8X, sea de 35; sino también que posee las siguientes
características:

Las instrucciones son simples y rápidas.


Las instrucciones son ortogonales.
La longitud de las instrucciones y los datos es constante.

- 22 -
Cap ítu lo I

1.3.1. Operaciones y tipos de formatos.

Para estudiar los diversos formatos que admiten las instrucciones del
repertorio de los PIC 16X8X se clasifican en cinco grandes grupos,
atendiendo al tipo de operación que desarrollan.

Operaciones orientadas a manejar registros de tamaño byte.


Operaciones orientadas a manejar bits.
Operaciones que manejan valores inmediatos.
Operaciones incondicionales de control del flujo del programa.
Operaciones de salto condicional.

Las instrucciones de los PIC de la gama media entre los que se encuentran
los PIC 16X8X se divide en diferentes campos de bits, cada uno de los
cuales referencia a operandos o elementos que maneja la instrucción en la
operación que realiza en el procesador. Se describen dichos campos:

Campo del código de operación. Los bits de este campo sirven para definir la
operación que realiza esta instrucción.

Campos de los operandos fuente (f) y destino (d). Estos campos de bits definen
los registros que actúan con operandos en la instrucción. Suelen referenciar la
dirección que ocupan en la memoria de datos. Se utiliza para realizar operaciones
orientadas a manejar registros de tamaño byte. Figura 1.14.

Figura 1.14. Campos de los operandos fuente (f) y destino (d).

- 23 -
Cap ítu lo I

Campo de operando inmediato o literal (k). Es un campo de bits que contiene el


valor de un operando inmediato. Es empleado en operaciones que manejan valores
inmediatos. Figura 1.15.

Figura 1.15. Campo de operando inmediato o literal (k).

Campo que referencia a un bit (b). Suele ser un campo de tres bits que indica la
posición de un bit concreto dentro de un registro de ocho bits. Las operaciones
orientadas a manejar bits lo adoptan. Figura 1.16.

Figura 1.16. Campo que referencia a un bit (b).

Campo de la dirección del salto. En las instrucciones de salto call y goto hay un
campo de bits que contiene la dirección de la siguiente instrucción que hay que
ejecutar. Dicho campo de bits se carga en el PC en las operaciones de salto
incondicional. En el caso de operaciones de salto condicional no se utiliza. Figura
1.17.

Figura 1.17. Campo de la dirección del salto.

1.3.2. Instrucciones que manejan registros.

Responden a la sintaxis nemotécnica f,d, siendo f y d los dos operandos fuente y destino
que se hallan implementados por registros de ocho bits de la memoria de datos. El registro f
viene referenciado por la dirección de siete bits que ocupa, mientras que el destino sólo por
uno, que si vale cero es el W y si vale uno es el registro fuente. En la Tabla 1.2. se
muestran las instrucciones de este grupo con sus características más importantes.

- 24 -
Cap ítu lo I

Tabla 1.2. Instrucciones de los PIC 16X8X que manejan como operandos registros de ocho bits

1.3.3. Instrucciones que manejan bits.

Sólo hay dos instrucciones en este grupo, pero son muy flexibles. Una de ellas pone a uno
(bsf) cualquier bit de un registro, mientras que la otra los pone a cero (bcf). Tabla 1.3.

Tabla 1.3. Características más relevantes de las instrucciones que manejan bits.

1.3.4. Instrucciones de salto condicional.

Sólo hay cuatro instrucciones de salto condicional en los PIC de la gama


media. Dos de ellas comprueban un bit de un registro y según valga uno o
cero saltan o no, (sólo se salta a la instrucción siguiente a la condicional).
Las otras dos instrucciones incrementan o decrementan un registro y la
posibilidad de salto se efectúa si con esa operación el valor del registro ha
llegado a cero. Cuando estas instrucciones no saltan porque no se cumple la

- 25 -
Cap ítu lo I

condición, tardan un ciclo de instrucción en ejecutarse. En caso que salten


tardan el doble, Tabla 1.4.

Tabla 1.4. Características más relevantes de las cuatro instrucciones condicionales de salto.

1.3.5. Instrucciones que manejan operandos inmediatos.

Se trata de media docena de instrucciones que realizan una operación con


un valor inmediato de ocho bits, que se proporciona dentro del formato de
la instrucción, el cual sólo tiene dos campos: el del código de operación
(seis bits) y del operando inmediato (ocho bits). Tabla 1.5.

Tabla 1.5. Características más relevantes de las instrucciones que manejan operandos inmediatos (k).

1.3.6. Instrucciones de control y especiales.

En este grupo se incluyen las instrucciones que rompen la secuencia normal


del programa porque alteran el contenido del PC y también las
instrucciones especiales. La instrucción de salto incondicional goto carga
en el PC la dirección de la nueva instrucción. La instrucción call de
llamada a subrutina, antes de cargar el PC con la dirección de la instrucción
a saltar, salva la dirección de partida guardando en la cima de la Pila el

- 26 -
Cap ítu lo I

valor actual del PC. De esta manera, al retornar de la subrutina se saca de


la Pila la dirección de regreso del programa principal.

Para realizar un retorno de una subrutina se pueden emplear dos


instrucciones. La más habitual es return, que se limita a extraer de la cima
de la Pila el valor que carga en el PC. Otra más compleja es retlw k, que,
además de hacer lo mismo que return, carga en W el valor inmediato k que
contiene. Es decir, devuelve un parámetro desde la subrutina. Para el final
de las interrupciones hay otra instrucción cuyo nemotécnico es retfie. La
operatividad de esta instrucción consiste en cargar en el PC el contenido de
la cima de la Pila y poner el bit GIE=1, pues al comenzar la interrupción
este bit se pone automáticamente a cero para evitar que cuando se atiende
una interrupción se produzca otra.

En cuanto a las instrucciones especiales, se han incluido dos en este grupo:


clrwdt y sleep. La primera pone a cero el contenido del Perro Guardián, es
decir, lo refresca o reinicializa. El Perro Guardián si se desborda (pasa de
0xff a 0x00) provoca un Reset. La instrucción clrwdt hay que colocarla
estratégicamente en ciertos puntos del programa para evitar la
reinicialización.

La instrucción sleep introduce al procesador en un modo de funcionamiento


que se llama de Reposo o de Bajo Consumo. Detiene al oscilador y el
procesador queda congelado, sin ejecutar instrucciones y manteniendo el
mismo valor los puertos de E/S. También pone los bit PD#=0 y TO#=1 y
borra al Perro Guardián y al Divisor de frecuencias. Tabla 1.6.

- 27 -
Cap ítu lo I

Tabla 1.6. Principales características de las instrucciones de control y especiales.

1.4. Interrupciones y Reset.

Las interrupciones son desviaciones del flujo de control del programa


originadas asincrónicamente por diversos sucesos que no se hallan bajo la
supervisión de la instrucción. Dichos sucesos pueden ser externos al
sistema, como la generación de un flanco o nivel activo en un pin del
microcontrolador, o bien interno, como el desbordamiento de un contador.

El comportamiento del microcontrolador ante la interrupción es similar a la


de la instrucción call de llamada a subrutinas. En ambos casos se detiene la
ejecución del programa en curso, se salva la dirección actual del PC con
una dirección, que en el caso de call viene acompañada de la propia
instrucción, y en el caso de una interrupción es una dirección “reservada”
de la memoria de códigos, llamada Vector de Interrupción.

En los PIC 16X8X Existen cuatro causas diferentes de interrupción, pero


todas ellas desvían el flujo de control hacia el Vector de Interrupción en la
dirección 0004h donde comienza la Rutina de Servicio de la Interrupción
(RSI). En general, en dicho Vector se suele colocar una instrucción de salto
incondicional (goto), que traslade el flujo de control a la zona de la
memoria de código destinada a contener la rutina de atención a las
interrupciones. Una de las tareas de la RSI es averiguar cual de las posibles

- 28 -
Cap ítu lo I

causas ha sido la responsable de la interrupción en curso. Para ello se


exploran los señalizadores (banderas) de las fuentes de interrupción. Otro
detalle importante en la RSI de los PIC 16X8X es la existencia del bit GIE
(Global Interrupt Enable) que al valer cero prohíbe todas las
interrupciones y que al terminar la RSI pasa automáticamente a uno para
volver a tener en cuenta las interrupciones. Este retorno de interrupción se
realiza mediante la instrucción retfie.

En la Figura 1.18. se muestra un organigrama de las fases más importantes


que se desarrollan durante el proceso de ejecución de una interrupción.

Figura 1.18. Organigrama de las operaciones principales de una interrupción en los PIC 16X8X.

La RSI suele comenzar guardando en la memoria de datos algunos registros


específicos del procesador, concretamente aquellos de los cuales la RSI va a
emplear su contenido, utilizando para este fin el registro de propósito
general de la memoria de datos. Antes del retorno al programa principal se

- 29 -
Cap ítu lo I

recuperan los valores guardados y se restaura completamente el estado del


procesador.
1.4.1. Causas de interrupción.

Los PIC 16X8X tienen cuatro causas o fuentes posibles de interrupción:


Activación de la pin RB0/INT
Desbordamiento del temporizador TMR0
Cambio de estado en una de los cuatro pines de más peso (RB7►4)
del Puerto B.
Finalización de escritura en la EEPROM de datos.

Cuando ocurre uno de los cuatro sucesos antes mencionados se origina una
petición de interrupción, que si se acepta y atiende comienza depositando el
valor de PC actual en la Pila, poniendo el bit GIE=0 y cargando en el PC el
valor 0004h, que es el Vector de Interrupción donde se desvía el flujo de
control.Cada fuente de interrupción dispone de un señalizador o bandera,
que es un bit que se pone automáticamente a uno cuando se produce.
Además cada fuente de interrupción tiene otro bit de permiso, que su valor
prohíbe o permite la realización de dicha interrupción. Figura 1.19.

Figura 1.19. Lógica de control para la generación de una interrupción en los PIC 16X8X.

1.4.1.1. Interrupción externa INT.

Esta fuente de interrupción es sumamente importante para atender


acontecimientos externos en tiempo real. Cuando ocurre alguno de ellos

- 30 -
Cap ítu lo I

activa el pin RB0/INT y se hace una petición de interrupción. Entonces, de


forma automática, el bit INTF=1 y, si el bit de permiso INTE=1, se
autoriza el desarrollo de la interrupción. Mediante el bit seis, llamado
INTDEG, del registro OPTION (Anexo 3) se puede seleccionar cual será el
flanco activo en RB0/INT.

1.4.1.2. Interrupción por desbordamiento del TMR0.

Cuando el TMR0 se desborda y pasa del valor FFh al 00h, el señalizador


T0IF se pone automáticamente a uno. Si además, el bit de permiso de la
interrupción del TMR0, T0IE=1 y el bit de permiso global de
interrupciones GIE=1, se produce una interrupción.

1.4.1.3. Interrupción por cambio de estado en las líneas RB7►4 del Puerto B.

Esta interrupción está diseñada específicamente para detectar la pulsación


de una tecla correspondiente a un teclado matricial que se explora con
cuatro líneas de E/S. Para esta función se exploran las líneas RB7►4 del
Puerto B, que cada vez que cambia el estado lógico de una de ellas fuerza al
señalizador RBIF a ponerse a uno, y si los bits de permiso RBIE=GIE=1 se
autoriza la interrupción.

1.4.1.4. Interrupción por finalización de escritura en la EEPROM de


datos.

El tiempo típico que tarda en desarrollarse una operación de escritura en


EEPROM de datos es de 10 ms, que es considerable comparado con la
velocidad a la que el procesador ejecuta instrucciones. Para asegurarse que
se ha completado la escritura y puede continuarse con el flujo de control del
programa es aconsejable manejar la interrupción que se origina al finalizar

- 31 -
Cap ítu lo I

la escritura, que pone automáticamente el señalizador EEIF a uno y se


autoriza siempre que los bits de permiso EEIE=GIE=1.

Cuando se describió el proceso de escritura de la EEPROM de datos se


indicó que se usaba un registro no real para asegurar la misma. Se trataba
del EECON2, en el que se graban dos valores, el 55h y el AAh. Durante la
escritura de este registro debe prohibirse la aceptación de interrupciones
para salvaguardar la operación de escritura, por eso en ese módulo se pone
GIE=0.

1.4.2. Reinicialización o Reset.

Los PIC 16X8X tienen cinco causas que provocan la reinicialización del
sistema, que consiste en cargar al PC con el valor 0000h (Vector de Reset)
y poner el estado de los bits de los registros específicos (SFR) con un valor
conocido.

Conexión de la alimentación. POR (Power on Reset).


Activación de la pata MCLR# (Master Clear Reset) en
funcionamiento normal.
Activación de la pata MCLR# en estado de reposo.
Desbordamiento del Perro Guardián en funcionamiento normal.
Desbordamiento del Perro Guardián en estado de reposo.

En la Tabla 1.7. se presenta el estado lógico que adquieren los bits de los
registros SFR de la memoria de datos cuando se provoca un Reset por una
de las cinco causas posibles.

- 32 -
Cap ítu lo I

Tabla 1.7. Valores que adquieren los bits de los registros SFR y el W después de producirse un Reset
por una de las cinco causas posibles.

La redacción de los acápites anteriores se realizó utilizando como fuentes


fundamentales las conferencias acerca del tema redactadas por el MSc. Ing.
Carlos Alberto Bazán Prieto (Bazán, 2004) y los materiales de la Microchip
Technology, Inc. (Microchip Technology, Inc, 1997, 1998)

1.5. Estado del Arte.


1.5.1. Principales Productores.

En la actualidad existen variedad de productores de microcontroladores.


Entre todas la empresas se destacan cuatro compañías: National, Philips,
Motorola y Microchip. Esta última es la más reconocida a nivel mundial en
este renglón. Las características de los PICs producidos por estos gigantes
son muy similares así como sus prestaciones. (Vallejo, 2002).

1.5.2. Las familias de los PICs.

Los PICs están normalmente divididos en familias de forma tal que se


agrupen por sus cualidades. Cada productor tiene sus propias divisiones. En
el caso de la Microchip Technology, Inc. las familias oscilan desde la
12XXX (gama baja), pasando por la 16XXX (gama media) hasta la 18XXX

- 33 -
Cap ítu lo I

(gama alta). El número de pines del encapsulado varía; en la gama baja es


de ocho pines mientras que en la media es de 18 hasta 40 y en la alta de 28
a 40 pines. También difieren la cantidad de recursos disponibles en cada
microcontrolador, entiéndase temporizadores, puertos de E/S, convertidores
A/D, capacidad de memoria etc.

1.5.3. Características de los PICs modernos.

Los PICs actuales vienen con una amplia gama de mejoras hardware
incorporadas:
Núcleos de UCP de 8/16 bits con Arquitectura Harvard modificada
Memoria Flash y ROM disponible desde 256 bytes a 256 Kbytes.
Puertos de E/S (típicamente 0 a 5,5 voltios).
Temporizadores de 8/16 bits.
Tecnología Nanowatt para modos de control de energía.
Periféricos serie síncronos y asíncronos: USART, AUSART,
EUSART.
Conversores analógico/digital de 10-12 bits.
Comparadores de tensión.
Módulos de captura y comparación PWM.
Controladores LCD.
Periférico MSSP para comunicaciones I2C, SPI, y I2S.
Memoria EEPROM interna con duración de hasta un millón de ciclos
de lectura/escritura.
Periféricos de control de motores.
Soporte de interfaz USB.
Soporte de controlador Ethernet.
Soporte de controlador CAN.
Soporte de controlador LIN.
Soporte de controlador Irda.
(Wikipedia.org., 2006)

- 34 -
Cap ítu lo I

1.5.4. PICs wireless.

El microcontrolador rfPIC integra todas las prestaciones del PICmicro de


Microchip Technology Inc. con la capacidad de comunicación wireless
UHF para aplicaciones RF de baja potencia. Estos dispositivos ofrecen un
diseño muy comprimido para ajustarse a los cada vez más demandados
requerimientos de miniaturización en aparatos electrónicos. (Microchip
Technology, Inc, 2002a)

1.5.5. PICs para procesamiento digital de señales (dsPICs)

Los dsPICs son el último lanzamiento de Microchip Technology, Inc.,


comenzando a producirlos a gran escala a finales de 2004. Son los primeros
PICs con bus de datos inherente de 16 bits. Incorporan todas las
posibilidades de los anteriores PICs y añaden varias operaciones de DSP
implementadas en hardware, como multiplicación con suma de acumulador
(multiply-accumulate, o MAC), barrel shifting, bit reversion o
multiplicación 16x16 bits. (Microchip Technology, Inc, 2002b)

1.5.6. PICs con puerto USB (USB PICs)

La mayoría de microcontroladores USB están optimizados para aplicaciones


del mercado de consumo y del PC más que para diseños industriales. Las
nuevas familias de microcontroladores PIC USB de Microchip Technology,
Inc. ofrecen los beneficios del USB 'Full Speed' para un amplio rango de
aplicaciones que pueden operar en entornos duros, industriales y conectados
a ordenadores personales. El objetivo de las aplicaciones para estos
productos incluye el mercado del automóvil, aplicaciones industriales,
médicas así como aplicaciones de consumo avanzadas y otros dispositivos
conectados al PC o alimentados por baterías. (Microchip Technology, Inc,
2006)

- 35 -
Cap ítu lo I

1.5.7. Ethernet PICs.

También la Ethernet ha sido conquistada por los microcontroladores PIC. El


PIC18F452 de la Microchip Technology, Inc. Este tipo de PIC es
generalmente incorporado en una tarjeta con memoria externa y conectores
RS232 u otros. Sus aplicaciones tipicas incluyen Servidores de Web http,
cientes de correo, conversión de Ethernet a interfaz RS232, control remoto
por sevidor de Web entre otras. (Microchip Technology, Inc., 2002c).

1.5.8. PICs más comúnmente usados.

PIC 12C508/509 (encapsulamiento reducido de 8 pines, oscilador


interno, popular en pequeños diseños como el iPod remote)
PIC 16F84 (Considerado obsoleto, pero imposible de descartar y muy
popular)
PIC 16F84A (Buena actualización del anterior, algunas versiones
funcionan a 20 MHz, compatible 1:1)
PIC 12F629/675
PIC 16F628
La familia PIC 16F87X (los hermanos mayores del PIC 16F84, con
gran cantidad de mejoras incluidas en hardware.)
PIC 18F452 (Wikipedia.org., 2006)

1.5.9. PICs en Internet.

Se puede encontrar mucha información y documentación sobre PICs en


Internet principalmente por dos motivos: el primero, porque han sido muy
usados para romper los sistemas de seguridad de varios productos de
consumo mayoritario (televisión de pago, Play Station etc.), lo que atrae la
atención de los crackers; y segundo, porque el PIC 16C84 fue uno de los
primeros microcontroladores fácilmente reprogramables para aficionados.

- 36 -
Cap ítu lo I

Hay muchos foros y listas de correo dedicados al PIC en los que un usuario
puede proponer sus dudas y recibir respuestas. (Wikipedia.org., 2006)

1.5.10. Los PIC como tema de estudio a nivel mundial.

Los microcontroladores PIC son actualmente estudiados en un gran número


de centros educacionales relacionados con la ingeniería electrónica,
automática o de telecomunicaciones. Como ejemplo podemos citar la
Escuela Superior de Ingenieros de Sevilla (España), la Universidad de Kent
(Reino Unido) y la Universidad de Oxford (Reino Unido) entre otros. No
solamente mediante clases presenciales se lleva a cabo le enseñanza acerca
del tema. La publicación de libros con autoría de profesores de
universidades, la presencia en los sitios en Internet de este tipo de
instituciones y el abundante respaldo de softwares y materiales técnicos
generalmente suministrado por los fabricantes hacen a los PIC dispositivos
muy populares y seguidos por los interesados en los últimos avances
tecnológicos (Morton, 2006), (Electronic Technology Group, 2006)
(Electronic Systems Design Center, 2006).

- 37 -
CAPÍTULO II.

Herramientas para el desarrollo de


aplicaciones
Cap ítu lo II

CAPÍTULO II. Herramientas para el desarrollo de aplicaciones

2.1. Herramientas de software para el trabajo con PICs.

Para el trabajo con los microcontroladores PIC existen gran variedad de


herramientas de software. En el presente capítulo se hará una breve
descripción de algunas de ellas que se adecuan a la pedagogía.

2.1.1. PROTEUS.

El PROTEUS es un software que permite el diseño y desarrollo de circuitos


eléctricos con gran variedad de elementos, incluyendo microcontroladores.
Brinda también la posibilidad de una simulación en tiempo real e
interactivo donde son incluidos componentes tales como pantallas LED,
interruptores, etc. Esta es una cualidad que lo hace particularmente
novedoso y muy útil. El PROTEUS está compuesto por dos elementos
fundamentales: ISIS Schematic Capture Program y ARES (Advanced
Routing and Editing Software). Su ultima versión es compatible con
Windows 98/Me/2k/XP y superiores. Acompañan a este producto una gran
cantidad de materiales complementarios tales como ayudas, tutoriales y
ejemplos que facilitan su aprendizaje y eficaz utilización.

Dentro del núcleo del PROTEUS se encuentran los siguientes recursos:


ISIS
ARES
ProSPICE Professional Mixed Mode circuit simulator.
PROTEUS VSM SDK, una herramienta para crear nuevos modelos de
componentes electrónicos.
Una biblioteca de cerca de 6000 modelos de componentes
electrónicos.

- 39 -
Cap ítu lo II

Una biblioteca de modelos interactivos incluidos interruptores,


pantallas, LEDs etc.
Bibliotecas de modelos de CPU para PIC, 8051, HC11 y procesadores
AVR.
Modelos de instrumentos virtuales, incluidos osciloscopio, generador
de señales, voltímetro y amperímetro.
(Labcenter Electronics, 2004a).

2.1.1.1. Breve descripción del ISIS.

ISIS Schematic Capture Program aporta los ambientes amigables y


herramientas de diseño, compilación y simulación en el PROTEUS. La
simulación la ejecuta en tiempo real y de forma interactiva. Este programa
es plenamente compatible con el trabajo en redes de computadoras. En la
Figura 2.1. se muestra la apariencia de espacio de trabajo del ISIS

F ig ura 2.1. Apa r ien c ia d e l es pac io d e t raba jo d e l IS IS.

- 40 -
Cap ítu lo II

Entre las principales posibilidades ofrecidas por ISIS se encuentran:

Modelos de CPU de microcontroladores populares, PICs y series


8051.
Modelos de periféricos interactivos. Incluye pantallas LED y LCD, un
universal matrix keypad y un terminal RS232.
Gráficos en pantalla (son colocados en el diseño como cualquier otro
elemento, pueden ser maximizados a pantalla completa para análisis y
mediciones)
Análisis basados en gráficos (Graph Based Análisis) tales como
transiente, frecuencia, ruido, distorsión, componentes AC y DC y
transformada de Fourier.
Soporte directo para componentes análogos en formato SPICE.
Arquitectura abierta para la inserción de modelos creados en C++ u
otros lenguajes. Estos pueden ser eléctricos, gráficos o
combinaciones de ambos.
Generación de listado de componentes a usar en el PBC.
(Labcenter Electronics, 2004b).

2.1.1.2. Breve descripción del ARES.

ARES (Advanced Routing and Editing Software) forma parte del módulo
del sistema PROTEUS para el diseño de PBC y ofrece listados de
componentes basados en estos, esto es completado con un amplio arsenal de
herramientas de diseño automático. Entre las principales posibilidades
ofrecidas por ARES se encuentran:

Una base de datos de alta precisión de 32 bit que aporta una


resolución lineal de 10nm, y angular de 0.1° y un tamaño máximo de
PBC de 10m.

- 41 -
Cap ítu lo II

ARES soporta 16 placas de cobre, dos pantallas de seda, cuatro placas


mecánicas más la de soldadura y la de pegado de las máscaras.
Listado de componentes basado en la integración con el ISIS.
Reportes de chequeo de reglas físicas y de conectividad.
Una poderosa edición de rutas incluyendo opciones de líneas curvas y
auto-trazado.
Trazado 2D con una biblioteca de símbolos.
Salida a una amplia gama de impresoras y plotters. Formatos de
salida .DXF, .EPS, .WMF y .BMP a teclado o archivo.
Auto-Placer, Auto-Routing, Gate-Swap automático y optimización.
(Labcenter Electronics,2004c)

En la Figura 2.2. se muestra la apariencia de espacio de trabajo del ARES

F ig ura 2.2. Apa r ien c ia d e l es pac io d e t raba jo d e l AR ES.

- 42 -
Cap ítu lo II

2.1.2. MPLAB.

MPLAB IDE (Integrated Development Environment) es un software para


computadora que permite desarrollar aplicaciones para microcontroladores
de Microchip. Este software pertenece a la Microchip Technology, Inc.
pero su adquisición es gratuita por razones obviamente comerciales. Posee
una gran cantidad de materiales complementarios para su estudio y
explotación.

Los principales elementos de diseño del MPLAB son:


Editor (Editor). Es un editor de texto de programa que también
compila.
Gestor de Proyecto (Project Manager). Aporta la organización,
integración y comunicación entre el IDE y las Herramientas del
Lenguaje.
Ensamblador/ Enlazador y Herramientas del Lenguaje
(Assembler/Linker and Language Tools). El ensamblador puede ser
utilizado para un solo archivo o conjuntamente con el enlazador para
proyectos. El enlazador es el encargado de recopilar y posicionar los
elementos y códigos necesarios.
Depurador (Debugger). Brinda la posibilidad de establecer puntos de
ruptura (breakpoints), corridas paso a paso, mostrar valores de
posiciones de memoria etc. Trabaja conjuntamente con el Editor.
Máquinas de Ejecución (Execution Engines). Son softwares de
simulación para todos los PICmicro y dsPIC. Utilizan la PC para
simular las instrucciones y algunas funciones periféricas.

El principio de funcionamiento de forma general del MPLAB IDE se puede


describir a través de su ciclo de desarrollo. Figura 2.3. (Microchip
Technology, Inc, 2004).

- 43 -
Cap ítu lo II

Fig ura 2.3. C iclo de desarro llo en MPLA B IDE.

El ambiente de trabajo del MPLAB es bastante amigable y de fácil manejo Figura 2.4.

F ig ura 2.4. Apa r ien c ia d e l es pac io d e t raba jo d e l M P LAB ID E.

- 44 -
Cap ítu lo II

2.1.3. Integración del PROTEUS y el MPLAB.

La integración del PROTEUS y el MPLAB para el estudio de los


microprocesadores PIC es una opción muy a tener en cuenta ya que se
complementan perfectamente. El punto fuerte del MPLAB es la
programación y ofrece en ese sentido una gran cantidad de facilidades en
cuanto al trabajo y visualización de registros. También en compilación y
depurado de códigos el MPLAB presta muy buenos servicios. En cuanto al
proceso de montaje y simulación de circuitos con microprocesadores PIC es
el PROTEUS el programa más poderoso. La simulación en tiempo real, la
interactividad y la inclusión de una gran variedad de modelos electrónicos
no solamente de PICs hace al PROTEUS inigualable en ese campo. Su
opción de importar fuentes de código permite un enlace con el MPLAB a
través de archivos de extensión .HEX previamente creados en este último.
De esta manera se puede perfectamente diseñar una aplicación, programarla
en MPLAB y montarla y simularla en PROTEUS para mayor comodidad y
aprovechamiento de cada una de estas herramientas de software.

2.1.4. Herramientas de software basadas en Linux.

Una variante en la explotación de programas de diseño y programación de


aplicaciones para microcontroladores es el software libre. En la actualidad
existen varias plataformas de este tipo (GNUs) que abarcan una gran gama
de aplicaciones disponibles. Posiblemente la más conocida es el Linux. La
liberación y publicación de los códigos de los programas de estas
plataformas hace que el acceso a él sea completamente gratis y brinda la
ventaja de un rápido mejoramiento del mismo gracias a las comunidades de
desarrollo existentes. La migración hacia plataformas basadas en software
libre es una tendencia mundial. A continuación se analizan opciones
sustitutivas a las herramientas tradicionales, que están disponibles.

- 45 -
Cap ítu lo II

2.1.4.1. KTechlab 0.3.

KTechlab es un IDE (Integrated Development Environment) para trabajar


con circuitos electrónicos y microcontroladores. Con el se pueden ejecutar
simulaciones de gran variedad de componentes (lógicos, integrados,
lineales, no lineales y reactivos) y también de microcontroladores PIC.
Además posibilita el depurado (debugging) y posee enlaces con lenguajes
complementarios de alto nivel: FlowCode y Microbe. Este software es de
fácil manejo, permite la realización de mediciones, diversos dispositivos de
salidas: pantallas de LEDs, de ocho segmentos etc. y puede soportar un
compilador de C para PICs. En la Figura 2.5. se muestra la apariencia de
uno de los espacios de trabajo del KTechlab. (Saxton, 2006)

F ig ura 2.5. Apa r ien c ia d e uno de lo s espa cios de t raba jo del KTechlab.

- 46 -
Cap ítu lo II

2.1.4.2. YaPIDE.

El YaPIDE es un IDE que tiene propósito llegar a ser un simulador para


Linux plenamente compatible con los PIC de la Microchip Technology,
Inc. Resulta excelente en la edición y compilación de programas y ofrece
una interfaz práctica y agradable. Se prevé su expansión a otras plataformas
y un aumento del número de dispositivos en sus bibliotecas. Es importante
señalar que el YePIDE es un programa bastante joven, por lo cual es posible
que no todo trabaje según lo esperado. Uno de los espacios de trabajo del
simulador se muestra en la Figura 2.6. (Toussaint, 2006).

Fig ura 2.6. U no de lo s espacio s de t rabajo del YaPID E

- 47 -
Cap ítu lo II

2.1.4.3. PiKdev.

El PiKdev es un IDE para el desarrollo de aplicaciones basadas en


microcontroladores PIC. Soporta lenguaje ensamblador, lenguaje C y
servicios de la familia PIC 18XXX. PiKdev es una herramienta desarrollada
en C++ sobre plataforma Linux. Algunos de sus componentes son:
Editor de programa con gran cantidad de facilidades.
Interfaces con el ensamblador gpasm, el enlazador (linker) gplink
y el compilador en lenguaje C cpic para PIC 18XXX
Gestor de proyecto con funcionalidades estándar.
Posibilidad de programación de PICs a través del puerto paralelo.
La gama de PICs con la que trabaja el PiKdev es limitada pero a la vez
extensa. Incluye PICs de las familias desde la 10FXX hasta la 18FXX.
Existen numerosas versiones de este programa, cada cual con características
propias que pueden ser aprovechadas según las necesidades del usuario.
En la Figura 2.7. se muestran ambientes de trabajo del PiKdev. (w3.org.,
2006).

Fig ura 2.7. A mbient es de t raba jo del PiKdev.

- 48 -
Cap ítu lo II

2.1.5. Melabs Programmer.

Melabs Programer es el software utilizado por el kit para el grabado de los


códigos deseados en la memoria de los microcontroladores PIC, compatible
con Windows 98/ME/NT/2000/XP. Las posibilidades conjuntas kit-software
de quemado de datos abarcan una gran cantidad de modelos de
microcontroladores PIC. En su documentación aparecen debidamente
listados así como las modificaciones pertinentes a realizar en casos
específicos. Este programa importa un archivo de extensión .HEX creado
previamente por algún compilador. Las principales operaciones que realiza
son las siguientes:
Grabado en memoria. Se observará una ventana con un
desplazamiento progresivo a medida que se efectúa la grabación del
microcontrolador.
Borrado de la memoria. El software borrará el contenido actual del
microcontrolador.
Chequeo del borrado. El software revisa el contenido de la memoria
para asegurar que la memoria ha quedado borrada.
Lectura de la memoria. El software lee el contenido del
microcontrolador que se halla ingresado en el kit. Se puede observar
lo leído accediendo a View|Configuration|Code.
(microEngineering Labs, Inc, 2005)

Fig ura 2.8. Apa r iencia M e labs Prog ramer.

- 49 -
Cap ítu lo II

2.2. Herramientas de hardware para el trabajo con PICs.

2.2.1. In-Circuit Serial Programmed (ICSP).

La inmensa mayoría de los microcontroladores PIC pueden ser programados


mediante ICSP. Este método consiste en la utilización de un total de cinco
terminales del PIC para lograr el flujo de datos en modo serie hacia o
desde él. Los pines utilizados son:

MCLR (VPP): Entrada Master Clear (Reset) / Entrada de voltaje de


programación. Esta entrada es un Reset en bajo.
VDD: Entrada de voltaje positivo para la lógica y pines de
Entrada/Salida.
VSS: Referencia de tierra para la lógica y pines de Entrada/Salida.
RB6: Pin Entrada/Salida de interrupción por cambio de estado. Reloj
en programación serie.
RB7: Pin Entrada/Salida de interrupción por cambio de estado. Datos
en programación serie.
(Microchip Technology, Inc, 1998)

En el caso del PIC 16F84, este pasa al modo Programación/Verificación


manteniendo los pines RB6 y RB7 en bajo mientras MCLR sube de V I L a
V I H (V S S ≤ V I L ≤ 0.2 V D D ; 0.85V ≤ V I H ≤ V D D ) llegando posteriormente a
V P P (V=13V), teniendo además a V D D alimentado (generalmente 5V). En
este modo RB6 pasa a ser Entrada del Reloj de Programación y RB7
Entrada/Salida de Datos de Programación. Ambos constituyen entradas
schmitt trigger en este modo y RB7 pasa a ser una salida CMOS cuando
se realiza el proceso de lectura. (Microchip Technology, Inc, 1997a)

- 50 -
Cap ítu lo II

En los PIC 16F8X debe transcurrir un tiempo de más de 100ns desde el


arribo de MCLR a V P P para que comience la atención a pulsos de reloj en
RB6. Este mismo tiempo ha de ser el período a utilizar para los pulsos de
reloj y el código de transmisión de datos que es un bipolar con retorno a
cero con los valores de 0, 2.5 y 5V.

Al pasar el dispositivo al modo Programación/Verificación después del


Reset por MCLR el Contador de Programa (PC) está en la dirección 0000h.
A continuación se pasan seis bit al PIC por RB7 utilizando como
sincronismo la señal de reloj que llega por RB6. Estos seis bit direccionan
la posición de memoria a leer o escribir. La línea de datos permanece en
alta impedancia un período de tiempo que depende de la operación a
realizar. Durante este tiempo el reloj está apagado. Finalmente los datos (14
bits) ingresan o salen del PIC. En la Figura 2.9. se muestra un esquema de
las principales características de la ICSP en los PIC 16F8X. (Vallejo,
2002).

F ig ura 2.9. P r in c ipa le s ca ract e r ístic as de la ICS P en lo s P IC 16 f8X .

- 51 -
Cap ítu lo II

2.2.2. Descripción de un circuito para grabar Microcontroladores PIC.

Basándose en las características de la ICSP se han creado gran cantidad de


circuitos para la grabación de PICs. A pesar del elevado número, la esencia
es en todos la misma.
A continuación realizaremos un breve análisis del circuito (Quemador)
disponible.

La comunicación PC- Quemador se realiza mediante el Puerto Paralelo de la


PC (DB25) y un conector DB9 (female) existente en el Quemador. La
Tabla 2.1. muestra la conexión existente entre los conectores DB9 y DB25.

Tabla 2 .1. Conex ión entre lo s conectores DB9 y DB25 .

Los pines D2►5 son utilizados por la PC para controlar V D D (D4) y MCLR
(D5); enviar la señal de reloj a RB6 (D3) y enviar o recibir datos desde el
Microcontrolador a través de RB7 (D2 ó /ACK). La referencia de tierra se
toma del Quemador. El enlace con los elementos del circuito se realiza
mediante inversores. Todas las salidas de los inversores están conectadas a
resistencias pull-up.

A partir de una fuente de 15V DC/ 200mA se obtienen los voltajes


necesarios para alimentar los inversores, los PICs y lograr V P P . Para ello se
utilizan las pastillas L7812 y L7805. Al común del L7812 se conectan
diodos para así subir la referencia y obtener los 13V de V P P .

- 52 -
Cap ítu lo II

El quemador posee varias bases capaces de soportar microcontroladores de


8, 18, 28 y 40 pines. La Figura 2.10. muestra el esquema del quemador.

Fig ura 2.10. Esquema del quemado r.

2.2.3. Dos periféricos muy comunes Display y Teclado.

En aplicaciones con microcontroladores PIC es muy común encontrar como


periféricos a controlar diplays y teclados. Existe gran variedad en estos
dispositivos por lo que se establece una relación directa entre sus
características y las del microcontrolador PIC que se utilice.

- 53 -
Cap ítu lo II

Esta es la variante más utilizada para el trabajo con microcontroladores PIC


debido a las facilidades de programación. Para la explicación de su
funcionamiento tomaremos un módulo LCD (Liquid Crystal Display) de
16x2 lo que significa de dos filas y 16 caracteres. En la Tabla 2.2. se
muestra la distribución de pines del LCD YJ162-A la cual es característica
de los LCD de 16x2.

Tabla 2 .2. D istribución de pines LCD YJ162-A .

El manejo del LCD se basa en la entrada de palabras de control o datos.


Primeramente se inicializa el display enviando palabras de control, para
ello se lleva a RS a cero y E a uno (0 y +5V, R/W=0). Generalmente los
fabricantes especifican las secuencias de inicialización para sus LCD
(Anexo 8). Una vez terminada la configuración para el envío de datos RS
pasa a uno (R/W=0), se pone el dato en los pines D0►7 y E pasa a uno y
luego a cero.
Los valores a utilizar para los distintos caracteres son también
especificados por los fabricantes. En la Tabla 2.3. se muestran algunas de
las palabras de control de un LCD 16x2

- 54 -
Cap ítu lo II

Tabla 2 .3. Prin cipa les inst rucciones LCD 16x2.

Los teclados más corrientes en aplicaciones de microcontroladores son los


basados en el principio de funcionamiento matricial. Especial uso tienen los
teclados numéricos (de teléfono) debido a su fácil manejo, posibilidades de
explotación y relativo bajo costo de adquisición. En la Figura 2.11. se
muestra una variante de distribución de pines de uno de estos teclados.

F ig u ra 2 . 1 1 . D ist r ib u c ió n d e p i n e s d e u n t e c la d o n u m ér i co.

(DatasheetArchive, 2006a,b), (Ciprés Microsystems, Inc, 2004)

- 55 -
CAPÍTULO III.

Diseño de aplicaciones
Cap ítu lo III

CAPÍTULO III. Diseño de aplicaciones

3.1. Metodología para el desarrollo de aplicaciones para


microcontroladores.

A la hora de implementar una aplicación sobre microcontroladores es de


gran utilidad seguir una serie de pasos definidos previamente con un orden
lógico. Este proceso lleva el nombre de Ciclo de Desarrollo y se divide en
dos ramas fundamentales: el desarrollo del software y el desarrollo del
hardware, esta división es lógica y práctica. En la Figura 3.1. se muestra el
diagrama del Ciclo de Desarrollo. (The 8051 Microcontroller.)

F ig ura 3.1. D iag rama de l C ic lo d e D esa rro llo .

3.1.1. Desarrollo del Programa (Software).

En esta etapa se llevan las ideas del proyecto original a lenguajes de


programación de diferentes niveles. Durante el desarrollo del software se
pueden tomar como referencia los pasos descritos a continuación.

- 57 -
Cap ítu lo III

3.1.1.1. Especificación del programa.

En él se especifican las tareas del programa y de la aplicación en conjunto.


Se definen las siguientes problemáticas: ¿Cómo el usuario va a interactuar y
controlar el sistema?, ¿Cuál debe ser el efecto de cada acción realizada?,
¿Existen teclas, display, actuadores, etc.? También se realiza la
modularización de funciones de forma tal que se definan las condiciones de
entrada y salida que garantice la comunicación entre los diferentes
módulos. Las funciones que requieran de un tiempo crítico de ejecución u
otro tipo de condiciones especiales deben ser identificadas de forma tal que
permita puntualizar el ordenamiento estructural del programa, la definición
de funciones atendidas por interrupción y sus niveles de prioridad.

3.1.1.2. Diseño del programa.

Se realiza la descripción del algoritmo a seguir basándose en la sucesión


lógica de acciones a ejecutar. En el que se puede utilizar diagrama de flujo
o seudo código.

3.1.1.3. Edición y Ensamblaje.

La escritura y edición del programa es un ciclo iterativo, al menos


inicialmente, ya que en el ensamblaje o traducción se detectan errores de
sintaxis que tienen que ser corregidos y reensamblados. Por lo general este
proceso se lleva a cabo en programas especializados del tipo IDE
(Integrated Development Environment). Existen además variantes de
trabajo en software libre.

- 58 -
Cap ítu lo III

3.1.1.4. Pruebas preliminares.

Finalmente se realizan pruebas al programa creado empleando un


Simulador. Con esto se busca la verificación funcional del programa. Se
pueden probar las funciones del programa por separado y posteriormente
todo el programa ejecutando instrucción a instrucción, introduciendo puntos
de ruptura o empleando otras técnicas.

3.1.2. Desarrollo del hardware.

Todas las funciones creadas en software necesitan por lo general de un


soporte material para su desempeño. Durante el desarrollo del hardware se
diseñan los circuitos que acompañaran al microcontrolador mediante los
pasos que se describen a continuación.

3.1.2.1. Especificación del hardware.

Se especifican una serie elementos como: tipos y cantidad de memoria,


mapa de memoria y dispositivos de entrada/salida, dispositivos adicionales
al microcontrolador, forma, dimensiones del equipo, etc.

3.1.2.2. Diseño del Hardware.

Este paso puede ser ejecutado con la ayuda de programas específicos.


Existe la opción del empleo de herramientas CAD, como ORCAD u otras
como el caso del PROTEUS (ISIS), el KTechlab (software libre), etc. Por
lo general en estos programas se realizan el diseño esquemático del
circuito y del circuito impreso.

- 59 -
Cap ítu lo III

3.1.2.3. Construcción del prototipo y pruebas preliminales.

Lo más común es realizar el cableado en una tarjeta de pruebas,


Breadboard, etc. Se deben realizar una serie de pruebas en ausencia del
programa de la aplicación, tales como:

Chequeo visual.
Chequeo de continuidad.
Mediciones de CD.
Mediciones de CA.

Es de gran utilidad realizar algunos programas de prueba para funciones


por separado que permitan detectar errores para de esta forma corregirlos y
optimizar el diseño.

3.1.3. Integración y verificación.

Esta es la etapa más crítica, es el momento cuando el hardware recibe el


programa. Se necesitan gran cantidad de recursos adicionales en esta etapa:
PC, tarjeta de desarrollo para microprocesadores, fuente de alimentación,
cables y conectores, equipos de medición, etc. También incluye el empleo
de programas para la puesta a punto, programa monitor, sistema operativo,
simuladores y emuladores.

3.2. Estructura básica de un Programa para microcontroladores PIC.

En todo programa se debe especificar el tipo de PIC que se emplea, incluir


sus librerías y configurarlo. Ejemplo:
list p=16f84
include <p16f84.inc>
_config_RC_OSC &_WDT_OFF

- 60 -
Cap ítu lo III

El programa fuente esta compuesto por una sucesión de líneas de programa.


Cada línea de programa está compuesta por 4 campos separados por uno o
más espacios o tabulaciones. Estos campos son:

[Etiqueta] Comando [Operando(s)] [; Comentario]

La primera columna se utiliza para nombrar variables o colocar etiquetas.


La segunda columna se utiliza para aplicar la instrucción. La tercera
columna contiene los datos necesarios para que pueda ejecutarse dicha
instrucción. La cuarta columna contiene datos útiles para el programador
pero que no son tenidos en cuenta por el microcontrolador. Ejemplos:

Cont EQU 0x14 ; El contador se define en 0014h


bsf INTCON,T0IE ; Se habilita interrupción externa
movlw D'6' ; Mueve 6 d al registro W
goto Minus_H ; Salto hasta la etiqueta Minus_H
call RETDIG ; Llamada a una subrutina
nop ; No opera

Un programa siempre empieza con la instrucción org y termina con la


instrucción end. Una subrutina se define con una etiqueta y termina con un
retorno que puede ser return o retlw. Resulta de gran utilidad delimitar
mediante comentarios los módulos del programa para una mejor
comprensión del código.

3.3. Ejemplos de aplicaciones desarrolladas.

A continuación se describen varias aplicaciones desarrolladas sobre el PIC


16F84. Para su elaboración se utilizaron las herramientas de software y
hardware que se han descrito anteriormente en el Capítulo II. Todas las
aplicaciones fueron probadas tanto en programa como en Breadboard.

- 61 -
Cap ítu lo III

3.3.1. Timbre musical.

Este es un ejemplo del ISIS que es factible montar por su sencillo diseño.

Objetivo: Ejecutar una melodía según el botón pulsado y mantener


encendido durante la misma un LED correspondiente.

Especificaciones y diseño del programa: Una vez alimentado el circuito se


atienden los botones por método de barrido y caso de detección de pulsado
se realiza la acción correspondiente. Una vez ejecutada la acción se vuelve
a la atención del teclado. En la Figura 3.2. se muestra un diagrama
simplificado del programa.

F ig ura 3.2. D iag rama sim p lif icado de l p rograma Timb r e m us ica l.

Edición y ensamblaje: Este paso se realiza utilizando el MPLAB IDE.


Desde este programa se genera el .HEX que luego se cargará en el
microcontrolador PIC.

- 62 -
Cap ítu lo III

Especificaciones y diseño del hardware: En la Figura 3.3. se muestra el


esquema del circuito. La frecuencia del cristal utilizado es de 4MHz.

F ig ura 3.3. Es qu ema de l c ir cu ito d e l Timb re m us ica l.

Pruebas preliminares y Construcción del prototipo: Las pruebas


preliminares de simulación se llevan a cabo en el ISIS. El montaje del
circuito se realiza utilizando una Breadboard Figura 3.4.

Fig ura 3.4. Protot ipo circuito del Timbre musica l.

- 63 -
Cap ítu lo III

Integración y verificación: Utilizando el circuito de quemado se carga en


el PIC 16F84 el archivo .HEX generado en el MPLAB IDE. Una vez
comprobado el cableado se alimenta el circuito y se comprueba si los
resultados son los esperados.

3.3.2. Reloj.

Objetivo: Crear un reloj digital con un teclado para programar la hora.

Especificaciones y diseño del programa:


Atención al display método de barrido.
Atención al teclado método de barrido.
Creación de una base de tiempo de 1 min. utilizando la interrupción
por desbordamiento del TMR0.
Creación de subrutinas para el aumento y decremento de horas y
minutos.
En la Figura 3.5. se muestra un diagrama simplificado del programa.

Fig ura 3.5. D iag rama simplif icado del programa Relo j.

- 64 -
Cap ítu lo III

Edición y ensamblaje: Este paso se realiza utilizando el MPLAB IDE.


Desde este programa se genera el .HEX que luego se cargará en el
microcontrolador PIC, tanto para la simulación en ISIS como para la
verificación. El programa de esta aplicación se anexa (Anexo 6).

Especificaciones y diseño del hardware: En la Figura 3.6. se muestra el


esquema del circuito. La frecuencia del cristal utilizado es de 4MHz.

F ig ura 3.6. Es qu ema de l c ir cu ito d e l R e loj.

Pruebas preliminares y Construcción del prototipo: Las pruebas


preliminares de simulación se llevan a cabo en el ISIS. El montaje del
circuito se realiza utilizando el PIC TRAINER N o 2. (Anexo 7) y una base
adaptada de 18 pines para el montaje del PIC 16F84, Figura 3.7.

- 65 -
Cap ítu lo III

Fig ura 3.7. Protot ipo circuito del R e loj.

Integración y verificación: Utilizando el circuito de quemado se carga en


el PIC 16F84 el archivo .HEX generado en el MPLAB IDE. Una vez
comprobado el cableado se alimenta el circuito y se comprueba si los
resultados son los esperados.

3.3.3. Aplicación con display LCD.

Objetivo: Escribir mensajes en un display LCD paralelo.

Especificaciones y diseño del programa:

Inicialización del display LCD paralelo. (Anexo 8)


Atención al display.
Atención al teclado método de barrido.
Creación de subrutinas para el aumento y decremento de los
caracteres.
Creación de subrutinas para el movimiento del cursor.
En la Figura 3.8. se muestra un diagrama simplificado del programa.

- 66 -
Cap ítu lo III

Fig ura 3.8. D iag rama simplif icado del programa LCD.

Edición y ensamblaje: Este paso se realiza utilizando el MPLAB IDE.


Desde este programa se genera el .HEX que luego se cargará en el
microcontrolador PIC, tanto para la simulación en ISIS como para la
verificación. El programa de esta aplicación se anexa (Anexo 9).
Especificaciones y diseño del hardware: En la Figura 3.9. se muestra el
esquema del circuito.

F ig ura 3.9. Es qu ema de l c ir cu ito de at ención display LCD.

- 67 -
Cap ítu lo III

Pruebas preliminares y Construcción del prototipo: Las pruebas


preliminares de simulación se llevan a cabo en el ISIS. El montaje del
circuito se realiza utilizando una Breadboard, Figura 3.10.

Fig ura 3.10. Protot ipo circuito de at ención a D isplay LCD.

Integración y verificación: Utilizando el circuito de quemado se carga en


el PIC 16F84 el archivo .HEX generado en el MPLAB IDE. Una vez
comprobado el cableado se alimenta el circuito y se comprueba si los
resultados son los esperados.

- 68 -
Con c lu sion es y Reco mendacion e s

CONCLUSIONES Y RECOMENDACIONES.

Conclusiones.

Como resultado de la búsqueda bibliográfica se logró actualizar y


modificar la literatura docente existente sobre los microcontroladores
PIC, creando materiales de consulta para temas afines.
Se analizaron y seleccionaron las herramientas de Software y
hardware para el trabajo con los microcontroladores PIC.
Se presentó una metodología para la elaboración de aplicaciones
basada en el uso de las herramientas de software y hardware descritas
en este trabajo.
Se diseñaron y presentaron aplicaciones ilustrativas.

Recomendaciones.

Integrar para el trabajo, tanto docente como investigativo, los


programas PROTEUS y MPLAB para un máximo aprovechamiento de
sus utilidades.
Incrementar la utilización de herramientas de software libre.
Extender la experiencia de este trabajo a otras familias o gamas de
los microcontroladores PIC.

- 69 -
Ref eren c ia s Bib liográf icas

REFERENCIAS BIBLIOGRÁFICAS.

Bazán, C. A. (2004). Conferencias sobre microcontroladores PIC. Plan de


Estudio Facultad de Ingeniería Eléctrica. Universidad Central ¨ Marta
Abreu ¨ de Las Villas. MES. Consultado: abril de 2006.

Ciprés Microsystems, (2004). Inc. CY8C27/24/22xxx and Cy8C26/25xxx


Data Sheet Disponible en: http://datasheetarchive.com Consultado:
mayo de 2006.

DatasheetArchive (2006a). YJ162-1 Data Sheet. Disponible en:


http://datasheetarchive.com Consultado: mayo de 2006.

DatasheetArchive (2006b). LC1602BNGAJT LCD Character Display.


Disponible en: http://datasheetarchive.com Consultado: mayo de 2006.

Electronic Systems Design Center. University of Kent (2006). An


introduction to the PIC Microcontroller. Disponible en: http://esd-
centre.kent.ac.uk/training/courses/pic_control.html Consultado: 23 de
abril 2006.

Electronic Technology Group. Seville University Engineering School


(2006). Digital Electronic Systems. Disponible en:
http://www.gte.us.es/db/doc/web/asignatura.php Consultado: 21 de abril
2006.

Labcenter Electronics (2004a). About PROTEUS Demo, PROTEUS VSM CO-


SIMULATION. Disponible en: http://www.labcenter.co.uk Consultado:
abril de 2006.

- 70 -
Ref eren c ia s Bib liográf icas

Labcenter Electronics (2004b). Isis Help, About ISIS. Disponible en:


http://www.labcenter.co.uk Consultado: abril de 2006.

Labcenter Electronics (2004c). Ares Help, What is ARES. Disponible en:


http://www.labcenter.co.uk Consultado: abril de 2006.

Microchip Technology, Inc (1997a). PICmicro™ Mid-Range MCU Family


Reference Manual. Disponible en: http://www.microchip.com
Consultado: marzo de 2006.

Microchip Technology, Inc (1997b). AN587 Interfacing PICmicros T M to an


LCD Module. Disponible en: http://www.microchip.com Consultado:
mayo de 2006.

Microchip Technology, Inc (1997c). LCD Fundamentals Using PIC16C92X


Microcontrollers. Disponible en: http://www.microchip.com
Consultado: mayo de 2006.

Microchip Technology, Inc (1998). PIC16F8X 18-pin Flash/EEPROM 8-Bit


Microcontrollers. Disponible en: http://www.microchip.com
Consultado: marzo de 2006.

Microchip Technology, Inc (2003). MPLAB IDE v6.xx Quick Start Guide.
Disponible en: http://www.microchip.com Consultado: abril de 2006.

Microchip Technology, Inc (2002a). rfHCS362G/362F KEELOQ® Code


Hopping Encoder with UHF ASK/FSK Transmitter. Disponible en:
http://www.microchip.com Consultado: abril de 2006.

- 71 -
Ref eren c ia s Bib liográf icas

Microchip Technology, Inc (2002b). MICROCHIP dsPIC 16-Bit Digital


Signal Controller. Disponible en: http://www.microchip.com
Consultado: abril de 2006.

Microchip Technology, Inc (2002c). Stand-Alone Ethernet Controller with


SPI™ Interface. Disponible en: http://www.microchip.com Consultado:
abril de 2006.

Microchip Technology, Inc (2004). MPLAB IDE Help. Disponible en:


http://www.microchip.com Consultado: abril de 2006.

Microchip Technology, Inc (2005). Tips and Tricks LCD PICmicro® MCU.
Disponible en: http://www.microchip.com Consultado: abril de 2006.

Microchip Technology, Inc (2006). High-Performance, Enhanced Flash,


USB Microcontrollers with nanoWatt Technology. Disponible en:
http://www.microchip.com Consultado: abril de 2006.

microEngineering Labs, Inc. (2005). melabs Programmer HTML Help.


Disponible en: http://melabs.com Consultado: mayo de 2006.

Morton, J. Elsevier B.V. (2006). The PIC Microcontroler: your personal


introductory course. Disponible en:
http://www.elsevier.com/wps/find/bookdescription.cws_home
Consultado: 2 de junio 2006. Última actualización: 27 de mayo 2006.

Saxton, D. KTechlab KDE-Apps_org (2006). Disponible en:


http://www.kde-apps.org/content/show.php?content=18943 Consultado:
22 de febrero 2006. Última actualización: 5 de enero de 2006.

- 72 -
Ref eren c ia s Bib liográf icas

Toussaint, M. www.mtoussaint.de (2006). Homepage of Matthias Toussaint.


Disponible en: http://www.w3.org/TR/html4/loose.dtd Consultado:
mayo de 2006.

Vallejo, H. D. (2002). Todo sobre PICs & Microprocesadores y


Microcontroladores. Editorial Quark S.R.L. Consultado: junio de 2006.

w3.org. (2006). The PiKdev and CPIK Home Page. Disponible en:
http://www.w3.org/TR/html4/loose.dtd Consultado: mayo de 2006.
Última actualización: 17 de octubre de 2006.

Wikipedia.org. (2006). Microcontrolador PIC. Disponible en:


http://es.wikipedia.org/wiki/Microcontrolador PIC Consultado: 23 de
abril 2006.

The 8051 Microcontroller. Tercera Edición. (s.l.)(s.n.)(s.a.)

- 73 -
Lista d e Figu ras

LISTA DE FIGURAS.

Capítulo I

Figura 1.1. Estructura de los microprocesadores. .............................. 4


Figura 1.2. Sistema microprocesador. .............................................. 4
Figura 1.3. Estructura del microcontrolador 8048 de INTEL. ............ 6
Figura 1.4. Estructura del manejo de datos e instrucciones. .............. 7
Figura 1.5. Arquitectura de la ALU. ................................................. 8
Figura 1.6. Arquitectura interna del microcontrolador PIC 16X84. ... 9
Figura 1.7. Memoria de programa....................................................11
Figura 1.8. Memoria de Datos (RAM). .............................................13
Figura 1.9. Organización de la memoria de datos. ............................16
Figura 1.10. Direccionamiento directo en los PIC 16C84. .................16
Figura 1.11. Selección del banco y la posición Direccionamiento
indirecto. ........................................................................................17
Figura 1.12. Esquema simplificado de un contador temporizador. ....20
Figura 1.13. Esquema simplificado de la sección dedicada al control
de tiempos .......................................................................................22
Figura 1.14. Campos de los operandos fuente (f) y destino (d). .........23
Figura 1.15. Campo de operando inmediato o literal (k). ..................24
Figura 1.16. Campo que referencia a un bit (b). ...............................24
Figura 1.17. Campo de la dirección del salto. ...................................24
Figura 1.18. Organigrama de las operaciones principales de una
interrupción en los PIC 16X8X. .......................................................29
Figura 1.19. Lógica de control para la generación de una interrupción
en los PIC 16X8X. ...........................................................................30

Capítulo II

Figura 2.1. Apariencia del espacio de trabajo del ISIS. ....................40


Figura 2.2. Apariencia del espacio de trabajo del ARES. ..................42
Figura 2.3. Ciclo de desarrollo en MPLAB IDE. ...............................44
Figura 2.4. Apariencia del espacio de trabajo del MPLAB IDE. ........44
Figura 2.5. Apariencia de uno de los espacios de trabajo del
KTechlab. .......................................................................................46
Figura 2.6. Uno de los espacios de trabajo del YaPIDE ....................47
Figura 2.7. Ambientes de trabajo del PiKdev. ..................................48
Figura 2.8. Apariencia Melabs Programer........................................49
Figura 2.9. Principales características de la ICSP en los PIC 16f8X. .51
Figura 2.10. Esquema del quemador. ...............................................53
Figura 2.11. Distribución de pines de un teclado numérico. ..............55

- 74 -
Lista d e Figu ras

Capítulo III

Figura 3.1. Diagrama del Ciclo de Desarrollo. ..................................57


Figura 3.2. Diagrama simplificado del programa Timbre musical. ....62
Figura 3.3. Esquema del circuito del Timbre musical. ......................63
Figura 3.4. Prototipo circuito del Timbre musical. ...........................63
Figura 3.5. Diagrama simplificado del programa Reloj.....................64
Figura 3.6. Esquema del circuito del Reloj. ......................................65
Figura 3.7. Prototipo circuito del Reloj............................................66
Figura 3.8. Diagrama simplificado del programa LCD. .....................67
Figura 3.9. Esquema del circuito de atención display LCD. .............67
Figura 3.10. Prototipo circuito de atención a Display LCD. ..............68

- 75 -
Lista d e Tab las

LISTA DE TABLAS.

Capítulo I

Tabla 1.1. Especificaciones de los registros SFR de los bancos de la


memoria de datos. ...........................................................................14

Tabla 1.2. Instrucciones de los PIC 16X8X que manejan como


operandos registros de 8 bits. ..........................................................25

Tabla 1.3. Características más relevantes de las instrucciones que


manejan bits. ..................................................................................25

Tabla 1.4. Características más relevantes de las cuatro instrucciones


condicionales de salto. .....................................................................26

Tabla 1.5. Características más relevantes de las instrucciones que


manejan operandos inmediatos. ......................................................26

Tabla 1.6. Principales características de las instrucciones de control


y especiales. ....................................................................................28

Tabla 1.7. Valores que adquieren los bits de los registros SFR y el W
después de producirse un RESET por una de las cinco causas posibles.
.......................................................................................................33

Capítulo II

Tabla 2.1. Conexión entre los conectores DB9 y DB25. .....................52

Tabla 2.2. Distribución de pines LCD YJ162-A. ...............................54

Tabla 2.3. Principales instrucciones LCD 16x2. ................................55

- 76 -
Anexos

ANEXOS.

A n ex o 1 . D is t r i bu c ió n y a s igna c ió n d e f un cion e s d e lo s bit s d e l r eg ist ro ES TA D O .

- 77 -
Anexos

A n ex o 2 . D is t r i bu c ió n y a s igna c ió n d e f un cion e s d e lo s bit s d e la Pal a b ra de


C o n f igura ci ó n .

A n ex o 3 . D is t r i bu c ió n y a s igna c ió n d e f un cion e s d e lo s bit s d e l r eg ist ro O P TI ON.

- 78 -
Anexos

A n ex o 4 . D is t r i bu c ió n y a s igna c ió n d e f un cion e s d e lo s bit s d e l r eg ist ro E EC ON 1 .

A n ex o 5 . D is t r i bu c ió n y a s igna c ió n d e f un cion e s d e lo s bit s d e l r eg ist ro IN TCON.

- 79 -
Anexos

Anexo 7 . Prog rama R e loj.

list p=16F84 ;Definición del Microcontrolador


#include <p16F84.inc> ;Bibliotecas del Microcontrolador

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC

;***** DECLARACION DE VARIABLES*****


w_temp EQU 0x0C ;Variable para salvar contexto
status_temp EQU 0x0D ;Variable para salvar contexto
HM EQU 0x0E ;Variable HM almacena digito minuto más significativo
LM EQU 0x0F ;Variable LM almacena digito minuto men os significativo
HH EQU 0x10 ;Variable HH almacena digito hora más significativo
LH EQU 0x11 ;Variable LH almacena digito hora menos significativo
Del1 EQU 0x12 ;Variables Del1 y Del2 utilizadas en las
Del2 EQU 0x13 ;subrutinas de demora
Cont EQU 0x14 ;Variables Cont y Cont2 utilizadas en
Cont2 EQU 0x15 ; la obtención de base tiempo = 1 min.

ORG 0x000 ;Valor del Vector Reset


goto main

ORG 0x004 ; Valor del Vector Interrupción


movwf w_temp ;***
movf STATUS,w ;Salva del contexto
movwf status_temp ;***

movf Cont,W ;***


sublw D'250'
btfsc STATUS,2 ;Obtencion de la base de tiempo
goto Reset_Cont
incf Cont,F
goto FIN ; Bt=(1Mhz/16)x250x60=1 min
Reset_Cont clrf Cont ; Variable Cont cuenta 250 desbordes TMR0
movf Cont2,W ; Variable Cont2 cuenta 60 desbordes Cont
sublw D'60' ; En caso desborde Cont2 se incrementa
btfsc STATUS,2 ; la Variable LM (Plus_M)
goto Reset_Cont2 ; Siempre se sale de la interrupcion
incf Cont2,F ; limpiando T0IF y recargando TMR0
goto FIN
Reset_Cont2 clrf Cont2
call Plus_M
FIN bcf INTCON,T0IF
movlw D'6'
movwf TMR0 ;***

movf status_temp,w ;***


movwf STATUS ; Recuperación del contexto
swapf w_temp,f
swapf w_temp,w ;***
retfie ;Retorno de la Interrupción

;*****CUERPO DEL PROGRAMA*****


main movlw H'00' ;***
movwf PORTA
clrw ;Inicialización
movwf PORTB
clrf Cont
clrf Cont2 ;***

- 80 -
Anexos

movlw D'1' ;***


movwf HH
movlw D'2' ;Display = 12.00
movwf LH
movlw D'0'
movwf HM
movlw D'0'
movwf LM ;***

bsf STATUS,RP0 ;***


movlw D'0'
movwf TRISA ;Puertos A y B salidas
movlw H'00'
movwf TRISB ;***

bcf OPTION_REG,7 ;***


bcf OPTION_REG,6
bcf OPTION_REG,5
bcf OPTION_REG,4 ;Divisor de frecuencia = 1/16
bcf OPTION_REG,3 ; asignado al TMR0,
bcf OPTION_REG,2
bsf OPTION_REG,1
bsf OPTION_REG,0 ;***
bcf STATUS,RP0
bsf INTCON,GIE ;Permiso de interrupción activado
bsf INTCON,T0IE ;Interrupción desborde TMR0 activada

movlw D'6'
movwf TMR0

;*****ATENCION A TECLADO*****

DISPLAY: movf LM,W ;***


call TABLA
movwf PORTB ;El valor almacenado en LM se
call RETDIG ; convierte a 7seg utilizando
bsf PORTA,0 ; TABLA, y se pasa al LCD
call RETDIG ; correspondiente, RETDIG demora
bcf PORTA,0 ; el dígito en pantalla
call RETDIG ;***

movf HM,W ;***


call TABLA
movwf PORTB ;Ídem anterior
call RETDIG
bsf PORTA,1
call RETDIG
bcf PORTA,1
call RETDIG ;***

movf LH,W ;***


call TABLA
movwf PORTB ;Ídem anterior
call RETDIG
bsf PORTA,2
call RETDIG
bcf PORTA,2
call RETDIG ;***

- 81 -
Anexos

movf HH,W ;***


call TABLA
movwf PORTB ; Ídem anterior
call RETDIG
bsf PORTA,3
call RETDIG
bcf PORTA,3
call RETDIG ;***

;*****ATENCION A TECLADO*****

Scan clrf PORTA


bsf STATUS,RP0 ;***
movlw H'0F' ;Nible bajo Puerto A entrada
movwf TRISA
bcf STATUS,RP0 ;***

movlw H'10' ;***


movwf PORTA
call RETDIG ;Barrido del teclado
btfsc PORTA,0 ; posibles teclas:
call Minus_M ; Decrementar Minutos
call RETDIG ; Incrementar Minutos
btfsc PORTA,1 ; Decrementar Horas
call Plus_M ; Incrementar Horas
call RETDIG
btfsc PORTA,2 ; En caso de detectar tecla oprimida
call Minus_H ; se ejecuta la subrutina correspondiente
call RETDIG
btfsc PORTA,3
call Plus_H
call RETDIG ;***

bsf STATUS,RP0 ;***


movlw D'0' ;Puerto A salida
movwf TRISA
bcf STATUS,RP0 ;***
goto DISPLAY

;*****TABLA*****

TABLA: addwf PCL,F ;***


retlw H'FC'
retlw H'60'
retlw H'DA' ;Tabla de conversion del valor
retlw H'F2' ; de la variable a 7seg
retlw H'66'
retlw H'B6'
retlw H'BE'
retlw H'E0'
retlw H'FE'
retlw H'F6' ;***

- 82 -
Anexos

;*****DEMORAS*****

RETDIG movlw D'100' ;***


movwf Del1 ;Subrutina de demora corta, se utiliza para
Loop1 movlw D'200' ; periodos de mantención de datos en display
movwf Del2
Loop2 decfsz Del2,F
goto Loop2
decfsz Del1,F
goto Loop1
return ;***

RETDIG2 movlw D'5' ;***


movwf Del1
Loop3 movlw D'200' ;Subrutina de demora "larga", se utiliza para
movwf Del2 ; manejar los periodos entre las pulsaciones de las
Loop4 decfsz Del2,F ; teclas
goto Loop4
decfsz Del1,F
goto Loop3
return ;***

;*****MANIPULACION DEL RELOJ****

;***Incremento del Reloj***

Plus_M movf LM,W ;***


sublw D'9'
btfsc STATUS,Z ;Subrutina de incremento de minutos
goto Reset_LM
incf LM,F
return
Reset_LM clrf LM
movf HM,W
sublw D'5'
btfsc STATUS,Z
goto Reset_HM
incf HM,F
return ;***

Reset_HM clrf HM

Plus_H movf HH,W ;***


sublw D'1'
btfss STATUS,Z ;Subrutina de incremento de las horas
goto A
movf LH,W
sublw D'2'
btfss STATUS,Z
goto E
clrf HH
movlw D'1'
movwf LH
clrf HH
return
A movf LH,W
sublw D'9'
btfss STATUS,Z
goto I
incf HH
clrf LH
return

- 83 -
Anexos

E incf LH
return
I incf LH
return ;***

;***Decremento del Reloj***

Minus_M movf LM,W ;***


sublw D'0'
btfsc STATUS,Z ;Subrutina de decremento de minutos
goto Reset2_LM
decf LM,F
return
Reset2_LM movlw D'9'
movwf LM
movf HM,w
sublw D'0'
btfsc STATUS,Z
goto Reset2_HM
decf HM
return ;***

Reset2_HM movlw D'5'


movwf HM
Minus_H movf HH,W ;***
sublw D'1'
btfsc STATUS,Z
goto A1
movf LH,W ;Subrutina de decremento de las horas
sublw D'1'
btfsc STATUS,Z
goto E1
decf LH,F
return

A1 movf LH,W
sublw D'0'
btfsc STATUS,Z
goto I1
decf LH
return
E1 movlw D'1'
movwf HH
movlw D'2'
movwf LH
return
I1 clrf HH
movlw D'9'
movwf LH
return ;***

END ;FIN del Programa

- 84 -
Anexos

Anexo 7 . D iag rama eléctrico del PIC TRAINER N o 2 .

- 85 -
Anexos

Anexo 8 . Pro cedim iento de in icia liza ció n display LC D 16x2.

- 86 -
Anexos

Anexo 9 . Prog rama para D isplay LCD 16x2 .

list p=16F84 ; Definición del Microcontrolador


#include <p16F84.inc> ; Bibliotecas del Microcontrolador

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC

;***** DECLARACION DE VARIABLES*****


Char EQU 0x0E ;Variable Char para almacenar el valor del caracter
Pos EQU 0x0F ;Variable Pos para almacenar posición en el display
Del1 EQU 0x10 ;Variables Del1 y Del2 utilizadas en las
Del2 EQU 0x11 ;subrutinas de demora
E EQU 0 ;Bit E= Bit0
RW EQU 1 ;Bit RW= Bit1
RS EQU 2 ;Bit RS= Bit2
MC_Rigth EQU B'00010100' ;Palabra de control Mover Cursor Derecha
MC_Left EQU B'00010000' ;Palabra de control Mover Cursor Izquierda
Funtion_Set EQU B'00111000' ;Palabra de control Funtion Set (8 bits, 2 filas, 5x7 dots)
DisplayON_OFF EQU B'00001110' ;Palabra de control Display ON/OFF (display,cursor ON)
DisplayClear EQU B'00000001' ;Palabra de control Display Clear
EntrySetMode EQU B'00000100' ;Palabra de control Entry Set Mode (cursor en decremento)

ORG 0x000 ; Valor del Vector Reset


goto main

;*****CUERPO DEL PROGRAMA*****


main clrw
movlw H'20'
movwf Char ;' ' -> Variable Char
movlw H'80'
movwf Pos ;Primera Fila, Primera Columna -> Variable Pos
movlw H'00'
movwf PORTA
movlw H'00'
movwf PORTB

bsf STATUS,RP0 ;Selección BANCO1


movlw B'00011000'
movwf TRISA ;RA3,RA4 entradas, el resto salidas
movlw H'00'
movwf TRISB ;Puerto B de salida
bcf STATUS,RP0 ;Selección BANCO0

;*****INICIALIZACION DISPLAY*****
clrw
movwf PORTA
call DEM ;***
movlw Funtion_Set ;Entrada de la Palabra de Control Funtion Set
movwf PORTB ; RS,RW=0 E=1, E=0 entrada de los datos
bsf PORTA,E ; La subrutina de demora DEM1 es para la
call DEM ; retención de los datos
bcf PORTA,E ;***

movlw Funtion_Set ;***


movwf PORTB ;Entrada de la Palabra de Control Funtion Set
bsf PORTA,E ; se realiza por segunda vez siguiendo el proceso
call DEM ; de inicialización
bcf PORTA,E ;***

- 87 -
Anexos

movlw DisplayON_OFF ;***


movwf PORTB ;Entrada de la Palabra de Control Display ON/OFF
bsf PORTA,E
call DEM
bcf PORTA,E ;***

movlw DisplayClear ;***


movwf PORTB ;Entrada de la Palabra de Control Display Clear
bsf PORTA,E
call DEM
bcf PORTA,E ;***

movlw EntrySetMode ;***


movwf PORTB ;Entrada de la Palabra de Control Entry Set Mode
bsf PORTA,E
call DEM
bcf PORTA,E ;***

;*****ATENCION A TECLADO*****
TECLADO movlw H'00'
movwf PORTA

bsf PORTA,1 ;***


btfsc PORTA,4 ;Barrido Primera Columna
call Rigth , Posibles teclas: Rigth, Down
btfsc PORTA,3 ; En caso de detectar tecla oprimida (RA4 o RA3=1)
call Down ; se ejecuta la subrutina correspondiente
bcf PORTA,1 ;***

bsf PORTA,2 ;***


btfsc PORTA,4 ;Barrido Segunda Columna, posibles teclas: Left, Up
call Left ; En caso de detectar tecla oprimida (RA4 o RA3=1)
btfsc PORTA,3 ; se ejecuta la subrutina correspondiente
call Up
bcf PORTA,2 ;***
goto TECLADO
;*****FUNCIONES TECLAS****
;*****Up (Subir Caracter)*****
Up movf Char,w ;***
sublw H'7F'
btfsc STATUS,Z ;Subrutina de incremento de la Variable Char
goto Reset
incf Char ; La variable Char debe estar entre H'20' y H'7F'
goto Char_Set ; que son los límites de los caracteres
goto F1
Reset movlw H'20' ; Una vez incrementada la Variable Char se ejecuta
Movwf Char ; la subrutina de Impresion del caracter en Display
goto Char_Set
F1 return ;***

;*****Down (Bajar Caracter)*****


Down movf Char,w ;***
sublw H'20'
btfsc STATUS,Z ;Subrutina de decremento de la Variable Char
goto Reset2
decf Char ; La variable Char debe estar entre H'20' y H'7F'
goto Char_Set ; que son los límites de los caracteres
goto F2
Reset2 movlw H'7F' ; Una vez decrementada la Variable Char se ejecuta
movwf Char ; la subrutina de Impresión del caracter en Display
goto Char_Set ; teclado
F2 return ;***

- 88 -
Anexos

;*****Impresión del caracter en Display*****


Char_Set clrw
movwf PORTA ;***
movf Pos,w ;Selección de la posición en el Display
movwf PORTB ; La posición (Variable Pos) pasa al puerto B y con
bsf PORTA,E ; RW,RS=0 E=1,E=0 los datos pasan al display
call DEM
bcf PORTA,E ;***

movf Char,w ;***


movwf PORTB ;Selección del Caracter
bsf PORTA,RS ; El caracter (Variable Char) pasa al puerto B y con
bsf PORTA,E ; RW=0,RS=1 E=1,E=0 los datos pasan al display
call DEM
bcf PORTA,E
bcf PORTA,RS ;***

movlw MC_Rigth ;***


movwf PORTB ;Entrada de la P.C. Mover Cursor Derecha
bsf PORTA,E ; Se ejecuta para contrarrestar el decremento del
call DEM ; cursor al enviar un caracter
bcf PORTA,E ; La subrutina DEM2 es para evitar pulsos continuos
call DEM2 ; en el teclado
return ;***

;*****Rigth (Mover Cursor Derecha)*****


Rigth movf Pos,w ;***
sublw H'8F'
btfsc STATUS,Z ;Subrutina de incremento de la Variable Pos
goto Change_L2
movf Pos,w ; La variable Pos debe estar entre H'80' y H'8F' en la
sublw H'CF' ; primera fila y entre H'C0' y H'CF' en la segunda fila
btfsc STATUS,Z
goto Change_L1
incf Pos ; Una vez incrementada la Variable Pos se ejecuta
goto MoveR ; Mover el cursor a la derecha en el Display
Change_L2 movlw H'C0'
movwf Pos
goto MoveR
Change_L1 movlw H'80'
movwf Pos
goto MoveR ;***

MoveR clrw ;***


movwf PORTA ;Entrada de la P.C. Mover Cursor Derecha
movlw MC_Rigth
movwf PORTB
bsf PORTA,E
call DEM
bcf PORTA,E ;***

movf Pos,w ;***


movwf PORTB ;Selección de la posición en el Display
bsf PORTA,E
call DEM ; Se ejecuta para evitar la perdida del cursor
bcf PORTA,E ; La subrutina DEM2 es para evitar pulsos continuos
call DEM2 ; en el teclado
return ;***

- 89 -
Anexos

;*****Left (Mover Cursor Izquierda)*****

Left movf Pos,w ;***


sublw H'80'
btfsc STATUS,Z ;Subrutina de decremento de la Variable Pos
goto Change_2L
movf Pos,w ; La variable Pos debe estar entre H'80' y H'8F' en la
sublw H'C0' ; primera fila y entre H'C0' y H'CF' en la segunda fila
btfsc STATUS,Z
goto Change_1L
decf Pos ; Una vez decrementada la Variable Pos se ejecuta
goto MoveL ; Mover el cursor a la izquierda en el Display
Change_2L movlw H'CF'
movwf Pos
goto MoveL
Change_1L movlw H'8F'
movwf Pos
goto MoveL ;***

MoveL clrw ;***


movwf PORTA ;Entrada de la P.C. Mover Cursor Izquierda
movlw MC_Left
movwf PORTB
bsf PORTA,E
call DEM
bcf PORTA,E ;***

movf Pos,w ;***


movwf PORTB ;Selección de la posición en el Display
bsf PORTA,E ; Se ejecuta para evitar la perdida del cursor
call DEM ; La subrutina DEM2 es para evitar pulsos continuos
bcf PORTA,E ; en el teclado
call DEM2
return ;***

;*****DEMORAS*****
DEM movlw D'2' ;***
movwf Del1 ;Subrutina de demora corta, se utiliza para
Loop1 movlw D'100' ; periodos de mantención de datos y de
movwf Del2 ; establecimiento en la inicialización del Display
Loop2 decfsz Del2,F
goto Loop2
decfsz Del1,F
goto Loop1
return ;***

DEM2 movlw D'100' ;***


movwf Del1 ;Subrutina de demora "larga", se utiliza para
Loop3 movlw D'200' ; manejar los periodos entre las pulsaciones de las
movwf Del2 ; teclas
Loop4 decfsz Del2,F
goto Loop4
decfsz Del1,F
goto Loop3
return ;***

END ;FIN del Programa

- 90 -

También podría gustarte