Sunteți pe pagina 1din 42

MDULO 4:

MICROCONTROLADORES I

MDULO 4:
MICROCONTROLADORES I
(PIC16F84)

MDULO 4: MICROCONTROLADORES I (PIC16F84)

PRESENTACIN
1

MDULO 4: MICROCONTROLADORES I (PIC16F84)

MDULO 4: MICROCONTROLADORES I (PIC16F84)


Coleccin de 17 prcticas con el Microcontrolador PIC16F84)

MDULO A
Para quienes dispongan de grabador de PIC
MICROPIC TRAINER o MICROPIC PROGRAMMER

MDULO B
Para quienes no dispongan del
MICROPIC TRAINER ni el MICROPIC PROGRAMMER

Ingeniera de Microsistemas Programados S.L.

TARJETA PROTOPIC

TARJETA PROTOPIC 2
La tarjeta PROTOPIC de la Versin A se conecta a la
MICROPIC TRAINER la MICROPIC PROGRAMMER
para grabar el PIC16F84 o los PIC16F87X (Mdulo 5)

La tarjeta PROTOPIC2 contiene un circuito grabador del


PIC16F84 y los PIC16F87X (Mdulo 5).
Se conecta al puerto paralelo del PC.

MDULO 4: MICROCONTROLADORES I (PIC16F84)

NDICE
3

NDICE general
BIBLIOGRAFA
RELACIN DE MATERIALES
PRCTICA 0: Herramientas de desarrollo
0.1
0.2
0.3
0.4

Objetivos
Herramientas hardware
Herramientas software
Tutorial

PRCTICA 1:
Sencillo ejemplo de manejo de las E/S
PRCTICA 2:
Control de una lmpara desde dos interruptores
PRCTICA 3:
Ejemplo combinacional
PRCTICA 4:
Ejemplo secuencial
PRCTICA 5:
El TMR0, juego de luces
PRCTICA 6:
Usando el preescaler, otro juego de luces
PRCTICA 7:
Manejando el WDT y el modo SLEEP
PRCTICA 8:
El TMR0 como contador de pulsos externos
PRCTICA 9:
La interrupcin del TMR0
PRCTICA 10:
Ms interrupciones
PRCTICA 11:
Decodificador BCD a 7 segmentos
PRCTICA 12:
Contador UP/DOWN

Ingeniera de Microsistemas Programados S.L.

PRCTICA 13:
Generando nmeros aleatorios, dado electrnico
PRCTICA 14:
Multiplexado de los displays
PRCTICA 15:
Contador UP/DOWN de 3 dgitos
PRCTICA 16:
Cronmetro digital
PRCTICA 17:
La memoria EEPROM de datos, la mquina Su Turno

NDICE
4

MDULO 4: MICROCONTROLADORES I (PIC16F84)

BIBLIOGRAFA
Se presenta una relacin de interesantes libros de texto y material didctico en general, relacionados con los microcontroladores PIC objeto del
presente mdulo. Algunos de ellos se pueden adquirir en libreras y comercios especializados y otros estn disponibles en la pgina web de
Microchip.
Microcontroladores PIC: La solucin en un chip. Editorial ITP Paraninfo. Autor J.M Angulo, E. Martn e I. Angulo. Hace una descripcin
general de toda la familia PIC y los dispositivos ms representativos. Se analiza la arquitectura general, memorias de programa y de datos, juego
de instrucciones, etc.

Microcontroladores PIC: Diseo prctico de aplicaciones, 2 parte. Editorial McGraw Hill. Autor J.M Angulo, S. Romero e I. Angulo. S e
puede considerar como la continuacin a la obra anterior. Se presentan nuevos PIC 16F87X de reciente aparicin que, con una arquitectura y
caractersticas similares al 16F84, integran una gran nmero de posibilidades para el control de perifricos.
PIC16/17 Microcontroller Data Book. Microchip. Contiene los datos tcnicos de todos los modelos PIC existentes en la actualidad. Es un manual
imprescindible para todo usuario de PICs donde podr encontrar informacin tcnica puntual y de primera mano. Se adquiere bajndolo de la
web de Microchip.
MPASM Users Guide. Microchip. Manual de usuario del ensamblador MPASM. Se explican todas las directivas empleadas por el ensamblador
as como una extensa relacin y descripcin de los posibles errores de ensamblado que se pudieran producir. Se puede adquirir desde la pgina
web de Microchip.
Curso prctico de diseo con PIC, 1 y 2 parte. Microsystems Engineering. Se trata de una coleccin de unos 100 ejercicios de programacin
entre ambas partes, resueltos y organizados en orden de menor a mayor complejidad. Se emplean distintas herramientas y tarjetas de desarrollo
como es el conocido sistema de evaluacin MicroPIC Trainer, la tarjeta de ampliacin MicroPIC Trainer PLUS y la tarjeta de expansin de
perifricos MicroPIC I/O. La primera parte est dedicada ntegramente al PIC16F84. Los ejercicios de la 2 parte se destinan a los modelos
superiores PIC16F87X, con los que se experimenta y emplean todos los recursos hardware que integran estos potentes dispositivos.
www.microchip.com Es la direccin web de Microchip. A travs de ella se puede adquirir diferentes herramientas software como son el
ensamblador MPASM para MS-DOS, MPASMWIN para windows as como el potente software de simulacin y emulacin MPLAB-IDE. Todas
estas herramientas son revisadas peridicamente lo que permite una fcil actualizacin. En la pgina tambin hay una descripcin de diferentes
herramientas hardware como son grabadores, emuladores, tarjetas de evaluacin, etc. as como numerosas notas de aplicacin perfectamente
documentadas.
www.arrakis.es/~msyseng y www.microcontroladores.com Es la pgina web de Microsystems Engineering. En ella el usuario encontrar
informacin sobre los productos y novedades comercializados por la empresa, actualizaciones de software, hoja de pedidos, convocatorias a
certmenes y cursos de aprendizaje, etc.

RELACION DE MATERIALES
La relacin presentada a continuacin corresponde con los materiales y herramientas necesarias para realizar todos los ejercicios
y experimentos propuestos en el presente mdulo 4. Se supone al lector en posesin del entrenador UNIVERSAL TRAINER
empleado como base donde se realizan los distintos montajes.
Tarjeta de prototipos PROTOPIC o PROTOPIC 2.
1 Resistencia de 1K 1/4 W
3 Transistores NPN BC548
Cables rgido de conexin de 0.6 mm
Disquete con programas

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Microcontroladores PIC: Diseo prctico de aplicaciones, 1 parte. Editorial McGraw Hill. Autor J.M Angulo e I. Angulo. Esta obra se centra
principalmente en el estudio del popular dispositivo PIC16F84. Es un trabajo orientado a personas con escasos o nulos conocimientos sobre
microcontroladores. Se elige el PIC16F84 por ser un PIC muy representativo y que, al ser fcilmente borrado, permite ser utilizado en mltiples
experimentos. Presenta adems una serie de sencillos ejemplos as como herramientas tanto software como hardware econmicas y de fcil
manejo.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
01

PRCTICA 0: Herramientas de desarrollo


0.1 Objetivos
Describir las herramientas necesarias para desarrollar las prcticas propuestas en el presente mdulo de MICROCONTROLADORES
I, dedicadas al dispositivo PIC16F84.

0.2 Herramientas hardware


Se han diseado dos tarjetas de prototipos llamadas PROTO'PIC y PROTO'PIC 2, a elegir por el usuario y, que se entregan
totalmente montadas y comprobadas. Ambas incluyen el dispositivo PIC16F84 y son capaces de soportar los dispositivos
PIC 16F873 y 16F876 de mayores prestaciones. Mediante un sencillo sistema de conexin a base de una regleta de pines,
la tarjeta se inserta en el mdulo board del entrenador "UNIVERSAL TRAINER". Sobre este entrenador se realizan las
conexiones elctricas necesarias entre los distintos perifricos y las seales de E/S del PIC en funcin de la aplicacin a
realizar. La tarjeta PROTOPIC la PROTOPIC2 se usan tambin en el Mdulo 5.

0.2.1 La tarjeta PROTOPIC


Es la ms pequea, sencilla y econmica. Est pensada
para aquellos usuarios que dispongan de algn tipo
de circuito grabador como puede ser el Micro'PIC
Trainer o el Micro'PIC Programmer de Microsystems
Engineering. Se presenta en la fotografa de la figura
0-1.
El PIC16F84 viene montado de serie, junto con el
circuito oscilador a 4MHz. Se ha previsto un zcalo
de 28 patillas para insertar y experimentar con los
dispositivos PIC de 28 patillas 16F873 y 16F876. De
la misma forma se incluye un cable ICSP (In Circuit
Serial Programming) que se conecta en el zcalo
apropiado de cualquier grabador de los anteriormente
citados.

FIGURA 0-1. La tarjeta PROTO'PIC

Mediante una hilera de 26 pines quedan, a disposicin del usuario,


todas las lneas de E/S del PIC, incluidas las de alimentacin. De
esta forma la tarjeta se inserta sobre el mdulo board del entrenador
"UNIVERSAL TRAINER" y de forma rpida y fcil se conectan
los perifricos deseados.

FIGURA 0-2. Distribucin de seales de la tarjeta PROTOPIC

El PIC puede grabarse sin necesidad de retirar la tarjeta del circuito


