Microcontroladores PIC
Microcontroladores PIC
Microcontroladores PIC
Diseño práctico
de aplicaciones
Primera parte. El PIC16F84
Lenguajes PBASIC y Ensamblador
Tercera edición
Diseño práctico
de aplicaciones
Primera parte. El PIC16F84
Lenguajes PBASIC y Ensamblador
Tercera edición
ISBN: 84-481-3788-4
Depósito legal: M. 16.641-2003
Capítulo 2. 15
v
vi CONTENIDO
Capítulo 9. 125
depurar y simular todos los ejercicios y proyectos que se proponen en el texto y que se hallan
resueltos. Además, para que el lector no encuentre una barrera en el coste de las herramien-
tas, se han elegido aquellas que por su precio se acomodan a cualquier presupuesto.
En esta nueva edición se ha modificado el contenido y la estructura de los capítulos de
esta primera parte de iniciación que es la que tiene entre sus manos. Se ha enfocado preferen-
temente a estudiar teórica y prácticamente al PIC16F84, modelo que ha logrado un éxito a ni-
vel mundial. Además, se ha intentado ofrecer un solo tema en cada capítulo y proporcionar
programas, diseños y manejo de herramientas una vez presentados los conceptos teóricos pre-
vios. El libro que conforma la segunda parte de esta obra se destina a los microcontroladores
PIC 16F87X, de mayor complejidad, que exigen el uso de herramientas más avanzadas y se
utilizan en aplicaciones mucho más exigentes.
En el Capítulo 1 se describen las características generales del hardware y software que en-
vuelven a los microcontroladores en general y sus aplicaciones. El Capítulo 2 se dedica a pre-
sentar las gamas de microcontroladores PIC y las razones por las que se les ha elegido en esta
obra. Una importante novedad la constituyen los Capítulos 3 y 4 que contienen todo el material
preciso para conocer, manejar y programar los módulos de Parallax con el lenguaje PBASIC,
«el más fácil del mundo». Consideramos que este acercamiento al diseño con microcontrola-
dores pone en manos de las personas con escasos conocimientos de Electrónica e Informática
un camino sencillo y apropiado. Mediante los módulos BASIC Stamp se enseña a desarrollar
experiencias al alcance de todos. El Capítulo 5 toma el primer contacto con el PIC16F84 y pre-
senta los circuitos básicos que le rodean, destinando el Capítulo 6 a la arquitectura interna.
En el 7 se describen los recursos fundamentales: temporizadores, puertas de E/S y EEPROM.
El Capítulo 8 expone el manejo de las interrupciones y de algunos circuitos auxiliares. El
repertorio de instrucciones con ejercicios de manejo se analiza en el Capítulo 9. En el 10 se
muestran las herramientas más comunes para el uso de microcontroladores y la implementa-
ción de proyectos. El Capítulo 11 enseña a programar aplicaciones en Ensamblador de una for-
ma clara y progresiva y el 12 ofrece una colección de prácticas reales de carácter didáctico que
son muy asequibles.
Como complemento a los 12 capítulos, en la parte final del libro, existen varios apéndices
muy útiles. El A es una guía rápida del PIC 16X84. El B es una guía para el usuario del simu-
lador software SIM2000 que se incluye en el CD del libro y que ha sido cedido por sus autores,
Pablo Martínez y Francisco José Hernández, que lo desarrollaron en la Universidad de Carta-
gena bajo la dirección del profesor Manuel Sánchez. El Apéndice C explica las características
y el funcionamiento del sistema de desarrollo Micro'PIC Trainer. El E muestra el contenido
del CD que acompaña al libro y el F propone una colección de proyectos clásicos con el
PIC 16F84 para implementar con componentes muy comunes y económicos. Finalmente hay
una sección de Bibliografía y de direcciones interesantes para trabajar con PIC y un índice
Alfabético.
Gran parte de la información ofrecida en el libro se ha obtenido de las documentaciones
técnicas de Microchip (www.microchip.com), de Parallax (www.parallaxinc.com) y de In-
geniería de Microsistemas Programados, S. L. (www.microcontroladores.com), a quienes
agradecemos su colaboración.
1.1. ¿QUÉ ES UN MICROCONTROLADOR?
estos chips. También se emplean para optimizar el rendimiento de ascensores, calefacción, aire
acondicionado, alarmas de incendio, robo, etc.
1
2 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
de automoción, que los aplica en el control de aspectos tan populares como la climatización,
la seguridad y los frenos ABS.
Figura 1.3. Estructura de un sistema abierto basado en un microprocesador. La disponibilidad de los buses
en el exterior-permite que se configure a la medida de la aplicación.
4 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Figura 1.4. El microcontrolador en un sistema cerrado. Todas las partes del computador están contenidas
en su interior y sólo salen al exterior las líneas que gobiernan los periféricos.
EJEMPLO
SOLUCIÓN
Pat -a esta aplicación es suficiente el PIC16F83 y su empleo supone una importante eco-
nomía.
MICROCONTROLADORES PROGRAMABLES: LA SOLUCIÓN ESTÁ EN UN CHIP 5
Un microcontrolador posee todos los componentes de un computador, pero con unas caracte-
rísticas fijas que no pueden alterarse.
Las partes principales de un microcontrolador son:
1. Procesador
2. Memoria no volátil para contener el programa
3. Memoria de lectura y escritura para guardar los datos
4. Líneas de EIS para los controladores de periféricos:
a) Comunicación paralelo
b) Comunicación serie
c) Diversas puertas de comunicación (bus etc.)
5. Recursos auxiliares:
a) Circuito de reloj
b) Temporizadores
c) Perro Guardíán («watchdog»)
d) Conversores AD y DA
e) Comparadores analógicos
Protección ante fallos de la alimentación
g) Estado de reposo o de bajo consumo
A continuación se pasa revista a las características más representativas de cada uno de los
componentes del microcontrolador.
1.2.1. El procesador
Figura 1.5. En la arquitectura de «von Neumann» la UCP se comunicaba a través de un sistema de buses
con la Memoria, donde se guardaban las instrucciones y los datos.
6 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las
instrucciones del programa de control. No hay posibilidad de utilizar memorias externas de
ampliación.
Como el programa a ejecutar siempre es el mismo, debe estar grabado de forma perma-
nente. Los tipos de memoria adecuados para soportar esta función admiten cinco versiones
diferentes:
MICROCONTROLADORES PROGRAMABLES: LA SOLUCIÓN ESTÁ EN UN CHIP 7
2.ª EPROM
La grabación de esta memoria se realiza mediante un dispositivo físico gobernado desde un
computador personal, que recibe el nombre de grabador. En la superficie de la cápsula del
microcontrolador existe una ventana de cristal por la que se puede someter al chip de la memoria
a rayos ultravioletas para producir su borrado y emplearla nuevamente. Es interesante la me-
moria EPROM en la fase de diseño y depuración de los programas, pero su coste unitario es
elevado.
4.ª EEPROM
La grabación es similar a las memorias OTP y EPROM, pero el borrado es mucho más senci-
llo al poderse efectuar de la misma forma que el grabado, o sea, eléctricamente. Sobre el
mismo zócalo del grabador puede ser programada y borrada tantas veces como se quiera, lo
cual la hace ideal en la enseñanza y en la creación de nuevos proyectos. El fabuloso PIC16C84
dispone de 1 K palabras de memoria EEPROM para contener instrucciones y también tiene
algunos bytes de memoria de datos de este tipo para evitar que cuando se retira la alimentación
se pierda información.
Aunque se garantiza 1.000.000 de ciclos de escritura/borrado en una EEPROM, todavía su
tecnología de fabricación tiene obstáculos para alcanzar capacidades importantes y el tiempo
de escritura de las mismas es relativamente grande y con elevado consumo de energía.
FLASH
Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar en
circuito al igual que las EEPROM, pero suelen disponer de mayor capacidad que estas últi-
mas. El borrado sólo es posible con bloques completos y no se puede realizar sobre posiciones
concretas. En las FLASH se garantizan 1.000 ciclos de escritura-borrado.
Son muy recomendables en aplicaciones en las que sea necesario modificar el programa a
lo largo de la vida del producto, como consecuencia del desgaste o cambios de piezas, como
sucede con los vehículos.
Por sus mejores prestaciones está sustituyendo a la memoria EEPROM para contener ins-
trucciones. De esta forma Microchip comercializa dos microcontroladores prácticamente igua-
les, que sólo se diferencian en que la memoria de programa de uno de ellos es tipo EEPROM y
8 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
la del otro tipo Flash. Se trata del PIC 16C84 y el PIC 16F84, respectivamente. En la actualidad
Microchip tiene abierta una línea de PIC con memoria Flash cada vez más extensa y utilizada.
Los datos que manejan los programas varían continuamente, y esto exige que la memoria que
les contiene debe ser de lectura y escritura, por lo que la memoria RAM estática (SRAM) es la
más adecuada, aunque sea volátil.
Hay microcontroladores que también disponen como memoria de datos una de lectura y
escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimen-
tación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa.
El PIC16C84, el PIC16F83 y el PIC16F84 disponen de 64 bytes de memoria EEPROM para
contener datos.
La memoria tipo EEPROM y la tipo Flash pueden escribirse y borrarse eléctricamente. Sin nece-
sidad de sacar el circuito integrado del zócalo del grabador pueden ser escritas y borradas nu-
merosas veces.
A excepción de dos patitas destinadas a recibir la alimentación, otras dos para el cristal de
cuarzo, que regula la frecuencia de trabajo, y una más para provocar el Reset, las restantes
patitas de un microcontrolador sirven para soportar su comunicación con los periféricos ex-
ternos que controla.
Las líneas de E/S que se adaptan con los periféricos manejan información en paralelo y se
agrupan en conjuntos de ocho, que reciben el nombre de Puertas. Hay modelos con líneas que
soportan la comunicación en serie; otros disponen de conjuntos de líneas que implementan
puertas de comunicación para diversos protocolos, como el el USB, etc.
Según las aplicaciones a las que orienta el fabricante cada modelo de microcontrolador, in-
corpora una diversidad de complementos que refuerzan la potencia y la flexibilidad del dispo-
sitivo. Entre los recursos más comunes se citan a los siguientes:
a) Circuito de reloj, encargado de generar los impulsos que sincronizan el funcionamien-
to de todo el sistema.
b) Temporizadores, orientados a controlar tiempos.
c) Perro Guardián («watchdog»), destinado a provocar una reinicialización cuando el
programa queda bloqueado.
d) Conversores A D y DA , para poder recibir y enviar señales analógicas.
e) Comparadores analógicos, para verificar el valor de una señal analógica.
f) Sistema de protección ante fallos de la alimentación.
MICROCONTROLADORES PROGRAMABLES: LA SOLUCIÓN ESTÁ EN UN CHIP 9
La utilización de los lenguajes más cercanos a la máquina (de bajo nivel) representan un con-
siderable ahorro de código en la confección de los programas, lo que es muy importante dada
la estricta limitación de la capacidad de la memoria de instrucciones. Los programas bien rea-
lizados en lenguaje Ensamblador optimizan el tamaño de la memoria que ocupan y su ejecu-
ción es muy rápida.
Los lenguajes de alto nivel más empleados con microcontroladores son el C y el BASIC, de
los que existen varias empresas que comercializan versiones de compiladores e intérpretes
para diversas familias de microcontroladores. En el caso de los PIC es muy competitivo e inte
resante el compilador de C PCM de la empresa CCS y el intérprete PBASIC de PARA-
LLAX.
Siempre que se diseña con circuitos integrados programables se precisan herramientas para la
puesta a punto del hardware y del software.
Con referencia al software, además de los compiladores o intérpretes de los lenguajes usa-
dos, es muy interesante disponer de simuladores software, que consisten en programas que
simulan la ejecución de instrucciones representando el comportamiento interno del procesador
y el estado de las líneas de E/S. Como se simula por software al procesador, el comporta-
miento no es idéntico aunque proporciona una aproximación aceptable, especialmente cuan-
do no es esencial el trabajo en tiempo real.
Microchip pone libremente a disposición de sus usuarios, a través de Internet
www.microchip.com), ensambladores como el MPASM y simuladores como el MPSIM.
Ingeniería de Microsistemas Programados, S. L., comercializa un simulador muy completo
para el PIC16X84 y varios compiladores e intérpretes de lenguaje C y BASIC (http://www.mi-
crocontroladores.com).
Respecto a las herramientas hardware, una indispensable es el grabador, encargado de es-
cribir el programa en la memoria del microcontrolador. Existen grabadores muy completos,
capaces de trabajar con muchos modelos de diferentes familias, pero su elevado precio los aleja
de los usuarios personales. Para estos últimos existen bastantes versiones de sencillos grabado-
res, específicos para ciertos modelos de microcontroladores, que gobernados desde un compu-
tador personal se ofrecen por un precio ligeramente superior al de un libro (véase Figura 1.7).
Los fabricantes de los microcontroladores disponen de numerosas herramientas apropiadas
para sus productos (véase Figura 1.8).
10 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
MICROCONTROLADORES PROGRAMABLES: LA SOLUCIÓN ESTÁ EN UN CHIP 11
Una vez grabado el microcontrolador sus patitas quedan conectadas a través de juniper
con los periféricos que hay que controlar y se procede a la ejecución en tiempo real del
programa. La inclusión de los periféricos clarifica el resultado final. Mediante el programa
de comunicación con el PC se puede conocer en todo momento el estado de todos los ele-
mentos del computador. Por su sencillez, potencia y economía destacamos el sistema de
desarrollo
gramados, S. L., que incorpora las siguientes prestaciones:
- Grabador de PIC.
- Hardware y software de adaptación a PC.
-Programa de comunicaciones.
-Tarjeta que incluye la mayoría de los periféricos típicos: interruptores, leds, display de siete
segmentos, potenciómetros para señales analógicas y pantalla LCD.
-Tutorial con fases de montaje y funcionamiento y ejercicios de experimentación y diseño de
proyectos
tarse fácilmente con todas las líneas de E/S presentes en determinadas puntos de la tarjeta
(véase Figura I.11).
2.1. LA ELECCIÓN
• manejo
• Buena is,ftormación
Precio
• Buen
• y baratas
•
+
• la
15
16 «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Lo cierto es que en la primera década del siglo XXI y en su corta vida, los PIC ocupan las po-
siciones de cabeza en el ranking mundial, compitiendo codo a codo con gigantes como Intel y
En 1990 ocupaba el puesto vigésimo y actualmente son más de 100 millones de PIC
los que vende Microchip cada año, lo que le ha alzado al segundo puesto del ranking mundial.
Dentro de los diferentes tipos de microcontroladores los hay que procesan datos de 4, 8,
16 y 32 bits, sin embargo, el más representativo y popular es el de 8 bits, al que pertenecen los
PIC, porque resulta el más flexible y eficaz para la mayoría de los diseños típicos (Figura 2. l).
Una de las labores más importantes del ingeniero de diseño es la elección del modelo de mi- crocontrolador que mejor satisfaga las necesidades del proyecto con el mínimo presupuesto.
MICROCONTROLADORES DE 8 BITS: LOS «PIC» 17
EJEMPLO
¿Cuántas patitas destina un PICI6C54 (Figura 2.2) para líneas de E/S, sabiendo que se las
denomina RA x y RBx?
SOLUCIÓN
12 patitas.
Encuadrado en la gama media también se halla la versión PIC14C000, que soporta el dise-
ño de controladores inteligentes para cargadores de baterías, pilas pequeñas, fuentes de ali-
mentación ininterrumpidas y cualquier sistema de adquisición y procesamiento de señales
que requiera gestión de la energía de alimentación. Los PIC14C000 admiten cualquier tecno-
logía de las baterías como Li Ion, NiMH, NiCd, Pb y Zinc.
EJEMPLO
Según la Figura 2.5, la nomenclatura de la subfamilia 16x8x diferencia a sus modelos por la
letra intermedia (C, F o CR). ¿Qué significado tienen dichas letras?
MICROCONTROLADORES DE 8 BITS: LOS «PIC» 19
SOLUCIÓN
En la Figura 2.4 se ofrece el diagrama de conexiones del PIC 16C74 de 40 patitas, que es un
paradigma de la variedad de recursos que pueden incluir los PIC de esta gama.
control, a las que se conectan memorias o controladores de periféricos. Esta filosofía de cons-
trucción del sistema es la que se empleaba en los microprocesadores y no suele ser una prác-
tica habitual cuando se emplean microcontroladores. En la Figura 2.6 se muestran las caracte-
20 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
rísticas más relevantes de algunos modelos de esta gama, que sólo se utilizan en aplicaciones
muy especiales con grandes requerimientos.
EJEMPLO
Localizar en la tabla de la Figura 2.6 el PIC de la gama alta que tenga mayores capacidades
en sus dos memorias.
SOLUCIÓN
Aunque los PIC enanos sólo tienen 8 patitas, pueden destinar hasta 6 como líneas de E/S para
los periféricos porque disponen de un oscilador interno R-C.
22 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
EJEMPLO
Según el esquema de la Figura 2.2, para funcionar un PIC12C508 precisa una tensión de ali-
mentación comprendida entre 2,5 y 5,5 V , que se aplica a las patitas V DD y V ¿Cuántas pati-
tas quedan disponibles, como máximo, para trabajar como líneas de EIS?
SOLUCIÓN
La diversidad de los modelos de PIC tiene una finalidad: poder seleccionar el más adecuado
para cada aplicación. Por este motivo conviene tener un conocimiento completo y actualizado
de cada gama.
En cuanto a la serie enana, la familia PIC 12C5XX, se trata de un conjunto de microcontro-
ladores CMOS encapsulados con 8 patitas. Tienen un precio muy bajo y resultan altamente
competitivos.
Todos los PIC enanos tienen un formato único para sus instrucciones, aunque hay mode-
los con 12 bits, otros con 14 y otros con 16. En este grupo los más usados son los de 14 bits,
que proporcionan una extraordinaria compactación en el código de los programas, pudiéndo-
se cifrar en el doble con respecto a otros similares.
La arquitectura RISC, tipo Harvard, unida a la segmentación del procesador, consigue que
el ciclo de ejecución de una instrucción sea de 1 microsegundo cuando funciona a una fre-
cuencia de 4 MHz. Todas las instrucciones duran este tiempo menos las de salto, que duran el
doble.
Los PIC enanos son muy apreciados en las aplicaciones de control de personal, en sistemas de
seguridad y en dispositivos de bajo consumo que gestionan receptores y transmisores de seña-
les. Su pequeño tamaño los hace ideales en muchos proyectos donde esta cualidad es funda-
mental.
Dentro de la gama media los PIC 14000 resultan muy interesantes por los recursos que
incorporan: conversor A/D de media a alta resolución (de 10 a 16 bits), sensor interno de
temperatura, comunicación serie I2C y muy bajo consumo. Son aptos para el control de carga-
dores de baterías, monitores del estado de pilas y baterías, fuentes de alimentación ininte-
rrumpibles, gestión del consumo de la energía de alimentación y sistemas de adquisición de
datos, especialmente de temperatura.
La gama baja, representada por los PIC16C5X, tiene proyección sobre los dispositivos de
alta velocidad usados en la industria de la automoción, el control de motores y los recep-
tores/transmisores y procesadores de bajo consumo encargados de la gestión de comunica-
ciones. Dentro de esta gama se encuentra la subfamilia PIC 16C55X, que incorpora recursos
propios de la gama media. Así, dispone de Pila de 8 niveles y múltiples fuentes de interrup-
ción.
Los microcontroladores PIC de la gama baja consiguen superar a sus competidores en velocidad,
a los que aventajan en un factor cercano a 4; y también en compresión del código, que llega a ser
del doble.
En la gama media hay una subfamilia, PIC16C62X, con recursos muy especiales, pero
manteniendo el bajo precio y el consumo reducido, que es muy recomendable en aplicaciones
relativas a la gestión de cargadores de baterías, control de sensores remotos con bajo consumo,
etcétera.
24 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Con más de diez versiones diferentes, la subfamilia PIC16C6X de la gama media se ca-
racteriza por la incorporación de numerosos recursos (varios temporizadores, módulos de cap-
tura/comparación, puerta serie SPI e I puerta paralela PSP, etc.). Mejorando estos mode-
los, la serie PIC16C7X es una muestra de las posibilidades del procesador RISC funcionando
a 20 MHz, con un ciclo de instrucción de 200 ns. Los componentes de esta serie son muy apre-
ciados en los sistemas de alarma y seguridad, así como en el control remoto de sensores en
automoción.
La memoria EEPROM, de igual forma que la FLASH, puede grabarse y borrarse eléctri-
camente, sin someterla a rayos ultravioleta como sucede con el borrado de las EPROM con
ventana. Además, se puede realizar la grabación y el borrado en serie, lo cual posibilita la
grabación de un programa, su depuración y su borrado tantas veces como se desee y mante-
niendo insertado el PIC en el zócalo de la aplicación. La memoria EEPROM admite hasta
1.000.000 de ciclos de escritura/borrado y almacena la información durante más de 40 años.
La memoria FLASH tiene un valor típico de 1.000 ciclos de escritura/borrado, pero aventaja
técnicamente en varios aspectos a la EEPROM. Destacan en la gama media los PIC 16F87X
con memoria FLASH de gran capacidad y numerosos recursos.
El hecho de poder emplear el mismo dispositivo cuando se realizan numerosos diseños o
cuando se prueban muchos programas en la fase de aprendizaje resulta muy práctico y econó-
mico. Aplicaciones típicas de estos microcontroladores son el control de puertas de garaje, ins-
trumentación, inmovilizadores de vehículos, tarjetas codificadas, pequeños sensores, etc. La
grabación de los PIC16X8X en el propio circuito les hace recomendables para el almacena-
miento de datos de calibración y para la modificación del programa al variar las condiciones
MICROCONTROLADORES DE 8 BITS: LOS «PIC»
del entorno; por ejemplo, al cambiar una pieza de un automóvil, el programa de control del
motor se modifica para su adecuación.
La serie PIC16C9XX tiene como novedad la inclusión de un controlador programable de
LCD, que gestiona íntegramente cualquier pantalla de cristal líquido.
Dentro de la gama alta, la subfamilia PIC17C4X, con 58 instrucciones de 16 bits, tarda
en ejecutar cada una 121 nanosegundos cuando funciona a 33 MHz (las de salto tardan el
doble). El núcleo del procesador está mejorado respecto al de la gama media y la Pila dispo-
ne de 16 niveles. También se han aumentado las fuentes de interrupción y se ha incorporado
un multiplicador hardware de 8 x 8 bits en un ciclo, para aplicaciones que exijan un cálculo
matemático intensivo. Aplicaciones industriales que requieran alta velocidad y cálculos com-
plejos, instrumentación y telecomunicaciones, son las ideales para los componentes de la
gama alta.
El PIC17C752 y el PIC17C1756 son los modelos más representativos de la gama alta y
están encapsulados con 64 y 68 patitas respectivamente. Tienen una elevada capacidad de
memoria que alcanza los 8 K x 16 y 16 K x 16 en el área reservada a las instrucciones y 454
y 902 bytes en la reservada a los datos, respectivamente. Poseen 12 canales para un conversor
AD de 10 bits, 4 canales para un módulo de captura de 16 bits, 2 USART, bus 1 2 C, ele.
26 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
A las puertas del siglo xxi, Microchip ha obtenido un importante éxito en el mercado mun-
dial con los microcontroladores RISC FLASH. Se trata de la serie PIC16F87X (3, 4, 5, 6 y 7).
Son unos modelos mucho más potentes que el PIC16F84, pero que mantienen sus ventajas en
la grabación y borrado eléctrico.
Es una serie que encaja dentro de la gama media y que alcanza una memoria de código
de hasta 8K palabras de 14 bits en memoria FLASH. Soporta hasta 386 x 8 bytes de RAM y
256 x 8 bytes de memoria de datos EEPROM. Pueden programarse sólo con +5 VDC y existe
acceso a lectura y escritura de la memoria de programa.
Estos potentes microcontroladores disponen de hasta tres Timer o temporizadores, dos mó-
dulos de Captura, Comparación y PWM, un Convertidor Analógico/Digital de 10 bits, Canal
de comunicaciones síncrono SSP con modo I2C y SPI, canal USART/SCI, puerto paralelo es-
clavo asíncrono de 8 bits y detección de fallo de alimentación (BOR).
Los lectores que completen con éxito el primer escalón en el manejo del PIC16F84, deberán
tener muy en cuenta esta potentísima familia de PIC con memoria FLASH para superar sus di-
seños. A ella se destina gran parte del segundo volumen de esta obra.
Desde el 2000 Microchip se esfuerza por potenciar y ampliar los PIC de la gama mejora-
da destinados a aplicaciones muy avanzadas y orientadas a su programación en lenguaje C.
3.1. ACERCANDO LA TECNOLOGÍA
No suele ser habitual coincidir los planteamientos de dos generaciones, ni la opinión de los
profesionales que se dedican a aplicar la tecnología y los que se encargan de enseñarla. Sin em-
bargo, en este tema los autores coinciden plenamente. «Los módulos BA SIC Stamp de Parallax
constituyen el camino más sencillo y asequible para diseñar sistemas basados en microcon-
troladores».
En el mundo de la enseñanza es frecuente encontrar a jóvenes que estudian carreras de In-
geniería que no están convencidos de su vocación. La labor del ingeniero es una de las más
apasionantes a las que el ser humano puede dedicarse. Es el encargado de diseñar e imple-
mentar los proyectos que le proponen. Es un gran creador de realidades que sirven para mejo-
rar la calidad de vida de todos. La vocación por la ingeniería debe fraguarse en los jóvenes de
15 a 18 años y para conseguirlo sólo hay que demostrarles prácticamente en qué consiste nues-
tra profesión. Los módulos de Parallax no precisan tener grandes conocimientos de Informá-
tica ni de Electrónica, basta un poco de interés para generar en la juventud una inclinación y
admiración por la Ingeniería. Dotar a un laboratorio universitario, de Formación Profesional
o IES de un equipo para aprender a programar y diseñar con estos dispositivos exige muy poco
presupuesto.
En el campo profesional hay dos colectivos a los que estas herramientas les interesa en so-
bremanera: el de los neófitos y el de los experimentados. Para los primeros, entre los que se
encuentran los aficionados que no han tenido oportunidad de conocer la Informática y la Mi-
croelectrónica en profundidad, ésta es la única oportunidad para adentrarse en este mundo del
diseño programado sin necesidad de realizar un esfuerzo intelectual ni económico. Para los
técnicos experimentados la filosofía de trabajo con los módulos BASIC Stamp les proporcio-
na la solución más eficaz para desarrollar sus proyectos con la máxima rapidez y seguridad.
La necesidad de optimizar los tiempos de desarrollo de los proyectos que realizaban basa-
dos en microcontroladores, impulsó a dos ingenieros americanos, en la década de los ochenta
del siglo pasado, a construirse un módulo hardware que simplificase el desarrollo electrónico,
y un lenguaje de programación que se adaptara a sus diseños y fuese asequible para cualquier
técnico con escasos conocimientos en Electrónica e Informática. Mejoraron la productividad
hasta tal punto que tuvieron la idea de comercializar las herramientas que habían ideado. Y
27
28 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
en 1992 Parallax ofertó a nivel mundial los módulos BASIC Stamp, que adquirieron tal éxito
de ventas que pasaron a erigirse como el producto estrella de la empresa.
La gran aportación de los módulos BASIC Stamp reside en la conjunción de un hardware
seguro, completo y listo para acoplarle los dispositivos a controlar, y un software accesible a
cualquier técnico al estar basado en el lenguaje más fácil del mundo, el BASIC. El lenguaje
PBASIC es una versión sencilla del BASIC, de pocas instrucciones y adaptadas a las caracte-
rísticas de las aplicaciones y del microcontrolador. Al mezclarse estos dos ingredientes con
una política comercial de total información y libre disposición de manuales, tutoriales y soft-
ware de manejo, una excelente asistencia técnica y una red de distribuidores profesionales en to-
do el mundo, estas herramientas se convierten en el mejor sistema para iniciarse y desarrollar
profesionalmente este apasionante trabajo del diseño de proyectos con microcontrolador que
va a precisar en un futuro cercano la colaboración de muchos proyectistas.
Por estas razones hemos decidido incorporar en esta edición un par de capítulos que traten
del equipo físico y el sistema lógico de los módulos BASIC Stamp, que aporten una idea cla-
ra de las posibilidades de los mismos. Quienes se interesen en profundizar en el tema sólo de-
ben acudir a los magníficos Manuales de Prácticas que tanto en inglés como en castellano pue-
den recogerse de las páginas en Internet de Parallax (www.parallaxinc.com) y de sus
distribuidores como Ingeniería de Microsistemas Programados, S. L., para España (www.mi- crocontroladores.com). Esperamos poder demostrar que manejar estos módulos y confeccio-
nar y ejecutar programas en PBASIC se puede llevar a cabo sin apenas conocimientos, y por
eso estos capítulos se han insertado antes de explicar la arquitectura del microcontrolador y
su repertorio de instrucciones máquina, temas que acometeremos posteriormente para formar
al lector sólidamente y así permitirle desarrollar proyectos completos utilizando el lenguaje
Ensamblador.
de una treintena de instrucciones y se aprende en muy poco tiempo. De esta manera resolvie-
ron sus problemas de diseño y pensaron que también podía servir para otros colegas, y así co-
mercializaron en 1992 los módulos BASIC Stamp.
Los diminutos «sellos» microcontroladores que utilizan el lenguaje PBASIC se comercia-
lizan en diversos modelos de diferente velocidad, capacidad de memoria, recursos y precios
(Figura 3.1).
Parallax dispone de un módulo de poca potencia, que es el BS1-IC, basado en un micro-
controlador PIC 16(756 a 4 MHz, lo que permite la ejecución de 2.0(1(1 instrucciones PBASIC
por segundo. Sólo tiene 16 bytes de RAM y 8 líneas de E/S. La capacidad de la EEPROM don-
de se almacenan temporalmente los programas es de 256 bytes, que admite hasta 80 instruc-
ciones PBASIC. Sólo soporta 32 comandos de dicho lenguaje y este módulo puede ser una ex-
celente solución en el control y automatización de productos y sistemas sencillos que exijan
prestaciones mínimas.
El siguiente módulo, un poco más avanzado que el anterior. es el Basic Stamp 2. Existen
dos presentaciones de este módulo. Una se llama BS2-IC, y es un módulo montado sobre una
pequeña PCB con componentes de montaje superficial y la forma de un circuito integrado DIP.
Su fotografía se muestra a la izquierda de la Figura 3.2. La otra versión, OEM BS2-IC, dispo-
ne de componentes convencionales y un PCB más grande con pines para conexión en una tar-
jeta protoboard, como puede apreciarse a la derecha de la Figura 3.2. Ambos están basados
en el microcontrolador PIC16C57 funcionando a 20 MHz, lo que permite la ejecución de
unas 4.000 instrucciones PBASIC por segundo. La capacidad de la EEPROM es de 2 KB con
30 MICROCONTROLADORES "PIC". DISEÑO PRÁCTICO DE APLICACIONES
El módulo BS2e-IC
Este módulo utiliza un microcontrolador Scenix SX28AC a 20 MHz del fabricante UBICOM
y proporciona mayor capacidad de memoria RAM para guardar variables y de memoria
EEPROM para almacenar programas de hasta 4.000 instrucciones. Además del repertorio de
comandos PBASIC que ejecutaba el módulo BS2-IC, éste soporta tres más: GET, PUNT y
RUN. En la Figura 3.3 se muestra una fotografía de este módulo.
El módulo BS2sx-IC
Con el mismo microcontrolador que el módulo anterior, pero funcionando a una frecuencia
de 50 MHz, este modelo puede ejecutar 10.000 instrucciones PBASIC por segundo. Acepta las
mismos comandos que el módulo BS2e-IC.
LOS SELLOS MÁGICOS DE PARALLAX 31
Finalmente, se presenta una tabla que recoge las características más importantes de los di-
versos módulos microcontroladores de Parallax.
32 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Ciñéndonos al módulo OEM BS2-IC, todas las operaciones que realiza están gobernadas
por el microcontrolador PIC 16C57. Se trata de un pequeño computador que maneja datos de 8
bits y que actúa como el cerebro ejecutor de todas las misiones que se encomienda al módulo.
Las funciones que desarrolla el microcontrolador al ejecutar las instrucciones de los programas
son las siguientes:
Entrada y salida de la información serie que proviene y se dirige al PC.
Carga en la memoria EEPROM del programa PBASIC recibido desde el PC.
3.a Descarga de las instrucciones contenidas en la EEPROM sobre el PIC 16C57 para su in-
terpretación y ejecución.
Introducción de información desde los periféricos externos y salida de los resultados
del procesamiento de los programas por las patitas del módulo hacia los periféricos.
tud. Esto significa que el máximo tamaño del programa de instrucciones máquina (no PBA-
SIC) es de 2.048. En el módulo OEM BS2-IC el programa que tiene grabado el PIC, además
de contener el Intérprete de PBASIC, se encarga de recibir y transmitir la información serie
con el PC, la escritura y lectura de la EEPROM donde se guarda el programa PBASIC, y el
control de las patitas de entrada y salida. Apréciese que en la memoria de programa del PIC no
reside el programa PBASIC editado en la pantalla del PC, para la aplicación a desarrollar. Di-
cho programa se graba en la EEPROM 24LC16B desde donde el PIC va recibiendo una a una
esas instrucciones y las va traduciendo a instrucciones máquina y ejecutándolas.
Microchip dispone de una versión del PIC 16C57 cuya memoria de programa es de tipo
EPROM, que puede grabarla el usuario con un grabador y borrarla para volverla a reescribir. El
borrado hay que hacerlo sometiendo el circuito integrado a rayos ultravioleta, por lo que dispo
ne de una ventana en su parte frontal. Hay una versión OTP, barata, que la puede escribir el usua-
rio una vez nada más. El módulo OEM BS2-IC soporta el modelo PIC16CR57, cuya memoria
es de tipo ROM, de sólo lectura. Se escribe en fábrica y sólo se puede leer, si se permite.
Además de las memorias, el PIC 16C57 posee un temporizador de ocho bits para controlar
el tiempo, que se llama TMR0. Para medir el tiempo el TMR0 puede usar los impulsos de re-
loj del microcontrolador, o bien los que se introducen desde el exterior por la patita RTCC.
Como en el módulo de prácticas OEM BS2-IC no se usa el TMR0 con impulsos externos, la
patita RTCC se envía a tierra.
Finalmente, el PIC16C57 maneja 20 líneas de E/S implementadas físicamente mediante 20
patitas por las que se envía y se recibe información, a y desde el exterior a lo largo del procesa-
miento de las instrucciones del programa. Las líneas de E/S se distribuyen en grupos que se lla-
man Puertas A, B y C. La Puerta A sólo tiene 4 líneas que se implementan físicamente por las pa-
titas RA0-RA3, la Puerta B tiene 8 con las patitas RB0-RB7 y la Puerta C otras 8 con RCO-RCT
Diagrama de conexionado
Aunque el PIC 16C57 se comercializa con varios encapsulados, en el OEM BS2-IC se emplea
el DIP de 28 patitas en doble hilera. Este módulo utiliza componentes convencionales y cual-
LOS SELLOS MÁGICOS DE PARALLAx 35
quier avería la puede resolver el propio usuario sustituyendo el que se halla averiado, por eso
se ha elegido en esta descripción de carácter docente. Incluso se puede comprar el módulo en
kit y soldar sus componentes para ponerlo en marcha. El microcontrolador se inserta sobre un
zócalo soldado a la PCB y también puede reemplazarse rápidamente.
Las líneas de E/S para intercambio de información con el mundo exterior ocupan 20 pati-
tas. Las cuatro de la Puerta A (RA0-RA3) están destinadas a la recepción y transmisión de la
información serie al PC y a la escritura y lectura de la memoria EEPROM. Las 16 patitas res-
tantes, 8 de la Puerta B y 8 de la Puerta C, quedan a disposición de los periféricos a gobernar
en la aplicación. Dichas líneas están disponibles en el módulo OEM BS2-IC por las patitas de-
nominadas PO a P15.
Por las patitas VDD y Vss se recibe la tensión de alimentación que puede estar comprendi-
da entre +2,5 y +5,5 VDC y que en el módulo de prácticas se usa +5 VDC, obtenida de la sa-
lida del regulador de tensión.
Los terminales de un resonador cerámico que oscila a 20 MHz se aplican a las patitas OSC 1
y OSC2 para conseguir que el microcontrolador funcione a dicha frecuencia. Hay dos patitas
que no se conectan (NC). La patita RTCC se usa para controlar los tiempos del temporizador
mediante la frecuencia externa introducida por esta patita; como en el módulo OEM
BS2-IC no se emplea esta posibilidad se conecta a tierra. Finalmente, la patita MCLR# (#: señal
activa con nivel bajo) sirve para producir un Reset o reinicialización del programa cuando se
produce un flanco descendente.
En todos los módulos BASIC Stamp existe una memoria EEPROM independiente en la que se
vuelca el programa PBASIC confeccionado en el PC. Después, desde la EEPROM se van pa-
36 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
sando, una a una, las instrucciones al PIC para que allí se interpreten y se ejecuten. Esta me-
moria EEPROM se comunica con el PIC en formato serie y según el protocolo de comunica-
ción del bus I2C.
El bus 12C lo desarrolló Philips Corporation para resolver sus propias necesidades en la
interconexión de circuitos integrados. 12C significa «Interconexión de Circuitos Integrados».
Su gran éxito radica en su sencillez, ya que sólo emplea dos líneas para comunicarse con los
dispositivos que intervienen en este protocolo y que pueden llegar a 128 en un mismo siste-
ma. La línea bidireccional SDA transfiere los bits de información serie y la SCL los impulsos
de reloj para sincronizar la información entre quien la manda y la recibe. En cada momento
hay un dispositivo que funciona como Maestro y que determina las características de la trans-
ferencia y genera los impulsos de reloj por SCL.
Cada uno de los 128 posibles Esclavos responde a una dirección formada por 7 bits (A0-
A6), y el Maestro al iniciar una transferencia es lo primero que envía en su comunicación.
Después de especificar el Maestro la dirección del Esclavo con el que se quiere comunicar,
envía la orden de lectura o escritura y luego otras complementarias. Existen muchos circuitos
LOS SELLOS MÁGICOS DE PARALLAX 37
integrados con diversas funciones para el bus 12C y los fabricantes determinan por hardware
la dirección a la que responden y sus características técnicas. Sin embargo, es habitual que la
dirección a la que responde un circuito integrado I2C no esté totalmente definida. Se suelen
dejar sin especificar las líneas de menos peso de la dirección para poder colocar varios circuitos
integrados iguales en el sistema, respondiendo cada uno a una dirección distinta. En el caso
de la memoria 24LC16B tiene sin definir las tres líneas de menos peso de la dirección (A0-A2),
cuyo valor debe determinar el usuario por hardware, enviando las patitas correspondientes a
tierra o a VDD. En el módulo OEM BS2-1, como sólo se utiliza un circuito integrado EEPROM,
las tres líneas de la dirección se mandan a tierra.
Las cuatro patitas de la Puerta A del PIC16C57, RAO-RA3, se destinan a soportar la co-
municación del módulo con el PC y con la memoria EEPROM.
Cuando se disponga de una fuente de alimentación que proporcione los + 5 VDC precisos
se puede eliminar la intervención del regulador LM2940-5.0, evitando el calor que disipa. De
esta manera no se introduce nada por V i,, y se aplican los + 5 VDC de la fuente por la patita
20 del módulo (Vdd).
Las líneas digitales de E/S del microcontrolador son configurables por software y pueden
actuar como entrada o salida. Incluso a lo largo de una aplicación pueden cambiar su actuación
si lo permiten los periféricos a los que controlan.
LOS SELLOS MÁGICOS DE PARALLAX 41
Cuando por una patita del microcontrolador se gobierna el encendido y apagado de un LED
la resistencia de absorción determina la corriente que circula y la luminosidad del mismo.
Si se eleva el valor de la resistencia colocada en serie con el diodo LED la corriente que lo
atraviesa baja. Así, si la resistencia fuese de 270 ohmios la corriente quedaría reducida a 11
y descendería la luminosidad del LED.
Cuando se colocan varios periféricos en las patitas del módulo hay que comprobar las limi-
taciones existentes por línea y por puerta para evitar averías y fallos de funcionamiento. Así, por
ejemplo, si interesa colocar 8 LEDs en las líneas de una puerta, como el valor máximo de la
corriente suministrada es de 100 mA el consumo de cada LED debería ser inferior a 13 mA
BASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO
Aprender a manejar el lenguaje BASIC para computadoras es una labor muy sencilla, tan sim-
ple como escribir (en inglés). En BASIC las instrucciones coinciden con el nombre en inglés
de la operación que se debe llevar a cabo. Por ejemplo, escribir o visualizar un valor en la
pantalla utiliza la instrucción PRINT; para introducir por el teclado un valor se emplea la ins-
trucción INPUT y si se desea realizar una suma basta con poner el signo + de la misma. Un
lenguaje para una computadora es un conjunto de instrucciones y comandos, que la máquina
es capaz de interpretar y ejecutar. Fíjese en un programa en BASIC.
Este programa se entiende sólo. Se introduce por el teclado en primer lugar el valor de la
variable a, después se introduce por el mismo procedimiento el valor de b y, finalmente, se
visualiza el resultado de la operación a+b. Consiste en una sucesión ordenada de las instruc-
ciones que debe ejecutar el computador para ir procesando los datos hasta alcanzar el resulta-
do deseado.
El lenguaje BASIC fue desarrollado en I960 por J. Kemeny y T. Kurtz con la finalidad de
Se trata de un lenguaje muy sencillo que está orientado a las personas y por eso sus instruc-
ciones recuerdan las palabras inglesas con las que se describe la operación que realizan. Dado
su parecido con el Álgebra elemental es muy útil para resolver problemas técnicos de inge-
43
44 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
niería, aunque también es muy cómodo en las aplicaciones que manejan mucha información li-
teral, típico en los negocios.
Las grandes ventajas del lenguaje BASIC desgraciadamente están acompañadas por algu-
nos defectos, que suelen empujar a los programadores profesionales a repudiarlo. Como ma-
yor defecto se dice que es un lenguaje «no estructurado» o «no procedural», de lo cual la mayor
culpa tiene la instrucción GOTO, que es capaz de desviar el flujo de la ejecución de ins-
trucciones a cualquier parte del programa, impidiendo la posibilidad de dividir la tarea en
trozos pequeños e independientes.
Las normas puristas de la programación proponen la confección del software en base a un
pequeño «programa principal», que se compone de llamadas a rutinas y procedimientos autó-
nomos e independientes en los que se descompone la tarea a resolver. Para implementar esta
estructura es necesario poder salir con facilidad del programa principal a las rutinas traspa-
sando algunos parámetros, así como también poder regresar a dicho programa principal desde
la rutina trayendo resultados obtenidos en esta última. El lenguaje BASIC no soporta comple-
tamente estas estructuras en los programas.
El lenguaje Ensamblador se dice que es de bajo nivel porque sus instrucciones son exacta-
mente las que el procesador sabe interpretar y ejecutar. En realidad, el computador digital só-
lo acepta instrucciones en código binario y el Ensamblador facilita su escritura al programador
permitiendo expresarlas mediante «nemónicos», que son tres o cuatro letras significativas que
referencian, en inglés, la operación que conlleva la instrucción. Por ejemplo, una instrucción
que «mueve» un dato de un sitio (A) a otro (B), en Ensamblador se escribe MOV A,B.
El problema surge en el Ensamblador por la poca potencia de las instrucciones que es ca-
paz de ejecutar el procesador. Normalmente las correspondientes a los microcontroladores de
8 bits que manejamos en este libro, consisten en sumar, restar, hacer operaciones lógicas AND,
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 45
OR, XOR, también rotar un dato de 8 bits, moverlo de un sitio a otro y muy poquito más. Si
deseamos hacer una multiplicación hay que confeccionar un programa que para conseguirlo
repita las sumas las veces necesarias. Es un lenguaje de «bajo nivel». El programa Ensambla-
dor lo único que hace es traducir los nemónicos con los que se escriben las instrucciones a
código binario para que el procesador sea capaz de interpretarlas y ejecutarlas.
Los lenguajes de «alto nivel» tienen instrucciones más potentes: saben multiplicar, sacar
la raíz cuadrada y realizar funciones y operaciones mucho más complicadas que las que pue-
den hacer las instrucciones de la máquina. Pero como la máquina es la misma, la realización
de esas instrucciones se tiene que hacer con programas de instrucciones elementales. Cada ins-
trucción de alto nivel se convierte en un programita de instrucciones de bajo nivel. Por eso
para que el procesador pueda ejecutar las instrucciones de un lenguaje de alto nivel precisa otro
programa que las descomponga en las instrucciones de bajo nivel correspondientes. A estos
programas se les llama compiladores. Los compiladores se encargan de traducir un progra-
ma confeccionado con instrucciones de alto nivel a otro equivalente con instrucciones de bajo
nivel. Hay una variante de estos programas que reciben el nombre de intérpretes que realizan
dicha traducción pero instrucción por instrucción, o sea, traducen una instrucción de alto ni-
vel en las correspondientes de bajo nivel que ejecuta el procesador y a continuación pasan a
la siguiente. El microcontrolador de los módulos BASIC Stamp contiene en su memoria de
programa un Intérprete de PBASIC.
Desarrollar programas en lenguaje Ensamblador exige un conocimiento profundo de la ar-
quitectura interna del procesador, lo que requiere una buena base en Electrónica, así como for-
mación en Informática. Las instrucciones de bajo nivel realizan operaciones directamente con
los elementos existentes en el interior del procesador.
El lenguaje C es de tipo profesional, muy completo y potente, pero su manejo exige una
buena formación en Informática. También es muy conveniente conocer la arquitectura interna
del procesador y en muchas ocasiones hay que combinarlo con el lenguaje Ensamblador.
El lenguaje BASIC tiene potentes instrucciones que se escriben igual que se denominan
en inglés y su manejo no requiere conocimientos de arquitectura de procesadores, de Electró-
nica y tampoco de Informática. Es para todos. ¿Entiende este programa diseñado para calcu-
lar el área de un círculo introduciendo el radio?
Etiquetas. Los programas en PBASIC no numeran las líneas y es una de las novedades más in-
teresantes respecto a los BASIC clásicos. Cuando se desea hacer mención a una instrucción
como no tiene número se le antepone una etiqueta identificativa.
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 47
El nombre de las etiquetas no puede coincidir con el de las instrucciones o variables usadas;
su primer carácter no puede ser un número, y la primera vez que se usan deben estar seguidas
por dos puntos (:).
Constantes. Se pueden declarar en decimal, hexadecimal, binario y ASCII. Ejemplos:
V ariables y constantes. Para facilitar la programación se utilizan etiquetas para hacer re-
ferencia a variables y a constantes. Se emplea el comando CON. Ejemplos:
Comentarios. Detrás de cada instrucción se recomienda escribir algún comentario para fa-
cilitar la finalidad de la misma. El procesador ignora los comentarios. Delante del comentario
se puede poner REM o un apóstrofe. Ejemplos:
Operaciones aritméticas y lógicas. En la tabla de la Figura 4.2 se indican los símbolos uti-
lizados para las diversas operaciones posibles en PBASIC.
En la realización de las operaciones el PBASIC opera siempre de izquierda a derecha; por
ejemplo, 5 + 4 * 7 se lleva a cabo como (5 + 4) * 7.
Reserva de posiciones en la memoria de datos. El lenguaje PBASIC reserva las primeras
posiciones de la memoria de datos del procesador. Las tres primeras palabras se reservan para
Pines de Entrada INS, que es un registro que almacena la información de los pines de E/S
cuando son entrada; Pines de Salida OUTS, registro que contiene la información a sacar por
los pines que actúan como salida, y Bits de direccionamiento de los Pines DIR. Si a un bit de
este último registro se carga con un 0 el pin correspondiente queda configurado como entrada,
mientras que si se carga con un I actúa como salida. Las I3 siguientes palabras (WO-W I2) que
pueden utilizarse en tamaño byte (130-1325) están disponibles para guardar variables y datos del
usuario en los programas. (Véase la tabla de la Figura 4.3 en la que se expresa esta distribución
de la memoria).
48 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 49
El módulo BS2-IC tiene I6 Pines de entrada y salida disponibles para el usuario en donde
se pueden colocar los periféricos a controlar. Para configurar a los I6 Pines como salida hay
que escribir en el programa: DIRS = %11111111111111111.
Se ofrece un breve resumen del cometido de las instrucciones del PBASIC para los lengua-
jes del Intérprete del módulo BS2-IC. Manejándolas prácticamente se llega a dominarlas en
muy poco tiempo. Para obtener una completa información de las instrucciones PBASIC le re-
comendamos acuda al Manual del PBASIC en Internet y al tutorial «¿Qué es un microcon-
trolador?».
INSTRUCCIONES DE SA LTO
INSTRUCCIONES NUMÉRICA S
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 51
Vamos a ir describiendo con esquemas y fotos la realización de un primer programa muy sen-
cillo. Para la implementación física de este y otros ejercicios didácticos hemos escogido al La-
boratorio de Prácticas «UNIVERSAL TRAINER» que junto con el Módulo PBASIC contie-
nen todos los elementos necesarios para desarrollar multitud de proyectos propuestos en sus
Manuales así como diseño reales. En el volumen 2 de la obra Laboratorio de Prácticas de
Microelectrónica, editada por McGraw-Hill, se describe una colección de ejercicios con los
mencionados recursos que posibilitan formarse en el diseño real de proyectos con microcon-
trolador tanto en PBASIC como con Ensamblador (Módulo PIC I) cómoda y rápidamente con
un coste muy asequible. Todos estos materiales los comercializa Ingeniería de Microsistemas
Programados, S. L. (www.microcontroladores.com).
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 53
Con objeto de adaptar el módulo OEM BS2-IC a las características específicas del entre-
nador Universal Trainer se han realizado unas pequeñas modificaciones en el conexionado de
sus pines. A esta tarjeta ligeramente transformada la llamaremos OEM BS2-IC / MSE, se mues-
tra una fotografía en la Figura 4.5 y tiene las siguientes peculiaridades:
1.ª Las líneas PO a P15 y la línea RES disponen de espadines para conexionado horizon-
tales que sitúa al módulo paralelo a la protoboard del entrenador en lugar de vertical. De esta
forma se leen mejor los pines y se puede cerrar la tapa del maletín con el circuito montado.
2. ª Para diferenciar y facilitar la conexión de la alimentación las patitas Vin, Vss y VDD
disponen espadines verticales sobre la tarjeta PCB.
3. ª Se proporciona un conector para los tres espadines de alimentación que dispone de dos
cables, uno rojo que va a V DD y otro negro que va a Vss. El espadín Vin queda sin conexión. El
cable rojo hay que conectarlo al terminal + 5 V de la fuente de alimentación regulada del en-
trenador. El cable negro se conecta a la GND de dicha fuente del Universal Trainer. Cuando
se dispone de una fuente estabilizada de + 5 VDC se evita el funcionamiento del regulador
Una vez editado el programa conecte el PC al módulo OEM BS2-IC, que ya estará cone-
xionado con los cables a la fuente y a los periféricos, y conecte la energía al Universal Trai-
ner. Ejecute el programa y si todo sale bien se enciende 2 segundos el LED y luego pita du-
rante 3 segundos el zumbador. Además, en la pantalla del depurador aparece el mensaje
ILUMINA cuando está encendido el LED y el mensaje PITA cuando el zumbador suena. Pe-
ro todos estos mensajes y el primero de LUZ Y SONIDO salen todos seguidos de la siguiente
forma:
LUZ Y
4.5.7.
4.6.1. Objetivos
Manejar periféricos de entrada que gobiernen el funcionamiento de otros de salida. Emplear
instrucciones de salto condicional y de salto a subrutina, y aprender a definir variables.
En esta práctica vamos a regular el comportamiento de dos diodos LED que simulan las luces
roja y verde de un semáforo. Además. cuando se encienda la luz verde un zumbador pitará
durante cortos períodos. Finalmente, existe un interruptor que permite el funcionamiento del
semáforo cuando introduce un nivel alto por una patita del módulo microcontrolador. Si in-
troduce un nivel bajo el semáforo tiene encendida la luz roja y el zumbador está en silencio. En
la Figura 4.11 se muestra un esquema del conexionado del periférico de entrada. o sea, el in-
INO: La patita o pin 0 del módulo queda asignada como entrada digital.
IF «condición» THEN «etiqueta» : Si se cumple la condición se pasa a ejecutar la instrucción
de la etiqueta y si no se cumple se ejecuta la siguiente.
GOSUB «etiqueta»: Se salta a una subrutina que comienza en la instrucción de la etiqueta.
RETURN: Es una instrucción que se pone al final de una subrutina y que devuelve el control
de la ejecución a la siguiente instrucción después de gosub.
x VAR bit: No es una instrucción PBASIC sino un comando del Editor para indicar que la
variables tiene el tamaño de un bit.
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 61
do la luz verde está encendida, hay un zumbador que pila en esa circunstancia a intervalos de
400 milisegundos. Normalmente el semáforo sólo deja pasar los coches y tiene encendida la
luz roja de peatones y el zumbador en silencio. Cuando se desea poner en marcha para pasar
los viandantes se desplaza un interruptor, que al introducir un nivel lógico alto por la patita
PO del módulo inicia la secuencia de encendido de la luz verde durante 2 segundos, mientras la
roja está apagada. Luego se produce el encendido de la roja y el apagado de la verde durante
2 segundos y se repite continuamente el ciclo hasta que se desplaza el interruptor para intro-
ducir un nivel bajo y el semáforo pasa ª su condición habitual de luz roja encendida y verde
apagada. Cuando la luz verde está encendida, el zumbador pita durante 400 ms y se calla du-
rante los 400 ms siguientes hasta finalizar los 2 segundos.
Una gran parte del programa de este ejercicio lo ocupaban las instrucciones de la subrutina
«pit» que hacía generar un pitido interminente de 400 ms de duración durante 2 segundos.
Todavía esta subrutina sería mucho más larga si la intermitencia del pitido fuese cada 250 ms.
Se pide rehacer la subrutina de pitido para confeccionarla con el mínimo número de instruc-
ciones y con una intermitencia de 250 ms.
Se propone manipular a 8 diodos LED colocados en las patitas PO-P7 que conforman OUTL,
para direccionarlas como salidas con la asignación de DIRL = % 11111111. Estos 8 diodos
luminiscentes van a visualizar el contaje en tiempo real de un contador binario de 8 bits que va
a ir pasando unidad a unidad desde el valor 0 hasta 255, que es el máximo y en el que los 8
LED quedarán encendidos. La puesta en marcha del contador desde el valor inicial se produce
al apretar durante un breve período de tiempo un pulsador conectado a la patita P14 del mó-
dulo BS2-IC. Finalmente, al llegar al valor final 255 en binario se activa un zumbador conec-
tado a la patita P15.
64 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
LED VAR OUTL: Asigna el nombre LED a los elementos conectados a las 8 líneas de menos
peso de las líneas de salida OUTL.
DIRL = % 11111111: Configura como salidas las 8 líneas de menos peso (PO-P7) de la puer-
ta de Entrada/Salida.
FOR CONTA = 0 TO 255...... NEXT: Realiza una serie de instrucciones que forman un bu-
cle un número de veces determinado por la transición de la variable (CONTA) desde el valor 0
hasta el 255. Cada vez que ejecuta el bucle incrementa una unidad la variable.
LED = CONTA: Los 8 LED conectados a las patitas PO-P7 toman el valor binario de la varia-
ble CONTA cada vez que se realiza el bucle y visualizando el número binario correspondiente.
En la Figura 4.I4 se muestra el conexionado de las patitas del módulo OEM BS2-IC / MSE. con
los periféricos del diseño y las salidas de la fuente de alimentación del Universal Trainer.
PBASIC: EL LENGUAJE MÁS FÁCIL DEL MUNDO 65
Nuestro «maravilloso» PIC pertenece a la familia de la gama media y dentro de ella es uno de
los más pequeños; sólo tiene 18 patitas. Además es el que dispone de menos recursos. El res-
to de sus parientes tiene conversores AD y DA, comparadores analógicos, tensión interna de
referencia, más líneas de E/S, más capacidad en sus memorias, varios temporizadores y un lar-
go etcétera de dispositivos de los que el PIC16X84 carece. Es «pobre» de nacimiento.
Pero nosotros hemos elegido a este PIC, en sus dos versiones C y F, porque cumple con
los requisitos esenciales para enseñar a manejar los microcontroladores y comenzar a diseñar
proyectos. Es práctico, es sencillo y es económico, pudiendo considerar como el paradigma
para su empleo en todos los pequeños proyectos que realizan los aficionados, los estudiantes y
quienes prefieren progresar en sus conocimientos de lo fácil a lo difícil. Creemos que sabien-
do manejar un PIC, el hacerlo con todos los demás es muy fácil.
67
68 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Los modelos que tienen las letras C, F o CR intermedias admiten el rango de voltaje de ali-
mentación estándar, que es el que oscila de 4 a 4,5 V DC como mínimo, hasta 5,5 a 6 V DC
como máximo. Los modelos con las letras LC, LF o LCR intermedias admiten el margen de
voltaje «extendido», que abarca desde los 2 V hasta los 6 V DC.
En la tabla de la Figura 5.1 se indican las principales características de algunos modelos,
atendiendo a la frecuencia máxima y al tipo de oscilador usado.
EEPROM se ha sustituido por otra tipo FLASH. Los otros dos modelos la sustituyen por me-
moria ROM con máscara, pero todos ellos mantienen los 64 bytes de EEPROM para datos.
También existen los modelos PIC16F87X enormemente más potentes que el PIC16F84 y que
se estudian en el segundo volumen de esta obra.
5.1.2. Diferencias
EJEMPLO
SOLUCIÓN
Para conseguir ejecutar cada instrucción en un ciclo de instrucción (excepto las de salto,
que tardan dos), se aplica la técnica de la segmentación o «pipe-fine», que consiste en realizar
en paralelo las dos fases que comprende cada instrucción.
72 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
En realidad, cada instrucción se ejecuta en dos ciclos: en el primero se lleva a cabo la fase
de búsqueda del código de la instrucción en la memoria del programa, y en el segundo se de-
codifica y se ejecuta (fase de ejecución). La estructura segmentada del procesador permite
realizar al mismo tiempo la fase de ejecución de una instrucción y la de búsqueda de la
siguiente. Cuando la instrucción ejecutada corresponde a un salto no se conoce cuál será la si-
guiente hasta que se complete, por eso en esta situación se sustituye la fase de búsqueda de
la siguiente instrucción por un ciclo «vacío», originando que las instrucciones de salto tarden
en realizarse dos ciclos de instrucción (Figura 5.5).
EL PRIMER CONTACTO CON EL PIC16F84 73
más rápido que el microcontrolador de Motorola 68HC05, cuando ambos funcionan a la mis-
ma frecuencia de 4 MHz.
EJEMPLO
SOLUCIÓN
Los PIC admiten cuatro tipos de osciladores externos para aplicarles la frecuencia de funcio-
namiento. E1 tipo empleado debe especificarse en dos bits (FOSC1 y FOSCO) de la «Palabra
de Configuración», como se comenta más adelante.
EJEMPLO
SOLUCIÓN
Se trata de un oscilador que alcanza una alta velocidad comprendida entre 4 y 10 MHz y está
basado en un cristal de cuarzo o un resonador cerámico.
Oscilador tipo «X T»
Es un oscilador de cristal o resonador para frecuencias estándar comprendidas entre 100 KHz
y 4 MHz.
Oscilador de bajo consumo con cristal o resonador diseñado para trabajar en un rango de fre-
cuencias de 35 a 200 KHz.
El cristal de cuarzo o el resonador cerámico se coloca entre las patitas OSC1 y OSC2 (Fi-
gura 5.7).
EL PRIMER CONTACTO CON EL PIC 16F84 75
EJEMPLO
SOLUCIÓN
5.4.
cuencia de 4 MHz. Con esta configuración, el conexionado fijo para cualquier aplicación del
PIC es el mostrado en la Figura 5.9.
Las patitas que no se hallan conectadas en la Figura 5.9 son las dedicadas a transferir in-
formación con los periféricos que utilice la aplicación. Para hacer operativo dicho esquema va-
mos a conectar algunos periféricos sencillos, que no por eso son los menos usados.
Como periférico de entrada utilizaremos un interruptor (11) que se conecta a la línea RA1
de la Puerta A. Como periférico de salida se colocará un diodo led (L3) en la línea RB3 de la
Puerta B. Según el interruptor se abra o se cierre introducirá un nivel lógico alto o bajo.
Cuando está abierto aplica a la patita RA1 un nivel lógico alto a través de la resistencia de pull-
up de 10 K. Si se cierra, al conectarse con tierra, introduce un nivel bajo (Figura 5.10).
Aprovechando la corriente de salida de las líneas de la Puerta B, en torno a los 25 mA, co-
nectaremos directamente el diodo led L3 a la patita RB3, a través de una resistencia de absor-
ción de 330 ohms.
El, PRIMER CONTACTO CON EL PIC16F84 77
El PIC precisa una circuitería auxiliar común para cualquier aplicación, cambiando única-
Una tarjeta de prototipos consta de dos zonas. En una se ubica el zócalo que alojará al mi-crocontrolador con el programa ya grabado junto a la circuitería común (alimentación, reloj y
Reset). En la otra zona sólo existe un área de agujeros perforados y estañados, sobre los que se
conectarán los periféricos y se unen 'fácilmente con las líneas de E/S que quedan accesibles. En la
Figura 5.11 se muestra una tarjeta de prototipos para PIC de 18 patitas, diseñada por Inge-
niería de Microsistemas Programados, S. L. Una ventaja adicional de esta tarjeta es que ade-
existe otro de 18 patitas, donde quedan disponibles las
del microcontrolador, que puede conectarse por cable plano con un sistema de desarrollo o un
grabador para que el PIC 16X8X resida en el propio grabador y se pueda escribir y borrar el
programa hasta que quede definitivamente a punto. Llegado ese momento, se quita el cable
plano del grabador y se coloca el PIC grabado en el zócalo de la tarjeta de prototipos.
En la Figura 5.12 se muestra el esquema eléctrico de la circuitería que viene montada en
la tarjeta de prototipos PIC 1 8-ME y que es la imprescindible para el funcionamiento del mi-
78 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
EL PRIMER CONTACTO CON EL PIC 16F84 79
Para lograr una compactación del código óptima y una velocidad superior a la de sus compe-
tidores los microcontroladores PIC incorporan en su procesador tres de las características
más avanzadas en los grandes computadores:
Con la incorporación de estos recursos los PIC son capaces de ejecutar en un ciclo de ins-
trucción todas las instrucciones, excepto las de salto, que tardan el doble. Una condición im-
prescindible es la simetría y ortogonalidad en el formato de las instrucciones, que en el caso de
los PIC de la gama media tienen una longitud de 14 bits. De esta forma se consigue una com-
pactación en el código del programa para un PIC16F84 2,24 veces superior al de un 68HC05,
funcionando a la misma frecuencia.
El juego de instrucciones se reduce a 35 y sus modos de direccionado 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 está desarrollando la fase de ejecu-
ción de una instrucción se realiza la fase de búsqueda de la siguiente.
81
82 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Otra característica relevante de los PIC es el manejo intensivo del Banco de Registros, los
cuales participan de una manera muy activa en la ejecución de las instrucciones. Como se
muestra en la Figura 6.2, la ALU efectúa sus operaciones lógico-aritméticas con dos operan-
dos, 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 pro-
pio código de instrucción. El resultado de la operación puede almacenarse en cualquier regis-
tro 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 memoria de datos
RAM implementa en sus posiciones los registros específicos y los de propósito general.
La arquitectura interna del PIC 16C84 se presenta en la Figura 6.3 y consta de siete blo-
ques fundamentales.
EN EL INTERIOR DEL PROCESADOR 83
Para analizar de forma global el funcionamiento del procesador nos vamos a centrar en la
ejecución de una instrucción. Todo comienza con la fase de búsqueda, que la inicia el Conta-
dor de Programa facilitando la dirección de la memoria de instrucciones donde se ubica. Su có-
84 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
digo binario de 14 bits se lee y se carga en el Registro de Instrucciones, desde donde se trans-
fiere al Decodificador y a la Unidad de Control. A veces, dentro del código de la instrucción,
existe el valor de un operando (literal) que se introduce como operando a la ALU, o bien una
dirección de la memoria de datos donde reside otro operando.
La ALU es la encargada de realizar la operación lógico-aritmética que implica la instruc-
ción decodificada. Uno de los operandos lo recibe desde el registro W y el otro desde un re-
gistro o de la propia instrucción.
Tanto el banco de registros específicos, en el que cada uno tiene una misión concreta, como
el de registros de propósito general residen en la RAM. La EEPROM de datos puede contener
datos que no se desee perder al desconectar la alimentación, pero su acceso está controlado con
unos registros especiales.
Las operaciones de E/S con los periféricos las soportan las Puertas A y B. Existe un Tem-
porizador, TMRO, para encargarse de las funciones de control de tiempos. Finalmente, hay
unos circuitos auxiliares que dotan al procesador de unas interesantes posibilidades de seguri-
dad, reducción del consumo y reinicialización.
La arquitectura del PIC16C84 se mantiene para todos los modelos que se derivan de ella, con
las siguientes diferencias:
de datos RAM tiene 68 registros de tamaño byte de propósito general, en lugar de 36.
En el PC se ignoran los 3 bits de más peso, de forma que apuntar a la dirección 33 H es lo mismo
que hacerlo a la 433 H, 833 H, C33 H, 1033 H, 1433 H o a la 1C33 H.
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
8 bits de menos peso del PC residen en el registro PCL, que ocupa, repetido, la posición 2 de
los dos bancos de la memoria de datos. Los bits de más peso, PC< 12 :8>, residen en los 5 bits
de menos peso del registro PCLATH, que ocupa la posición OA H de los dos bancos de la me-
moria RAM.
En las instrucciones GOTO y CALL de la gama media los 11 bits de menos peso del PC
provienen del código de la instrucción y los otros dos de los bits PCLATH <4 :3> (véase Fi-
gura 6.5).
Con los 11 bits que se cargan en el PC desde el código de las instrucciones GOTO y CALL,
se puede direccionar una página de 2 K de la memoria. Los bits restantes PC< 12 :11> tienen la
misión de apuntar una de las cuatro páginas del mapa de memoria y, en los modelos de PIC
que alcanzan ese tamaño, dichos bits proceden de PCLATH<4 :3>.
La Pila es una zona aislada de las memorias de instrucciones y datos. Tiene una estructura
LIFO, en la que el último valor guardado es el primero que sale. Tiene 8 niveles de profundi-
dad, cada uno con 13 bits. Funciona como un «buffer» circular, de manera que el valor que se
obtiene al realizar el noveno «desempilado» (pop) es igual al que se obtuvo en el primero.
La instrucción CALL y las interrupciones originan la carga del contenido del PC en el ni-
vel superior o «cima» de la Pila. El contenido del nivel superior se saca de la Pila al ejecutar
las instrucciones RETURN, RETLW y RETFIE. El contenido del registro PCLATH no es
afectado por la entrada o salida de información de la Pila.
ciones de cada banco, de las cuales las 12 primeras están reservadas a los Registros de Propó-
sito Específico (SFR), que son los encargados del control del procesador y sus recursos. Al-
gunos de dichos registros se hallan repetidos en la 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 7 H y la apuntada por la 87 H no son operativas. Los 36 registros restantes de cada
banco se destinan a Registros de Propósito General y, en realidad, sólo 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 (véase Figura 6.6).
Para seleccionar el banco a acceder hay que manipular el bit 5 (RPO) del registro ESTADO.
Si RPO = 1 se accede al banco 1 y si RPO = 0 se accede al banco 0. Tras un Reset se accede
88 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
EN EL INTERIOR DEL PROCESADOR 89
automáticamente al banco 0. Para seleccionar un registro de propósito general no hay que te-
ner en cuenta el estado del bit RPO, porque al estar mapeado el banco 1 sobre el banco 0,
cualquier direccionamiento de un registro del banco 1 corresponde al homólogo del banco 0. En
el direccionamiento directo a los registros GPR se ignora el bit de más peso, que identifica el
banco, y sus direcciones están comprendidas entre el valor OxOc y Ox2f en hexadecimal.
Los registros SFR se clasifican en dos grupos. En uno se incluyen aquellos que controlan el
núcleo del microcontrolador (ESTADO, OPTION, INTCON, etc.) y en el otro los que deter-
minan la operatividad de los recursos auxiliares y periféricos. La Figura 6.7 presenta la es-
tructura de estos registros y los valores que toman después de un Reset. El PIC16F83 y el
Direccionamiento Directo
El operando que utiliza la instrucción en curso se referencia mediante su dirección, que viene
incluida en el código OP de la misma, concretamente en los 7 bits de menos peso. El banco a
acceder lo determinan los bits RPO y RP1 del registro ESTADO. En el caso del PIC16C(F)84
sólo se usa el bit RPO al tener implementados únicamente dos bancos (véase Figura 6.10).
Direccionamiento Indirecto
Este modo de direccionado se usa cuando en una instrucción se utiliza como operando el re-
gistro INDF, que ocupa la dirección 0 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 ban-
co especificada con los 7 bits de menos peso del registro FSR. El bit de más peso de FSR jun-
to al bit IRP del registro ESTADO se encargan de seleccionar el banco a acceder, mientras que
los 7 bits de menos peso del FSR apuntan a la posición. Como sólo hay dos bancos en el
PIC 16C(F)84 en este modo de direccionamiento, el bit IRP = 0 siempre (véase Figura 6.11).
92 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
EN EL INTERIOR DEL PROCESADOR 93
En la Figura 6.12 se muestra el diagrama de distribución de los bits del registro ESTADO.
Los bits TO# y PD# indican el estado del procesador en algunas condiciones y no se pue-
den escribir. Por este motivo la instrucción clrf ESTADO deja el contenido de dicho registro
con el valor 000u ul uu, siendo u el símbolo de «no cambia». Sólo se ponen a 0 los tres bits
de más peso, el bit Z (cero) se pone a 1 y los restantes no alteran su valor.
A continuación se describe la misión de los bits del registro ESTADO.
Z: Cero
1: El resultado de una instrucción lógico-aritmética ha sido 0.
0: El resultado de una instrucción lógico-aritmética no ha sido 0.
Como el PIC 16X84 sólo tiene dos bancos, únicamente emplea el bit RPO, de forma que cuan-
do vale 1 se accede al banco 1 y cuando vale 0 se accede al banco 0. Después de un Reset
RPO=0.
Los PIC 16X8X contienen pocos recursos en comparación a otros familiares, pero poseen los
suficientes para resolver gran parte de las aplicaciones típicas de los microcontroladores. So-
bre todo disponen de una memoria de programa tipo EEPROM (PIC16C84) o FLASH
punto.
En este capítulo se describen los recursos más importantes de los PIC16X8X, que son:
Una de las labores más habituales en los programas de control de dispositivos suele ser deter-
minar intervalos concretos de tiempo, y recibe el nombre de temporizador (timer) el ele-
95
96 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
mento encargado de realizar esta función. 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 las asignamos al programa principal robarían
mucho tiempo al procesador en detrimento de actividades más importantes. Por este motivo se
diseñan recursos específicamente orientados a estas misiones.
Los PIC16X8X poseen un temporizador/contador de 8 bits, llamado TMRO, que actúa de
dos maneras diferentes:
Como contador de sucesos, que están representados por los impulsos que se aplican a
la patita RA4/TOCKI. Al llegar al valor FF H se desborda el contador y, con el si-
guiente impulso, pasa a 00 H, 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 va-
lor inicial se incrementa con cada ciclo de instrucción (Fosc/4) hasta que se desbor-
da, o sea, pasa de FF a 00 H, y avisa poniendo a 1 un bit señalizador y/o provocando
una interrupción (Figura 7.1).
Para que el TMRO funcione como contador de impulsos aplicados a la patita TOCKI hay
que poner a 1 el bit TOCS, que es el que ocupa la posición 5 del registro OPTION. En esta si-
tuación, el registro TMRO, que es el ubicado en la dirección 1 del banco 0 de la memoria de
datos, se incrementa con cada flanco activo aplicado en la patita TOCKI. El tipo de flanco acti-
vo se elige programando el bit TOSE, que es el que ocupa la posición 4 del registro OPTION.
Si TOSE = 1, el flanco activo es el descendente, y si TOSE = 0, es el ascendente. Cuando se
desea que TMRO funcione como temporizador el bit TOCS = 0.
En realidad, los PIC16X8X y los de la gama baja disponen de dos temporizadores, el
TMRO y el Perro Guardián (W atchdog). El primero actúa como principal y sobre él recae
el control de tiempos y el contaje de impulsos. El otro vigila que el programa no se «cuelgue»,
y para ello cada cierto tiempo comprueba si el programa se está ejecutando normalmente. En
caso contrario, si el control está detenido en un bucle infinito a la espera de algún aconteci-
miento que no se produce, el Perro Guardián «ladra», lo que se traduce en un Reset que reini-
cializa todo el sistema.
A menudo el TMRO y el Perro Guardián precisan controlar largos intervalos de tiempo y
necesitan aumentar la duración de los impulsos de reloj que les incrementa. Para cubrir este re-
LOS RECURSOS FUNDAMENTALES: TEMPORIZADORES, PUERTAS DE E/S Y EEPROM... 97
En cualquier momento se puede leer el valor que contiene TMRO, sin detener su contaje. La
instrucción adecuada al caso es movf tmrO,w.
En la Figura 7.3 se ofrece el esquema de funcionamiento del TMRO. Obsérvese que hay
un bloque que retrasa 2 ciclos el contaje para sincronizar el momento del incremento produci-
do por la señal aplicada en TOCKI con el que producen los impulsos internos de reloj. Cuando
se escribe TMRO se retrasan 2 ciclos su reincremento y se pone a 0 el Divisor de frecuencia.
El bit 7 RBPU# (RB Pull-Up) activa, si vale, 0, o desactiva, cuando vale 1, las resistencias
Pull-Up que pueden conectarse opcionalmente en las líneas de la Puerta B.
Se trata de un contador interno de 8 bits que origina un Reset cuando se desborda. Su control
de tiempos es independiente del TMRO y está basado en una simple red R-C. Su actuación es
100 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
opcional y puede bloquearse para que no funcione programando el bit WDTE de la Palabra
de Configuración.
Para evitar que se desborde el Perro Guardián hay que refrescarle previamente. En reali-
dad este refresco consiste en ponerle a cero mediante las instrucciones clrwdt y sleep. El pro-
gramador debe analizar las instrucciones de la tarea y situar alguna de esas dos en sitios estra-
tégicos por los que pase el flujo de control antes de que transcurra el tiempo asignado al WDT.
De esta manera, si el programa se «cuelga» no se refresca el Perro Guardián y se produce la
reinicialización del sistema.
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 mete en un estado de «reposo» o «de bajo
consumo». Si no se desactiva el Perro Guardián al entrar en el modo de reposo, al completar su
contaje provocará un Reset y sacará al microcontrolador del modo de bajo consumo. Para
desactivar al Perro Guardián hay que escribir un 0 en el bit 2 (WDTE) de la Palabra de Confi-
guración.
En el registro ESTADO existe un bit denominado TO# que pasa a valer 0 después del des-
bordamiento del WDT.
LOS RECURSOS FUNDAMENTALES: TEMPORIZADORES, PUERTAS DE E/S Y EEPROM... 101
Los PIC 16X8X sólo disponen de dos puertas de E/S. La Puerta A posee 5 líneas, RAO - RA4,
y una de ellas soporta dos funciones multiplexadas. Se trata de la RA4/TOCKI, que puede ac-
tuar como línea de E/S o como patita por la que se reciben los impulsos que debe contar
102 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
das, la RBO/INT, que, además de línea típica de E/S, también sirve como patita por la que se
reciben los impulsos externos que provocan una interrupción.
Cada línea de E/S puede configurarse independientemente como entrada o como salida, se-
gún se ponga a 1 o a 0, respectivamente, el bit asociado del registro de configuración de cada
puerta (TRISA y TRISB). Se llaman PUERTAA y PUERTAB los registros que guardan la in-
formación que entra o sale por la puerta y ocupan las direcciones 5 y 6 del banco 0 de la me-
moria de datos. Los registros de configuración TRISA y TRISB ocupan las mismas direcciones,
pero en el banco 1 (Figura 7.7).
7.4.1. La Puerta A
Las líneas RA3 - RAO admiten niveles de entrada TTL y de salida CMOS. La línea
ruido y la salida tiene drenador abierto. RA4 multiplexa su función de E/S con la de entrada de
impulsos externos para el TMRO.
En el circuito de la Figura 7.8 se muestra la adaptación de las patitas RA3 - RAO a las se-
ñales internas del procesador.
Cuando se lee una línea de la Puerta A (instrucción movfw puertaa) se recoge el nivel lógico
que tiene en ese momento. Las líneas cuando actúan como salidas están «lacheadas», lo que sig-
nifica que sus patitas sacan el nivel lógico que se haya cargado por última vez en el registro
PUERTAA. La escritura de una puerta implica la operación «lectura/modificación/escritura». Pri-
mero se lee la puerta, luego se modifica el valor y finalmente se escribe en el «latch» de salida.
De la Figura 7.8 se desprende que cuando se saca un nivel lógico por una línea de la Puer-
ta A, primero se deposita en la línea correspondiente del bus de datos y se activa la señal WRI-
TE, lo que origina el almacenamiento de dicho nivel en la báscula de datos. En esta situación,
la báscula de configuración debería contener un 0 para que actuase como salida. Con estos
LOS RECURSOS FUNDAMENTALES: TEMPORIZADORES, PUERTAS DE E/S Y EEPROM... 103
Al reinicializarse el PIC todos los bits de los registros TRIS quedan a 1, con lo que las lí-
neas de las puertas quedan configuradas como entradas.
Cada línea de salida puede suministrar una corriente máxima de 20 mA y si es entrada pue-
de absorber hasta 25 mA. Al existir una limitación en la disipación máxima de la potencia del
chip, se restringe la corriente máxima de absorción de la Puerta A a 80 mA y la de suministro
a 50 mA. La Puerta B puede absorber un máximo de 150 mA y suministrar un total de 100 mA.
Con se lee una puerta y con la instrucción se escribe. También
existen instrucciones para modificar el valor de un bit particular correspondiente a una línea de
una puerta con las instrucciones (pone a 1 el bit indicado de la puerta) y bcf puer-
Existen instrucciones de salto condicionales que chequean el valor de un bit de una
puerta y brincan si vale 1 (btfss) o si vale 0 (btfsc).
7.4.2. La Puerta B
Consta de 8 líneas bidireccionales de E/S, RB7 - RBO, cuya información se almacena en el
registro PUERTAB, que ocupa la dirección 6 del banco 0. El registro de configuración
TRISB ocupa la misma dirección en el banco 1.
La línea RBO/INT tiene dos funciones multiplexadas. Además de patita de E/S, actúa como
patita para la petición de una interrupción externa, cuando se autoriza esta función mediante la
adecuada programación del registro INTCON, del que se hablará más adelante.
A todas las líneas de esta puerta se las permite conectar una resistencia pull-up, de eleva-
do valor, con el positivo de la alimentación. Para este fin hay que programar en el registro
OPTION el bit RBPU# = O, lo que provoca la conexión de una resistencia a todas las líneas.
Con el Reset todas las líneas quedan configuradas como entradas y se desactivan las resisten-
cias pull-up.
Las 4 líneas de más peso, RB7 - RB4, pueden programarse para soportar una misión espe-
cial. Cuando las 4 líneas actúan como entradas se las puede programar para generar una inte-
rrupción si alguna de ellas cambia su estado lógico. Esta posibilidad es muy práctica en el
control de teclados. En la Figura 7.9 se muestra el esquema de conexionado entre las patitas
RB7 - RB4 y las líneas correspondientes del bus de datos interno.
El estado de las patitas RB7 - RB4 en modo entrada se compara con el valor antiguo
que tenían y que se había lacheado durante la última lectura de la Puerta B. El cambio de
estado en algunas de esas líneas origina una interrupción y la activación del señaliza-
dor 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, cuando se graba un programa en la memoria de código.
El registro EECON2 en realidad no está implementado físicamente. Al leerlo todos sus bits
son 0. Sólo 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 desa-
rrollo.
Para escribir una posición de la EEPROM de datos el usuario debe seguir una determinada
secuencia de instrucciones en las que participa el registro EECON2. Este registro, que en rea-
lidad no se halla implementado físicamente, sólo asume funciones de seguridad en el proce-
so, cargándose en él dos valores concretos: 55 H y aa H. La duración típica de un ciclo de es-
critura es de 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 de la posición a escribir y
en el registro EEDATA el valor a grabar.
LOS RECURSOS FUNDAMENTALES: TEMPORIZADORES, PUERTAS DE E/S Y EEPROM... 109
Las llamadas a subrutinas mediante la instrucción CALL son desviaciones del flujo de con-
trol del programa originadas por instrucciones, por lo que se consideran síncronas. Se produ-
cen cada vez que se ejecuta dicha instrucción.
Las interrupciones son desviaciones del flujo de control del programa originadas asíncro-
namente por diversos sucesos que no se hallan bajo la supervisión de las instrucciones. Di-
chos sucesos pueden ser externos al sistema, como la generación de un flanco o nivel activo
en una patita del microcontrolador, o bien internos, como el desbordamiento de un con-
tador.
El comportamiento del microcontrolador ante la interrupción es similar al de la instruc-
ción CALL de llamada a subrutina. En ambos casos se detiene la ejecución del programa en
curso, se salva la dirección actual del PC en la Pila y se carga el PC con una dirección, que en
el caso de CALL viene acompañando a la propia instrucción, y en el caso de una interrupción
es una dirección «reservada» de la memoria de código, llamada Vector de Interrupción.
La RSI suele comenzar guardando en la memoria de datos algunos registros específicos del
procesador. Concretamente aquellos que la RSI va a emplear y va a alterar su contenido. An-
tes del retorno al programa principal se recuperan los valores guardados y se restaura comple-
tamente el estado del procesador. Algunos procesadores salvan estos registros en la Pila, pero
los PIC no disponen de instrucciones para meter (push) y sacar (pop) información de la Pila,
utilizando para este fin registros de propósito general de la memoria de datos.
Los PIC16XSX pueden ser interrumpidos por cuatro causas diferentes, pero todas desvían
el flujo de control a la dirección 0004 H, por lo que otra de las operaciones iniciales de la RSI
111
112 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
CAUSAS DE INTERRUPCIÓN
Cuando ocurre cualquiera de los 4 sucesos indicados se origina una petición de interrup-
ción, que si se acepta y se atiende comienza depositando el valor del PC actual en la Pila, po-
niendo el bit GIE = 0 y cargando en el PC el valor 0004 H, 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 «flag», que es un bit que se pone
automáticamente a 1 cuando se produce. Además, cada fuente de interrupción tiene otro bit
de permiso, que según su valor permite o prohíbe la realización de una interrupción.
La mayor parte de los señalizadores y bits de permiso de las fuentes de interrupción en los
1: Permite la ejecución de todas las interrupciones, cuyos bits de permiso individuales tam-
bién las permitan.
0: Prohíbe todas las interrupciones.
INTERRUPCIONES, RESET Y RECURSOS AUXILIARES 113
114 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Siempre que se produzca una interrupción por cualquier causa, GIE = 0 y el PC se car-
ga con el valor 0004 H, que es el Vector de Interrupción. Para conocer qué causa ha provo-
cado la interrupción se exploran los señalizadores, tres de los cuales se ubican en el regis-
INTERRUPCIONES, RESET Y RECURSOS AUXILIARES 11 5
tro INTCON y el cuarto, EEIF, que se pone a 1 cuando finaliza la escritura de la EEPROM,
se halla en el bit 4 del registro EECONl.
Los señalizadores deben ponerse a 0 por programa antes del retorno de la interrupción
y son operativos aunque la interrupción esté prohibida por su bit de permiso correspondiente.
En la Figura 8.3 se ofrece el esquema de la lógica de control que origina la interrupción.
11 6 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
En los PIC 16C84 y el PIC 16F8X se puede leer y escribir la EEPROM de datos aunque se
haya protegido el código. En los PIC16CR8X, que disponen de memoria ROM para el código,
existen dos bits para el código de protección: uno dedicado a la ROM de código y el otro a la
EEPROM de datos.
8.3.
Los PIC16X8X tienen cinco causas que provocan la reinicialización del sistema, consistente
en cargar al PC con el valor 000 H (Vector de Reset) y poner el estado de los bits de los regis-
tros específicos (SFR) con un valor conocido.
En la Tabla 8.1 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.
En la Figura 8.5 se muestra el esquema electrónico de los PIC 16X8X para la generación del
Reset. La patita MCLR# dispone de un filtro interno para eliminar los ruidos y los impulsos
muy pequeños.
El temporizador PWRT («Power-up Timer») activa una salida al cabo de un cierto tiempo
tras la conexión de la alimentación, que se aplica a una entrada de la AND4, encargada de con-
trolar el Reset del Flip-flop que gobierna la generación interna del Reset del sistema. Sólo es
12 0 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
válida la salida de PWRT si el bit de permiso del PWRT está activo a nivel bajo (PWRT# = 0),
dado que también se aplica a la OR7 de la Figura 8.5. El bit PWRT reside en la Palabra de
Configuración y una de las pocas diferencias que tenía el PIC16C84 con el PIC16F84 era que
aquél tenía como nivel activo del bit PWRT el alto, mientras que este último tiene el bajo.
El Reset del Flip-flop final se produce cuando la AND4 saca nivel alto, lo que requiere
que sus tres entradas tengan dicho nivel, y eso supone:
a) Que no haya peticiones de Reset y la puerta OR2 tenga su salida a nivel bajo.
b) Que si está activo PWRT finalice su retardo de 72 ms.
c) Que también finalice la temporización del oscilador OST, que retarda 1.024 - Tosc, tras
completarse el retardo de PWRT.
En la Figura 8.6 se ofrece un cronograma de las principales señales que participan en la ge-
neración del Reset y en el que se aprecia la secuencia de los retardos
INTERRUPCIONES, RESET Y RECURSOS AUXILIARES 12 1
En el registro ESTADO hay dos bits que indican las condiciones en las que se ha origina-
do el Reset. Se trata de TO# (Timer Out) y PD# (Power Down) (Figura 8.7).
La patita MCLR# puede conectarse directamente con pero debe colocarse una resis-
tencia de valor superior a 100 S2 cuando se conecta con tierra, para evitar los problemas que
puede originar la corriente que circula.
INTERRUPCIONES, RESET Y RECURSOS AUXILIARES 123
Para entrar en el modo de Reposo hay que ejecutar la instrucción SLEEP y se produce una
situación muy especial de funcionamiento que parece como si el sistema se ha «congelado»,
requiriendo el mínimo suministro de energía para mantener el estado del procesador sin nin-
guna actividad.
En Reposo la patita TOCKI se conecta a VDD o a tierra para eliminar la entrada de impul-
sos externos al TMRO. Por otra parte, como se detiene el oscilador principal que genera los im-
pulsos Tosc, también se para TMRO. Las patitas de E/S mantienen el estado anterior al modo
de Reposo y las que no se hallan conectadas a periféricos y actúan como entradas de alta im-
pedancia se aconseja conectarlas a VDD o a tierra para evitar posibles fugas de corriente. La pa-
tita MCLR# debe conectarse a nivel alto. Sin impulsos de reloj, el procesador se congela y
deja de ejecutar instrucciones hasta que «despierte» y salga de ese estado.
Si el Perro Guardián continúa activo en el modo de Reposo, al entrar en él se borra, pero si-
gue funcionando. Los bits del registro de ESTADO PD# y TO# toman los valores 0 y 1, res-
pectivamente.
Para salir del estado de Reposo (despertar) existen tres alternativas:
I Activación externa de MCLR# para provocar un Reset.
2.a Desbordamiento del Perro Guardián si quedó operativo en el modo de Reposo.
3.° Generación de una interrupción. En este caso, como TMRO está parado sólo pueden
producirse los otros tres tipos de interrupción.
Los bits TO# y PD# se emplean para conocer la causa del Reset que despierta al sistema.
PD# = 0 cuando se ejecuta la instrucción SLEEP TO# = 0 cuando se desborda el Peno Guardián.
La programación en serie de los PIC 16X8X requiere 5 líneas, dos de las cuales se destinan
a soportar los impulsos de reloj de la transmisión (RB6) y los bits de información (RB7),
mientras que las otras tres soportan V DD, tierra y la tensión especial de programación Vpp, que
oscila entre 12 y 14 V (Figura 8.10).
El microcontrolador pasa al modo de programación/verificación colocando a nivel bajo
las líneas RB6 y RB7 y aplicando la tensión de programación Vpp a la patita MCLR#/ A
partir de ese momento por RB6 se transmiten los impulsos de reloj y por RB7 se transfieren los
bits de datos en serie.
9.1. REPERTORIO RISC
Todos los modelos de microcontroladores PIC responden a la arquitectura RISC, que signifi-
ca «Computador de Juego de Instrucciones Reducido». No sólo implica que el número de
instrucciones máquina que es capaz de interpretar y ejecutar el procesador es pequeño, como
sucede en los PIC16X8X, que consta de 35, sino también que posee las siguientes caracterís-
ticas:
Todas las instrucciones tienen la misma longitud, 14 bits en los PIC16X8X, y todos
los datos también, un byte. La arquitectura Harvard del procesador aísla la memoria de
instrucciones de la de datos, pudiendo tener sus palabras diferente tamaño.
125
126 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Las instrucciones de los PIC de la gama media, entre los que se encuentran los modelos
PIC 16X8X, tienen 14 bits de longitud. Dicho formato se divide en diferentes campos de bits,
cada uno de los cuales referencia a operandos o elementos que maneja la instrucción en la ope-
ración que realiza en el procesador. Se describen dichos campos:
Los bits de este campo sirven para definir la operación que realiza la instrucción.
Estos campos de bits definen los registros que actúan como operandos en la instruc-
ción. Suelen referenciar la dirección que ocupan en la memoria de datos.
Suele ser un campo de 3 bits que indica la posición de un bit concreto dentro de un re-
gistro de 8 bits.
En las instrucciones de salto CALL y GOTO hay un campo de bits que contiene la di-
rección de la siguiente instrucción que hay que ejecutar. Dicho campo de bits se carga
en el PC en las instrucciones de salto incondicional.
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 desa-
rrollan.
MANEJANDO EL REPERTORIO DE INSTRUCCIONES 127
mentar el contenido de f y dejar el resultado en f. Pero, además, si el nuevo valor def es cero se
produce un brinco. Si no es cero el flujo de control continúa con la siguiente instrucción.
Sólo hay dos instrucciones en este grupo, pero son muy flexibles. Una de ellas pone a 1
cualquier bit de un registro, mientras que la otra lo pone a 0 (véase Tabla 9.2).
134 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Sólo hay cuatro instrucciones de salto condicional en los PIC de la gama media. Dos de ellas
testan un bit de un registro y según valga 1 o 0, brincan o no. Recuérdese que un brinco es un
«saltito» pequeño, sólo se salta la instrucción siguiente a la condicional. Las otras dos ins-
trucciones incrementan o decrementan un registro y la posibilidad del brinco se efectúa si con
esa operación el valor del registro ha llegado a cero. Cuando estas instrucciones no brincan
porque no se cumple la condición, tardan 1 ciclo de instrucción en ejecutarse. En caso de que
brinquen, tardan el doble (véase Tabla 9.3).
MANEJANDO EL REPERTORIO DE INSTRUCCIONES 135
Se trata de media docena de instrucciones que realizan una operación con un valor inmediato
de 8 bits que se proporciona dentro del formato de la instrucción, el cual sólo tiene dos cam-
pos: el del Código OP (6 bits) y el del operando inmediato (8 bits) (Tabla 9.4).
MANEJANDO EL REPERTORIO DE INSTRUCCIONES 135
Se trata de media docena de instrucciones que realizan una operación con un valor inmediato
de 8 bits que se proporciona dentro del formato de la instrucción, el cual sólo tiene dos cam-
pos: el del Código OP (6 bits) y el del operando inmediato (8 bits) (Tabla 9.4).
136 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
En este grupo se incluyen las instrucciones que rompen la secuencia normal del programa por-
que 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 instruc-
ción. La instrucción call de Llamada a Subrutina, antes de cargar el PC con la dirección de la
i nstrucción a saltar, salva la dirección de partida guardando en la cima de la Pila el valor actual
del PC. De esta manera, al retornar de la subrutina se saca de la Pila la dirección de regreso
en el programa principal.
Para realizar un retorno de una subrutina se pueden emplear dos instrucciones. La más ha-
bitual 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 que, además de hacer lo mismo que return, carga en W el valor in-
mediato k que contiene. Es decir, devuelve un parámetro desde la subrutina.
Para el final de las interrupciones hay otra instrucción cuyo nemónico es La opera-
tividad de esta instrucción consiste en cargar en el PC el contenido de la cima de la Pila y po-
ner el bit GIE = 1, pues al comenzar la interrupción este bit se pone automáticamente a 0 para
evitar que cuando se atiende una interrupción se produzca otra. GIE es el bit de permiso de
todas las interrupciones.
En cuanto a las instrucciones especiales, se han incluido dos en este grupo: La
primera pone a 0 el contenido del Perro Guardián, es decir, lo refresca o lo reinicializa. El Perro
Guardián si se desborda (pasa de Oxff a 0x00) provoca un Reset. La instrucción clrwdt hay que
colocarla estratégicamente en ciertos puntos del programa para evitar la reinicialización.
MANEJANDO EL REPERTORIO DE INSTRUCCIONES 137
En el despertar del siglo XXI asistimos a una impresionante carrera mundial por incorporar
microcontroladores a los productos de mayor consumo para mejorar la imagen, las prestacio-
nes, el tamaño, el consumo y el precio.
Cada nuevo diseño nace con una idea y termina con el prototipo que la implementa. Du-
rante ese proceso suceden ordenadamente una serie de etapas que hay que cubrir para llegar a
un final feliz. En el desarrollo de cada fase se utilizan un conjunto de herramientas hardware
y software, que según su potencia reducen más o menos el tiempo que se consume en com-
pletarla. Pero, aunque sean muy valiosas dichas herramientas, no hay que olvidar que, al
igual que pasa con la mayoría de las cosas en nuestro mundo, hay dos pilares fundamentales:
Con este panorama de trabajo se deben manejar excelentes herramientas que sean capaces
de mejorar la idea inicial en el mínimo tiempo. Hasta hace poco, únicamente las grandes em-
presas podían soportar los grandes desembolsos económicos que exigía la adquisición de esas
herramientas. Actualmente, los fabricantes de chips se van dando cuenta que para venderlos
por cientos de millones de unidades tienen que facilitar y popularizar su empleo y poner a
disposición de los usuarios los medios que necesitan.
Microchip se ha esforzado siempre en considerar las posibilidades de los profesionales par-
ticulares, y puede ser que ésta haya sido la razón de haber escalado puestos en el mun-
dial de venta de microcontroladores durante la década de los noventa y ocupar uno de los pues-
tos de cabeza. La disponibilidad de herramientas eficaces y económicas justifica la espectacular
139
14 0 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
aceptación de los PIC. Cualquier aficionado, estudiante, diseñador particular o pequeña empre-
sa puede adquirir el instrumental requerido para el desarrollo de proyectos con PIC y cientos de
empresas de todo el mundo compiten por mejorar, ampliar y abaratar todo tipo de herramientas.
Para analizar las prestaciones y funciones que deben soportar las herramientas de desarrollo,
se presentan las fases típicas de un proyecto basado en un microcontrolador y que se muestran
gráficamente en el organigrama de la Figura 10.1. Se ha supuesto que no se dispone de una he-
rramienta muy potente y cara llamada «emulador en circuito» y que se comenta más adelante.
Fi
HERRAMIENTAS Y DISEÑO DE PROYECTOS 14 1
Tanto el organigrama de la Figura 10.1 como la tabla de la Figura 10.2 se han hecho pen-
sando en personas particulares que no dispongan de la herramienta de trabajo por excelencia,
el «emulador en circuito», cuyo coste suele ser superior a los 1.000 dólares. No obstante, con
las herramientas que se proponen se pueden alcanzar las mismas metas, de manera más arte-
sanal y con igual precisión y eficacia.
La Figura 10.2 contiene una tabla que describe las características fundamentales de cada
fase de un diseño con microcontrolador, cuando no se dispone de un «emulador en circuito».
10.2.1. La cabeza
Es una herramienta que tenemos todos, pero es la más importante. Con ella se puede obtener la
clave del éxito, que es la idea, y también puede suplir carencias y dificultades que se presentan
en todos los diseños. Se usa en todas las fases y de su rendimiento depende todo el trabajo.
Cuide bien su cabeza, porque con sólo una buena idea que le proporcione puede ser sufi-
También para los PIC la empresa Microchip dispone del programa Ensamblador MPASM,
cuyos nemónicos son similares a los utilizados por Intel.
Si trabaja con un lenguaje de alto nivel, como el C, tiene varias opciones de adquirir un
compilador que lo traduzca a código máquina. Destaca el compilador de C creado por Byte
Craft, cuyo coste ronda los 1.000 dólares. Otro más barato y muy eficaz es el de la empresa
CCS, que distribuye en España Ingeniería de Microsistemas Programados, S. L.
En Estados Unidos hay bastantes empresas que ofrecen compiladores e intérpretes del len-
guaje BASIC, entre las que se distinguen Parallax, microEngineering Labs y Versa Tech.
En Europa este lenguaje no tiene tanta aceptación.
HERRAMIENTAS Y DISEÑO DE PROYECTOS 143
nario. Su gratuidad lo hace muy recomendable en formación y diseño con esos modelos con-
cretos de PIC. En la Figura 10.3 se muestra una pantalla del SIMUPIC'84, en la que puede
apreciarse que el Menú Principal dispone de todas las fases para la confección del software.
Tiene ventanas en las que se visualizan los estados de registros, posiciones de memoria, el
programa ensamblado y desensamblado, así como la presentación del estado lógico que tiene
cada una ele las patitas del PICl6X84.
10.2.5. El grabador
El programa objeto, o sea, en código máquina ejecutable, hay que escribirlo en la memoria de
instrucciones del microcontrolador. Para realizar esta operación se necesita un «grabador» .
Un grabador consiste en una tarjeta electrónica que soporta varios zócalos con diferente nú-
mero de patitas, en los que se introducen diversos tipos de microcontroladores. Dispone de cir-
cuitos auxiliares y de estabilización de la alimentación. La grabación se controla mediante un
programa de comunicación desde un PC que se adapta al grabador por el puerto paralelo.
144 MICROCONTROLADORES «PIC» . DISEÑO PRÁCTICO DE APLICACIONES
Consiste en una placa de circuito impreso donde viene montado el zócalo del microcontrolador,
la circuilería auxiliar y la estabilización de la alimentación. Además, dispone de una zona agu-
jereada para soportar y conectar los periféricos específicos de la aplicación. Insertando el mi-
crocontrolador con el programa grabado en su zócalo queda completado el prototipo definitivo.
Confeccionado y depurado el programa, grabado el microcontrolador y comprobado el
comportamiento real de gran parte del software mediante los periféricos del sistema de desa-
rrollo, se pasa al montaje del prototipo. Una parte de la circuilería del prototipo siempre es
igual, porque es la que corresponde a la alimentación y la auxiliar que acompaña al micro-
controlador (cristal y Reset). Lo que cambian son los periféricos a controlar y que se conec-
tan con las patitas de E/S. Para ellos se destina el área agujereada.
En la Figura 10.6 se muestra una fotografía de la tarjeta de prototipos PIC18-ME de Inge-
niería de Microsistemas Programados, S. L., que es la que hemos usado en la implementación
de los ejercicios presentados en este libro. Está montada sobre un pupitre de metacrilato que
también contiene el MicroTIC Trainer y un transformador de alimentación, configurando
una utilísima herramienta de laboratorio.
Es una herramienta cara pero muy potente, que permite realizar un seguimiento completo y rá-
pido de todas las fases de un proyecto. Con ella se reproduce el comportamiento del micro-
controlador, pero ahora al emplearse hardware y software se consigue una similitud total de las
146 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
funciones. Se trabaja en tiempo real y se pueden conectar los periféricos externos a controlar
para analizar los resultados de forma idéntica a la que se produciría si fuese el microcontrola-
dor emulado el que estuviese ejecutando el programa de la aplicación.
Presentamos algunos proyectos que hemos considerado suficientes para abrir la mente y esti-
mular la voluntad para que cualquier persona se decida a construir el primero.
HERRAMIENTAS Y DISEÑO DE PROYECTOS 147
148
HERRAMIENTAS Y DISEÑO DE PROYECTOS 149
segmentos. Las líneas RBO, RB I y RB2 se hallan conectadas a tres pulsadores para el ajuste de
horas, minutos y segundos. También RB 1 y RB2, junto con las 5 líneas de más peso de la Puer-
ta B, excitan a los segmentos de los displays.
Para que aprecie las ventajas de usar una tarjeta de prototipos hemos montado el reloj di-
gital sobre una placa de propósito general, que se muestra en la Figura 10.1 I . El enorme
150 MTCROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
tiempo que se malgasta en situar y conectar los componentes, los posibles exores de montaje,
el coste similar de ambas tarjetas y la mediocre presentación del prototipo no hacen recomen-dable utilizar este procedimiento.
Usando la tarjeta de prototipos PIC18-ME se reducen al mínimo el tiempo y los fallos del
montaje. Las patitas de E/S del PIC están perfectamente señalizadas y accesibles, haciendo in-
mediata la conexión de los periféricos. El coste de la tarjeta PICIS-ME es similar a la de una
de propósito general del mismo acabado. Finalmente, la presentación tiene una imagen más
profesional y el riesgo de averías es nulo (Figura 10.12).
Otra ventaja de las tarjetas de prototipo es que pueden usarse para muchos diseños, ya que
finalizado uno de ellos pueden desoldarse los componentes. Con este fin es recomendable
montar los periféricos con rapinado.
En este proyecto el módulo principal consiste en conseguir un tiempo patrón de 1 segundo
que vaya incrementando el contador de segundos. Al alcanzar el valor de 60 se pondrá a cero
cl contador de segundos y se incrementará el de minutos. El de minutos pasará a cero al llegar
a 60 e incrementar las horas, y éstas pasarán a cero al llegar a 24. No hemos juzgado intere-
sante incluir el programa, pero si le interesa puede solicitarlo a Ingeniería de Microsistemas
Programados, S. L., que también comercializa el kit y el PIC16C54 grabado.
HERRAMIENTAS Y DISEÑO DE PROYECTOS 15 1
Se describe la construcción de un dado electrónico que simula las seis caras de los reales y que
también puede «tirarse» para sacar un número aleatorio del 0 al 6. Para la interpretación elec-
trónica usaremos un display de 7 segmentos sobre el que se visualizará el número de cada ti-
rada y, también, un pulsador que indique el momento de la tirada. En la Figura 10.13 se
muestra la fotografía de un kit comercial basado en el PIC16C54, que implementa esta apli-
cación sobre una cajita de baquelita que contiene la pila de 9 V que precisa su alimentación.
Hay infinidad de juegos que están esperando su aportación para que se jueguen más, sean
más atractivos y hagan disfrutar más a la gente. Las quinielas, la lotería primitiva, la bonolo-
Este sencillo proyecto va a permitir manejar tiempo y usar la memoria de datos EEPROM. Se
trata de un semáforo corriente con tres luces (roja, verde y ámbar), que están simuladas por tres
diodos led de dichos colores. La luz ámbar se enciende durante un segundo en la transición
de las otras dos (véase Figura 10.17).
Mediante tres pulsadores, conectados a las tres líneas de menos peso de la Puerta A, se re-
gula el tiempo que estarán encendidas las luces roja y verde.
RAO: Cuando introduce un nivel lógico alto el sistema funciona en modo AJUSTE
y se pueden modificar los tiempos de las luces. Si introduce un nivel bajo, funciona en modo
NORMAL.
RAI: Con nivel alto regula el tiempo de la luz roja y con nivel bajo el de la verde.
Interruptor
se decrementa.
15 4 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Las 8 líneas de la Puerta B se conectan a 8 diodos led integrados en una barra que tienen la
misión de visualizar el número de segundos, de 1 a 8, que está encendida la luz. bajo prueba
establecida para el encendido de las luces roja y verde se registra en posiciones
de datos EEPROM para no realizar una nueva reprogramación cuando se des-
mentación.
SENTADOR DE MENSAJES
VE DE ACCESO
proyecto se describe una aplicación que emplea a los dos periféricos más clási-
rol de los microcontroladores: teclado y pantalla LCD.
156 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
HERRAMIENTAS Y DISEÑO DE PROYECTOS 157
Para controlar el acceso a un recinto se debe pulsar sobre el teclado la tecla A seguida de
otras cuatro con diferentes dígitos, que constituyen la clave. Si la clave es correcta se activa du-
rante un segundo un relé, conectado a la línea RAd, que abre la puerta.
Se dan tres oportunidades para introducir la clave correcta. Además, se utiliza un zumbador
piezoeléctrico que genera un sonido «beep» tras la pulsación de cada tecla.
Con la tecla C se puede cambiar la clave y la pantalla LCD genera una serie de mensájes
durante la operación. La clave queda registrada en la memoria EEPROM de datos de forma
permanente.
La Figura 1021 muestra la disposición de los periféricos sobre la tarjeta PIC I S-ME y la Fi-
gura 10.22 ofrece el esquema de conexionado de los mismos con el PIC.
El programa de la clave se ha incluido en el CD.
158 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
12.1. PRESENTACIÓN
Nuestra experiencia profesional nos ha impulsado a seleccionar una herramienta que nos ha
proporcionado excelentes resultados didácticos y técnicos en el desarrollo de proyectos reales
basados en microcontrolador. Se trata del laboratorio «Universal Trainer», de Ingeniería de
Microsistemas Programados, S. L., que dispone de la instrumentación básica para la imple-
mentación de diseños electrónicos (fuentes de alimentación, generadores de funciones, etc.) así
como todo tipo de periféricos habituales en las aplicaciones industriales (interruptores, leds,
displays de 7 segmentos, zumbadores, potenciómetros, etc.) y una amplia placa protoboard para
conexionar todos los elementos sin necesidad de soldadura.
Junto a dicho laboratorio el fabricante ha desarrollado 7 módulos de aplicación desde la
Electrónica Digital y los Semiconductores hasta los microcontroladores, pasando por la Electró-
nica Analógica y los dispositivos lógicos programables PLD. Para el trabajo con microcontrola-
dores existen tres módulos, uno de los cuales está destinado a trabajar con los PIC desde los dis-
positivos de Parallax y el lenguaje PBASIC, mientras que los otros dos se orientan a trabajar con
el lenguaje Ensamblador sobre el PIC 16F84 o sobre los PIC más avanzados. Hemos escogido
algunas de las aplicaciones contenidas en el módulo PIC1 destinadas a trabajar en Ensamblador
con el PIC16F84 para iniciar en la implementación real de aplicaciones a nuestros lectores. Dicho
módulo consta de una colección de experiencias, una tarjeta para la grabación desde el PC del
y un conjunto de componentes auxiliares que conjuntamente con los existentes en el
Universal Trainer permiten llevar a cabo todas las prácticas. En el volumen 2 de la obra a todo co-
lor titulada Laboratorio de Prácticas de Microelectrónica, editada por McGraw-Hill, se recogen
todas las características y proyectos destinados a los módulos con microcontroladores y con PLD.
En el CD que acompaña a este libro se incluyen los programas fuente en Ensamblador de
los ejercicios que se comentan a continuación.
Describir las herramientas necesarias para desarrollar las prácticas propuestas en el presente
módulo de Microcontroladores 1, dedicadas al dispositivo PIC 16F84.
207
MICROCONTROLADORES «PIC>. DISEÑO PRÁCTICO DE APLICACIONES
Se han diseñado 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 dispo-
sitivo PIC16F84 y son capaces de soportar los dispositivos PIC16F873 y 161`876 de mayores
prestaciones. Mediante un sencillo sistema de conexión a base de una regleta de pinos, la tar-
jeta se inserta en el módulo board del entrenador Universal Trainer. Sobre este entrenador, se
realizan las conexiones eléctricas necesarias entre los distintos periféricos y las señales de
E/S del PIC en función de la aplicación a realizar. La tarjeta PROTO'PIC o la PROTO'PIC2 se
usan también en el Módulo PIC2.
La tarjeta PROTO'PIC
Es la más pequeña, sencilla y económica. Está pensada para aquellos usuarios que dispongan
de algún tipo de circuito grabador como puede ser el Micro'PIC Trainer o el Micro'PIC Pro-
El PIC 161`84 viene montado de serie, junto con el circuito oscilador a 4 MHz. Se ha pre-
visto un zócalo de 28 patillas para insertar y experimentar con los dispositivos PIC de 28 pati-
llas 16F873 y 161`876. De la misma forma, se incluye un cable ICSP (In Circuit Serial Pro
que que se conecta en el zócalo apropiado de cualquier grabador de los anteriormente
citados.
Mediante una hilera de 26 pinos quedan a disposición del usuario todas las líneas de E/S
del PIC, incluidas las de alimentación. De esta forma, la tarjeta se inserta sobre el módulo
board del entrenador Universal Trainer y de forma rápida y fácil se conectan los periféricos
deseados.
El PIC puede grabarse sin necesidad de retirar la tarjeta del circuito en el que se está expe-
rimentando. Cuando se acciona el conmutador S W l la tarjeta queda en el modo de PRO-
GRAMACIÓN. El PIC recibe información desde el PIC a través del grabador (Micro'PIC
LOS PRIMEROS DISEÑOS PRÁCTICOS 209
Trainer,
modo EJECUCIÓN. Todas las líneas de E/S del mismo están disponibles en la hilera de pines.
La Figura 12.2 muestra la serigrafía con la disposición de componentes de la tarjeta de
prototipos PROTO'PIC. Se puede apreciar claramente la distribución de las señales presentes
en la hilera de pines de conexión.
La tarjeta PROTO'PIC 2
La finalidad y manejo de esta tarjeta es similar a la anterior. Está diseñada para aquellos usua-
rios que no dispongan de ningún tipo de circuito para la grabación de dispositivos PIC. Dicho
circuito de grabación está incluido en la propia tarjeta lo que la hace totalmente autónoma y
funcional (véase Figura 12.3).
Se incluye el cable para la conexión con el canal paralelo de un PC a través del cual y, me-
diante el software de grabación adecuado, se procederá a la grabación del dispositivo PIC que
se vaya a emplear. La tarjeta incluye también los circuitos de alimentación y estabilización ne-
cesarios para obtener las tensiones de trabajo y grabación. Es necesario alimentarla desde un
transformador que suministre 12 VAC. Dicho transformador no está incluido en el kit.
21 0 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Son ficheros de tipo texto editados con cualquier procesador de textos. El EDIT es el procesa-
dor de textos integrado en el MS-DOS más extendido y fácil de emplear, cuya pantalla de tra-
bajo se muestra en la Figura 12.5. No obstante, cualquier otro procesador del entorno Windows
puede ser utilizado. La única condición es que los ficheros se guarden en formato ASCII. Se
recomienda usar los programas más actuales recogiéndolos de la página web de Microchip.
Los programas fuente se guardan en ficheros con extensión ASM y contienen las instruccio-
nes, directivas, etiquetas, mensajes, etc., con las cuales el PIC desarrollará una determinada
aplicación. Un programa fuente en sí mismo no puede ser grabado directamente sobre la me-
LOS PRIMEROS DISEÑOS PRÁCTICOS 21 1
moria de programa del PIC. Es necesaria una traducción previa de dicho programa fuente a có-
digo máquina o hexadecimal. Dicha traducción recibe el nombre de ensamblado.
En el CD de prácticas se proporcionan todos los programas fuente de los ejercicios pro-
puestos. De esta manera, el usuario evita la tediosa tarea de tener que teclearlos. A pesar de
todo, pueden ser editados para su modificación, impresión, etc.
El Ensamblador MPASM
Es el encargado de traducir las instrucciones del programa fuente en sus equivalentes en código
máquina para su posterior grabación sobre la memoria intena del PIC. En el CD de prácticas se
suministra el Ensamblador MPASM de Microchip en su versión MS-DOS. Este fabricante
ofrece, en su página web, constantes actualizaciones y mejoras. También contiene ensambla-
dores y entornos de trabajo para Windows, así como los respectivos manuales. Todo ello se
puede recoger desde la página http://www.microchip.com. L e recomendamos utilizar la última
versión disponible.
El MPASM se ejecuta desde MS-DOS tecleando MPASM desde la línea de comandos en el
directorio actual o indicando la ruta donde se encuentre. Aparece una pantalla de trabajo como
la mostrada en la Figura 12.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 idéntico nombre pero con ex-
tensiones diferentes:
21.2 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
El software de grabación
Mediante este software es posible proceder a la grabación del PIC con el fichero de código
máquina obtenido tras el ensamblado. Los usuarios que adquieran la tarjeta de prototipos
Progranuner (entre otros), y deben estar familiarizados con el correspondiente software de gra-
bación.
Por su parte, aquellos usuarios que hayan adquirido la tarjeta de prototipos PROTO'PIC 2
pueden utilizar el software PROTOPIC que se incluye en el CD de prácticas y que se explica
a continuación. La pantalla de trabajo se muestra en la Figura 12.7 y es muy similar al soft-
ware de grabación de Micro'PIC Trainer y Micro'PIC Programmer.
En la ventana «SELECCIÓN DE MODELO» se selecciona el tipo de PIC que se va a
emplear. Las características más relevantes del mismo se resumen en la ventana inferior
«MODELO ELEGIDO».
Mediante «COMPROBACIÓN DE BORRADO« se activa o no la posibilidad de compro-
bar si un PIC está borrado antes de proceder a su grabación.
Con la ventana «PALABRA DE CONFIGURACIÓN» se seleccionan las distintas modali-
dades posibles para configurar el PIC: proteger o no el código interno, activar o no el tempo-
rizador Watchdog (WDT), activar o no el temporizador de arranque (Power Timer), así como
seleccionar el tipo de oscilador.
La ventana superior representa el «BUFFER DE MEMORIA DE PROGRAMA» donde se
visualiza los códigos hex. que serán transferidos hacia o desde el PIC.
Los ocho botones de la parte inferior permiten realizar una serie de tareas típicas. «Abrir
Fichero» permite seleccionar de entre los ficheros ejecutables *.HEX, el que se desea grabar,
LOS PRIMEROS DISEÑOS PRÁCTICOS 213
transfiriéndose al buffer de memoria. «Programar Todo» graba sobre el PIC tanto el conte-
nido del buffer como la palabra de configuración actual. Por su parte, el botón «Programar
Palabra» sólo graba la palabra de configuración y no el buffer de memoria. El botón de «Ve-
rificar» comprueba si el contenido de la memoria de programa del PIC coincide con el del
buffer de memoria.
El botón «Leer Pic» lee el contenido de la memoria de programa de éste y lo visualiza en
el buffer. El botón «Borrar» borra completamente el contenido actual del PIC. La comproba-
ción de borrado se realiza mediante el botón «Comprobar Borrado». Finalmente, el botón
«Salir» termina la ejecución del software de grabación devolviendo el control al sistema ope-
rativo.
12.2.4.
Mediante este sencillo tutorial se pretende resumir de forma clara y concisa todos los pasos
que se deben llevar a cabo para realizar las prácticas propuestas.
grama correspondiente.
b) Conectar las alimentaciones tanto del Universal Trainer como del grabador (PRO-
12.3.1. Objetivos
Realizar un ejemplo, lo más sencillo posible, que permita analizar la forma de programar
las líneas de E/S de un PIC16F84, para el posterior control de los periféricos conectados a las
mismas.
El microcontrolador PIC 16F84 dispone de un total de 13 patillas o líneas de E/S a través de las
cuales se conectan los distintos periféricos que se desean gobernar.
Esas 13 líneas se agrupan en dos puertas. La puerta A está representada en la posición 0x05
del área de datos. Cualquier instrucción de un programa que implique leer o escribir sobre esta
posición, conlleva obtener o sacar información binaria por las cinco líneas que componen
dicha puerta y que se denominan RA0-RA4. Los tres bits de más peso de la posición 0x05 no
están reflejados en ninguna línea, por lo que no tienen ningún valor.
LOS PRIMEROS DISEÑOS PRÁCTICOS 21 5
Por su parte, la puerta B está representada en la posición 0x06 del área de datos. Al igual
que en el caso de la puerta A, cualquier operación de lectura o escritura sobre esta posición
permite obtener o sacar información binaria por las ocho líneas de que consta esta puerta y que
se denominan 11130-11137.
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.
Según el valor binario que se almacene en ellos se determinan si las líneas de las puertas A y
B actuarán como entradas o salidas. Un bit «0» en cualquier posición de cualquiera de estos
registros, configura la línea de la puerta correspondiente como salida, un bit « 1 » la configura
como entrada. Cualquiera de las líneas de ambas puertas pueden configurarse, por tanto, como
entrada o como salida de forma independiente.
La Figura 12.8 muestra el esquema de las conexiones a realizar entre el entrenador Universal
Trainer y la tarjeta PROTO'PIC o PROTO'PIC2.
Consiste en conectar cinco interruptores de entrada EO-E4 a las líneas RAO-RA4 y cinco Ieds
de salida SO-S4 a las líneas RBO-RB4 de la tarjeta PROTO'PIC. La alimentación de esta tarje-
realiza por los pines I y 3 (GND) y por el pin 2 (+5 Vcc). La fotografía de la Figura 12.9
muestra el montaje del circuito.
12.3.7.
En esta primera práctica, el trabajo personal consistirá en realizar los pasos necesarios para la
comprobación del funcionamiento del programa propuesto.
1. Una vez editado el programa fuente (está editado en el fichero EJER1.ASM incluido
en el CD de prácticas) se procederá a ensamblarlo. Para ello se utilizará el ensambla-
dor MPASM incluido también en dicho disco. Se obtiene así el programa ejecutable
3. Suponiendo que el montaje del esquema de la Figura 12.8 ya está realizado sobre el
Universal Trainer, se procede a verificar el correcto funcionamiento del programa.
Basta cambiar de estado los interruptores EO-E4 del entrenador para apreciar el mismo
cambio de estado en los leds SO-S4.
12.4.1. Objetivos
Realizar un programa que controle la salida en función de dos señales de entrada distintas.
Es muy frecuente tener que controlar una carga (motor, lámpara, etc.) desde dos puntos situa-
dos a cierta distancia entre ellos. Es el clásico caso de una habitación con una instalación
conmutada en la que una lámpara se gobierna desde dos interruptores colocados en posicio-
nes distantes entre sí. Desde cualquiera de ellos, se puede gobernar el encendido o apagado
de la lámpara.
21 8 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Inicialmente, cuando ambos interruptores están en reposo (a nivel «0») la lámpara perma-
nece apagada (a nivel «0»). A partir de esta situación, cada vez que cambie el estado de cual-
quiera de los interruptores, también cambiará el estado de la lámpara. La tabla de la verdad
mostrada muestra los diferentes estados lógicos del sistema a realizar.
Se muestra en la Figura 12.11. Se aprecia cómo dos interruptores de entrada se conectan con
las líneas RAO y RA1. La salida a la lámpara se simula mediante un diodo del conectado en S0.
pectivamente. La salida RBO se conecta con el led S0 que simula la Iámpara a gobernar.
Como novedad, en esta práctica se propone el empleo del WDT. Se trata de un tempori-
zador que está incluido en todos los modelos de dispositivos PIC. Su misión consiste en pro-
vocar 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.
LOS PRIMEROS DISEÑOS PRÁCTICOS 22 1
12.5.7.
Se propone realizar un programa que, en función de las combinaciones presentes en las entra-
das RAO, RA 1 y RA2, gobierne las salidas RBO, RB 1, RB2 y RB3 de acuerdo a la tabla de la
verdad mostrada en la página siguiente.
LOS PRIMEROS DISEÑOS PRÁCTICOS 22 3
12.6.1. Objetivos
Se pretende resolver un automatismo de tipo secuencial en el que la salida no depende del es-
tado actual de las entradas, sino también del estado anterior de éstas.
Efectivamente, en ocasiones el control de una o varias salidas no depende del estado lógico
actual de las entradas, también depende de la secuencia de estados lógicos 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 alanna 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 posición de reposo y se desactive. Si ambos pulsadores permane-
cen activados simultáneamente, la alarma permanecerá desactivada.
Realmente el ejemplo propuesto responde al funcionamiento de un flip-flop tipo R-S asín-
crono cuya tabla de la verdad se muestra:
RAO y RA 1. La señal de salida RBO se conecta con el zumbador del entrenador a modo de
alarma sonora.
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 E l 1, la salida se desconecta y permanece en estado aun cuando E l 1
deje de accionarse.
Finalmente, si se pulsan ambos pulsadores simultáneamente, la salida queda desconectada.
Al soltarlos, el estado de la salida dependerá del último pulsador que se dejó de accionar.
Se muestra en la fotografía de la Figura 12.21. Se recuerda una vez más la necesidad de ali-
mentar correctamente la tarjeta de prototipos PROTO'PIC.
l uces en el que las salidas se van activando secuencialmente una tras otra durante un intervalo
de tiempo de 0,1" controlado por el TMRO, dando una sensación de movimiento. El timer evo-luciona cada 1 microseg. dado que la frecuencia de trabajo es de 4 MHz. Se ha seleccionado un pre-
escaler de 256 y el valor que se carga el TMRO es de 195. La temporización así obtenida es
de 49,9 ms. Como esto no es suficiente, dicha temporización se manda repetir dos veces, con
lo que el tiempo final transcurrido es de 99,9 ms (0,1 ").
La activación secuencia) de las salidas se realiza mediante la instrucción de rotación de
derecha a izquierda del valor binario inicial 00000001.
LOS PRIMEROS DISEÑOS PRÁCTICOS 22 9
Estudiar el funcionamiento y el manejo del preescaler mediante un ejemplo que permite mo-
dificar el valor del mismo con objeto de realizar temporizaciones variables.
Es muy similar al ejemplo de la práctica anterior. En esta ocasión el valor del preescaler
no es fijo, viene determinado por el estado lógico de los interruptores EO-E2 de entrada.
dicho estado, se selecciona uno de los ocho posibles factores de división. Cuando están a 000,
se selecciona el factor 1:2, que corresponderá con la temporización más corta. Cuando están a
111, se selecciona el factor 1:256, que se corresponderá con la temporización más larga.
232
EL TMR0, se carga para contar 50 eventos de 1microseg.. Esta cuenta se repite 200 veces, lo que
da un lapsus de 10 ms. Si el preescaler elegido es de 1:2, la temporización mínima será de 20 ms.
Con un preescaler de 1:256, dicha temporización aumenta hasta 2,56"".
El efecto que estas variaciones producirán sobre las salidas estará relacionado con la velo-
cidad a la que se van encendiendo secuencialmente cada una de las luces.
Al igual que en la práctica anterior, se sugiere hacer las modificaciones de programa ne-
cesarias para variar los tiempos así como las secuencias de encendido de las lámparas de
salida.
Explicar el funcionamiento y manejo del temporizador WDT así como sus posibles aplicacio-
nes. Igualmente se emplea la instrucción SLEEP como método para colocar el PIC en el modo
«standby» de bajo consumo.
12.10.1. Objetivos
Analizar otro modo de funcionamiento del TMR0, que consiste en la posibilidad de contar
eventos o pulsos externos.
El ejemplo emplea una vez más al WDT como temporizador auxiliar. Efectivamente, el
programa queda en standby tras ejecutar la instrucción SLEER El desbordamiento del WDT se
producirá aproximadamente al de 2" dado que se le asignó un preescaler de 128 (0,0182 x 1 28).
Cuando esto ocurre, se reanuda la ejecución del programa habilitando nuevamente el genera-
dor lógico (RB 1 = 1) y desconectando el led S0 (RB0 = 0).
238 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Ensamblar el programa fuente y grabarlo sobre el dispositivo PIC. Se recuerda que el WDT
debe quedar activado, de lo contrario el led SO quedará activado permanentemente al no fina-
lizar nunca la situación de «standby» producida por la instrucción SLEER
Comprobar igualmente que, variando el valor binario de los interruptores EO-E3 de entrada,
se varía el número de pulsos a contar.
12.11.1. Objetivos
Enseñar el concepto de las interrupciones y manejar la interrupción que puede producir el
TMRO cada vez que desborde y alcance el valor 0.
Para hacer una demostración del funcionamiento de la interrupción del TMRO, se propone
montar el circuito representado en la Figura 12.32.
LOS PRIMEROS DISEÑOS PRÁCTICOS 239
Interrupción externa aplicada por la patilla RBO/INT. Se habilita mediante el bit INTE del
registro INTCON y cuando se produce queda reflejada en el bit INFT del mismo registro.
Mediante el bit INTEDG del registro OPTION se puede seleccionar el tipo de flanco ac-
tivo (ascendente o descedente) que se debe aplicar por la entrada RBO.
Interrupción por cambio de estado en las entradas RB4-RB7. Se habilita mediante el bit
RBIE del registro INCTCON. Cuando en cualquiera de las entradas RB4-RB7 se produce
un cambio de estado lógico respecto al último valor leído en las mismas, el flag RBIF del
registro INTCON refleja dicho suceso. Para reponer esta interrupción es necesario leer el
puerto B de entrada y registrar el nuevo valor de RB4-RB7 así como poner a 0 el bit RBIF.
Interrupción al finalizar el ciclo de escritura en la memoria EEPROM de datos. Se habi-
lita mediante el bit EEIE del registro INTCON y el bit EEIF del registro EECON 1 refle-
ja el suceso.
Los led S0 y S7 se conectan a las salidas RAO y RA1 respectivamente. Se activarán duran-
te un cierto tiempo cada vez que se provoque la interrupción correspondiente.
El fichero PRACT l O.ASM del CD de prácticas contiene el programa fuente al que responde el
organigrama de trabajo en la Figura 12.37.
Se trata de demostrar el funcionamiento y manejo de la interrupción externa INTF y la de
por cambio de estado en RB4-RB7. Cuando se produce una de las dos, se activa RAO (el led
S0) y RAl (led S7) respectivamente.
LOS PRIMEROS DISEÑOS PRÁCTICOS 24 3
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 interrupción. El pro-
grama de tratamiento analiza la fuente de interrupción y realiza los tratamientos oportunos. En
caso de producirse la interrupción externa por RBO/INT se activa el led conectado a RAO. Si
se produce la interrupción por el cambio de estado de cualquiera de las líneas RB4-RB7 conec-
tadas a sendos interruptores, se procede a activar el led conectado a RA1.
Ambos led se desactivan tras una temporización de 1 segundo controlada por el TMRO.
Éste, con un preescaler de 256 y con un valor de 195, genera una temporización de 50 ms que
se repite tantas veces como indique la variable Temp (20).
Finalizada la temporización, ambas salidas se desconectan. Se reponen los correspondien-
tes flags de interrupción y se retorna al programa principal que coloca nuevamente al PIC en el
modo standby.
Merece la pena comentar que la reposición de las interrupciones se realiza tras la tempori-
zación. De esta forma se evitan posibles falsas interrupciones provocadas por los rebotes típi-
cos de los interruptores del entrenador.
12.12.7.
PIC 16F84. La razón de esta elección es que sobre su memoria de instrucciones se pueden
grabar y borrar los programas. Ambos modelos de microcontroladores son idénticos, excepto
en los siguientes detalles:
CARACTERÍSTICAS GENERALES
245
246 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
DIAGRAMA DE CONEXIONES
La distribución y denominación de las patitas del PIC16X84 se presenta en la Figura A.1
MEMORIA DE PROGRAMA
Tiene implementadas 1 K palabras de 14 bits cada una, ocupando las direcciones comprendi-
das entre la 0x0000 y la 0x03FF. Los modelos de la gama media alcanzan 8 K de capacidad
máxima (véase Figura A.2).
APÉNDICE A - GULA RÁPIDA DEL PIC16X84 247
Las posiciones ID de Identificación sirven para que el usuario grabe en sus cuatro bits de
menos peso los códigos que desee.
La Palabra de Configuración sólo tiene 5 bits válidos y sus símbolos y misiones se mues-
tran en la Figura A.3.
Consta de dos bancos de 128 bytes cada uno. En el PIC 16C84 sólo están implementadas las 48
primeras direcciones de cada banco. En las 12 primeras se ubican los registros de propósito es-
pecífico (SFR) y en las 36 siguientes los registros de propósito general (GPR). Sin embargo,
los 36 registros de propósito general del Banco 1 se mapean sobre el Banco 0, dejando redu-
cidos a 36 registros operativos de este tipo. En el PIC16F84 la organización de la RAM es
248 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
similar, pero los registros de propósito general son 68 en cada banco, siendo efectivos sólo
68, puesto que los del Banco 1 se mapean sobre el Banco 0 (véase Figura A.4).
PUERTAS DE E/S
Hay dos puertas de E/S: Puerta A y Puerta B.
Puerta A
Puerta B
APÉNDICE A - GUÍA RÁPIDA DEL PIC16X84 249
250 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
REGISTROS DE CONTROL
En las Figuras A.5 a la A.9 se expone gráficamente la distribución y la misión de los bits de los
registros de control (SFR) más importantes, que son:
APÉNDICE A - GUÍA RÁPIDA DEL PIC 16X84 251
252 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
APÉNDICE A - GUÍA RÁPIDA DEL PIC 16X84 253
JUEGO DE INSTRUCCIONES
En la Figura A.10 se ofrece el conjunto de las 35 instrucciones que componen el repertorio del
PIC 16X84.
254 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
PRESENTACIÓN
El SIM2000 es un programa de simulación del PIC16F84 y del sistema de desarrollo Mi-
cro'PIC Trainer, desarrollado por Pablo Martínez García y Francisco José Hernández Villa-
lón, dirigidos por el profesor Manuel Sánchez Alonso en la Escuela de Ingeniería Industrial
de Cartagena. Está dirigido a quienes se inician en el diseño y programación de aplicaciones
con los microcontroladores PIC y en especial con el PIC16F84. Posee excelentes herramien-
tas para la depuración y seguimiento de los programas lo que le confiere un valor didáctico
excepcional.
En el CD que acompaña a este libro se incluye una versión del mismo, pero los autores
continuamente la actualizan y la potencian, por lo que es recomendable recogerla libremente
de Internet en la dirección www.simupic.co m . Allí también se pueden encontrar numerosas
ayudas y atención técnica.
El entorno de programación del SIM2000 es propio y desde él se puede invocar directa-
mente al compilador MPSAM y se pueden corregir errores sobre el mismo código que se uti-
lizó inicialmente.
Dispone de un Editor que mantiene la estructura general de las aplicaciones desarrolladas
en el entorno Windows. Al cargar la aplicación el editor posee un Explorador de Proyectos
que muestra todas las unidades del PC en el que se ejecuta el programa. Además el editor dis-
tingue claramente entre las instrucciones y los operandos con distintos colores.
Un factor atrayente de este software es el Sistema de Ayuda en Línea, que proporciona
una extraordinaria información al usuario cuando se halla en la fase de desarrollo del pro-
grama.
También es novedosa la forma de gestionar los errores por la comodidad que supone al
usuario no tener que consultar el archivo "<Nombre de_programa>.ERR, pues el editor saca
una ventana con el listado de todas las incidencias generadas en el ensamblado.
El entorno de simulación del SIM2000 es uno de los más completos y atractivos de los
existentes en el mercado, pues muestra la mayor cantidad de información posible durante el
tiempo de simulación. De forma permanente se visualizan registros muy concretos: Banco ac-
tual de memoria en donde se encuentra el programa, Asignación del Divisor de Frecuencia y
Valores de la Palabra de Configuración.
255
256 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
25 7
25 8 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
LA FUENTE DE ALIMENTACIÓN
EL MICROCONTROLADOR
El sistema microPIC Trainer está diseñado para trabajar con cualquier modelo de microcontrolador
PIC de la gama media encapsulado con 18 o 28 patitas. Ésta es la razón de la existencia de dos
zócalos para soportar ambos tipos.
Según el esquema de la Figura C. l , las diferencias básicas entre los modelos de 18 y 28 pa-
titas consiste en que los primeros disponen de una puerta A de 5 líneas (RA0-RA4) y una
26 0 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
puerta B de 8 (RB0-RB7), mientras que los segundos disponen de una puerta A de 6 líneas
En pPIC Uainer se emplean las 5 líneas de la puerta A y las 8 de la puerta B, que son co-
munes a los dos modelos de PIC. En cualquier caso, las líneas de estas puertas, junto con las
de la puerta C, están disponibles para el usuario a través del conector PIC-BUS de expansión.
La frecuencia de trabajo para cualquiera de los dos tipos de PIC queda establecida median-
te el cristal de cuarzo X1 y los condensadores C6 y C7. Esta es, por defecto, de 4 MHz, aunque
el usuario puede modificarla cambiando los valores del cristal y los condensadores según las
características técnicas del modelo de PIC elegido.
ENTRADAS DIGITALES
Están formadas por 5 interruptores (SW2-SW6) conectados a las líneas RAO-RA4 de la puer-
ta A, capaces de introducir niveles lógicos «1» y «0» por las mismas. Dichas líneas pueden
programarse para actuar de diferentes formas. Así, RAO-RA3 puede actuar, además, como en-
tradas analógicas y RA4 como entrada exterior de pulsos de reloj para el TMRO (TOCKI).
Estas líneas tienen asociados unos jumpers con los que se selecciona el tipo de entrada que
se les va a aplicar. Los jumpers J8(0)-J8(3) seleccionan individualmente si por RAO-RA3 se
van a introducir entradas digitales con los interruptores SW2-SW5, entradas analógicas con
los potenciómetros P2-P5 o, simplemente, si estas líneas van a quedar desconectadas tanto de
los interruptores como de los potenciómetros y poder así usarse con otros periféricos distintos.
Con el jumper J9 se selecciona si RA4 actúa como entrada digital procedente del interrup-
tor SW6, entrada de señal de reloj para el TMRO (TOCKI), que se aplica desde el exterior me-
diante el conector J2(1), o simplemente, si esta línea va a quedar desconectada y libre, poder
usarla con otro periférico distinto.
ENTRADAS ANALÓGICAS
Están formadas por 4 resistencias variables o potenciómetros (P2-P5), que se alimentan con
la tensión general de +5 V. Según se mueva el eje de cualquiera de estos potenciómetros, se ob-
tiene una tensión variable entre 0 y 5 V por los terminales centrales (cursores) de los mismos.
La tensión variable presente en cualquiera de los 4 cursores de los potenciómetros P2-P5
va a parar a los jumpers J8(0)-J8(3), respectivamente. Si cualquiera de ellos está en la posición
«analógico», la línea correspondiente (RAO-RA3) recibirá dicha tensión para su posterior pro-
cesamiento.
Conviene recordar que aunque a nivel de hardware una o más líneas se configuren como
entradas analógicas o digitales mediante los jumpers J8(0)-J8(3), el sofware de control del PIC
debe ir acorde con las mismas, programando adecuadamente las características de dichas lí-
neas de entrada.
SALIDAS DIGITALES
Están conectadas a la puerta B y consisten, por una parte, en una barra de diodos leds lumino-
sos (D8) que representan el estado lógico de las señales RBO-RB7, y por otra, un display alfa-
numérico de 7 segmentos.
APÉNDICE C - BREVE DESCRIPCIÓN DEL « MICRO'PIC TRAINER» 261
EL MÓDULO LCD
Se trata de un módulo de visualización alfanumérico de cristal líquido, capaz de presentar 21í-
EL CIRCUITO GRABADOR
APÉNDICE C - BREVE DESCRIPCIÓN DEL «MICRO'PIC TRAINER» 263
EL CONECTOR DE EXPANSIÓN
265
A continuación se describe el contenido del CD que acompaña a este libro y que se divide en
dos secciones: Ejercicios y Software.
273
274 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
Práctica 3
Según el estado de los interruptores RAO y RA l, activar los leds RBO-RB7 co-
nectados a la puerta B, conforme a la siguiente tabla de la verdad:
CONTENIDO DEL CD 275
Práctica 4
Práctica 5
Práctica 6
Práctica 7
Práctica 8
276 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
SOFTWA RE
MPLAB
El MPLAB es un entorno de desarrollo integrado que le permite escribir y codificar los mi-
crocontroladores PIC de Microchip para ejecutarlos. El MPLAB incluye un editor de texto,
funciones para el manejo de proyectos, un simulador interno y una variedad de herramientas
CONTENIDO DEL CD 277
que lo ayudarán a mantener y ejecutar su aplicación. También provee una interfase de usuario
para todos los productos de Microchip, programadores de dispositivos, sistemas emuladores y
herramientas de tercer orden. Es un software gratuito y puede descargarse libremente la última
versión desde la página oficial de Microchip http://www.microchip.com.
alumnos de la UPCT, y dirigido por Manuel Sánchez Alonso. Se desarrolló como alternativa
a los entornos de programación y simulación existentes en la actualidad para microcontrola-
dores PIC161784. Incorpora una opción de simulación con la placa Micro'PIC Trainer que
permite simular los programas en dicha placa a través del entorno del programa, como si tu-
viéramos la placa delante nuestro.
MPASM
Es el ensamblador oficial de Microchip, soporta todos los modelos de PIC existentes en el
mercado y existe en versión MS-DOS (MPASM.EXE) o en versión Windows (MPASM-
WIN.EXE). Es un software gratuito y puede descargarse libremente la última versión desde
la página oficial de Microchip http://www.microchip.com. E l MPASM no necesita instala-
ción, es suficiente con copiar todos los archivos contenidos en su carpeta al disco duro o eje-
cutarlo directamente desde el CD.
WINPICME-TR
Software de conexión al PC para el sistema de desarrollo Micro'PIC Trainer. Actualmente
sólo soporta el microcontrolador PIC16F84, pero periódicamente se le irán añadiendo nuevos
modelos. No necesita instalación, funciona bajo los sistemas operativos Windows 95, 98,
Me, NT, 2000 y XP. Es un software libre que puede ser descargado desde la página http://
www.microcontroladores.com.
STAMP EDITOR
El PBASIC Stamp EDITOR permite comunicar el PC con un módulo BASIC STAMP2 y gra-
bar su memoria miles de veces. Además contiene un cómodo editor para introducir el progra-
ma que posteriormente será ejecutado por el BASIC STAMP2 y un sencillo depurador. Exis-
ten versiones Windows y MS-DOS, esta última no necesita ser instalada aunque cuenta con
menos opciones que la anterior. Últimamente Parallax ha desarrollado una nueva versión del
STAMP EDITOR, que puede recogerse libremente en el sitio de Internet www.parallaxinc.co m
ó www.parallax.com.
LIBROS
REVISTAS
EMPRESAS
353
354 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES
INTERNET
ÍNDICE 355
356 MICROCONTROLADORES «PIC». DISEÑO PRÁCTICO DE APLICACIONES...
ÍNDICE 357
RAM, 8
RBPU#, 251 TOCS, 98
Reinicialización, 75 TOCKI, 98
Registro TOSE, 98
ESTADO, 93 Teclado, 157
FSR, 91 Temporizador, 95
INTCON, 112
Time Out, 93
OPTION, 98
TMRO, 95
PCH, 85
W, 82 Ultravioleta (rayos), 7
Repertorio de instrucciones, 125 Universal Trainer, 52
Reposo, 123
RISC, 125
R. F. SOLUTIONS, 11, 147 Vector
ROM, 6 de Reinicialización, 119
SAGITRON, 353 de Interrupción, 111
Segmentación, 72 Ventanas, 159, 164
Semáforo, 153
Señalizador, 93
de acarreo, 93 Zumbador, 56