en el que se est experimentando. Cuando se acciona el conmutador
SW1 la tarjeta queda en el modo de PROGRAMACION. El PIC
recibe informacin desde el PC a travs del grabador (Micro'PIC
Trainer, Micro'PIC Programmer, etc.). Cuando SW1 est sin
accionar, el PIC queda en el modo EJECUCION. Todas las lneas
de E/S del mismo estn disponibles en la hilera de pines.

Ingeniera de Microsistemas Programados S.L.

La figura 0-2 muestra la serigrafa con la disposicin de componentes de la tarjeta de prototipos PROTO'PIC. Se puede
apreciar claramente la distribucin de las seales presentes en la hilera de pines de conexin.

0.2.2 La tarjeta PROTO'PIC 2


La finalidad y manejo de esta tarjeta es similar a la anterior.
Est diseada para aquellos usuarios que no dispongan de
ningn tipo de circuito para la grabacin de dispositivos
PIC. Dicho circuito de grabacin est incluido en la propia
tarjeta lo que la hace totalmente autnoma y funcional.
Ver la fotografa de la figura 0-3.

FIGURA 0-3.
La tarjeta
PROTOPIC 2

PRCTICA
02

MICROCONTROLADORES I (PIC16F84)

PRCTICA 0: Herramientas de desarrollo


Se incluye el cable para la conexin con el canal
paralelo de un PC a travs del cual y, mediante el
software de grabacin adecuado, se proceder a la
grabacin del dispositivo PIC que se vaya a emplear.
La tarjeta incluye tambin los circuitos de
alimentacin y estabilizacin necesarios para obtener
las tensiones de trabajo y grabacin. Es necesario
alimentarla desde un transformador que suministre
12VAC. Dicho transformador no est incluido en el
Kit.

FIGURA 0-4. Serigrafa de la tarjeta de prototipos PROTO'PIC 2

0.3 Herramientas software


Con objeto de proporcionar a los usuarios un kit de prcticas totalmente funcional, se incluye adems de una de las dos
tarjetas anteriormente explicadas, los componentes adicionales necesarios as como un disco de prcticas que contiene lo
siguiente:
Ficheros con todos los programas fuente de las prcticas propuestas
Ensamblador MPASM de Microchip para entorno MS-DOS
Software "PROTOPIC" para la grabacin de los dispositivos insertados en las tarjetas

0.3.1 Los programas fuente


Son ficheros de tipo texto editados con
cualquier procesador de textos. El EDIT es
el procesador de textos integrado en el MSDOS ms extendido y fcil de emplear, cuya
pantalla de trabajo se muestra en la figura
0-5. No obstante cualquier otro procesador
del entorno Windows puede ser utilizado.
La nica condicin es que los ficheros se
guarden en formato ASCII.
FIGURA 0-5. Pantalla de trabajo del editor de textos EDIT

Los programas fuente se guardan en ficheros con extensin .ASM y contienen las instrucciones, directivas, etiquetas,
mensajes, etc. con las cuales el PIC desarrollar una determinada aplicacin. Un programa fuente en s mismo no
puede ser grabado directamente sobre la memoria de programa del PIC. Es necesaria una traduccin previa de dicho
programa fuente a cdigo mquina o hexadecimal. Dicha traduccin recibe el nombre de "Ensamblado".
En el disco de prcticas se proporcionan todos los programas fuente de los ejercicios propuestos. De esta manera el
usuario evita la tediosa tarea de tener que teclearlos. A pesar de todo pueden ser editados para su modificacin,
impresin, etc.

0.3.2 El ensamblador MPASM


Es el encargado de traducir las instrucciones del programa fuente en sus equivalentes en cdigo mquina para su
posterior grabacin sobre la memoria interna del PIC. En el disco de prcticas se suministra el ensamblador MPASM
de Microchip en su versin MS-DOS. Este fabricante ofrece, en su pgina web, constantes actualizaciones y mejoras.
Igualmente se ofrece ensambladores y entornos de trabajo para Windows, as como los respectivos manuales. Todo
ello se puede adquirir desde la pgina http://www.microchip.com.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

La serigrafa de la figura 0-4 muestra la disposicin


de componentes de la tarjeta y la distribucin de
lneas de E/S a travs de la regleta de conexin de
26 pines. Dicha distribucin es idntica a la de la
tarjeta PROTO'PIC.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
03

PRCTICA 0: Herramientas de desarrollo


El MPASM se ejecuta desde MS-DOS o
tarea MS-DOS tecleando MPASM desde
la lnea de comandos en el directorio
actual o indicando la ruta donde se
encuentre. Aparece una pantalla de
trabajo como la mostrada en la figura
0-6

En el campo superior "Source File" se


indica ruta y/o el nombre del fichero
fuente (*.ASM) a ensamblar. El resto de
campos se completa con una serie de
valores por defecto como se ve en la
figura anterior. El proceso de ensamblado
se inicia al pulsar la tecla F10. Tras
ensamblar un fichero fuente se obtienen
otros tres ficheros de idntico nombre
pero con extensiones diferentes:

FIGURA 0-6. Pantalla de trabajo del ensamblador MPASM

1.-*.ERR: Es un fichero tipo texto que contiene una descripcin de los errores de ensamblado que hay y en qu
lnea del programa fuente (*. ASM) se encuentran (si es que se producen). Localizados estos se procede a corregirlos
en el fuente para volver nuevamente a ensamblar.
2.-*.LST: Se trata de un fichero tipo texto de carcter meramente informativo. Muestra cada una de las instrucciones
del programa fuente con la traduccin al cdigo mquina correspondiente.
3.-*.HEX: Se trata del fichero que contiene el cdigo mquina resultante del ensamblado. Precisamente es el
contenido de este fichero el que ha de grabarse fsicamente, con ayuda del software apropiado, sobre la memoria
de programa del PIC.

Ingeniera de Microsistemas Programados S.L.

0.3.3 El software de grabacin

FIGURA 0-7. La pantalla del software de grabacin PROTOPIC

Mediante este software es


posible proceder a la
grabacin del PIC con el
fichero de cdigo mquina
obtenido tras el ensamblado.
Los usuarios que hayan
adquirido la tarjeta de
prototipos "PROTO'PIC" se
les supone en disposicin
de los grabadores Micro'PIC
Trainer y/o Micro'PIC
Programmer (entre otros), y
deben estar familiarizados
con el correspondiente
software de grabacin.

PRCTICA
04

MICROCONTROLADORES I (PIC16F84)

PRCTICA 0: Herramientas de desarrollo


Por su parte aquellos usuarios que hayan adquirido la tarjeta de prototipos "PROTO'PIC 2" puede utilizar el software
"PROTOPIC" que se incluye en el disco de prcticas y que se explica a continuacin. La pantalla de trabajo se muestra en
la figura 0-7 y es muy similar al software de grabacin de Micro'PIC Trainer y Micro'PIC Programmer.
En la ventana "SELECCIN DE MODELO" se selecciona el tipo de PIC que se va a emplear. Las caractersticas ms
relevantes del mismo se resumen en la ventana inferior "MODELO ELEGIDO".
Mediante "COMPROBACION DE BORRADO" se activa o no la posibilidad de comprobar si un PIC est borrado antes
de proceder a su grabacin.

La ventana superior representa el "BUFFER DE MEMORIA DE PROGRAMA" donde se visualizan los cdigos hex. que
sern transferidos hacia o desde el PIC.
Los ocho botones de la parte inferior permiten realizar una serie de tareas tpicas. "Abrir Fichero" permite seleccionar de
entre los ficheros ejecutables *.HEX, el que se desea grabar, transfirindose al buffer de memoria. "Programar Todo" graba
sobre el PIC tanto el contenido del buffer como la palabra de configuracin actual. Por su parte el botn "Programar
Palabra" slo graba la palabra de configuracin y no el buffer de memoria. El botn de "Verificar" comprueba si el contenido
de la memoria de programa del PIC coincide con el del buffer de memoria.
El botn "Leer Pic" lee el contenido de la memoria de programa de ste y lo visualiza en el buffer. El botn de "Borrar"
borra completamente el contenido actual del PIC. La comprobacin de borrado se realiza mediante botn "Comprobar
Borrado". Finalmente el botn "Salir" termina la ejecucin del software de grabacin devolviendo el control al sistema
operativo.

0.4 Tutorial
Mediante este sencillo tutorial se pretende resumir de forma clara y concisa todos los pasos que se deben llevar a cabo para
realizar las prcticas propuestas.
1.- Realizar las conexiones elctricas del montaje de la prctica en cuestin, siguiendo las instrucciones y esquemas en
cada caso particular. Para ello se inserta la tarjeta de prototipos "PROTO'PIC" o"PROTO'PIC2" en el entrenador "UNIVERSAL
TRAINER" donde se hace el cableado apropiado.
2.- Ensamblar, mediante el ensamblador MPASM, el programa fuente correspondiente y que viene editado en el disco de
prcticas. Dicho programa se puede editar y modificar mediante el editor EDIT o cualquier otro. Si hubiera errores de
ensamblado se localizan con ayuda del fichero *.ERR, se corrigen en el fuente *.ASM y se vuelve a ensamblar.
3.- Grabaremos sobre el PIC el cdigo mquina obtenido y que estar disponible en el fichero *.HEX. para ello se sigue la
siguiente secuencia:
a) Se ejecuta el software de grabacin correspondiente. Si se emplea la tarjeta PROTO'PIC2, esta se debe conectar
directamente al canal paralelo del PC y se ejecuta el programa "PROTOPIC". En caso de utilizar la tarjeta PROTO'PIC,
esta debe conectarse con el zcalo del grabador que se vaya a emplear ( Micro'PIC Trainer, Micro'PIC Programmer, etc.),
mediante el cable plano incluido. Se ejecuta el programa correspondiente.
b) Conectar las alimentaciones tanto del "UNIVERSAL TRAINER" como del grabador (PROTO'PIC 2, Micro'PIC Trainer,
Micro'PIC Programmer, etc.)
c) Se pulsa el conmutador SW1 para poner la tarjeta de prototipos en el modo de programacin. Se recuerda a los
usuarios de Micro'PIC Trainer que los jumpers J5, J6 y J7 deben estar abiertos.
d) Se selecciona el modelo de PIC a emplear y se comprueba que est borrado. Se abre el fichero *.HEX deseado y,
mediante la palabra de configuracin, se selecciona oscilador XT y Watchdog como corresponda. Acto seguido se graba
y verifica.
e) Una vez grabado el programa, el conmutador SW1 se pone en la posicin RUN de ejecucin.
4.- Comprobamos el correcto funcionamiento de la prctica y hacemos las modificaciones que en cada caso sugiera el
apartado dedicado al Trabajo Personal.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Con la ventana "PALABRA DE CONFIGURACION" se selecciona las distintas modalidades posibles para configurar el
PIC: proteger o no el cdigo interno, activar o no el temporizador Watchdog (WDT), activar o no el temporizador de arranque
(Power Timer), as como seleccionar el tipo de oscilador.

PRCTICA
11

MICROCONTROLADORES I (PIC16F84)

PRCTICA 1: Sencillo ejemplo de manejo de las E/S


1.1 Objetivos

Realizar un ejemplo lo ms sencillo posible que permita analizar la forma de programar


las lneas de E/S de un PIC16F84, para el posterior control de los perifricos conectados
a las mismas.

1.2 Fundamentos tericos bsicos


El microcontrolador PIC16F84 dispone de un total de 13 patillas o lneas de E/S a travs de las cuales se conectan los
distintos perifricos que se desean gobernar.
Esas 13 lneas se agrupan en dos puertas. La puerta A est representada en la posicin 0x05 del rea de datos. Cualquier
instruccin de un programa que implique leer o escribir sobre esta posicin, conlleva obtener o sacar informacin binaria
por las cinco lneas que componen dicha puerta y que se denominan RA0-RA4. Los tres bits de ms peso de la posicin
0x05 no estn reflejados en ninguna lnea, por lo que no tienen ningn valor.
Por su parte, la puerta B est representada en la posicin 0x06 del rea de datos. Al igual que en el caso de la puerta A,
cualquier operacin de lectura o escritura sobre esta posicin permite obtener o sacar informacin binaria por las ocho
lneas de que consta esta puerta y que se denominan RB0-RB7.
Paralelamente, asociados a estas puertas existen dos registros llamados TRISA y TRISB. Se localizan en las posiciones 0x05
y 0x06 del banco 1 del rea de datos respectivamente. Segn el valor binario que se almacene en ellos se determinan si
las lneas de las puertas A y B actuarn como entradas o salidas. Un bit "0" en cualquier posicin de cualquiera de estos
registros, configura la lnea de la puerta correspondiente como salida, un bit "1" la configura como entrada. Cualquiera
de las lneas de ambas puertas pueden configurarse por tanto como entrada o como salida de forma independiente.

Ingeniera de Microsistemas Programados S.L.

1.3 Esquema electrnico

La figura 1-1 muestra el esquema


de las conexiones a realizar entre
el entrenador "UNIVERSAL
TRAINER" y la tarjeta
"PROTO'PIC".

FIGURA 1-1. Esquema de conexiones de la prctica 1

Entrenador "UNIVERSAL TRAINER"

1.4 Materiales necesarios

Tarjeta de prototipos "PROTO'PIC"


R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
12

MICROCONTROLADORES I (PIC16F84)

PRCTICA 1: Sencillo ejemplo de manejo de las E/S


1.5 Montaje prctico
Consiste en conectar cinco interruptores de entrada E0-E4 a
las lneas RA0-RA4 y cinco leds de salida S0-S4 a las lneas
RB0-RB4 de la tarjeta PROTO'PIC. La alimentacin de esta
tarjeta se realiza por los pines 1 y 3 (GND) y por el pin 2
(+5Vcc). La fotografa de la figura 1-2 muestra el montaje del
circuito.

1.6 Desarrollo de la prctica


El programa que se presenta en el fichero PRACT1.ASM realiza la lectura de los cinco interruptores de entrada conectados
a RA0-RA4. El estado lgico de los mismos se representa en los cinco leds de salida conectados a RB0-RB4. La figura 1-3
presenta el organigrama de trabajo correspondiente.

1.7 Trabajo personal


En esta primera prctica, el trabajo personal consistir en realizar los pasos
necesarios para la comprobacin del funcionamiento del programa propuesto.
1.- Una vez editado el programa fuente (este ya est editado en el fichero
EJER1.ASM incluido en el disco de prcticas) se proceder a ensamblarlo. Para
ello se utilizar el ensamblador MPASM incluido tambin en dicho disco. Se
obtiene as el programa ejecutable EJER1.HEX.
2.- Mediante el software de grabacin PROTOPIC, tambin incluido, se proceder
a grabar el PIC con el fichero ejecutable obtenido en el paso anterior. La palabra
de configuracin debe establecer al WDT en OFF, el oscilador del tipo XT y la
proteccin de cdigo en OFF.
3.- Suponiendo que el montaje del esquema de la figura 1-1 ya est realizado
sobre el UNIVERSAL TRAINER, se procede a verificar el correcto funcionamiento
del programa. Basta cambiar de estado los interruptores E0-E4 del entrenador,
para apreciar el mismo cambio de estado en los leds S0-S4.
FIGURA 1-3. Organigrama de trabajo

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 1-2. Fotografa del montaje

PRCTICA
21

MICROCONTROLADORES I (PIC16F84)

PRCTICA 2: Control de una lmpara desde dos interruptores


2.1 Objetivos

Realizar un programa que controle la salida en


funcin de dos seales de entrada distintas.

2.2 Fundamentos tericos bsicos


Es muy frecuente tener que controlar una carga (motor, lmpara, etc.) desde dos puntos
situados a cierta distancia entre ellos. Es el clsico caso de una habitacin con una
instalacin conmutada en la que una lmpara se gobierna desde dos interruptores
colocados en posiciones distantes entre s. Desde cualquiera de ellos se puede gobernar
el encendido o apagado de la lmpara.
Inicialmente, cuando ambos interruptores estn en reposo ( a nivel "0") la lmpara
permanece apagada ( a nivel "0"). A partir de esta situacin cada vez que cambie el
estado de cualquiera de los interruptores, tambin cambiar el estado de la lmpara.
La siguiente tabla de la verdad muestra los diferentes estados lgicos del sistema a
realizar.

2.3 Esquema electrnico


Se muestra en la figura
2-1. Se aprecia cmo dos
interruptores de entrada
se conectan con las lneas
RA0 y RA1. La salida a
la lmpara se simula
mediante un diodo led
conectado en S0.

FIGURA 2-1.
Esquema del circuito
para el control

Ingeniera de Microsistemas Programados S.L.

de una lmpara

2.4 Materiales necesarios


Entrenador "UNIVERSAL TRAINER"
Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

ENTRADAS
E1
E0
0
0
0
1
1
0
1
1

SALIDA
S0
0
1
1
0

PRCTICA
22

MICROCONTROLADORES I (PIC16F84)

PRCTICA 2: Control de una lmpara desde dos interruptores


2.5 Montaje prctico

FIGURA 2-2. Montaje del circuito para el control


de una lmpara

2.6 Desarrollo de la prctica


El organigrama de la figura 2-3, representa la secuencia
de trabajo que realiza el programa propuesto. Dicho
programa est disponible en el disco de prcticas, en el
fichero PRACT2.ASM.

FIGURA 2-3. Organigrama de trabajo

2.7 Trabajo personal


Analizar las instrucciones del programa para llegar a su total comprensin. Una vez ensamblado mediante el ensamblador
MPASM, proceder a grabarlo en el PIC y comprobar su correcto funcionamiento en base a la tabla de la verdad anterior.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Se muestra en la fotografa de la figura 2-2. Conectar la


alimentacin del mdulo PROTO'PIC. Las seales de entrada
RA0 y RA1 se conectan con los interruptores E0 y E1
respectivamente. La salida RB0 se conecta con el led S0 que
simula la lmpara a gobernar.

PRCTICA
31

MICROCONTROLADORES I (PIC16F84)

PRCTICA 3: Ejemplo combinacional


3.1 Objetivos
El ejemplo pretende mostrar cmo, mediante el
programa adecuado, es posible resolver cualquier
automatismo de tipo combinacional. Un nmero
determinado de salidas se activan en funcin de
las combinaciones binarias presente en un nmero
determinado de lneas de entrada.

3.2 Fundamentos tericos bsicos


Este ejercicio no difiere mucho de la prctica anterior. Las ocho
lneas de la puerta B (RB0-RB7) actan como salidas conectadas
a los leds S0-S7 del "UNIVERSAL TRAINER". Se activan en funcin
del estado lgico de las entradas RA0-RA1 conectadas a los
interruptores E0 y E1 segn la siguiente tabla de la verdad:

ENTRADAS
E1
E0
0
0
0
1
1
0
1
1

S7
1
0
0
1

S6
0
1
0
1

S5
1
0
0
1

SALIDAS
S4 S3
0
1
1
0
0
1
1
0

S2
0
1
1
0

S1
1
0
1
0

S0
0
1
1
0

Como novedad en esta prctica se propone el empleo del WDT. Se trata de un temporizador que est incluido en todos los
modelos de dispositivos PIC. Su misin consiste en provocar un reinicio del sistema cada vez que se sobrepase un intervalo
de tiempo determinado. Dicho intervalo es de 18.2 ms multiplicado por el valor del preescaler interno.
Para evitar que haya sobrepasamiento el programador debe intercalar estratgicamente en su programa, la instruccin de
refresco del WDT (CLRWDT), evitando as el reinicio del sistema.
En aplicaciones reales es muy interesante contemplar el empleo del WDT y su correspondiente refresco peridico. De esta
manera, si el sistema por cualquier motivo se bloqueara, el programa deja de ejecutarse y con ello la ejecucin de la
instruccin de refresco CLRWDT. El WDT sigue su temporizacin hasta que sobrepase el intervalo de tiempo, provocando
un reinicio automtico del sistema sin intervencin humana de ningn tipo.

Ingeniera de Microsistemas Programados S.L.

3.3 Esquema electrnico

El esquema de la
figura 3-1, muestra
el esquema
electrnico de
conexiones de la
prctica propuesta.
FIGURA 3-1. Esquema elctrico de montaje

PRCTICA
32

MICROCONTROLADORES I (PIC16F84)

PRCTICA 3: Ejemplo combinacional


3.4 Materiales necesarios
Entrenador "UNIVERSAL TRAINER"
Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

Se presenta en la fotografa de la figura 3-2. Como


en ocasiones anteriores se debe asegurar la correcta
alineacin de la tarjeta PROTOPIC.

FIGURA 3-2. Montaje prctico

3.6 Desarrollo de la prctica


El programa fuente que resuelve el automatismo propuesto, se
encuentra en el disco de prcticas, en el fichero PRACT3. ASM.
La figura 3.3 muestra el organigrama de trabajo del mismo.

2.7 Trabajo personal


ENTRADAS
RA2 RA1 RA0
0
X
X
1
0
0
1
0
1
1
1
0
1
1
1

RB3
0
0
0
0
1

SALIDAS
RB2 RB1
0
0
0
0
0
1
1
0
0
0

RB0
0
1
0
0
0

Se propone realizar un programa que, en funcin de las


combinaciones presentes en las entradas RA0, RA1 y RA2, se
gobiernen las salidas RB0, RB1, RB2 y RB3 de acuerdo a la tabla
de la verdad mostrada encima de este prrafo.

ANOTACIONES PERSONALES

FIGURA 3-3.Organigrama de trabajo del automatismo


combinacional

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

3.5 Montaje prctico

MICROCONTROLADORES I (PIC16F84)

PRCTICA
41

PRCTICA 4: Ejemplo secuencial


4.1 Objetivos
Se pretende resolver un automatismo de tipo secuencial
en el que la salida no depende del estado actual de
las entradas sino tambin del estado anterior de estas.

4.2 Fundamentos tericos bsicos


Efectivamente, en ocasiones el control de una o varias salidas no
dependen del estado lgico actual de las entradas, tambin depende
de la secuencia de estados lgicos que se produjeron sobre esas
entradas. El ejemplo propuesto trata de gobernar un zumbador
de alarma mediante dos pulsadores: ON y OFF. Cuando se activa
durante un breve espacio de tiempo el pulsador ON, la alarma se
activa y permanece activada aunque dicho pulsador se desactive.

Si se activa el pulsador OFF, la alarma se desconecta y se mantiene en este


estado aunque el pulsador OFF vuelva a la posicin de reposo y se desactive.
Si ambos pulsadores permanecen activados simultneamente, la alarma
permanecer desactivada.
Realmente el ejemplo propuesto responde al funcionamiento de un flip-flop
tipo R-S asncrono cuya tabla de la verdad se muestra a continuacin:

ENTRADAS
0
0
0
1
1
0
1
1

SALIDA
Ultimo estado
OFF
ON
OFF

4.3 Esquema electrnico


Se muestra en la figura 4-1. Los pulsadores E10 y E11 del entrenador "UNIVERSAL TRAINER" proporcionan las seales de
entrada ON y OFF respectivamente, y se conectan a las seales RA0 y RA1. La seal de salida RB0 se conecta con el
zumbador del entrenador a modo de alarma sonora.

FIGURA 4-1.

Ingeniera de Microsistemas Programados S.L.

Esquema para el control


de una seal de alarma

4.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
42

MICROCONTROLADORES I (PIC16F84)

PRCTICA 4: Ejemplo secuencial


4.5 Montaje prctico

4.6 Desarrollo de
la prctica
El programa fuente se encuentra en el fichero
PRACT4.ASM del disco de prcticas y se corresponde
con el organigrama de trabajo que se muestra en la
figura 4-3.

FIGURA 4-2. Montaje prctico

FIGURA 4-3.
Organigrama de trabajo
del automatismo secuencial

4.7 Trabajo personal


Ensamblar el programa fuente y grabarlo sobre el microcontrolador
situado en la tarjeta "PROTI'PIC". Montar el circuito segn el
esquema de la figura 4-1 para verificar el funcionamiento.
Inicialmente la salida permanece desconectada. Basta pulsar E10
para comprobar que la salida se activa y permanece en este estado
a pesar de soltar E10.
Cuando se acciona E11, la salida se desconecta y permanece en
estado an cuando E11 deje de accionarse.
Finalmente, si se pulsan ambos pulsadores simultneamente, la
salida queda desconectada. Al soltarlos, el estado de la salida
depender del ltimo pulsador que se dej de accionar.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Se muestra en la fotografa de la figura 4-2. La tarjeta


PROTO'PIC se alimenta con +5Vcc. Los pulsadores E10
y E11 se conectan con las entradas RA0 y RA1
respectivamente. La salida RB0 se conecta bien con
el zumbador presente en el "UNIVERSAL TRAINER"
o bien con cualquiera de los leds S0-S7.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
51

PRCTICA 5: El TMR0, juego de luces


5.2 Fundamentos tericos bsicos

5.1 Objetivos
Explicar el funcionamiento y el
manejo del TMR0. Para ello se
propone un sencillo ejemplo
consistente en un juego de luces en
el que cada lmpara permanece
iluminada un determinado tiempo
controlado por dicho TMR0

El TMR0 consiste en un temporizador de 8 bits que est presente en todos los


miembros de la familia PIC. Puede trabajar en modo temporizador o en modo
contador. En el primero de los casos el TMR0 evoluciona a la cuarta parte de la
frecuencia de trabajo del sistema (Fosc/4 = 4Tosc), es decir, cada cuatro pulsos del
oscilador principal. Suponiendo un PIC trabajando a una frecuencia de 4MHZ, la
evolucin del TMR0 se produce cada 1S.
El TMR0 puede trabajar asociado a un divisor o preescaler que divide los pulsos
a contar por un valor seleccionable comprendido entre 2 y 256. De esta forma se
puede aumentar el tiempo mximo de temporizacin. En general, dicho tiempo
se calcula segn la siguiente frmula:
Tiempo = 4Tosc * N * P
Donde 4Tosc es cuatro veces el periodo de la frecuencia de trabajo (4Tosc), N
representa el valor de 8 bits a cargar en el propio TMR0 y P el valor del preescaler
seleccionado.
Cada vez que el TMR0, como consecuencia de su constante evolucin alcanza el
valor 0, se dice que se ha desbordado. Este suceso queda reflejado en el bit T0IF
del registro INTCON, que se pone a nivel "1". Este bit habr que reponerlo a nivel
"0" si se desea controlar una nueva temporizacin.
El TMR0 es un contador de tipo ascendente. Para hacer una correcta temporizacin
hay que cargar el complemento del valor deseado.

5.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura 5-1. Es un circuito


muy sencillo en el que basta conectar los
leds S0-S7 del entrenador UNIVERSAL
TRAINER con las seales RB0-RB7 de la
tarjeta de prototippos PROTOPIC

FIGURA 5-1. Esquema del juego de luces

5.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
52

MICROCONTROLADORES I (PIC16F84)

PRCTICA 5: El TMR0, juego de luces


5.5 Montaje prctico
Se muestra en la fotografa de la figura 5-2. Se recuerda
una vez ms la necesidad de alimentar correctamente la
tarjeta de prototipos "PROTO'PIC".

5.6 Desarrollo de la prctica


El fichero PRACT5.ASM del disco de prcticas contiene el
programa fuente correspondiente a esta prctica. El
organigrama de trabajo se muestra en la figura 5-3. Consiste
en un juego de luces en el que las salidas se van activando
secuencialmente una tras otra durante un intervalo de
tiempo de 0.1" controlado por el TMR0, dando una sensacin
de movimiento. El timer evoluciona cada 1S dado que la
frecuencia de trabajo es de 4MHz. Se ha seleccionado un
preescaler de 256 y el valor que se carga en el TMR0 es de
195. La temporizacin as obtenida es de 49.9 mS. Como
esto no es suficiente, dicha temporizacin se manda repetir
2 veces, con lo que el tiempo final transcurrido es de 99,9
mS (0.1").

FIGURA 5-3. Organigrama de trabajo del juego de luces

La activacin secuencial de las salidas se realiza mediante


la instruccin de rotacin de derecha a izquierda del valor
binario inicial 00000001.

5.7 Trabajo personal


Se propone modificar el programa desde dos puntos de vista diferentes. Por una lado variar la temporizacin que mantiene
activada cada salida, haciendo que el efecto de movimiento sea ms o menos rpido. Por otra parte el programa se puede
mejorar haciendo que el sentido de la rotacin se pueda seleccionar mediante un interruptor de entrada conectado, por
ejemplo, a la lnea RA4.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 5-2. Montaje prctico del juego de luces

PRCTICA
61

MICROCONTROLADORES I (PIC16F84)

PRCTICA 6: Usando el preescaler, otro juego de luces


6.1 Objetivos

Estudiar el funcionamiento y el manejo del preescaler mediante un ejemplo que permite


modificar el valor del mismo con objeto de realizar temporizaciones variables.

6.2 Fundamentos tericos bsicos


El preescaler no es ni ms ni menos que un divisor de frecuencia. El factor de divisin se puede ajustar entre una serie de
valores. Todos los dispositivos de la familia PIC disponen de un preescaler con un factor de divisin de entre 1:2 y 1:256.
Dicho preescaler se puede asociar al TMR0 o bien al WDT del PIC, pero no a los dos al mismo tiempo.
Cuando se asocia al TMR0, se puede aumentar el valor mximo
posible de la temporizacin, tal y como se analiz en la prctica
anterior. El TMR0 evoluciona en funcin del valor seleccionado
del preescaler. Si por ejemplo, se selecciona el valor 1:2, el TMR0
evoluciona cada dos pulsos de reloj o eventos. Un preescaler de
1:256 har que el TMR0 evolucione cada 256 de esos eventos.
El bit PSA del registro OPTION permite determinar a quin se
asigna el preescaler, al TMR0 o al WDT. Igualmente los bits PS2,
PS1 y PS0 de ese mismo registro permiten seleccionar el factor
de divisin segn la siguiente tabla:

6.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura 6-1. Los interruptores E0-E2


se conectan a las entradas RA0-RA2 respectivamente.
Los leds S0-S7 se conectan con las salidas RB0-RB7.

PS2
0
0
0
0
1
1
1
1

PS1
0
0
1
1
0
0
1
1

PS0
0
1
0
1
0
1
0
1

TMR0
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256

WDT
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128

6.4 Materiales necesarios


Entrenador "UNIVERSAL TRAINER"
Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

FIGURA 6-1. Esquema electrnico

PRCTICA
62

MICROCONTROLADORES I (PIC16F84)

PRCTICA 6: Usando el preescaler, otro juego de luces


6.5 Montaje prctico

6.6 Desarrollo de la prctica

FIGURA 6-2. Montaje prctico

El fichero PRACT6.ASM del disco de prcticas contiene


el programa fuente con el ejemplo en cuestin. Habr
que ensamblarlo y grabarlo en el PIC para, una vez
realizado el montaje, comprobar el funcionamiento. El
organigrama de la figura 6-3 muestra el esquema de
trabajo.
Es muy similar al ejemplo de la prctica anterior. En
esta ocasin el valor del preescaler no es fijo, viene
determinado por el estado lgico de los interruptores
E0-E2 de entrada. Segn dicho estado, se selecciona
uno de los ocho posibles factores de divisin. Cuando
estn a 000 se selecciona el factor 1:2 que corresponder
con la temporizacin ms corta. Cuando estn a 111
se selecciona el factor 1:256 que se corresponder con
la temporizacin ms larga.
El TMR0 se carga para contar 50 eventos de 1S. Este
cuenta se repite 200 veces lo que da un lapsus de 10mS.
Si el preescaler elegido es de 1:2 la temporizacin
mnima ser de 20 mS, Con un preescaler de 1:256
dicha temporizacin aumenta hasta 2.56".
FIGURA 6-3. Organigrama de trabajo

El efecto que estas variaciones producirn sobre las


salidas estar relacionado con la velocidad a la que se
van encendiendo secuencialmente cada una de las
luces.

6.7 Trabajo personal


Al igual que en la prctica anterior, se sugiere hacer las modificaciones de programa necesarias para variar los
tiempos as como las secuencias de encendido de las lmparas de salida.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Se conectan los interruptores de entrada E0E2 con las lneas RA0-RA2 que sern utilizadas
como entradas. Los leds S0-S7 se conectan con
las lneas RB0-RB7 que se emplearn como
salidas. Estos leds se irn encendiendo
secuencialmente a diferentes velocidades. Ver
la fotografa de la figura 6-2.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
71

PRCTICA 7: Manejando el WDT y el modo SLEEP


7.1 Objetivos
Explicar el funcionamiento y manejo del temporizador WDT as como sus posibles aplicaciones. Igualmente se emplea la
instruccin SLEEP como mtodo para colocar al PIC en el modo standby de bajo consumo.

7.2 Fundamentos tericos bsicos


El WDT consiste en un temporizador cuya base de tiempos es totalmente independiente del resto del sistema. Esto quiere
decir que, a pesar de que el PIC estuviera en standby, o bloqueado, o en cualquier otra situacin, el WDT seguir funcionando.
La nica forma de conectarlo o desconectarlo es a travs de la palabra de configuracin durante el proceso de grabacin
del dispositivo y no mediante el programa de aplicacin.
La temporizacin nominal que realiza es de 18.2 mS. Dicha temporizacin puede verse aumentada si al WDT se le asocia
el preescaler estudiado en la prctica anterior. Si durante este intervalo no es refrescado mediante la instruccin CLRWDT,
se produce o bien un re inicio general del sistema o bien una reanudacin de la ejecucin del programa ("WAKE-UP") si
el dispositivo hubiera estado en standby.
En el primero de los casos, el PC se carga con la direccin 0000 del vector RESET o MCLR. La ejecucin del programa
comienza desde el principio. En cualquier caso el bit /TO del registro STATUS se pone a "0" informando de alguna manera
que el re inicio ha sido provocado por desbordamiento del WDT y no por que se acabe de encender el sistema o se haya
accionado la seal de entrada MCLR.
Si, por otra parte, el microcontrolador se encontraba en el modo stanby de bajo consumo, el desbordamiento del WDT
provoca su "despertar" (WAKE-UP) y reanuda la ejecucin desde donde se qued.
La instruccin SLEEP pone al microcontrolador en el modo standby de bajo consumo. Su ejecucin en cualquier punto del
programa detiene toda actividad del microcontrolador. Existen dos formas de cancelar el modo standby: una por desbordamiento
del WDT como ya se ha comentado y otra cuando se produce cualquier tipo de interrupcin.

7.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura 7-1 y


es idntico al de la figura 6-1
de la prctica anterior.

FIGURA 7-1. Esquema electrnico

PRCTICA
72

MICROCONTROLADORES I (PIC16F84)

PRCTICA 7: Manejando el WDT y el modo SLEEP


7.4 Materiales necesarios
Entrenador "UNIVERSAL TRAINER"
Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

Es el mismo que el empleado en la prctica


anterior y se muestra en la fotografa de la figura
7-2. Los interruptores E0-E2 se conectan con las
entradas RA0-RA2. Las salidas RB0-RB7 se
conectan con los leds S0-S7.

FIGURA 7-2. Fotografa del montaje prctico

7.6 Desarrollo de la prctica


La figura 7-3 muestra el organigrama de trabajo al que responde el programa fuente
incluido en el fichero PRACT7.ASM del disco de prcticas.
Consiste en un contador binario cuya cuenta se refleja en los leds de salida. El preescaler
queda asociado al WDT y el factor de divisin se establece segn el valor binario que se
introduce mediante los interruptores E0-E2 a travs de RA0-RA2.
El microcontrolador se pone en el modo standby al ejecutar la instruccin SLEEP. A pesar
de ello el WDT sigue funcionando. Cuando desborda, se reanuda la ejecucin del programa.
Se incrementa el contador binario, se lee el estado actual de las entradas RA0-RA2 y se
actualiza el valor para el preescaler.
IMPORTANTE. Una vez ensamblado el programa se proceder a grabar el microcontrolador
asegurndose de que el WDT se activa mediante la palabra de configuracin. En caso
contrario, si el WDT est desconectado, el modo standby se mantiene permanentemente
no producindose cuenta binaria alguna.
FIGURA 7-3. Organigrama de trabajo

7.7 Trabajo personal


Analizar el funcionamiento del circuito comprobando que, segn el estado de E0-E2, la cuenta avanza ms o menos
rpido. Si los tres interruptores estn a "0", el preescaler seleccionado para el WDT es de un factor de 1:1. La cuenta
se incrementa cada 18.2 mS. Si por el contrario esos interruptores estn a "1", el factor es de 128 y la cuenta evoluciona
cada 2.3" (0,018 * 128).

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

7.5 Montaje prctico

MICROCONTROLADORES I (PIC16F84)

PRCTICA
81

PRCTICA 8: El TMR0 como contador de pulsos externos


8.1 Objetivos
Analizar otro modo de funcionamiento del TMR0 que consiste en la posibilidad de contar eventos o pulsos externos.

8.2 Fundamentos tericos


El TMR0 tiene dos modos de trabajo: modo temporizador y modo contador. Ambos modos son bsicamente iguales. Se
dice que el TMR0 trabaja en el modo temporizador, tal y como se ha venido utilizando hasta ahora, cuando la base de
tiempos es la propia frecuencia del sistema (Fosc/4=4Tosc). Dado que la frecuencia es conocida, resulta fcil controlar con
exactitud el valor de una determinada temporizacin. Basta multiplicar 4 veces el periodo de dicha frecuencia de trabajo
(4Tosc) por el valor cargado en el propio TMR0 y por el preescaler seleccionado (si este est asignado al TMR0).
Sin embargo el TMR0 tambin puede temporizar en base a una frecuencia o pulsos externos que se introducen por la patilla
RA4/T0CKI. Como esa frecuencia puede ser desconocida o los pulsos no tienen por qu ser peridicos, en lugar de temporizar
se habla de contar.
El bit T0CS del registro OPTION permite seleccionar entre estos dos modos de trabajo. Por otra parte el bit T0SE del mismo
registro permite establecer si los pulsos externos sern contados en cada flanco ascendente o descendente. El empleo del
TMR0 en el modo contador es similar al ya conocido. Se selecciona el preescaler (si procede), se carga el TMR0 con el
nmero de pulsos a contar (su complemento, dado que es un contador ascendente) y se detecta el final de la cuenta cuando
el bit T0IF del registro INTCON pasa a nivel 1.

8.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura 8-1.

FIGURA 8-1. Esquema electrnico


para contar eventos externos

8.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
82

MICROCONTROLADORES I (PIC16F84)

PRCTICA 8: El TMR0 como contador de pulsos externos


8.5 Montaje prctico
Es el mostrado en la figura 8-2. Se emplea el generador
lgico del entrenador. Se encargar de suministrar los
pulsos a contar. Se recomienda seleccionar la mnima
frecuencia disponible. Tambin se pueden emplear pulsadores
para generar los pulsos, pero estos producen el efecto
"rebote" que se tratar ms adelante y, la cuenta, pude
verse alterada.

8.6 Desarrollo de la prctica


El fichero PRACT8.ASM del disco de prcticas contiene el programa
fuente que se corresponde con el organigrama de trabajo mostrado en
la figura 8-3.
El programa en cuestin carga, procedente de los interruptores E0-E3
conectados a RA0-RA3, un valor binario de 4 bits. Dicho valor se
introduce al TMR0 y representa el nmero de pulsos a contar.
Cuando el TMR0 realiza la cuenta deseada, la seal RB1 se pone a "0"
lo que a su vez comanda al generador lgico inhabilitndolo, por lo
que deja de generar pulsos. Al mismo tiempo RB0 se pone a "1"
activando as el led S0.
El ejemplo emplea una vez ms al WDT como temporizador auxiliar.
Efectivamente, el programa queda en standby tras ejecutar la instruccin
SLEEP. El desbordamiento del WDT se producir aproximadamente al
de 2" dado que se le asign un preescaler de 128 (0.0182 * 128). Cuando
esto ocurre se reanuda la ejecucin del programa habilitando nuevamente
el generador lgico (RB1=1) y desconectando el led S0 (RB0=0).
Figura 8-3. Organigrama de trabajo

8.7 Trabajo personal


Ensamblar el programa fuente y grabarlo sobre el dispositivo PIC. Se recuerda que el WDT debe quedar activado, de
lo contrario el led S0 quedar activado permanentemente al no finalizar nunca la situacin de standby producida por
la instruccin SLEEP.
Comprobar igualmente que variando el valor binario de los interruptores E0-E3 de entrada, se vara el nmero de
pulsos a contar.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 8-2. Montaje prctico del contador de eventos

MICROCONTROLADORES I (PIC16F84)

PRCTICA
91

PRCTICA 9: La interrupcin del TMR0


9.1 Objetivos

Ensear el concepto de las interrupciones y manejar la interrupcin que puede


producir el TMR0 cada vez que desborde y alcance el valor 0.

9.2 Fundamentos tericos


Una interrupcin consiste en que el procesador cancele temporalmente el trabajo en curso, tambin llamado "Programa
principal" y pase a ejecutar otra tarea o programa llamado "Programa de tratamiento". Cuando se produce una interrupcin,
el sistema guarda, de forma espontnea, la direccin actual del PC sobre un rea de registros especiales llamada "Pila".
Dicha pila consta de 8 niveles o registros que se gestionan automticamente y no son accesibles por los programas del
usuario.
Seguidamente el PC se carga con una direccin fija llamada "vector de interrupcin", que en el caso de los PIC es la 0x004.
A partir de esta direccin comienza el programa de tratamiento oportuno. Al final de este se coloca la instruccin RETFIE
que recupera desde la pila y, devuelve al PC, la direccin de donde parti. Se contina as con la ejecucin del programa
principal.
El TMR0 es uno de los perifricos que pueden provocar, si se desea, interrupcin cada vez que finalice la temporizacin.
Para ello basta activar el bit GIE del registro INTCON que otorga un permiso general de interrupciones y el bit T0IE que
habilita la interrupcin del TMR0 en particular.
Cuando se provoca y acepta una interrupcin, el bit GIE se pone a "0" automticamente, volviendo a "1" cuando se ejecuta
la instruccin RETFIE al final del tratamiento. De esta forma se garantiza que durante un tratamiento de interrupcin, no
pueda provocarse ninguna otra.

9.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Para hacer una demostracin del funcionamiento


de la interrupcin del TMR0 se propone montar
el circuito representado en la figura 9-1.

FIGURA 9-1. Circuito para la demostracin


del funcionamiento de una interrupcin

9.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
92

MICROCONTROLADORES I (PIC16F84)

PRCTICA 9: La interrupcin del TMR0


9.5 Montaje prctico
Es el mostrado en la figura 9-2. Basta conectar los
interruptores E0 y E1 a las entradas RA0 y RA1. Las salidas
RB0 y RB1 se conectan a los leds S0 y S1 que reflejarn
el estado lgico de los interruptores anteriores. Finalmente
la salida RB7 se conecta al led S7 que producir intermitencia
cada vez que haya una interrupcin.

9.6 Desarrollo de la prctica


El organigrama de trabajo se representa en la figura 9-3 y se corresponde
con el programa fuente del fichero PRACT9.ASM del disco de prcticas.

El TMR0 se programa para que provoque una interrupcin cada 50mS.


Para ello se carga con el valor 195 y se le asocia un preescaler de 256.
Cada vez que se provoquen 5 interrupciones se produce un cambio de
estado de la salida RB7. Este cambio se realiza por tanto cada 250mS
(50mS * 5).

Al margen de ello, el programa est leyendo constantemente el estado


de las entradas RA0 y RA1 y reflejndolo sobre las salidas RB0 y RB1.
Figura 9-3. Organigrama de trabajo

9.7 Trabajo personal


Ensamblar el programa fuente, grabarlo sobre el PIC y montar el circuito propuesto para comprobar el funcionamiento.
Se puede observar que la reaccin de las salidas RB0 y RB1 en respuesta a las entradas RA0 y RA1 es prcticamente
instantnea, pero no por ello la intermitencia de la salida RB7 deja de producirse.
Se sugiere aumentar el tiempo de esa intermitencia, hacindola ms lenta. Se observar que la reaccin de las salidas a
las entradas, sigue siendo instantnea.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 9-2. Montaje prctico

PRCTICA
10 1

MICROCONTROLADORES I (PIC16F84)

PRCTICA 10: Ms interrupciones


10.1 Objetivos
Conocer el resto de interrupciones que el dispositivo
PIC16F84 es capaz de reconocer.

10.3 Esquema electrnico


Se muestra en la figura 10-1. Los interruptores E0-E3
se conectan a las entradas RB7-RB4 y a travs de ellos
se proceder a cambiar el estado lgico de esas entradas.
El pulsador E10 por su parte se conecta con la entrada
de interrupcin externa RB0/INT.
Los leds S0 y S7 se conectan a las salidas RA0 y RA1
respectivamente. Se activarn durante un cierto tiempo
cada vez que se provoque la interrupcin
correspondiente.

10.2 Fundamentos tericos bsicos


Efectivamente, el PIC 16F84 puede reconocer tres tipos de
interrupciones adems de la del TMR0 ya estudiada. Son las
siguientes:
Interrupcin externa aplicada por la patilla RB0/INT. Se habilita
mediante el bit INTE del registro INTCON y cuando se produce
queda reflejada en el bit INTF del mismo registro. Mediante el bit
INTEDG del registro OPTION se puede seleccionar el tipo de flanco
activo (ascendente o descendente) que se debe aplicar por la
entrada RB0.
Interrupcin por cambio de estado en las entradas RB4-RB7. Se
habilita mediante el bit RBIE del registro INTCON. Cuando en
cualquiera de las entradas RB4-RB7 se produce un cambio de
estado lgico respecto al ltimo valor ledo en las mismas, el flag
RBIF del registro INTCON refleja dicho suceso. Para reponer esta
interrupcin es necesario leer el puerto B de entrada y registrar
el nuevo valor de RB4-RB7 as como poner a 0 el bit RBIF.
Interrupcin al finalizar el ciclo de escritura en la memoria
EEPROM de datos. Se habilita mediante el bit EEIE del registro
INTCON y el bit EEIF del registro EECON1 refleja el suceso.

Ingeniera de Microsistemas Programados S.L.

FIGURA 10-1. Esquema electrnico

10.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
10 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 10: Ms interrupciones


10.5 Montaje prctico
Se muestra en la fotografa de la figura 10-2.
Simplemente consiste en conectar los interruptores
E0-E3 con las lneas de entrada RB4-RB7, el pulsador
E10 con la lnea de entrada de interrupcin externa
RB0/INT y, finalmente, los leds S0 y S7 se conectan
con las lneas RA0 y RA1 que actuarn como salidas.

10.6 Desarrollo de la prctica


El fichero PRACT10.ASM del disco de prcticas
contiene el programa fuente al que responde el
organigrama de trabajo de la figura 10-3.
Se trata de demostrar el funcionamiento y manejo
de las interrupcin externa INTF y la de por
cambio de estado en RB4-RB7. Cuando se produce
una de las dos se activa RA0 (el led S0) y RA1
(led S7) respectivamente.
El programa principal, una vez inicializados los
registros, pone al PIC en el modo standby de
forma indefinida. Dicho modo queda cancelado
cuando se produce una interrupcin. El programa
de tratamiento analiza la fuente de interrupcin
y realiza los tratamientos oportunos. En caso de
producirse la interrupcin externa por RB0/INT
se activa el led conectado a RA0. Si se produce
la interrupcin por el cambio de estado de
cualquiera de las lneas RB4-RB7 conectadas a
sendos interruptores, se procede a activar el led
conectado a RA1.
FIGURA 10-3. Organigrama de trabajo

Ambos leds se desactivan tras una temporizacin de 1 segundo controlada por el TMR0. Este, con un preescaler de 256 y
con un valor de 195, genera una temporizacin de 50mS que se repite tantas veces como indique la variable Temp (20).
Finalizada la temporizacin ambas salidas se desconectan. Se reponen los correspondientes flags de interrupcin y se retorna
al programa principal que coloca nuevamente al PIC en el modo standby.
Merece la pena comentar que la reposicin de las interrupciones se realiza tras la temporizacin. De esta forma se evitan
posibles falsas interrupciones provocadas por los rebotes tpicos de los interruptores del entrenador.

10.7 Trabajo personal


Ensamblado el programa y grabado sobre el dispositivo, comprobar el correcto funcionamiento del mismo. El led S0 se
activa, durante 1", con cada pulsacin de E10. El led S7 se activar cada vez que uno de los cuatro interruptores E0-E3
conectados a RB4-RB7 cambia de estado lgico.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 10-2. Montaje prctico

MICROCONTROLADORES I (PIC16F84)

PRCTICA
11 1

PRCTICA 11: Decodificador BCD a 7 segmentos


11.1 Objetivos
Realizar la conversin de un nmero BCD a cdigo
de 7 segmentos para visualizarlo sobre uno de los
displays del entrenador "UNIVERSAL TRAINER".

11.3 Esquema electrnico


Se muestra en la figura 1-1. Los interruptores E0-E3
se conectan con las lneas de entrada RA0-RA3. A
travs de ellos se introduce el valor binario BCD
comprendido entre 0 y 9. Las 8 lneas de la puerta B,
RB0-RB7, se conectan a los segmentos del display de
nodo comn D0 del entrenador "UNIVERSAL
TRAINER".

11.2 Fundamentos tericos bsicos


Se trata de realizar un programa que convierta un nmero BCD
que se introduce mediante 4 interruptores de entrada en el
correspondiente cdigo de 7 segmentos. El resultado de la conversin
se aplicar a un display capaz de visualizar el nmero introducido
(entre 0 y 9).
El ejemplo trata de introducirnos al manejo de tablas con datos
constantes mediante el empleo de instrucciones RETLW. Esta
instruccin retorna al punto de partida y asigna al registro W el
valor del operando que la acompaa. Una tabla consiste en un
conjunto de instrucciones RETLW consecutivas con sus
correspondientes valores de retorno. Para seleccionar cualquiera
de ellas basta con desplazar el PC a la posicin donde se encuentra
la instruccin RETLW que contiene el valor deseado.
El desplazamiento del PC se puede calcular sumando a su valor
actual el offset que apunta al lugar deseado dentro de la tabla.

Ingeniera de Microsistemas Programados S.L.

FIGURA 11-1.
Esquema del decodificador BCD
a 7 segmentos

11.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
11 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 11: Decodificador BCD a 7 segmentos


11.5 Montaje prctico
Es el mostrado en la figura 11-2. Se alimenta la tarjeta
de prototipos con la tensin de +5Vcc. Los interruptores
E0-E3 se conectan con las entradas RA0-RA3 del PIC.
A travs de estos interruptores se aplica el cdigo BCD
a convertir entre 0 y 9 (0000-1001).

FIGURA 11-2. Montaje prctico del decodificador BCD a 7 segmentos

11.6 Desarrollo de la prctica


El fichero PRACT5.ASM del disco de prcticas, contiene el programa
fuente que emula a un decodificador BCD a 7 segmentos. El organigrama
de la figura 11-3, muestra el esquema de trabajo del mismo.
Una vez ensamblado el programa, grabado sobre el PIC y montado todo
el circuito sobre el entrenador "UNIVERSAL TRAINER", verificar el
correcto funcionamiento.
Con los interruptores de entrada se van introduciendo los diferentes
cdigos BCD comprendidos entre el 0 (0000) y el 9 (1001). En el display
se debe visualizar el dgito correspondiente. Comprobar que si el valor
binario introducido es superior a 9 (1010, 1011, 1100, 1101, 1110 y 1111),
el display permanece apagado.
FIGURA 11-3. Organigrama de trabajo del
decodificador BCD a 7 segmentos

11.7 Trabajo personal


Modificar el programa de forma que pueda ser posible la visualizacin de cualquier dgito hexadecimal comprendido
entre 0 y F, segn el valor binario de los cuatro interruptores de entrada RA0-RA3.

ANOTACIONES PERSONALES

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Las salidas RB0-RB7 del PIC van a parar a los segmentos


del display D0 del entreneador. No olvidar que, al tratarse
de un display de nodo comn, dicho nodo debe
conectarse a +5Vcc.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
12 1

PRCTICA 12: Contador UP/DOWN


12.2 Fundamentos tericos bsicos

12.1 Objetivos
Realizar un programa que cuenta los pulsos aplicados
por una entrada y visualizarlos sobre en display de
7 segmentos. La cuenta puede ser en modo ascendente
o descendente segn el estado lgico de otra entrada.

Un contador UP/DOWN es un circuito capaz de contar los pulsos


de entrada, donde la cuenta se puede seleccionar si ser de modo
ascendente o descendente.
Los pulsos a contar pueden proceder de cualquier perifrico de
entrada como pueden ser sensores pticos, generadores de onda
cuadrada, finales de carrera, pulsadores, etc.

Si el perifrico que genera los pulsos a contar es de tipo electromecnico (pulsadores, interruptores, etc.), se puede producir
el conocido "efecto rebote". Los contactos metlicos de estos mecanismos tienen un periodo de inestabilidad cada vez que
son accionados.
Durante este periodo inestable se pueden generar una serie de varios pulsos por cada accionamiento, lo que dar lugar a
que el contador cuente siempre de ms.
Para eliminar dichos rebotes indeseados existen varias formas. Una de ellas consiste en conectar una red R-C cuya constante
de tiempo de carga/descarga sea superior al periodo de inestabilidad. De esta forma aunque haya varios pulsos por cada
accionamiento, slo se genera uno.
La otra forma de eliminarlos es la que se propone en la presente prctica. Consiste en hacer una temporizacin cada vez
que se detecta un cambio de estado lgico en la seal de entrada de pulsos.
Una vez ms se puede emplear al WDT como temporizador auxiliar.

12.3 Esquema
electrnico
En el mostrado en la figura 12-1. El
pulsador E10 se emplea para generar
los pulsos a contar mientras que el
interruptor E0 determina si la cuenta
es ascendente o descendente.

Ingeniera de Microsistemas Programados S.L.

FIGURA 12-1. Esquema del contador UP/DOWN

12.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
12 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 12: Contador UP/DOWN


12.5 Montaje prctico
El pulsador E10 se conecta con la entrada RA0 y genera los
pulsos a contar. Segn el estado lgico del interruptor E0 se
determina si la cuenta es ascendente ("1") o descendente
("0"). Por su parte, las lneas RB0-RB7 de la puerta B se
conectan con los segmentos a-dp del display D0, cuyo nodo
comn se conecta con +5Vcc. Ver la fotografa de la figura
12-2.

12.6 Desarrollo de la prctica


La figura 12-3 muestra el organigrama de trabajo al que responde el
programa fuente del fichero PRACT12.ASM contenido en el disco de
prcticas.
Analizando dicho programa se puede apreciar que se emplea la misma
tabla de conversin BCD a 7 segmentos empleada en la prctica anterior.
La variable "Contador" representa el valor de la cuenta. Se incrementa
o decrementa con los pulsos de entrada y, su contenido comprendido
entre 0 y 9, se convierte a 7 segmentos para su posterior visualizacin.
Por RA0 se aplican los pulsos a contar. Primero se detecta si hay un
flanco ascendente para posteriormente esperar al descendente, momento
en el que se produce la actualizacin del contador. Se puede observar
que tras la deteccin de ambos flancos se intercala la instruccin SLEEP.
En microcontrolador queda en estado de standby hasta que el WDT, con
un preescaler de 1:1 rebase y reanude la ejecucin de la siguiente
instruccin del programa . Esto ocurrir al de 18mS. Esta temporizacin
elimina el "efecto rebote" que genera el pulsador E10.

FIGURA 12-3.
Organigrama de trabajo del contador UP/DOWN

Recibido un impulso se analiza el estado lgico del interruptor E0


conectado a la entrada RA1. Si est a nivel "1" se procede a incrementar
el contador. En caso contrario se decrementa.
Finalmente se controla que el contador se mantenga dentro de los lmites
comprendidos entre 0 y 9 para proceder a su visualizacin.

12.7 Trabajo personal


Una vez ensamblado el programa fuente, el PIC ha de ser grabado con el WDT activado. En caso contrario el WDT no
funcionar y no habr forma de finalizar el estado de standby.
1.- Comprobar el correcto funcionamiento del programa
2.- Sustituir las instrucciones SLEEP del programa por una instruccin NOP. Volver a ensamblar y grabar. Comprobar
que el funcionamiento del contador es defectuoso ya que se cuentan pulsos de ms debido al efecto rebote.
3.- Desconectar el pulsador E10 de la entrada RA0 y conectar esta con la salida 1:128 del generador lgico del
entrenador. Seleccionar una baja frecuencia. Ahora la cuenta se realiza correctamente dado que, a pesar de haber
anulado la temporizacin anti rebotes, los pulsos que proporciona el generador lgico estn exentos de los mismos.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 12-2. Montaje prctico del contador UP/DOWN

MICROCONTROLADORES I (PIC16F84)

PRCTICA
13 1

PRCTICA 13: Generando nmeros aleatorios, dado electrnico


13.1 Objetivos
Realizar un programa que emule al popular dado
electrnico, visualizando un nmero aleatorio entre
1 y 6 cada vez que se accione un pulsador.

13.2 Fundamentos tericos bsicos


De entre las diferentes formas de obtener un nmero aleatorio,
la ms sencilla consiste en utilizar un temporizador o timer.
Efectivamente, el TMR0 evoluciona constantemente con cada
ciclo de instruccin (Fosc/4=4Tosc). A la velocidad de evolucin
que esto implica, supone que si se captura o lee el valor del TMR0
a intervalos irregulares de tiempo, es muy difcil realizar dos
lecturas con un mismo valor. El nmero aleatorio se obtiene
leyendo, en un momento dado, el valor del TMR0 para su posterior
tratamiento o proceso.

13.3 Esquema electrnico


La figura 13-1 muestra el esquema electrnico del montaje propuesto para emular el funcionamiento de un dado electrnico.
El nmero al azar obtenido se visualiza sobre el display D0 del entrenador.

Ingeniera de Microsistemas Programados S.L.

FIGURA 13-1. El dado electrnico

13.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC"
R1 resistencia de 1K 1/4 W
Cables de conexin
Disquete con programas

PRCTICA
13 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 13: Generando nmeros aleatorios, dado electrnico


13.5 Montaje prctico
Es muy similar al empleado en la practica anterior. Las salidas
RB0-RB7 se conectan con los segmentos a-dp del display D0. El
nodo de ste debe conectarse a +5Vcc. El pulsador E10 conectado
a la entrada RA0 es el encargado de dar inicio a una nueva
partida o tirada del dado.
FIGURA 13-2. Montaje del dado electrnico

En el fichero PRACT13.ASM del disco de prcticas se presenta el fichero


fuente con el programa propuesto y que responde al organigrama de
trabajo mostrado en la figura 13-3.
Inicialmente el display aparece en blanco. La partida se inicia cuando
mediante el pulsador E10 se aplica un flanco ascendente a la entrada
RA0. Mientras esto no suceda el TMR0 est constantemente evolucionando
a una muy alta velocidad. Tras recibirse el flanco ascendente se captura
el valor actual del TMR0 que servir para generar el nmero aleatorio.
El valor capturado es de ocho bits y est comprendido entre 0 y 255.
Ha este valor se le divide entre 6 con lo que el resto debe ser un nmero
entre 0 y 5 al que se le aade 1. Se obtiene as un nmero entre 1 y 6
que simboliza cada una de las caras del dado.
La divisin se realiza restando seis de forma consecutiva al nmero
capturado en el TMR0, hasta que el resto sea igual o menor de 5.
Ya tenemos el nmero aleatorio. A partir de ahora se hace una simple
maniobra de distraccin y lucimiento, consistente en representar
rpidamente, sobre el display, los nmeros del 1 al 6. Se produce as
una sensacin de participacin por parte del jugador mientras est
pulsando E10. Realmente es una pura sensacin ptica dado que el
nmero aleatorio ya ha sido capturado con anterioridad.
Cuando el pulsador E10 se pone a "0" volviendo a la situacin de reposo,
se visualiza el nmero aleatorio calculado al principio. Dicha visualizacin
se realiza durante 3 segundos, volviendo a apagarse el display y
repitindose el proceso.

FIGURA 13-3.
Organigrama de trabajo del dado electrnico

Se emplea por vez primera el manejo de una subrutina. Una subrutina no es otra cosa que un conjunto de instrucciones
que realizan un determinado trabajo tantas veces como sea necesario. Toda subrutina debe acabar con una instruccin de
retorno al programa principal que la llam. Dicha instruccin puede ser RETLW o bien RETURN. Para llamar a una subrutina
desde el programa principal se emplea la instruccin CALL. Esta instruccin desplaza al PC a la direccin deseada y adems
guarda en la pila la direccin de partida para poder luego retornar.

13.7 Trabajo personal


Ensamblar el programa fuente y grabarlo en el PIC. El WDT debe seleccionarse en el modo de activado pues en el programa
se emplea nuevamente la instruccin SLEEP para temporizar y evitar posibles rebotes del pulsador E10.
Se propone, a modo de entretenimiento, modificar el programa para que los valores visualizados estn comprendidos entre
0 y 9.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

13.6 Desarrollo de la prctica

MICROCONTROLADORES I (PIC16F84)

PRCTICA
14 1

PRCTICA 14: Multiplexado de los displays


14.1 Objetivos

Mostrar el modo de gobernar un conjunto de displays, conectados en paralelo,


mediante la tcnica del multiplexado o barrido secuencial de los mismos.

14.2 Fundamentos tericos bsicos


A la hora de gobernar un conjunto de varios displays de 7 segmentos, nos encontramos con la necesidad de optimizar al
mximo el nmero de lneas a emplear. Para ello todos los segmentos de todos los displays se conectan entre s. Se dice que
van en paralelo. La patilla comn de cada display, bien sean de nodo o de ctodo comn se controla de forma individual.
Efectivamente, si todos los segmentos se conectan en paralelo, todos los displays visualizarn lo mismo. Pero si la patilla
comn de cada uno de ellos se controla de forma individual, podremos conseguir que cada display visualice nicamente lo
que le corresponde.
Para ello se disea una subrutina que vaya activando, secuencialmente, a las patillas comunes de cada dgito (en nuestro
caso se emplean displays de nodo comn). Cada vez que se activa un dgito se le proporciona al mismo tiempo el cdigo
de 7 segmentos que le corresponde visualizar. Esta situacin se mantiene durante un corto periodo de tiempo.
A continuacin se pasa a repetir el proceso con el siguiente dgito y as sucesivamente con tantos dgitos como haya para
controlar, hasta llegar al ltimo. Se dice que se ha hecho un barrido o multiplexado de todos los displays. Si a su vez, los
barridos se repiten con la suficiente rapidez y de forma peridica, se produce la sensacin ptica de que todos ellos estn
encendidos y de que cada uno de ellos visualiza lo que le corresponda.

14.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura
14-1 y se puede apreciar
cmo los tres displays del
entrenador tienen todos
los segmentos conectados
entre s. Estos se gobiernan
mediante las 8 lneas de
la puerta B (RB0-RB7). Por
su parte mediante 3 lneas
de la puerta A (RA0-RA2)
se gobiernan de forma
individual las patillas
comunes de cada dgito.

FIGURA 14-1. Multiplexado displays

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC

14.4 Materiales necesarios

R1 Resistencia de 1K 1/4 W
Q1-Q3 Tres transistores NPN BC548
Cables de conexin
Disquete con programas

PRCTICA
14 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 14: Multiplexado de los displays


14.5 Montaje prctico

Se muestra en la fotografa de la figura 14-2. Se puede


apreciar la conexin de los tres transistores. Estos
actan como amplificadores de corriente para cada
uno de los dgitos.

14.6 Desarrollo de la prctica

En el fichero PRACT14.ASM del disco de practicas nos encontramos


con el programa al que responde el organigrama de trabajo de la
figura 14-3.
El programa est dividido en dos secciones. Por un lado tenemos
el programa principal que bsicamente inicia las variables con
los valores a visualizar, llama a la rutina de visualizacin que los
representa sobre los displays y, mediante la rutina "Delay_var",
se produce una temporizacin que puede ser modificada con objeto
de obtener diferentes sensaciones pticas.
Por otro lado est la rutina de visualizacin llamada "Display".
Analizando esta se puede apreciar claramente su funcionamiento.
Empieza activando RA0 con lo que se selecciona el dgito D0.
Carga la variable a visualizar sobre l, hace la conversin a 7
segmentos y acta sobre estos. Una pequea temporizacin de 1
mS aprox. realizada mediante la rutina "Delay", permite mantener
esta situacin un breve espacio de tiempo. A continuacin se
desconecta tanto el D0 como los segmentos.
FIGURA 14-3. Organigrama de trabajo
del ejemplode multiplexado de displays

El proceso se repite para los dgitos D1 y D2 para, finalmente,


retornar al programa principal

14.7 Trabajo personal


Una vez montado el circuito, ensamblado el programa y grabado sobre el PIC, se debe apreciar que los displays visualizan
el valor 123. Se puede modificar el programa para visualizar cualquier otro.
La llamada que se hace desde el programa principal a la rutina "Delay_var", no tiene otro propsito que el puramente
experimental. Se consigue dilatar el tiempo entre un barrido y el siguiente.
Probar a modificar el valor de la temporizacin aumentando la misma (basta modificar el valor que se carga en "Delay_Cont").
Debemos comprobar que cuanto ms se tarde entre un barrido y el siguiente, la sensacin ptica es cada vez peor e incluso
los displays terminan encendindose a rfagas.
En realidad se consigue una mejor sensacin ptica cuanto ms barridos se hagan por unidad de tiempo.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

FIGURA 14-2. Fotografa del montaje prctico para


el control de 3 dgitos de nodo comun

MICROCONTROLADORES I (PIC16F84)

PRCTICA
15 1

PRCTICA 15: Contador UP/DOWN de 3 dgitos


15.1 Objetivos
Crear un contador ascendente/descendente (UP/DOWN)
capaz de contar entre 000 y 999 pulsos externos que
se visualizarn sobre los tres displays del entrenador
"UNIVERSAL TRAINER".

15.3 Esquema electrnico

15.2 Fundamentos tericos bsicos


Se trata de contar un nmero de pulsos comprendido
entre 000 y 999. La cuenta se realiza, en BCD, sobre tres
variables internas para ser visualizas posteriormente
sobre los displays D0-D2 del entrenador. Se emplea la
rutina de visualizacin estudiada en la prctica anterior.
Esta rutina se encarga de activar secuencialmente cada
uno de los displays al tiempo que, previa conversin a
7 segmentos, presenta en cada uno de ellos el valor que
le corresponde.
Se insiste en la necesidad de hacer que la rutina se ejecute
con la mayor frecuencia posible. En caso de relentizar
el refresco de los displays, la sensacin ptica de los
mismos queda notablemente afectada.

Ingeniera de Microsistemas Programados S.L.

Se muestra en la figura 15-1.

FIGURA 15-1. El contador de 3 dgitos

15.4 Materiales necesarios

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC
R1 Resistencia de 1K 1/4 W
Q1-Q3 Tres transistores NPN BC548
Cables de conexin
Disquete con programas

PRCTICA
15 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 15: Contador UP/DOWN de 3 dgitos


15.5 Montaje prctico
Es muy similar al empleado en la prctica anterior y
se muestra en la fotografa de la figura 15-2. La
entrada de pulsos a contar se realiza mediante la lnea
RA4 que est conectada con el pulsador E10. Estos
pulsos tambin pueden proceder del generador lgico
del entrenador.

Finalmente, las salidas RB0-RB7 controlan los


segmentos de los displays mientras que las salidas
RA0-RA2 permiten activar a un display en particular.
FIGURA 15-2. Montaje prctico del contador de tres dgitos

15.6 Desarrollo de la prctica


El organigrama de trabajo de la figura 15-3 representa al programa
fuente del fichero PRACT15.ASM del disco de prcticas.
En la secuencia de inicio se programan adecuadamente las lneas de
entrada/salida y se inician a 0 las variables DIG0, DIG1 y DIG2 sobre
las que se sustenta el contador.
Se espera a recibir un pulso por RA4. Este se detecta cuando dicha
a lnea transita de "0" a "1" y luego de "1" a "0". Se puede apreciar
que en los bucles de espera de dichas transiciones, se intercala la
instruccin CALL Display. Se ejecuta as un barrido o refresco peridico
y constante de los displays para mantenerlos iluminados. Precisamente
el tiempo que tardan en ejecutarse cada uno de esos barridos de
refresco, anula el efecto rebote del pulsador. Es por ello que no se
ha introducido ninguna temporizacin como en ejemplos anteriores.

FIGURA 15-3.
Organigrama de trabajo del contador de 3 dgitos

Detectado un pulso completo se analiza el estado de RA3 para proceder


a incrementar o decrementar las variables que representan al contador.
Las rutinas "Incrementa" y "Decrementa" se encargan de actualizar
el contador. Este est formado por las variables DIG0, DIG1 y DIG2.
La actualizacin de las mismas se hace en BCD. En la rutina
"Incrementa" cuando una variable pasa de 9 se pone a 0 y se
incrementa la siguiente. En el caso de la rutina "Decrementa", cuando
una variable adquiere un valor menor de 0, se pone a 9 y se decrementa
el valor de la siguiente.

15.7 Trabajo personal


Ensamblar el programa fuente y obtener el ejecutable para su posterior grabacin sobre el PIC16F84,comprobando as su
funcionamiento.
Los pulsos a contar pueden proceder del generador lgico del entrenador. Para ello desconectar RA4 del pulsador E10 y
conectarla con una de las salidas del generador. Se recomienda elegir una frecuencia relativamente baja para poder apreciar
la evolucin de los displays

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

La entrada RA3 esta conectada con el interruptor E9.


Cuando dicho interruptor est a nivel "1" se produce
una cuenta descendente, en caso contrario la cuenta
es en sentido descendente.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
16 1

PRCTICA 16: Cronmetro digital


16.1 Objetivos
Realizar un cronmetro digital que visualice sobre los displays el lapsus de tiempo transcurrido entre dos pulsaciones. La
visualizacin se realiza en el formato 00.0 segundos.

16.2 Fundamentos tericos bsicos


Este ejemplo es un compendio de varios de los temas tratados hasta el presente. Se emplean las rutinas de visualizacin e
incremento en BCD ya conocidas y empleadas en ejemplos anteriores. Por su parte el TMR0 genera una interrupcin cada
50 mS que ser empleada como base de tiempos para el cronometraje.

16.3 Esquema electrnico

Ingeniera de Microsistemas Programados S.L.

Es el mostrado en la figura 16-1. Se puede comprobar una vez ms que es muy similar a los ya empleados.

FIGURA 16-1. Esquema del


cronmetro digital

Entrenador "UNIVERSAL TRAINER"


Tarjeta de prototipos "PROTO'PIC

16.4 Materiales necesarios

R1 Resistencia de 1K 1/4 W
Q1-Q3 Tres transistores NPN BC548
Cables de conexin
Disquete con programas

PRCTICA
16 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 16: Cronmetro digital


16.5 Montaje prctico

FIGURA 16-2. Montaje prctico del cronmetro

16.6 Desarrollo de la prctica


El programa fuente est contenido en el fichero PRACT16.ASM del disco de prcticas. La figura 16-3 muestra el organigrama
de trabajo resumido.
Inicialmente se parte de que el cronmetro parte de 00.0. Obsrvese que la rutina de visualizacin se ha modificado
ligeramente con objeto de iluminar el punto decimal en el dgito 1.
El sistema est a la espera de recibir un pulso en la lnea RA4 (START).
Ya se ha estudiado que un pulso consiste en detectar los flancos de
subida y bajada de la seal de entrada, mientras se mantiene el
refresco de los displays.
En este momento el TMR0 se programa para hacer una temporizacin
de 50mS y se habilita la interrupcin del mismo.
Cuando se detecta un nuevo pulso en RA4 (STOP), se desconectan
las interrupciones quedando por tanto la cuenta detenida. Si se analiza
debidamente el programa, la desconexin se produce realmente en
el flanco ascendente.
Finalmente el programa espera un nuevo pulso en esta ocasin a
travs de RA3. Es la seal de borrado CLEAR que pone a 00.0 el
display. Todo el proceso se vuelve a repetir con la espera de un nuevo
pulso START.
Por su parte el programa de tratamiento de interrupcin cuenta el
nmero de interrupciones recibidas. A la segunda interrupcin, el
tiempo transcurrido es de 100mS (una dcima de segundo), con lo
que se procede a actualizar los contadores del cronmetro.

16.7 Trabajo personal

FIGURA 16-3. Organigrama de trabajo

Se puede conseguir una mayor precisin del cronmetro si el TMR0 se carga con un valor ms exacto. Dicho valor debe
contemplar el tiempo de ejecucin de las instrucciones que se ejecutan entre una interrupcin y la siguiente.
Es posible tambin modificar el programa para que en lugar de contar segundos y dcimas de segundos, se cuente minutos
e incluso horas.
Por lo dems se procede como en anteriores prcticas. Ensamblar el programa fuente y grabarlo en el PIC para su verificacin.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Se aprecia en la fotografa de la figura 16-2 y no hay


muchas diferencias respecto al de la prctica anterior. En
la entrada RA3 se conecta el pulsador E11 con el que se
pondr a 00.0 el cronmetro (CLEAR). En la entrada RA4
se ha conectado otro pulsador que permite el inicio y
parada del cronmetro (START/STOP). Por lo dems, las
lneas RB0-RB7 de la puerta B se mantienen conectadas
con los segmentos de los displays, mientras que las salidas
RA0-RA2 controlan a cada uno de ellos de forma individual.

MICROCONTROLADORES I (PIC16F84)

PRCTICA
17 1

PRCTICA 17: La memoria EEPROM de datos, la mquina "Su Turno


17.1 Objetivos
Realizar un programa que emule el funcionamiento
de la clsica mquina "Su Turno" habitual en mltiples
establecimiento de venta al pblico.

17.3 Esquema electrnico


Se muestra en la figura 17-1.

17.2 Fundamentos tericos


La mquina "Su Turno" consiste en un contador que se va
incrementando con cada pulsacin por parte del comerciante. Un
display visualiza entre 00 y 99 el turno correspondiente al cliente.
En esta prctica se ha aadido una mejora consistente en memorizar
el turno actual sobre una memoria EEPROM de datos integrada
en el propio dispositivo PIC16F84. Se consigue as un sistema que
conserva el turno en curso aunque haya hallo en el suministro
elctrico o bien de un da para otro.
El PIC16F84 dispone de un total de 64 bytes de este tipo de
memoria que se controla desde los registros EEADR, EEDATA,
EECON1 y EECON2. El primero de los registros determina la
direccin de EEPROM a la que se quiere acceder. El registro
EEDATA se emplea para la transferencia del byte hacia/desde la
memoria EEPROM. Los bits de EECON1 permite seleccionar la
operacin que se desea realizar: EEIF indica el final de un ciclo
de escritura, WRER indica si hubo o no error en dicho ciclo de
escritura, WREN habilita la escritura, WR inicia un ciclo de
escritura y RD inicia un ciclo de lectura. Finalmente sobre el
registro EECON2 se escribe una secuencia fija determinada por
el fabricante Microchip.

Ingeniera de Microsistemas Programados S.L.

FIGURA 17-1.
Esquema de la mquina
"Su Turno"

Entrenador "UNIVERSAL TRAINER"

17.4 Materiales necesarios

Tarjeta de prototipos "PROTO'PIC


R1 Resistencia de 1K 1/4 W
Q1-Q3 Dos transistores NPN BC548
Cables de conexin
Disquete con programas

PRCTICA
17 2

MICROCONTROLADORES I (PIC16F84)

PRCTICA 17: La memoria EEPROM de datos, la mquina "Su Turno


17.5 Montaje prctico

FIGURA 17-2. Montaje prctico de la mquina "Su Turno"

17.6 Desarrollo de la prctica


El programa fuente del fichero PRACT17.ASM del disco de prcticas
se corresponde con el organigrama de trabajo de la figura 17-3.
Se han empleado algunas de las rutinas de ejemplos anteriores,
debidamente modificadas. As, la rutinas de "Display" e "Incrementa",
actan ahora nicamente sobre dos dgitos.
Se aaden dos rutinas nuevas: "EE_Read" y "EE_Write". La primera
de ellas lee de la EEPROM de datos tantos bytes como indique la
variable N_Bytes. Los bytes ledos se depositan en un buffer de
memoria RAM de datos cuya direccin de inicio queda establecida
por el registro FSR (en este caso DIG0). La rutina "EE_Write" es
similar, pero escribe bytes en la EEPROM en lugar de leerlos. En
esta ltima rutina se puede apreciar el uso de los bits del registro
EECON1 as como la secuencia que hay que realizar sobre el registro
EECON2 y que viene establecida por Microchip.
Hay que destacar que, suponiendo que la EEPROM de datos no
haya sido nunca utilizada, el contenido de la misma puede no ser
vlido. Es por ello que tras la secuencia de inicio se hace una
lectura de las dos primeras posiciones de la misma para determinar
si sus contenidos estn dentro del rango 0-9 permitido. En caso
contrario se ponen a 00 como valor inicial.

FIGURA 17-3. Organigrama de trabajo

17.7 Trabajo personal


Ensamblar el programa fuente y grabarlo sobre el dispositivo PIC para comprobar el correcto funcionamiento del mismo.

General Concha, 39 - 8 Dcha. 48012 Bilbao Tel./Fax: 94 422 32 63 e-mail: msyseng@arrakis.es Internet: www.arrakis.es/~msyseng y www.microcontroladores.com

Se presenta en la fotografa de la figura 17-2.


Es muy similar al empleado en ocasiones
anteriores. Slo se emplean dos displays
controlados mediante las salidas RA0 y RA1.
La salida RA2 est conectada al zumbador
encargado de emitir una seal sonora cada vez
que se produzca un incremento del contador.
Las entradas RA3 y RA4 sirven para la puesta
a 00 del contador y el incremento del mismo
respectivamente.

S-ar putea să vă placă și