Está en la página 1de 99

PROGRAMACIÓN Y APLICACIONES DE LOS

MICROCONTROLADORES PIC
MICROCHIP TECHNOLOGY

Marco Antonio Gómez Ponce


Jorge Alfredo Mateos Maestro
José Luis Medina Alatorre
Ingeniería en Comunicaciones y Electrónica.

* * * * * * UNIVERSIDAD DE GUADALAJARA * * * * * *
CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍA
1998

2
CONTENIDO

Introducción..................................................................................................................... 5
Capitulo 1........................................................................................................................ 7
Controlador y Microcontrolador
Controlador Incrustado
Aplicaciones
Recursos Comunes a todos los microcontroladores
Arquitectura básica
El procesador o CPU
Memoria
Puertos de Entrada y Salida
Reloj Principal
Recursos especiales
Temporizadores o Timers
Perro guardián o Watchdog
Protección ante el fallo de alimentación o Brownout
Estado de reposo o bajo consumo
Convertidor A/D
Convertidor D/A
Comparador Analógico
Modulo de anchura de pulsos o PWM
Puertos de E/S digitales
Puertos de comunicación
Lenguajes de programación
Herramientas para el desarrollo de aplicaciones
El mercado mundial
Fabricantes

Capitulo 2........................................................................................................................ 22
Introducción
El reloj y el ciclo de instrucción
Descripción de la arquitectura básica
Palabras de configuración e identificación
Registro de Estado
Encapsulado y diagramas de patitas
Reset

Capitulo 3........................................................................................................................ 34
Características generales
Diferencias entre los repertorios de la gama baja y media
Definiciones y abreviaturas
Descripción y clasificación de las instrucciones de la gama baja
Instrucciones de transferencia
Instrucciones aritméticas
Instrucciones lógicas
Instrucciones de puesta a cero
Instrucciones de salto

3
Instrucciones para la manipulación de bits
Instrucciones especiales
Descripción detallada por orden alfabético
Instrucciones de la gama media
Compatibilidad y conversión de código

Capitulo 4........................................................................................................................ 53
Aportaciones de la gama alta
Arquitectura abierta
Diagrama de conexionado
Organización de la memoria
Memoria de Programa
Memoria de Datos
Periféricos
Puertos de E/S
Temporizadores
Modulo PWM
Modulo de Captura
Interfaz de comunicaciones serie
Repertorio de instrucciones
Microcontroladores nuevos y especiales
Microcontroladores PIC12C5XX
Microcontroladores PIC16C92X para control de LCD

Capitulo 5........................................................................................................................ 75
Sistema de desarrollo
Código maquina y Ensamblador
Emulación
Simulador
Simuladores híbridos
Depurador
Emulador “in-circuit”
Edición de programas
Escritura del código fuente
Campo de etiquetas
Campo de instrucciones
Campo de datos
Campo de comentarios
Convenciones en la escritura del código fuente

Capitulo 6........................................................................................................................ 82
Introducción
Instalación
Utilizando la interfaz presentada en pantalla
Tareas básicas de usuario
Tareas de soporte

4
Descripciones

Capitulo 7........................................................................................................................ 91
La necesidad de DriveWay
¿Qué es DriveWay?
Orientado a objetos
La operación de DriveWay es clara, fácil y sencilla
DriveWay cubre todas las aplicaciones de los periféricos
Portabilidad del hardware
DriveWay prepara funciones de prueba por ti
Código de usuario de DriveWay
Cuadros de dialogo de los conjuntos de parámetros de DriveWay
Objetos Emulados
Hojas de especificaciones interactivas (IDS)
Procesos de desarrollo asistido de DriveWay
La aplicación de DriveWay
Operación de DriveWay
Diseño de DriveWay
Contenido del paquete DriveWay
Requerimientos del sistema
Términos de DriveWay
Salida de DriveWay

Capitulo 8...................................................................................................................... 97

Bibliografía.

5
INTRODUCCIÓN

Esta obra tiene como objetivo fundamental: introducir y explicar los conceptos
fundamentales de la familia de microcontroladores PIC de Microchip. Esta diseñada para
poder se utilizada de diferentes formas: como libro de texto, libro complementario,
manual para elaborar programas para microcontroladores o bien como libro de
introducción a la teoría y manejo de los microcontroladores. El seguimiento del libro no
requiere ningún conocimiento previo sobre el manejo de algún microcontrolador
especifico, aunque si se utiliza como manual para programación puede complementarse
con algunos otros libros referentes a la utilización de los microcontroladores, como es el
caso de las hojas de datos o bibliografía relativa a la implementación de algoritmos o las
herramientas de desarrollo o emulación-simulación de programas.

Empleando esta obra como texto para cursos de microcontroladores cubre los
programas clásicos de asignaturas tales como introducción, funciones y arquitectura,
entre otros, en niveles de formación profesional. Como libro complementario o manual,
puede ser utilizado en cursos de Sistemas Digitales, Memorias, Microprocesadores y/o
Microcontroladores en escuelas técnicas de ingeniería, facultades y escuelas de
informática.

Esta obra esta estructurada en 8 capítulos que abarcan los conceptos básicos sobre
microcontroladores, desde la introducción a la familia de microcontroladores PIC,
descripción y arquitectura, hasta el desarrollo y creación de un programa para los
mismos. Todos los capítulos se encuentran descritos en forma clara y sencilla,
adicionado con comentarios para su mayor comprensión.

Comúnmente, la mayoría de las aplicaciones de control incrustado están diseñados


alrededor de un microcontrolador el cual integra en un solo chip la memoria de programa,
la memoria de datos, varias funciones periféricas, así como temporizadores y
comunicación serial. Adicionalmente estos sistemas requieren usualmente memorias
seriales complementarias EPROM, displays, teclados y elementos indicadores.

Microchip Technology se ha establecido a si mismo como un líder en el suministro de


soluciones de un campo de elementos de control incrustado. La combinación del alto
rendimiento de los microcontroladores a partir de las familias PIC12CXXX, PIC16C5X,
PIC16CXXX y PIC17CXXX además de los productos de memorias no volátiles, ha
proporcionado las bases para este liderazgo.

Los microcontroladores de Microchip combinan el alto rendimiento y un bajo costo en un


empaque pequeño; ofreciendo la mejor relación precio/rendimiento de la industria, mas
de 100 millones de estos productos se distribuyen cada año para satisfacer los
consumibles, periféricos de computadoras, automatización, sistemas de control
automotriz, aplicaciones en seguridad y telecomunicaciones.

Microchip ofrece cuatro familias de microcontroladores de 8 bits para ajustarse mejor a


sus necesidades, PIC12CXXX de 8 pines, PIC16C5X de palabra de programa de 12 bits,
PIC16CXXX de palabra de programa de 14 bits y PIC17CXXX de palabra de programa
de 16 bits.

6
Todas las familias ofrecen programación de un tiempo (OTP), opciones de bajo voltaje y
baja potencia así como varias opciones de empaquetado. Miembros seleccionados están
disponibles en versiones de ROM y EPROM reprogramable.

Las familias PIC16C5X, PIC16CXXX y PIC17CXXX aceptadas ampliamente son los


únicos microcontroladores de 8 bits en la industria que usan una arquitectura RISC de
alta velocidad. Hoy en día estas familias están unidas con la primera familia de
microcontroladores de 8 pines el PIC12CXXX. El PIC12CXXX combina la arquitectura
RISC de alta velocidad de las familias PIC16/17. Microchip fue pionero en el uso de
arquitectura RISC para obtener alta velocidad y eficiencia en instrucciones.

7
1. PRINCIPIOS, CARACTERISTICAS Y APLICACIONES
GENERALES

1-1 CONTROLADOR Y MICROCONTROLADOR

Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o


varios procesos. Por ejemplo, el controlador que regula el funcionamiento de un horno
dispone de un sensor que mide constantemente su temperatura interna y, cuando
traspasa los limites prefijados, genera las señales adecuadas que accionan los efectores
que intentan llevar el valor de la temperatura dentro del rango estipulado.

Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su


implementación física ha variado frecuentemente. Hace tres décadas, los controladores
se construían exclusivamente con componentes de lógica discreta; posteriormente se
emplearon los microprocesadores, que se rodeaban de chip de memoria y E/S sobre una
tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han
podido incluir en un chip, el cual recibe el nombre de microcontrolador. Realmente
consiste en un sencillo pero completo computador contenido en el corazón (chip) de un
circuito integrado. Figura 1-1.

Figura1-1. Microcontroladores PIC de Microchip.

Un microcontrolador es un circuito integrado de alta escala de integración que incorpora


la mayor parte de los elementos que configuran un controlador. Se dice que es “la
solución en un chip” porque su reducido tamaño minimiza el numero de componentes y
coste.

Un microcontrolador dispone normalmente de los siguientes componentes:

Procesador o CPU (Unidad Central de Proceso)


Memoria RAM para contener los datos
Memoria para el programa tipo ROM/PROM/EPROM
Líneas de E/S para comunicarse con el exterior
Diversos módulos para el control de periféricos (Temporizadores, Puertos Serie y
Paralelo, CAD, CDA, etc.)
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema

8
Según el modelo de microcontrolador que se trate, el tamaño y el tipo de memoria
pueden diferir, así como el numero de líneas de E/S y los módulos de control de
periféricos. La diversificación de modelos permite seleccionar el mas adecuado según la
aplicación que se trate. Una estructura interna fija supone una limitación, que se
convierte en una ventaja en el caso de que en un simple circuito integrado residan todos
los componentes que necesita el controlador.

Los productos que para su regulación incorporan un microcontrolador disponen de las


siguientes ventajas:

1ª. AUMENTO DE PRESTACIONES

Por ejemplo, incorporar un microcontrolador en la gestión del motor de un vehículo


representa una considerable mejora en su funcionamiento del mismo. No solo se
incrementa la potencia sino que, además, se reducen el consumo y las emisiones de
gases. Figura 1-2.

Figura 1-2. El universo de los sistemas de control incrustado.

2ª. AUMENTO DE LA FIABILIDAD

Al reemplazar el microcontrolador a un elevado numero de elementos, disminuye el


riesgo de averías y se precisan menos calibraciones.

3ª. REDUCCION DE TAMAÑO EN EL PRODUCTO ACABADO

La integración del microcontrolador en un chip disminuye el volumen, la mano de obra y


los stocks.

4ª. MAYOR FLEXIBILIDAD

9
Dado que las características de control están programadas, su modificación solo precisa
cambios en el programa de las instrucciones. Esto supone una importante acomodación
a las circunstancias que rodean al producto final junto a una gran rapidez en la
implementación de posibles cambios.

1-2 CONTROLADOR INCRUSTADO

Una sencilla definición de controlador incrustado ("embedded controller") es "un


controlador dedicado a una sola tarea y, generalmente, incorporado en el mismo
producto al que gobierna". Es el caso de un teléfono móvil, el ratón de una computadora
o el mismo teclado. Los primeros controladores incrustados comenzaron a emplearse en
los años 60, dentro de la misión Apollo destinada a explorar la Luna. Durante el recorrido
de la nave alrededor de la Luna, existían zonas de órbitas en que se quedaba
incomunicada con los computadores de la Tierra, siendo los controladores incrustados
los responsables del gobierno de la nave. Cuando el controlador incrustado es un
microcontrolador, su pequeño tamaño y su reducido coste permiten incluirlo dentro de los
propios dispositivos a controlar, haciéndoles más inteligentes y fáciles de usar.

1-3 APLICACIONES

"La única limitación que tienen las aplicaciones de los microcontroladores actuales
está en la imaginación del diseñador".

Cada vez existen más productos que incorporan un microcontrolador con el fin de
aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su
fiabilidad y disminuir el consumo.

Según una encuesta de la empresa DataQuest, en la actualidad hay una media de 35


microcontroladores en cada hogar americano y se espera que dicha cifra alcance los 240
en el año 2000.

Los campos más destacados en los que so emplean microcontroladores son las
siguientes:

1. Periféricos y dispositivos auxiliares de los computadores.


2. Electrodomésticos,
3. Aparatos portátiles y de bolsillo ( Tarjetas, teléfonos, etc.)
4. Máquinas expendedoras y juguetería.
5. Instrumentación.
6. Industria de automoción.
7. Control industrial y Robótica.
8. Electromedicina.
9. Sistemas de navegación espacial
10. Sistemas de seguridad y alarma. Domótica en general
11. Termorregulación ( Calderas de calefacción, aire acondicionado, hornos mantas
eléctricas, etc.,),

10
Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo
determinado producidas en una semana. Este dato puede dar idea de la masiva
utilización de estos componentes.

Seleccionando el microcontrolador adecuado para cada caso, se optimizará el diseño y


se abaratarán los costes de hardware y software.

1-4 RECURSOS COMUNES A TODOS LOS MICROCONTROLADORES

Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y


sus características básicas son muy parecidas. Todos deben disponer de los bloques
esenciales: Procesador, memoria de datos y de instrucciones, líneas de E/S, oscilador
de reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta
enfatizar los recursos más idóneos para las aplicaciones a las que se destinan
preferentemente.

En este apartado se hace un recorrido de todos los recursos que se hallan en todos los
microcontroladores describiendo las diversas alternativas y opciones que pueden
encontrarse según el modelo seleccionado.

1-4-1 Arquitectura básica

Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de


von Neumann, en el momento presente se impone la arquitectura Harvard.

La arquitectura de von Neumann se caracteriza por disponer de una sola memoria


principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria
se accede a través de un sistema de buses único (direcciones, dalos y control). Figura 1-
3.

Figura 1-3. En la arquitectura de Von Neumann la memoria contiene indistintamente


datos e instrucciones.

La arquitectura Harvard dispone de dos memorias independientes: una, que contiene


sólo instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de
buses de acceso y es posible realizar operaciones de acceso (lectura o escritura)
simultáneamente en ambas memorias. Figura 1-4.

11
Figura 1-4. La arquitectura Harvard dispone de dos memorias independientes para datos
y para instrucciones, permitiendo accesos simultáneos.

Los microcontroladores PIC que se describen en este manual responden a la


arquitectura Harvard. -

1-4-2 El procesador o CPU

Es el elemento más importante del microcontrolador y determina sus principales


características, tanto a nivel hardware como software.

Se encarga de direccionar la memoria de instrucciones, recibir el código OP de la


instrucción en curso, su decodificación y la ejecución de la operación que implica la
instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado.

Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los


procesadores actuales.

CISC

Un gran número de procesadores usados en los microcontroladores están basados en la


filosofía CISC (Computadores de Juego de Instrucciones Complejo). Disponen de más
de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy
sofisticadas y potentes, requiriendo muchos ciclos para su ejecución.

Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones


complejas que actúan como macros.

RISC

Tanto la industria de los computadores comerciales como la de los microcontroladores


están inclinándose hacia la filosofía RISC (Computadores de Juego de Instrucciones
Reducido). En estos procesadores el repertorio de instrucciones máquina es muy
reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo.

La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software


del procesador.

SISC

12
En los microcontroladores destinados a aplicaciones muy concretas, el juego de
instrucciones, además de ser reducido, es "específico", o sea, las instrucciones se
adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el
nombre de SISC ( Computadores de Juego de Instrucciones Específico).

1-4-3 Memoria

En los microcontroladores la memoria de instrucciones y datos está integrada en el


propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa
de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM,
volátil, y se destina a guardar las variables y los datos.

Hay dos peculiaridades que diferencian a los microcontroladores de las computadoras


personales.

1º. No existen sistemas de almacenamiento masivo como disco duro o disquetes.

2º. Como el microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay
que almacenar un único programa de trabajo.

La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las
variables y los cambios de información que se produzcan en el transcurso del programa.
Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia
del mismo en la RAM pues se ejecuta directamente desde la ROM.

Los usuarios de computadoras personales están habituados a manejar Megabytes de


memoria, pero los diseñadores con microcontroladores trabajan con capacidades de
ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512
bytes.

Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y


utilización de los mismos es diferente. Se describen las cinco versiones de memoria no
volátil que se pueden encontrar en los microcontroladores del mercado.

1ª. ROM con mascara

Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación
del chip. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de
los microcontroladores con este tipo de memoria cuando se precisan cantidades
superiores a varios miles de unidades.

2ª. OTP

El microcontrolador contiene tina memoria no volátil de sólo lectura "programable


una sola vez" por el usuario. OTP (One Time Programmable). Es el usuario quien puede
escribir el programa en el chip mediante un sencillo grabador controlado por un programa
desde una PC.

La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o
bien, en la construcción de prototipos y series muy pequeñas.

13
Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación
mediante fusibles para proteger el código contenido.

3ª. EPROM

Los microcontroladores que disponen de memoria EPROM (Erasable Programmable


Read Only Memory) pueden borrase y grabarse muchas veces. La grabación se realiza,
como en el caso de los OTP, con un grabador gobernado desde un PC. Si,
posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su
superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos.
Las cápsulas son de material cerámico y son más caros que los microcontroladores con
memoria OTP que están hechos con material plástico.

4ª. EEPROM

Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM


(Electrical Erasable Programmable Read Only Memory). Tanto la programación como el
borrado, se realizan eléctricamente desde el propio grabador y bajo el control
programado de una PC. Es muy cómoda y rápida la operación de grabado y la de
borrado. No disponen de ventana de cristal en la superficie.
Los microcontroladores dotados de memoria EEPROM, una vez instalados en el circuito,
pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito.
Para ello se usan "grabadores en circuito" que confieren una gran flexibilidad y rapidez a
la hora de realizar modificaciones en el programa de trabajo.

El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por
lo que no es recomendable una reprogramación continua. Son muy idóneos para la
enseñanza y la Ingeniería de diseño.

Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de


memoria EEPROM en los circuitos programables para guardar y modificar cómodamente
una serie de parámetros que adecuan el dispositivo a las condiciones del entorno.

Este tipo de memoria es relativamente lenta.

5ª. FLASH

Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar.
Funciona como una ROM y una RAM pero consume menos y es más pequeña.

A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida


y de mayor densidad que la EEPROM.

La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran


cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de
escritura/borrado.

Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores
que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar

14
el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria
incorporado al control del motor de un automóvil permite que pueda modificarse el
programa durante la rutina de mantenimiento periódico, compensando los desgastes y
otros factores tales como la compresión, la instalación de nuevas piezas, etc. La
reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de
la puesta a punto.

1-4-4 Puertos de Entrada y Salida

La principal utilidad de las patitas que posee la cápsula que contiene un microcontrolador
es soportar las líneas de E/S que comunican al computador interno con los periféricos
exteriores.

Según los controladores de periféricos que posea cada modelo de microcontrolador, las
líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y
control.

1-4-5 Reloj Principal

Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la
sincronización de todas las operaciones del sistema. '

Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se


necesitan unos pocos componentes exteriores para seleccionar y estabilizar la
frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto
a elementos pasivos o bien un resonador cerámico o una red R-C.

Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las


instrucciones pero lleva aparejado un incremento del consumo de energía.

1-5 RECURSOS ESPECIALES. .

Cada fabricante oferta numerosas versiones de una arquitectura básica de


microcontrolador. En algunas amplía las capacidades de las memorias, en otras
incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones
muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga
todos los requerimientos de su aplicación. De esta forma, minimizará el costo, el
hardware y el software.

Los principales recursos específicos que incorporan los microcontroladores son:


 Temporizadores o "Timers".
 Perro guardián o "Watchdog " .
 Protección ante fallo de alimentación o "Brownout".
 Estado de reposo o de bajo consumo.
 Conversor A/D.
 Conversor D/A.
 Comparador analógico.

15
 Modulador de anchura de impulsos o PWM
 Puertos de E/S digitales.
 Puertos de comunicación.

1-5-1 Temporizadores o "Timers

Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta


de acontecimientos que suceden en el exterior (contadores).

Para la medida de tiempos se carga un registro con el valor adecuado y a continuación


dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o
algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un
aviso.

Cuando se desean contar acontecimientos que se materializan por cambios de nivel o


flancos en alguna de las patitas del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos.

1-5-2 Perro guardián o “Watchdog”

Cuando la computadora personal se bloquea por un fallo del software u otra causa, se
pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin
el control de un supervisor y de forma continua las 24 horas del día. El Perro guardián
consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset
automáticamente en el sistema.

Se debe diseñar el programa de trabajo que controla la tarea de forma que refresque o
inicialice al Perro guardián antes de que provoque el reset. Si falla el programa o se
bloquea, no se refrescará al Perro guardián y, al completar su temporización ladrará y
ladrará hasta provocar el reset.

1-5-3 Protección ante el fallo de alimentación o “Brownout”

Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación


(VDD) es inferior a un voltaje mínimo (“brownout"). Mientras el voltaje de alimentación sea
inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar
normalmente cuando sobrepasa dicho valor.

1-5-4 Estado de reposo o de bajo consumo: SLEEP

Son abundantes las situaciones reales de trabajo en que el microcontrolador debe


esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le ponga
de nuevo en funcionamiento. Para ahorrar energía, factor clave en los aparatos
portátiles) los microcontroladores disponen de una instrucción especial (SLEEP en los
PIC), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos
de potencia son mínimos. En dicho estado se detiene el reloj principal y se congelan sus
circuitos asociados, quedando sumido en un profundo "sueño" el microcontrolador. Al
activarse una interrupción ocasionada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo.

16
1-5-5 Conversor A/D

Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden


procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer de un
multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde
las patitas del circuito integrado.

1-5-6 Conversor D/A

Transforma los datos digitales obtenidos del procesamiento del controlador en su


correspondiente señal analógica que saca al exterior por una de las patitas de la
cápsula. Existen muchos efectores que trabajan con señales analógicas.

1-5-7 Comparador analógico

Algunos modelos de microcontroladores disponen internamente de un Amplificador


Operacional que actúa como comparador entre una señal fija de referencia y otra
variable que se aplica por una de las patitas de la cápsula. La salida del comparador
proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra.

También hay modelos de microcontroladores con un módulo de tensión de referencia


que proporciona diversas tensiones de referencias que se pueden aplicar en los
comparadores.

1-5-8 Modulador de anchura de impulsos o PWM

Son circuitos que proporcionan en su salida impulsos de anchura variable, que se


ofrecen al exterior a través de las patitas del encapsulado.

1-5-9 Puertos de E/S digitales

Todos los microcontroladores destinan algunas de sus patitas a soportar líneas de E/S
digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos.

Las líneas digitales de los Puertos pueden configurarse como Entrada o como Salida
cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su
configuración.

1-5-10 Puertos de comunicación

Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros


dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de
redes y poder adaptarlos con otros elementos bajo otras normas y protocolos, algunos
modelos disponen de recursos que se lo permiten entre los que destacan

a) UART. adaptador de comunicación serie asíncrona.

b) USART, adaptador de comunicación ,Serie síncrona y asíncrona

17
c) Puerto paralelo esclavo para poder conectarse con los buses de otros
microprocesadores.

d) USB (Universal Serial Bus), que es un moderno bus serie para los PC.

e) Bus I2C, que es un interfaz serie de dos hilos desarrollado por Phillips.

f) CAN (Controller Area Network), para permitir la adaptación con redes de conexionado
multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de
dispositivos en automóviles. En EE. UU. se usa el J1850.

1-6 LENGUAJES DE PROGRAMACION

Se han desarrollado todo tipo de lenguajes para los microcontroladores, pero los más
usados son el Ensamblador, el BASIC y el C.

Como toda máquina digital, el microcontrolador es capaz de entender exclusivamente el


lenguaje binario grabado en la memoria. El lenguaje Ensamblador, que utiliza
mnemónicos inteligibles, es una forma más humana de escribir los programas.

Los programas escritos en Ensamblador son compactos y rápidos puesto que realizan
un completo control de la máquina. Sin embargo, si no están bien confeccionados,
resultaran de gran tamaño y lentos. El lenguaje Ensamblador no es capaz de corregir la
ignorancia de quien lo emplea, al menos hoy por hoy.

Los interpretes son programas residentes en el microcontrolador que permiten la


ejecución del programa línea a línea. Los dos intérpretes más populares son el BASIC y
el FORTH. El primero es más fácil y simple pero es bastante lento interpretando. El
segundo es de difícil escritura pero muy apropiado para el control industrial y la Robótica.
La ventaja del intérprete reside en su interactividad. Se puede escribir un poco de código
y ejecutarlo inmediatamente para ver el resultado.

Los "compiladores" son programas que se encargan de traducir el programa de trabajo


escrito en cualquier lenguaje a código máquina para luego grabarlo en la memoria del
microcontrolador y ejecutarlo. Se hace la traducción de todo el programa con el
compilador que reside en otro computador. Hecha la traducción a código máquina, se
graba en la memoria de instrucciones del chip y se ejecuta. Los compiladores más
populares son el C y el BASIC.

1-7 HERRAMIENTAS PARA EL DESARROLLO DE APLICACIONES

Además del lenguaje de programación y su compilador o intérprete, se precisan otras


herramientas para depurar y poner a punto los diseños basados en microcontroladores.

Grabadores o programadores

18
Editado el programa y convertido a código máquina, hay que grabarlo en la memoria de
instrucciones del microcontrolador. Cuando hay que grabar enormes cantidades de
chips, es preferible encargarle la operación al fabricante y utilizar sistemas con memoria
ROM con máscara. Cuando es el usuario quien desea grabar los programas ha de
adquirir microcontroladores con memoria no volátil del tipo OTP, EPROM ó EEPROM.

También debe disponer de un "grabador", que suele ser un pequeño dispositivo con un
zócalo libre sobre el que se sujeta el circuito integrado a grabar. El control del grabador
se efectúa desde una PC que, con el software adecuado, se encarga de escribir en la
memoria no volátil el programa que requiere la aplicación. Figura 1-10. En caso de
memorias EEPROM, desde el mismo grabador se puede proceder al borrado de la
misma.

Figura 1-5. Sistema PICSTART Plus

Simuladores

Son programas soportados generalmente en una PC, capaces de simular la ejecución de


programas confeccionados para un modelo de microcontrolador. Visualizan en la
pantalla de la computadora personal el estado interno de todos los recursos y admiten la
ejecución paso a paso, los puntos de parada, la modificación de los contenidos de
registros y posiciones de memoria de datos y otras opciones que ayudan a la
depuración, sin necesidad de montar el circuito físico.

Los simuladores no soportan interrupciones externas en modo real y funcionan más


lentamente que los microcontroladores físicos.

El fabricante de los microcontroladores PIC, Microchip, suministra a sus usuarios el


simulador MPSIM.

Depuradores residentes

Permiten la ejecución del programa de aplicación sobre el mismo microcontrolador,


mostrando cómo va progresando con la ejecución de instrucciones en la pantalla de la
computadora personal.

19
Tienen las ventajas de un simulador y muestran el desarrollo real del programa (no está
simulado por software).

Emuladores en circuito.

Se trata de un instrumento que se coloca entre la PC anfitrión y el zócalo de la tarjeta de

circuito impreso donde se alojará el microcontrolador definitivo. El programa es ejecutado


desde la PC, pero para la tarjeta de aplicación es como si lo hiciese el mismo
microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal
y como luego sucederá cuando se coloque la cápsula. Figura 1-6.

Figura 1-6. Sistema Emulador PICMASTER

1-8 MERCADO MUNDIAL

Aunque en el mercado de la Microinformática la mayor atención la acaparan los


desarrollos de los microprocesadores, lo cierto es que se venden cientos de
microcontroladores por cada uno de aquellos.

La evolución del mercado mundial de microcontroladores de 8 bits ha experimentado un


espectacular incremento a partir del año 1990, en el que se vendieron 590 millones de
unidades. En 1992 se vendieron 950 millones y en 1996 se superaron los 2.000 millones
de unidades.

La distribución de las ventas según su aplicación es la siguiente.

Una tercera parte se absorbe en las aplicaciones relacionadas con las computadoras y
sus periféricos.
La cuarta parte se utiliza en las aplicaciones de gran consumo (electrodomésticos,
juegos, TV, vídeo, etc.)

20
El 16% de las ventas mundiales se destino al área de las comunicaciones.
Otro 16% fue empleado en aplicaciones industriales
El resto de los microcontroladores vendidos en el mundo aproximadamente un 10%
fueron adquiridos por las industrias de automoción

Respecto al mercado de los potentes microcontroladores de 16 bits, el crecimiento


también ha sido su norma. De los 23 millones de unidades vendidas en 1988, se ha
pasado a diez veces más en 1996, siendo la ofimática y las comunicaciones las áreas
que absorbieron la mayor parte.

También los modernos microcontroladores de 32 bits van afianzando sus posiciones en


el mercado, siendo las áreas de más interés el procesamiento de imágenes, las
comunicaciones, las aplicaciones militares, los procesos industriales y el control de los
dispositivos de almacenamiento masivo de datos.

1-9 FABRICANTES

"Donde hay negocio todos quieren entrar". En la actualidad, gran parte de los fabricantes
de circuitos integrados disponen de su propia línea de microcontroladores.

En la Tabla 1-1 se relacionan los fabricantes más destacados con sus modelos bandera.

FABRICANTE MODELOS DE MICROCONTROLADORES


INTEL 8048, 8051, 80C196, 80t8ú, 80188, 80386EX
MOTOROLA 6805.68HCll, 68HC12, 68HC16, 683XX
HITACHI HD64180
PHILIPS GAMA COMPLETA DE CLONES DEL 8051
SGS-THOMSON ST-62XX
MICROCHIP PICS
NATIONAL SEMICONDUCTOR COP400, COP800
ZILOG Z8, Z86XX
TEXAS INSTRUMENT TMS370
TOSHIBA 68HC11
Tabla 1-1. Renombrados fabricantes de microcontroladores con sus modelos mas
populares.

Se considera a Intel como el "padre" de los microcontroladores. Este fabricante siempre


ha ido por delante de los demás presentando los nuevos productos. El primer
microcontrolador de 8 bits se considera al 8048 y lo fabricó Intel en la década de los 70.
La siguiente generación, más evolucionada, fue la 8051 a la que ha seguido la de 16
bits, 80C196, que alcanza frecuencias de funcionamiento de 50 MHz.

Con buen olfato comercial, Intel ha desafiado versiones de microcontroladores basados


en los microprocesadores 8088 y 8086. Se trata de los modelos 80188 y 80186.

La misma política ha seguido con el 80386 creando el 80386EX. Estos productos


permiten trabajar con las herramientas clásicas desarrolladas para el entorno de la PC.

21
Otra de las principales empresas del mundo de los dispositivos microprogramables es
Motorola, que dispone del potente microcontrolador 68HC11 de 8 bits para datos y 16
para direcciones.

Dos microcontroladores PIC de la empresa americana Microchip han sido conocidos


durante los 20 años últimos. Su popularidad avanza día a día siendo incluidos en la
mayoría de los proyectos debido a su bajo coste, reducido consumo, pequeño tamaño,
fácil programabilidad y abundancia de herramientas económicas de soporte.

También Zilog ha irrumpido con fuerza en el mercado de los microcontroladores.


Recientemente ha lanzado algunos modelos con memoria OTP de la familia Z86XX, muy
completos y fáciles de manejar.

Otras empresas como SGS-Thomson, Hitachi, Texas, Toshiba, National Semiconductor,


etc., abarcan pequeñas partes del mercado.

Todos los microcontroladores que se fabrican en el presente son buenos y el mejor no


siempre es el mismo. Cambian el modelo y el fabricante según la aplicación y las
circunstancias que lo envuelven. Un buen diseñador profesional debe conocer todo el
abanico de la oferta para elegir en cada situación el microcontrolador que le conviene.

22
2 ARQUITECTURA GENERAL DE LA GAMA BAJA

2-1 INTRODUCCION

La configuración básica de los microcontroladores PIC de la gama baja es similar a la de


las restantes gamas. Por tal motivo, se comienza describiendo la estructura y
funcionamiento de la misma, dejando para un capitulo posterior las novedades y mejoras
que incorporan los elementos mas complejos.

Uno de los pilares en los que se basa la organización de los PIC es la arquitectura
Harvard. Con ella, el CPU accede de manera simultanea e independiente a la memoria
de datos y a la de instrucciones. Este aislamiento entre datos e instrucciones permite
que cada uno tenga el tamaño mas adecuado. Así, los datos tienen una longitud de 8
bits, mientras que las instrucciones la tienen de 12 bits. Figura 2-1.

Figura 2-1. La anchura del bus de datos es diferente a la del bus que transporta las
instrucciones.

Otro de los recursos que propicia el manejo intensivo la arquitectura Harvard es el del
"banco de registros", que participa de manera muy flexible en la ejecución de las
instrucciones. Como se muestra en la figura 3-2, la ALU realiza sus operaciones 1ógico-
aritméticas con dos operandos, uno que recibe desde el registro W, que hace las veces
de Acumulador de los microprocesadores convencionales, y otro que puede provenir de
cualquier registro interno. El resultado de 1a operación se puede depositar en cualquier
registro. Esta funcionalidad da un carácter completamente ortogonal a las instrucciones,
posibilitando que los operandos fuente y destino estén ubicados en cualquier registro.

23
Figura 2-2. La ALU recibe los operandos desde el registro W y de cualquier otro del
banco general dé: registros. El resultado puede depositarse en cualquier registro,

Los microcontroladores PIC reúnen todas las condiciones necesarias para pertenecer al
grupo de procesadores RISC y que se citan a continuación.

1ª. Juego reducido de instrucciones

La gama baja de los PIC responde a un conjunto de 33 instrucciones.

2ª. Idéntico formato de las instrucciones

Todas las instrucciones de la gama baja tienen una longitud de código de 12 bits.

3ª. Ortogonalidad

Las instrucciones pueden utilizar cualquier objeto como operando fuente o destino.

4ª. Ejecución de instrucciones simples en un ciclo

Todas las instrucciones de los PIC se ejecutan en un ciclo, menos las de salto que
tardan dos.

Las instrucciones disponen de tres modos de direccionamiento, directo, indirecto y


relativo. La pila que guarda los retornos al programa principal sólo dispone de dos
niveles en los componentes de la gama baja, lo cual constituye una sería limitación en la
confección del software ya que no se pueden anidar más de dos subrutinas
consecutivamente.

24
La tecnología CMOS con la que se fabrican los PIC permite que la tensión de
alimentación pueda oscilar entre 2 y 6,25 V con un reducido consumo. A 5 V y 4 MHz, el
consumo típico es menor que 2 mA y a 3 V y 32 kHz, es inferior a 15 mA. Cuando el
microcontrolador funciona en "modo de reposo o espera" y con el temporizador Perro
guardián desconectado la potencia necesaria es menor de 3 mA. Todas estas
características posibilitan en muchas ocasiones la alimentación de los sistemas con.
pilas convencionales.

2-2 EL RELOJ Y EL CICLO DE INSTRUCCIÓN

En la gama baja, la frecuencia máxima de la serial de reloj interna es de 20 MHz lo que


determina un periodo de 50 ns. El ciclo de instrucción en el que se ejecutan la mayoría
de las instrucciones se compone de cuatro ciclos de reloj, que a 20 MHz suponen una
duración de 200 ns. '

En realidad, cada instrucción conlleva dos ciclos de instrucción, el primero destinado a la


"fase de búsqueda” y el otro, a la "fase de ejecución”. Sin embargo, la estructura
segmentada del procesador permite realizar simultáneamente 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 siguiente hasta completarla por lo cual
en esta situación se sustituye la fase de búsqueda por una instrucción NOP (No
Operación) mientras se ejecuta un salto. Esta característica se muestra gráficamente en
la figura 2- 3 y en ella se puede apreciar cómo las instrucciones de salto precisan un
ciclo más.

Figura 2-3. La segmentación permite completar las instrucciones en un solo ciclo excepto
las de salto que necesitan dos.

Para el funcionamiento del circuito de reloj interno se precisa colocar en el exterior una
fuente de señal con una frecuencia fija disponiendo los microcontroladores PIC16C5X de
dos patitas para soportar dicha señal.

OSC1/CLKIN: Es la patita a la que se conecta la señal de entrada de la fuente externa


de frecuencia, que puede estar implementada por un cristal de cuarzo, por un resonador
cerámico o una red RC.

OSC2/CLKOUT: Se trata de la patita de conexión de la salida del cristal externo. En el


modo oscilador RC por esta patita sale la cuarta parte de la frecuencia de oscilación,
delimitando los ciclos de instrucción. Para esta alternativa Microchip recomienda usar
una Rext. con un valor comprendido entre 5 k W y 100 k y un Cext con más de 20 pF.
Figura 2-4.

25
Los PIC pueden funcionar con cuatro tipos de osciladores. En las versiones EPROM, con
ventana, y en las OTP, QTP y ROM sin ella, hay que distinguir el chip especifico para el
oscilador, que viene marcado en el encapsulado, Esto significa que los PIC se
comercializan con cuatro referencias distintas, que corresponden con los tipos de reloj.
Se debe grabar el utilizado escribiendo el código adecuado en los dos bits FOSCI y
FOSC0 de la. "Palabra de Configuración" que se comenta más adelante. Dichos códigos
son los siguientes.

11: RC. Oscilador RC de bajo coste. Figura 3-4 Este oscilador proporciona una
estabilidad de frecuencia mediana.

10: HS. Oscilador de alta velocidad (8-20 MHz).

01: XT. Oscilador estándar (100 KHz-4 MHz). Cuarzo estándar o resonador cerámico.

00: LP. Oscilador de bajo consumo (32-200 kHz). Cristal de cuarzo o resonador para
aplicaciones de muy bajo consumo.

Figura 2-4. Esquema de conexionado de un oscilador de bajo costo compuesto por una
resistencia y un condensador.

Figura 2-5. Según el tipo de oscilador usado y la frecuencia de trabajo, se emplean


diferentes valores en los condensadores C1 y C2 que acompañan al cristal de cuarzo. La
resistencia RS
solo es necesaria en algunas versiones HS.

26
La frecuencia de la señal de entrada aplicada a la patita OSC1/CLKIN se divide
internamente conformando cuatro estados que delimitan cada ciclo de instrucción y que
se denominan Q1-Q4. Durante Q1, el valor del PC (Program Counter) se incrementa. En
el transcurso de Q4 se efectúa la búsqueda de la instrucción en la memoria y su código
se carga en el Registro de Instrucciones. En el siguiente ciclo de instrucción se llevan a
cabo la decodificación y ejecución de la instrucción. Figura 2-6

Figura 2-6. Cronograma

2-3 DESCRIPCION DE LA ARQUITECTURA BASICA

El microcontrolador funciona bajo el control, de las instrucciones grabadas en la memoria


de instrucciones, no volátil. El PC proporciona la. dirección de la instrucción en curso y
su código de 12 bits se introduce en la Unidad de Control donde se decodifica y se
generan las órdenes para la ejecución de la misma. Según el tipo de instrucción se
localizan los operadores que se aplican a las entradas de la ALU. Uno de ellos puede ser
el contenido del registro W y el otro puede llegar por el. bus de datos desde cualquier
elemento. Como todos los objetos (puertos de E/S, temporizadores, posiciones de
memoria, etc.) se manejan como si estuviesen implementados físicamente por registros,
y su lectura y escritura se efectúa por el bus de datos común. En la figura 2-7 se
presenta un esquema más detallado de la arquitectura del PIC16C5X en el que se
pueden apreciar los bloques mas importantes.

Memoria de instrucciones EPROM


Puede tener una capacidad comprendida entre 512 y 2.048 palabras de 12 bits, según el
modelo. Está direccionada por el PC auxiliado por la Pila de dos niveles.

Memoria de datos SRAM


Tiene un tamaño de 24 a. 73 bytes y está direccionada desde el propio código de la
instrucción en fase de ejecución. Sus posiciones contienen los registros específicos y de
propósito general.

Oscilador para la frecuencia de funcionamiento


Dispone de funciones especiales que se analizarán posteriormente, como SLEEP y
MCLR.

27
Puertos de E/S
Disponen de hasta tres puertos para E/S (PA, PB y PC).

Temporizador

En la gama baja sólo se dispone de un temporizador (TMR0).

Perro guardián o Watchdog

Se trata de un temporizador especial que resetea el microcontrolador si no se le recarga


cada cierto tiempo.

Registros

Dispone de un conjunto de registros de propósito general y especiales, como el Registro


de Estado, el de Opciones, la Palabra de configuración, etc., que se hallan
implementados como posiciones de la memoria de datos.

28
Figura 2-7 Esquema detallado de la arquitectura de los microcontroladores PIC de la
gama baja.

2-4 PALABRAS DE CONFIGURACIÓN E IDENTIFICACIÓN

La Palabra de configuración consta de 12 bits de los cuales sólo los cuatro de menos
peso tienen asignada una función. Figura 2-8.

Figura 2-8. Ubicación y misión de los bits de la Palabra de configuración.

La Palabra de configuración se puede leer o escribir durante el proceso de grabación del


dispositivo y responde a una posición reservada de dirección 0XFFFh.

Existen cuatro palabras de 12 bits destinadas a labores de identificación (ID). Pueden ser
escritas durante el proceso de grabación, aunque sólo son útiles los 4 bits de menos
peso de cada palabra. En ellas se pueden almacenar el numeró de serie, los códigos de
identificación, "checksum", etc. Las palabras ID se hallan en un área reservada de
memoria de programa justo a continuación de la posición final del último banco
disponible del modelo que se trate.

2-5 REGISTRO DE ESTADO

Es un registro de 8 bits en el que se reflejan algunas circunstancias de interés sobre el


estado del procesador. En la figura 2-9 se indican la. nomenclatura y la misión de los
bits, los cuales pueden ser leídos y escritos, excepto TO y PD, que sólo pueden leerse.
Esta singularidad hay que tenerla en cuenta cuando se use este registro como destino
en una instrucción.

29
Figura 2-9. Distribución y función de los bits del Registro de estado.

La Tabla 2-1 ofrece el valor que toman los bits TO y PD después de producirse un reset.

TO PD Estado tras el RESET


0 0 Fin del WDT en el modo SLEEP
0 1 Fin del WDT en el modo normal
1 0 MCLR activada durante el modo SLEEP
1 1 Conexión de Vdd
u u MCLR se mantiene a “0”
Tabla 2-1. Estado que adoptan los bits TO y PD después de producirse un "reset"
determinando la causa que lo ha producido.

2-6 ENCAPSULADOS Y DIAGRAMAS DE PATITAS

En la figura 2-10 se muestran los cuatro tipos de encapsulados usados en los


componentes de la familia PIC16C5X. Las dos cápsulas superiores, tipo PDIP, son de

30
uso normal, mientras que las inferiores, tipo SSOP, se emplean exclusivamente en
montaje superficial.

Figura 2-10. Cápsulas típicas para componentes PIC de la gama baja. Las dos inferiores
están diseñadas para montaje superficial.

La misión que tienen asignadas las diversas patitas de los encapsulados se describe a
continuación.

VDD : Patita que soporta la entrada de la tensión de alimentación positiva, que se halla
comprendida entre 2 y 6,25 V.

VSS : Tierra.

OSC1/CLKIN : Patita para aplicar la señal de entrada al circuito oscilador con cristal de
cuarzo, resonador cerámico o red RC.

OSC2/CLKOUT : Conexión de salida del cristal externo. En el modo oscilador RC por


esta patita sale la cuarta parte de la frecuencia introducida por OSC1 que delimita los
ciclos de instrucción.

31
T0CKI : Patita que recibe la entrada de la señal de reloj usada en el temporizador TMR0.
Si no se usa, es recomendable conectarla a V DD o tierra para reducir el consumo.

MCLR/Vpp : Cuando esta patita se activa con un nivel bajo, genera un reset. Durante la
grabación del dispositivo, esta patita se usa para recibir la tensión Vpp necesaria para
dicha operación.

RA0-RA3 : Son cuatro líneas bidireccionales que corresponden con las E/S del puerto A.
Tienen nivel TTL cuando VDD tiene un valor de +5 V con el 5% de tolerancia.

RB0-RB7 : Son ocho líneas bidireccionales correspondientes a las E/S del Puerto B.
También pueden soportar niveles TTL.

RC0-RC7 : Corresponden con las ocho líneas bidireccionales del Puerto C. Pueden
soportar niveles TTL y este puerto sólo existe en los modelos con 28 patitas.

2-7 RESET

Todos los microcontroladores PIC16CXX disponen de una sola patita para provocar
externamente la reinicialización del sistema o reset. Es la patita MCLR/Vpp, que se utiliza
también para introducir al circuito la tensión Vpp necesaria en la fase de grabación de la
memoria de programa, que suele ser de 13,8 V.

Los PIC de la gama baja distinguen entre varios tipos de generación del reset :

Al conectar la alimentación VDD. (POR: Power-On-Reset).


Al activarse MCLR durante el estado de reposo.
Al activarse MCLR durante el funcionamiento normal.
Al sobrepasar la cuenta del Perro guardián (WDT).

Como se ha expuesto en la Tabla 2-1, existen dos bits en el Registro de Estado (TO y
PD) que identifican la causa que ha originado el reset. Algunas causas no afectan por
igual a ciertos registros del procesador. En la mayoría de los registros cuando se
produce un reset toman sus bits un estado predeterminado. Tabla 2-2.

REGISTRO DIRECCION POWER-ON-RESET MCLR o WDT


W N/A xxxx xxxx uuuu uuuu
TRIS N/A 1111 1111 1111 1111
OPTION N/A --11 1111 --11 1111
INDF 00h ---- ---- ---- ----
TMR0 01h xxxx xxxx uuuu uuuu
PCL 02h 1111 1111 1111 1111
ESTADO 03h 0001 1xxx 000? ?uuu (1)
FSR 04h xxxx xxxx 1uuu uuuu
PORTA 05h ---- xxxx ---- uuuu
PORTB 06h xxxx xxxx uuuu uuuu
PORTC 07h xxxx xxxx uuuu uuuu
BANCO DE REGISTROS 08-7fh xxxx xxxx uuuu uuuu

32
DE PROPOSITO GENERAL

Tabla 2-2. Estado que toman los bits de los registros tras un reset. Solo el Registro toma
valores distintos de acuerdo con la causa que lo provoca. “u” significa que no cambia;
“x”, indeterminado; “-“ bit no implementado que cuando se lee es 0; y “?” significa que
depende de la causa que ha provocado el reset.

En la figura 2-11 se ofrece el esquema del circuito interno que controla la generación del
reset. Existe un contador, que actúa como temporizador, que esta programado para
activar la señal R del biestable una vez que han transcurrido 18ms después de activarse
la entrada S y siempre que la señal MCLR valga 1. Este contador esta sincronizado con
un oscilador R-C interno y su retardo tiene la finalidad de dar un tiempo al oscilador
principal para que se estabilice la frecuencia de trabajo.

Figura 2-11. Esquema interno del circuito que controla al biestable R-S que genera la
señal RESET, que provoca la. reinicialización del microcontrolador.

Si se desea que se origine un reset cuando se conecta la alimentación, basta con unir
directamente la patita MCLR con la de la alimentación V DD. Esto es suficiente siempre
que la alimentación suba desde 0 V hasta V DD con bastante velocidad, más de 0,05
V/ms. Cuando crece despacio la alimentación, o bien se desea disponer de un pulsador
manual para generar el. reset, el fabricante recomienda usar el circuito de la figura 2-12,
con un valor de R < 40 kW y uno de R1 comprendido entre 100 W y 1 kW.

33
Figura 2-12. Circuito recomendado cuando la tensión de alimentación crece despacio
desde 0 V hasta VDD o se desea colocar un pulsador manual de reset.

A veces la tensión de alimentación no está bien estabilizada y puede variar bastante,


siendo conveniente conectar un circuito externo que origine un Reset cuando dicha
tensión sea inferior a un mínimo ( por ejemplo, para que la SRAM mantenga los datos en
el modo de Reposo es preciso que la VDD no sea inferior a 1,5 V).

34
3 REPERTORIO DE INSTRUCCIONES

3-1 CARACTERISTICAS GENERALES

Tal como corresponde a un procesador RISC, las instrucciones de los


microcontroladores PIC cumplen las siguientes condiciones :

1ª Juego reducido

Sólo existen 33 instrucciones en la gama baja.

2ª Sencillas y rápidas

La mayoría se ejecuta en un ciclo de instrucción y sólo las de salto precisan dos ciclos.
El ciclo de instrucción consta de cuatro periodos del reloj principal.

3ª Ortogonalidad

La ubicación de los operandos que manejan las instrucciones es muy flexible. Cualquier
objeto del procesador puede actuar como fuente o como destino.

4ª Formato uniforme de las instrucciones

Todas las instrucciones de los modelos PIC16C5X tienen una longitud fija de 12 bits.
Esta característica significa un notable ahorro de la memoria de código y una facilidad en
la construcción de compiladores.

5ª Formato uniforme de los datos

En general, los datos y operandos tienen una longitud de 8 bits.

Respecto a los direccionamientos de la memoria de código, es el Contador de Programa


(PC) el que establece el flujo de control. En la mayoría de las instrucciones el PC se
incrementa automáticamente para apuntar la siguiente instrucción del programa. En las
instrucciones de salto, cuando es del tipo directo, el valor que se carga en el PC proviene
de una parte de los bits del código OP de la propia instrucción. En los saltos relativos, la
ALU suma al valor actual del PC el del salto, almacenando el resultado en el PC.

Para direccionar los datos u operandos que manejan las instrucciones existen tres
modos :

1º. Inmediato : El valor del dato está contenido en el código OP de la propia instrucción.

2º. Directo : La dirección del área de la memoria de datos donde se halla el operando
está contenida en el código OP de la instrucción.

3º. Indirecto : La dirección de la memoria de datos que guarda el operando está


contenida en un registro.

35
3-1-1 Diferencias entre los repertorios de las gamas baja y media

Cuando el programador conoce las 33 instrucciones que componen el juego de la gama


baja, apenas tiene que dedicar tiempo a estudiar las 35 de la gama media. La mayoría
son idénticas y las diferencias se circunscriben a media docena, de las cuales dos sólo
existen en la gama baja y cuatro en la media. Por este motivo hemos preferido explicar
los dos repertorios en este momento, aunque aún no se han explicado los
microcontroladores de la gama media. El iniciarse ahora en el manejo de instrucciones le
va a proporcionar al lector una comprensión de los temas posteriores más fácil y
práctica.

Los dispositivos de la gama media son mucho más potentes que los de la baja. Así,
éstos últimos sólo disponen de un temporizador interno TMR0, un Perro guardián,
Puertos con E/S digitales y los recursos fundamentales. Los microcontroladores de la
gama media son mucho más poderosos porque además los recursos de la gama baja,
pueden disponer de dos temporizadores (TMR1 y TMR2), un conversor A/D, capacidad
de provocar una interrupción desde 12 posibles fuentes, comparadores analógicos,
módulo de tensión de referencia, Puertos de interfaz serie y paralelo, etc. El gobierno del
funcionamiento de todos estos dispositivos se realiza programando el valor de los bits de
ciertos registros y eso se consigue fácilmente con las instrucciones de transferencia que
mueven valores inmediatos hasta los mencionados registros de control. Dichas
instrucciones existen en la gama baja.

En resumen, estudie las 33 instrucciones de la gama baja y después procure


comprender la estructura, el comportamiento de los diversos periféricos y sus registros
de control en lo referente a la gama media porque las instrucciones ya las conoce en su
mayoría. Sólo hay cuatro nuevas.

3-1-2 Definiciones y abreviaturas

Para manejar el juego de instrucciones máquina de un procesador se precisa conocer la


estructura y el funcionamiento de los componentes del mismo. Cuando se describe la
operatividad de las instrucciones, se hace referencia a los objetos que dispone el
procesador y al efecto que producen sobre ellos.

Suponiendo que el lector ha seguido el libro hasta este punto, ya dispone de una idea
clara de la arquitectura de los microcontroladores PIC de la gama baja y está en
disposición de entender el efecto que cada instrucción va a producir sobre los elementos
que conforman dicha arquitectura.

Para simplificar y facilitar la descripción de las instrucciones de la gama baja se utilizan


bastantes abreviaturas que hay que conocer, habiéndose elegido las que emplea el
fabricante del producto, Microchip.

ABREVIATURA DESCRIPCION

PC Contador de Programa que direcciona la memoria de


instrucciones. Tiene un tamaño de 11 bits en la gama

36
baja, de los cuales los ocho de menos peso configuran el
registro PCL que ocupa la dirección 02 del área de datos.
TOS Cima de la Pila, que tiene dos niveles en la gama baja
WDT Perro guardián (Watchdog)
W Registro W, similar al Acumulador
f Suele ser un campo de 5 bits (fffff) que contiene la dirección
del Banco de registros, que ocupa el banco 0 del área de
datos.
Direcciona uno de dichos registros
d Bit del código OP de la instrucción, que selecciona el desti-
no.
Si d = 0, el destino es W y si d = 1, el destino es f
dest Destino (Registro W o f)
TO Bit “Time Out” del Registro de Estado
PD Bit “Power Down” del Registro de Estado
b Suele ser un campo de 3 bits (bbb) que determinan la posi-
ción de un bit dentro de un registro de 8 bits
k Se trata, normalmente, de un campo de 8 bits (kkkk kkkk)
que representa un dato inmediato. También puede constar
de 9 bits en las direcciones de salto que cargan al PC
x Valor indeterminado (puede ser un 1 o un 0)
label Nombre de una etiqueta
[] Opciones
() Contenido
 Se asigna a
<> Campos de bits de un registro
 En el conjunto de
Z Señalizador de Cero en el Registro de Estado
C Señalizador de Acarreo en el octavo bit del Registro de
Estado
DC Señalizador de Acarreo en el cuarto bit del Registro de
Estado
Itálicas Términos definidos por el usuario

3-2 DESCRIPCIÓN Y CLASIFICACIÓN DE LAS INSTRUCCIONES DE LA GAMA BAJA

Antes de describir detalladamente cada instrucción siguiendo el orden alfabético,


consideramos que es un buen ejercicio de ayuda y familiarización analizarlas en forma
agrupada, teniendo en cuenta la función que realizan.

3-2-1 Instrucciones de transferencia

Es el grupo de instrucciones más empleado y su misión fundamental es transferir


información a y desde los registros del área de datos. Sólo existen dos instrucciones
específicas que usan un registro concreto, una carga el Registro de opciones y otra
alguno de los registros TRIS que configuran los puertos de E/S. Tabla 3-1. En la gama
baja los registros de opciones y TRIS están ocultos y sólo se puede acceder a ellos con
las instrucciones OPTION y TRIS.

37
NEMONICO DESCRIPCION CODIGO OP BANDERAS NOTAS
MOV f,d Mueve el contenido del 0010 00df ffff Z 2y4
registro f al destino. Si d=0
el destino es W y si d=1,
es f
MOVWF f Mueve el contenido del 0010 001f ffff ---- ---- 1y4
registro W al registro f
MOVLW k Carga un inmediato (literal 1100 kkkk kkkk ---- ---- ---- ----
k) en W
SWAPF f,d Se intercambian los 4 bits 0011 10df ffff ---- ---- 2y4
de mas peso con los de
menos de f y el resultado
se almacena en el destino
(W si d=0 y f si d=1)
OPTION Carga el registro OPTION 0000 0000 0010 ---- ---- ---- ----
con el contenido de W
TRIS f El contenido de W se 0000 0000 0fff ---- ---- 3
carga en TRIS f

Tabla 3-1. Principales características de las instrucciones de transferencia


correspondientes a los PIC16C5X.

Las notas que se muestran en la Tabla 3-1 y que hacen referencia a ciertas
peculiaridades de algunas instrucciones, son comunes a los restantes grupos de
instrucciones que se describen en Tablas posteriores.

NOTA 1

En todas las instrucciones que escriban sobre el PC, con excepción de GOTO, el noveno
bit del PC siempre es O.

NOTA 2

Cuando un registro de E/S se modifica como una operación sobre él mismo (por ejemplo:
MOVF PORTA), el valor usado es el que se halle presente en las patitas del puerto. Por
ejemplo, si el biestable tiene un I para una patita que está configurada como entrada y se
pone a nivel bajo desde el exterior; el dato será vuelto a escribir como 0.

NOTA 3

La instrucción TRIS f, siendo f = 5, 6 ó 7, origina que el contenido del registro W se


escriba en los biestables triestado que configuran los Puertos A, B ó C, respectivamente.
Un 1 fuerza a la patita a ponerse en alta impedancia y desactiva los buffers de salida.

NOTA 4

38
Si esta instrucción se ejecuta sobre el TMRO y d =1, el Divisor de frecuencia (Prescaler)
será borrado si se halla asignado al TMRO.

3-2-2 Instrucciones aritméticas

Las instrucciones de este grupo realizan diferentes operaciones aritméticas a través de


la ALU: sumas, restas, complementos, incrementos, decrementos y rotaciones. Tabla 3-
2.

NEMONICO DESCRIPCION CODIGO OP BANDERAS NOTAS


ADDWF f,d Suma el contenido de W 0001 11df ffff C, DC, Z 1, 2 y 4
con el de f. Si d=0 el destino
es W y si d=1, es f
SUBWF f,d Resta W de f 0000 10df ffff C, DC, Z 1, 2 y 4
INCF f,d Incrementa f 0010 10df ffff Z 2y4
DECF f,d Decrementa f 0000 11df ffff Z 2y4
COMF f,d Complementa f 0010 01df ffff Z 2y4
RLF f,d Rota el registro f a la 0011 01df ffff C 2y4
izquierda a través del
acarreo (C)
RRF f,d Rota el registro f a la 0011 00df ffff C 2y4
derecha a través del
acarreo (C)

Tabla 3-2. Instrucciones aritméticas

3-2-3 Instrucciones lógicas

En la tabla 3-3 se presentan las instrucciones que efectúan sobre los operandos las tres
instrucciones lógicas típicas: AND, OR y XOR.

NEMONICO DESCRIPCION CODIGO OP BANDERAS NOTA


ANDWF f,d Operación lógica AND entre 0001 11df ffff C, DC, Z 2y4
Wyf
IORWF f,d Operación lógica OR entre 0001 00df ffff C, DC, Z 2y4
Wyf
XOR f,d Operación lógica XOR entre 0001 10df ffff Z 2y4
Wyf
ANDLW k AND de W con un inmediato 1110 kkkk kkkk Z ---- ----
IORLW k OR de W con un inmediato 1101 kkkk kkkk Z ---- ----
XORLW k XOR de W con un 1111 kkkk kkkk Z ---- ----
inmediato

Tabla 3-3. Instrucciones lógicas

3-2-4 Instrucciones de puesta a cero

Son tres instrucciones que borran o ponen a cero algún registro. Tabla 3-4.

39
NEMONICOS DESCRIPCION CODIGO OP BANDERAS NOTAS
CLRF Borra el registro f 0000 011f ffff Z 4
CLRW Borra el registro W 0000 1000 0000 Z
CLRWDT Borra o refresca el 0000 0000 0100 TO y PD
WDT

Tabla 3-4. Instrucciones para el borrado de registros

3-2-5 Instrucciones de salto

Este grupo de instrucciones rompe la secuencia normal del flujo de instrucciones del
programa, provocando saltos. Afectan el contenido del PC. En la tabla 3-5 no se han
incluido dos instrucciones especiales de salto que comprueban en un registro si un bit
esta a 1 o a 0 y, según el caso, producen o no un salto de una instrucción (“skip”).

NEMONICOS DESCRIPCION CODIGO OP BANDERAS NOTAS


CALL k Salto a subrutina 1001 kkkk kkkk ---- ---- 1
RETLW k Retorno de subrutina 1000 kkkk kkkk ---- ---- ---- ----
(PCTOS) y el registro W
se carga con el inmediato
k
GOTO k Salto incondicional 101k kkkk kkkk ---- ---- ---- ----
DECFSZ Se decrementa f. Si el 0010 11df ffff ---- ---- 2y4
resultado es 0 se salta la
siguiente instrucción
INCFZ Se incrementa f. Si el 0011 11df ffff ---- ---- 2y4
resultado es 0 se salta la
siguiente instrucción

Tabla 3-5. Instrucciones de salto que rompen la secuencia normal del programa (TOS
representa el contenido de la cima de la Pila)

3-2-6 Instrucciones para la manipulación de bits

Se trata de un pequeño conjunto de instrucciones que se encargan de verificar el valor


de un bit particular de un registro, de ponerlo a 1 o a 0 e incluso de producir salto de una
instrucción según se cumpla o no la condición establecida. Tabla 3-6.

NEMONICOS DESCRIPCION CODIGO OP BANDERAS NOTAS


BCF f,b Borra el bit b del registro f 0100 bbbf ffff ---- ---- 2y4
BSF f,b Pone a 1 el bit b del 0101 bbbf ffff ---- ---- 2y4
registro f
BTFSC f,b Verifica el bit b del registro 0110 bbbf ffff ---- ---- ---- ----
f y si vale 0 salta una
instrucción
BTFSS f,b Verifica el bit b del registro 0111 bbbf ffff ---- ---- ---- ----
f y si vale 1 salta una
instrucción

40
Tabla 3-6. Instrucciones para el manejo de un bit de un registro.

3-2-7 Instrucciones especiales

Son dos instrucciones que realizan operaciones muy específicas.

NEMONICOS DESCRIPCION CODIGO OP BANDERAS NOTAS


NOP No operación (Pausa) 0000 0000 0000 ---- ---- ---- ----
SLEEP Pasa al procesador al 0000 0000 0011 TO y PD ---- ----
modo de reposo o bajo
consumo

Tabla 3-7. Instrucciones especiales de los PIC de la gama baja.

3-3 DESCRIPCIÓN DETALLADA POR ORDEN ALFABETICO

A continuación se presentan las 33 instrucciones de los PIC de la gama baja en forma


tabular, por orden alfabético y con un ejemplo de aplicación en cada una. Esta
descripción ordenada puede ser de utilidad cuando se está confeccionando un programa
para encontrar alguna propiedad de interés.

ADDWF W AND F
Sintaxis: [label] ADDWF f,d
Operandos: d Î [0,1], 0£ f £ 32
Operación: (W) + (f) Þ(dest)
Flags afectados: C, DC, Z
Código OP: 0 0 0 1 1 1 d f f f f f

Descripción: Suma el contenido del registro W y


el registro "f". Si "d" es 0, el resultado se
almacena en el registro W. Sí "d" es 1
el resultado se almacena en el registro "f”.
Ejemplo:
ANDWF REG,0
Antes de la instrucción: W = 0x17
REG = 0xC2
Después de la instrucción: W = 0xD9
REG = 0xC2

ANDWF W AND f
Sintaxis: [label] ANDWF f,d
Operandos: d Î [0,1], 0£ f £ 32
Operación: (W) AND (f) Þ (dest)
Flags afectados: Z
Código OP: 0 0 0 1 0 1 d f f f f f

Descripción: Realiza la operación lógica AND entre el

41
registro W y el registro "f”. Si "d" es 0 el resultado se
almacena en el registro W. Si "d" es 1, 1, el resultado
se almacena en el registro "f”.
Ejemplo:
ANDWF REG, 1
Antes de la instrucción: W = 0x17
REG = 0×C2
Después de la instrucción: W = 0x17
REG = Ox02

ANDLW W AND f literal


Sintaxis: [label] ANDLW f,d
Operandos: d Î [0,1], 0 £ k £ 32
Operación: W .AND. (k) Þ (W)
Flags afectados: Z
Código OP: 1 1 1 0 k k k k k k k k

Descripción: Realiza la operación lógica AND entre el


registro W y la constante "k". El resultado se almacena
en el registro W.
Ejemplo:
ANDLW REG, 0
Antes de la instrucción: W = 0×A3
Después de la instrucción: W = 0x03

BCF Borra un bit


Sintaxis: [label] BCF f,b
Operandos: 0 £ f £ 32; 0 £ b £ 32;
Operación: 0 Þ (f < b >)
Flags afectados: Ninguno
Código OP: 0 1 0 0 b b b f f f f f

Descripción: Realiza la operación lógica AND entre


el registro W y la constante “k”. El resultado se
almacena en el registro W.
EJEMPLO:
BCF REG, 7
Antes de la instrucción: REG = 0xC7
Después de la instrucción: REG = 0x47

BSF Activa un bit


Sintaxis: [label] BSF f,b
Operandos: 0 £ f £ 32; 0 £ b £ 32;
Operación: 0 Þ (f < b >)
Flags afectados: Ninguno

42
Código OP: 0101 bbbf ffff

Descripción: Activa el bit “b” del registro “f”


EJEMPLO:
BSF REG, 7
Antes de la instrucción: REG = 0x0A
Después de la instrucción: REG = 0x8A

BTFSC Activa un bit


Sintaxis: [label] BTFSC f,b
Operandos: 0 £ f £ 32; 0 £ b £ 32;
Operación: Salto si (f < b >) = 0
Flags afectados: Ninguno
Código OP: 0 0 0 1 b b b f f f f f

Descripción: Si el bit “b” del registro “f” es 0,se


salta una instrucción y se continua con la ejecución.
EJEMPLO:
BTFSC REG,6
GOTO NO_ES_0
SI_ES_0 .............................
.............................
.............................
NO_ES_0 .............................
.............................

BTFSS Test de bit y salto


Sintaxis: [label] BTFSS f,d
Operandos: 0 £ f £ 32; 0 £ b £ 32;
Operación: Salto si (f < b >) = 1
Flags afectados: Ninguno
Código OP: 0 1 1 1 b b b f f f f f

Descripción: Si el bit “b” del registro “f” es 1,se salta


una instrucción y se continua con la ejecución.
EJEMPLO:
BTFSS REG,6
GOTO SI_ES_1
NO_ES_1 .............................
.............................
.............................
SI_ES_1 .............................
.............................

CALL Salto a subrutina

43
Sintaxis: [label] CALL k
Operandos: 0 £k £ 2047
Operación: 0 Þ (f < b >)
Flags afectados: Ninguno
Código OP: 1 0 0 1 k k k k k k k k

Descripción: Salto a subrutina. La dirección de retorno se


guarda en la pila. La constante “k” de 8 bits forma la
dirección de salto y se carga en los bits <7:0> del PC.
Los bits <10:9> del PC se cargan con los bits <6:5>
del registro “STATUS” PC <8> se pone a 0.
EJEMPLO:
ORG CALL DESTINO
Antes de la instrucción: PC = ORG
Después de la instrucción: PC = DESTINO

CLRW Borra el registro W


Sintaxis: [label] CLRW
Operandos: Ninguno
Operación: 00h Þ W; 1 Þ Z
Flags afectados: Z
Código OP: 0 0 0 0 0 1 0 0 0 0 0 0

Descripción: El registro de trabajo “W” se carga con 00h


El flag de Z se activa.
EJEMPLO:
CLR W
Antes de la instrucción: W = 0x5A
Después de la instrucción: W = 00
Z=1

CLRF Borra un registro


Sintaxis: [label] CLR f
Operandos: Ninguno
Operación: 00h Þ (f); 1 Þ Z
Flags afectados: Z
Código OP: 0 0 0 0 0 1 1 f f f f f

Descripción: Se borra el contenido del registro “f” y el flag


Z de estado se activa.
EJEMPLO:
CLR W
Antes de la instrucción: REG = 0x5A
Después de la instrucción: REG = 0x00
Z=1

44
CLRWDT Borra el “Watchdog”
Sintaxis: [label] CLRWDT
Operandos: Ninguno
Operación: 00h Þ WDT; 1 Þ TO(f); 1 Þ PD
Flags afectados: TO, PD
Código OP: 0 0 0 0 0 1 1 1 d f f f f f

Descripción: Esta instrucción borra tanto el “watchdog”


como su preescaler. Los bits TO y PD del registro de
estado se ponen a “1”.
EJEMPLO:
CLRWDT
Después de la instrucción:
Contador WDT = 0
Preescaler WDT = 0
Bit de estado TO = 1
Bit de estado PD = 1

DECFSZ Decremento y salto.


Sintaxis: [label] DECFSZ f,d
Operandos: 0 £ f £ 32; dÎ [0,1]
Operación: (f) - 1 Þ d; Salto si R = 0
Flags afectados: Ninguno
Código OP: 0 1 0 0 1 1 d f f f f f

Descripción: El contenido del registro ”f” se decrementa.


Si “d” es 0, el resultado “R” se coloca en el registro W.
Si “d” es 1, el resultado “R” se coloca en el registro
“f”. Si R = 0, se salta a la siguiente instrucción y se
continua con la ejecución.
EJEMPLO:
DECFSZ REG,0
GOTO NO_ES_0
SI_ES_0 .............................
.............................
.............................
NO_ES_0 .............................
.............................

DECF Decremento de f
Sintaxis: [label] DECF f,d
Operandos: 0 £ f £ 32; dÎ [0,1]
Operación: (f) - 1 Þ (dest)
Flags afectados: Z
Código OP: 0 0 0 0 0 1 d f f f f f

Descripción: Se decrementa en una unidad el contenido

45
del registro “f”. Si “d” es 0, el resultado se almacena en W.
Si “d” es 1, el resultado se almacena en “f”.
EJEMPLO:
DEC CONT, 1
Antes de la instrucción: REG = 0x01
Z=0
Después de la instrucción: REG = 0x0
Z=1

GOTO Salto incondicional


Sintaxis: [label] GOTO k
Operandos: 0 £ k £ 512
Operación: k Þ PC <8:0>
Flags afectados: ninguno
Código OP: 1 0 1 k k k k k k k k k

Descripción: Se trata de un salto incondicional.


Los nueve bits de la constante “k” que forman la
instrucción, se cargan en los bits <8:0> del PC y
forman la dirección de salto. Los bits <10:9> del PC se
cargan con los bits <6:5> del registro de estado.
EJEMPLO:
ORG GOTO DESTINO
Antes de la instrucción: PC = 0
Después de la instrucción: PC = DESTINO

INCF Incremento de f
Sintaxis: [label] INCF f,d
Operandos: 0 £ f £ 32; dÎ [0,1]
Operación: (f) + 1 Þ (dest)
Flags afectados: Z
Código OP: 0 0 1 0 1 0 d f f f f f

Descripción: Se incrementa en una unidad el contenido del


registro “f”. Si “d” es 0, el resultado se almacena en W.
Si “d” es 1, el resultado se almacena en “f”.
EJEMPLO:
INCF CONT, 1
Antes de la instrucción: CONT = 0x01
Z=0
Después de la instrucción: CONT = 0x0
Z=1

IORLW W OR Literal
Sintaxis: [label] IORLW k
Operandos: 0 £ f £ 255

46
Operación: (W) .OR. (k) Þ PC (W)
Flags afectados: Z
Código OP: 1 0 1 1 k k k k k k k k

Descripción: Se realiza la función lógica OR entre el


registro W y la constante “k”. El resultado se almacena en
el registro W.
EJEMPLO:
IORLW 0x35
Antes de la instrucción: W = 0x9A
Después de la instrucción: W = 0xBF

MOVF Mover a f
Sintaxis: [label] MOVF f,d
Operandos: 0  f  32; d  [0,1]
Operación: (f)  (dest)
Flags afectados: Z
Código OP: 0 0 1 0 0 0 d f f f f f

Descripción: El contenido del registro “f” se mueve al


destino “d”. Si “d” es 0, el destino es el registro W. Si “d”
es 1, el destino es el propio registro “f”. Esta posibilidad
permite verificar dicho registro ya que el flag Z queda
afectado.
Ejemplo:
MOVF REG,0
Después de la instrucción: W = REG

MOVWF Mover W a f
Sintaxis: [label] MOVWF f
Operandos: 0  f  32
Operación: (W)  (dest)
Flags afectados: Ninguno
Código OP: 0 0 0 0 0 0 1 f f f f f

Descripción: Mueve el contenido del registro W al registro


“f”
Ejemplo:
MOVWF REG
Antes de la instrucción: REG = 0xFF
W = 0x4F
Después de la instrucción: REG = 0x4F
W = 0x4F

MOVLW Carga un literal en W


Sintaxis: [label] MOVLW k

47
Operandos: 0  f  255
Operación: (k)  (W)
Flags afectados: Ninguno
Código OP: 1 1 0 0 k k k k k k k k

Descripción: El registro W se carga con el valor de 8 bits


expresado mediante la literal “k”
Ejemplo:
MOVLW 0x5A
Después de la instrucción: W = 0x5A

NOP No operación
Sintaxis: [label] NOP
Operandos: Ninguno
Operación: No operar
Flags afectados: Ninguno
Código OP: 0 0 0 0 0 0 0 0 0 0 0 0

Descripción: No realiza operación alguna. En realidad, se


consume un ciclo de instrucción sin hacer nada.
Ejemplo:
NOP

OPTION Carga registro OPTION


Sintaxis: [label] OPTION
Operandos: Ninguno
Operación: (W)  OPTION
Flags afectados: Ninguno
Código OP: 0 0 0 0 0 0 0 0 0 0 1 0

Descripción: El contenido del registro W se carga en el


registro OPTION. Este es un registro de solo escritura
donde se configura el funcionamiento del preescaler y
el TMR0
Ejemplo:
OPTION
Antes de la instrucción: W = 0x07
Después de la instrucción: OPTION = 0x07

RRF Rota f a la derecha


Sintaxis: [label] RRF f,d
Operandos: 0  f  32; d  [0,1]
Operación: Rotación a la derecha
Flags afectados: C
Código OP: 0 0 1 1 0 0 d f f f f f

48
Descripción: El contenido del registro “f” se rota a la
derecha el bit de menos peso de “f” pasa al flag carry. El
carry se coloca en el bit de mas peso de “f”. Si “d” es 0, el
resultado se almacena en el registro W. Si “d” es 1,
el resultado se almacena en “f”.
Ejemplo:
RRF REG,0
Antes de la instrucción: REG = 11100110
C=1
Después de la instrucción: REG = 11100110
W = 01110011
C=0

SUBWF Resta f - W
Sintaxis: [label] SUBWF f,d
Operandos: 0  f  32; d  [0,1]
Operación: (f) - (W)  (dest)
Flags afectados: C, DC, Z
Código OP: 0 0 0 0 1 0 d f f f f f

Descripción: Resta por el método del complemento a 2, el


contenido del registro “f” menos el contenido del
registro W. Si “d” es 0, el resultado se almacena en el
registro W. Si “d” es 1, el resultado se almacena en el
registro “f”. Si el resultado es negativo, el carry se pone
a 0.
Ejemplo:
SUBWF REG,1
Antes de la instrucción: REG = 1
W=2
Después de la instrucción: REG = 0xFF
W = 0xFF

RETLW Retorno, carga W


Sintaxis: [label] RETLW k
Operandos: 0  k  255
Operación: k  (W); TOS  PC
Flags afectados: Ninguno
Código OP: 1 0 0 0 k k k k k k k k

Descripción: El registro W se carga con los 8 bits de la


constante k. El PC se carga con el contenido de la cima
de la pila (TOS); dirección de retorno. Esta instrucción
consume dos ciclos.
Ejemplo:
RETLW 0x37

49
Después de la instrucción:
PC = dirección de retorno
A = 0x37

RLF Rota f a la izquierda


Sintaxis: [label] RLF f,d
Operandos: 0  f  32; d  [0,1]
Operación: Rotación a la izquierda de f
Flags afectados: C
Código OP: 0 0 1 1 0 1 d f f f f f

Descripción: El contenido del registro “f” se rota una


posición a la izquierda. El bit de mas peso pasa al
carry y el carry se introduce por el bit de menos peso
de “f”. Si “d” es 0, el resultado se coloca en el registro
W. Si “d” es 1, el resultado queda en el registro “f”
Ejemplo:
RLF REG 1,0
Antes de la instrucción: REG = 11100110
W=0
Después de la instrucción: REG = 11100110
W = 11001100
C=1

SWAPF Intercambio de f
Sintaxis: [label] SWAPF f,d
Operandos: 0  f  32; d  [0,1]
Operación: (f < 3:0 >)  (dest (< 7:4 >))
Flags afectados: Ninguno
Código OP: 0 0 1 1 1 0 d f f f f f

Descripción: Los cuatro bits de mas peso del registro “f”


se intercambian con los 4 bits de menos peso del mismo
registro. Si “d” es 0, el resultado se coloca en el
registro W. Si “d” es 1, el resultado se queda en el
registro “f”.
Ejemplo:
SWAPF REG,0
Antes de la instrucción: REG = 0x5A
Después de la instrucción: REG = 0xA5
W = 0xA5

XORLW W XOR literal


Sintaxis: [label] XORLW k
Operandos: 0  k  255
Operación: (W) , XOR , k  (W)

50
Flags afectados: Z
Código OP: 1 1 1 1 k k k k kkkk

Descripción: Realiza la función lógica OR exclusiva (XOR)


entre el contenido del registro W y la constante “k” de
8 bits. El resultado se almacena en el registro W.
Ejemplo:
XORLW 0xAF
Antes de la instrucción: W = 0xB5
Después de la instrucción: W = 0x1A

TRIS Carga registro TRIS


Sintaxis: [label] TRIS f
Operandos: 5f7
Operación: (W)  Registro TRIS “f”
Flags afectados: Ninguno
Código OP: 0 0 0 0 0 0 0 0 0 f f f

Descripción: El contenido del registro W se carga en uno


de los tres registros TRIS (TRISA, TRISB, TRISC) según
“f” valga 5, 6 o 7 respectivamente. Los registros TRIS
se emplean para configurar cada una de los puertos A,
B o C para que actúen sus líneas como entrada o salida.
Ejemplo:
TRIS PORTA
Antes de la instrucción: W = 0xA5
Después de la instrucción: TRISA = 0xA5

XORWF W XOR f
Sintaxis: [label] XORWF f,d
Operandos: 0  f  32; d  [0,1]
Operación: (W).XOR.(f)  (dest)
Flags afectados: Z
Código OP: 0001 10df ffff

Descripción: Realiza la función lógica OR exclusiva (XOR)


entre el contenido del registro W y el registro “f”. Si
“d” es 0, el resultado se almacena en el registro W. Si
“d” es 1, el resultado se almacena en el registro “f”.
Ejemplo:
XORWF REG,1
Antes de la instrucción: REG = 0xAF
W = 0xB5
Después de la instrucción: REG = 0x1A
W = 0xB5

51
3-4 INSTRUCCIONES DE LA GAMA MEDIA

Las diferencias entre el repertorio de instrucciones de las gamas baja y media son
mínimas y se puede considerar que, cuando se manejan las de la gama inferior, se
puede pasar a manejar las de la superior de forma inmediata, pero una vez que haya
estudiado la estructura interna, los nuevos periféricos y recursos que existen en los
microcontroladores de la gama media y los nuevos registros para su control. Todo ello se
describe en los siguientes capítulos.

El referirse ahora a dichas instrucciones sin conocer los componentes que las usan sólo
es debido a que, como prácticamente son iguales a las de la gama baja, su conocimiento
permitirá al lector entender mejor el control de dichos componentes.

Una diferencia inicial entre los dos repertorios radica en la longitud del código OP de las
instrucciones. Mientras que las de la gama baja tienen 12 bits, las de la media tienen 14,
con lo cual pueden direccionar más tamaño de memoria y operandos más potentes.

En cuanto a los mnemónicos y símbolos usados en las instrucciones de ambas gamas


son idénticos y, en cuanto a su número, la gama baja dispone de 33 instrucciones la
media, de 35.

Existe una similitud total en 31 instrucciones de ambos repertorios (mnemónicos,


operandos, señalizadores y función). Claro está que en la gama media la misma
instrucción puede acceder a memorias de más tamaño y a nuevos registros que existen
para controlar los nuevos recursos y periféricos que disponen. Las diferencias en las
restantes instrucciones son las siguientes:

1ª) La gama baja dispone de dos instrucciones que no existen en la media:

OPTION : Carga el registro OPTION


TRIS: Carga el registro TRIS.

2ª ) La gama media dispone de cuatro instrucciones que no existen en la baja:

ADDLW: Suma un valor inmediato al registro W.


RETFIE: Retorno desde interrupción.
RETURN: Retorno desde subrutina.
SUBLW: Resta W de un inmediato.

3-5 COMPATIBILIDAD Y CONVERSIÓN DE CÓDIGO

Para convertir el código escrito con el repertorio de instrucciones de la gama baja


(PIC16C5X) en código para la gama media (PIC16CXX), sólo hay que tener en cuenta
los siguientes cuidados y modificaciones:

El Vector de reset hay que situarlo en la dirección 0000h

52
Revisar las operaciones de selección de pagina de la memoria de programa (bits PA2,
PA1 y PA0) para instrucciones CALL y GOTO
Revisar las operaciones de salto en el programa que afectan al PC para asegurarse que
los bits de selección son los apropiados para el nuevo esquema de organización de la
memoria.
Eliminar los pasos entre paginas de la memoria de datos, redefiniendo variables y
reubicandolas
Verificar todas las escrituras en los registros OPTION, ESTADO y FSR

53
4 MICROCONTROLADORES DE LA GAMA ALTA Y NUEVOS

4-1 APORTACIONES DE LA GAMA ALTA

La gama alta de microcontroladores de Microchip engloba a tres modelos


fundamentales:
PIC17C42
PIC17C43
PIC17C44

En el formato DIL las tres versiones esta encapsuladas con 40 patitas y disponen de una
EPROM para la memoria de programa. Siguen los criterios básicos que seguían los
componentes de la gama media y baja:

- Arquitectura Harvard.
- Instrucciones de 16 bits y datos de 8 bits.
- Segmentación que permite ejecutar a las instrucciones en un ciclo de instrucción,
excepto a las de salto, que tardan dos.
- Pila de 16 niveles.
- Múltiples fuentes capaces de generar una interrupción.
- Modo de funcionamiento de bajo consumo o reposo.
- Cuatro opciones de construir el oscilador principal.

Las mejoras que se han realizado sobre la arquitectura de los PIC de gamas inferiores
han incorporado en la gama alta nuevas posibilidades, entre las que destacan:

- Máxima frecuencia de funcionamiento a 25 MHz, con un ciclo de instrucción de 160 ns.


- Repertorio de 55 instrucciones para el PIC17C42 y de 58 para los otros dos modelos.
- Los PIC17C43/44 disponen de multiplicadores hardware muy rápidos para aplicaciones
que hacen un uso intensivo de operaciones matemáticas.
- La memoria de datos alcanza una capacidad de 454 bytes.
- Con 33 patitas dedicadas a E/S integran diversos periféricos:
- Cuatro temporizadores.
- Dos entradas para modulo de Captura.
- Dos salidas para modulo PWM.
- Un interfaz de comunicaciones serie (SCI).

Al igual que sucede con las otras gamas, los modelos de esta se presentan en cuatro
posibles encapsulados comerciales:

1º EPROM BORRABLE UV

Son cápsulas cerámicas de 40 patitas provistas de una ventana a cuyo través se pueden
borrar mediante rayos ultravioleta la memoria EPROM de programa. Es un modelo muy
útil en la frase de desarrollo del código.

2º OTP PROGRAMABLE UNA SOLA VEZ

54
Similar al modelo anterior, pero sin ventana y, por lo tanto, sin la posibilidad de borrar y
volver a grabar un nuevo programa. Su bajo coste le hace muy aconsejable en
producciones medianas y grandes.

3º QTP

Microchip ofrece un servicio a sus clientes mediante el cual les graba el programa
cuando se van a utilizar a grandes cantidades. La presentación es similar a las de
cápsulas OTP.

4º SQTP

También el fabricante graba en unas pocas posiciones de la memoria de programa


diferentes números y códigos que sirven como identificativo, clave, password, checksum,
código de entrada, etc.

La arquitectura de los PIC de la gama alta se considera “abierta” porque pueden sacar al
exterior los buses internos y adaptarlos a los de otro sistema o otros dispositivos, como
memorias externas y otros periféricos. Para cubrir estas prestaciones admiten funcionar
en cuatro modos de trabajo:

Modo microprocesador
Modo microcontrolador
Modo microcontrolador ampliado
Modo microcontrolador protegido

En los modos microprocesador y microcontrolador ampliado se puede añadir una


memoria de programa externa hasta alcanzar una capacidad de 64k palabras.

En la Tabla 4-1 se ofrecen los principales recursos y características de los


microcontroladores de la gama alta.

55
Tabla 4-1. Microcontroladores de la gama alta (caracteristicas)

Estos potentes microcontroladores se considera que comprimen el código dos veces y su


velocidad es cuatro veces superior a los microcontroladores convencionales de 8 bits.

Las aplicaciones de estos dispositivos se encuadran especialmente en el área del control


industrial de motores, la industria de automoción, las telecomunicaciones y la
instrumentación.

4-2 ARQUITECTURA ABIERTA

En la figura 4-1 se muestra el esquema de la arquitectura correspondiente a los


PIC17C43 y 44. El PIC17C42 es similar, pero no dispone del multiplicador 8x8 hardware
y sus registros asociados PRODH y PRODL.

Aunque la arquitectura se mantiene como RISC y tipo Harvard, se ha mejorado


sustancialmente para potenciar sus capacidades. Como el código OP de las
instrucciones es de 16 bits, la misma longitud tienen las posiciones de la memoria de
programa, que es independiente de la memoria de los datos, cuyas posiciones son de
tamaño byte. Aunque la memoria de programa interna alcanza un máximo de 8k
palabras, es factible ampliarla externamente y alcanzar las 64 k x 16.

Una novedad que presenta Microchip para la gama alta la constituyen los modelos
PIC17C752/756, que alcanzan capacidades de memoria de programa de 8K x 16 y 16K

56
x 16 y de memoria de datos de 454 y 902 bytes, respectivamente. Pueden funcionar a
una frecuencia de 33 MHz y disponen de un multiplicador hardware 8 x 8 con un tiempo
de respuesta de 120ns. Los dos modelos comentados contienen un CAD de 10 bits con
12 canales de entrada. Sus cápsulas de 64 y 68 patitas soportan hasta 50 líneas de E/S,
integran 4 temporizadores, una pila de 16 niveles y un puerto serie sincrono (SSP) que
funciona en modo I2C y SPI.

Los registros especiales y los de propósito general están mapeados en la memoria de


datos y se pueden direccionar directa o indirectamente. En la gama alta se pueden
acceder con la misma instrucción a dos bancos de registros, lo que significa que algunas
instrucciones disponen de dos operandos y puede transferirse información entre dos
registros sin tener que pasar a través del registro de trabajo WREG.

La ALU de 8 bits realiza las diversas operaciones lógicas y aritméticas entre el contenido
del registro WREG y el de otro registro. El multiplicador hardware que integran los
PIC17C43 y 44 permite multiplicar dos operandos de 8 bits generando un resultado de
16 bits en un solo ciclo.

57
Figura 4-1. Arquitectura de los microcontroladores de la gama alta.

58
4-2-1 Diagrama de conexionado

En la figura 4-2 se muestran los diagramas de conexionado de diversos encapsulados de


los PIC17C4X

Figura 4-2. Diagramas de conexionado de la familia PIC17C4X

A continuación se describen las funciones de las 40 patitas de las cápsulas PDIP.

OSC1/CLKIN Entrada al oscilador (cristal, resonador o red R-C). Entrada


externa de impulsos en modo reloj exterior.
OSC2/CLKOUT Salida del oscilador. En modo R-C por esta patita sale la cuarta
parte de la frecuencia de trabajo, que coincide con la del ciclo de

59
instrucción.
MCLR/VPP Entrada de reset o entrada de la tensión V PP para la fase de
grabación de la memoria EPROM
VDD Entrada de la tensión positiva de la alimentación
VSS Tierra
TEST Entrada para el control del modo test. En funcionamiento normal
debe conectarse a tierra.
PUERTO A Puerto bidireccional de E/S, con excepción de RA0 y RA1, que
siempre son entradas
RA0/INT Puede actuar como entrada de interrupción y ser programada para
ser sensible al flanco ascendente o descendente.
RA1/T0CKI También puede actuar como entrada de reloj para TMR0
RA2 y RA3 Patitas de E/S digitales de alto voltaje y alta corriente, con colector
abierto
RA4/Rx/DT Puede programarse como Receptor en SCI asincrono o como Dato
en SCI asincrono.
RA5/Tx/CK Puede funcionar como Transmisor en SCI asincrono o como señal
de reloj en SCI sincrono.
PUERTO B Puerto bidireccional de E/S de ocho líneas
RB0/CAP1 y RB1/CAP2
También pueden actuar como entradas en los módulos de
Captura 1 y 2.
RB2/PWM1 y RB·/PWM2
Pueden funcionar como salidas de los módulos PWM 1 y 2
RB4/TCLK12 Puede actuar como entrada de reloj externo de TMR1 y TMR2
RB5/TCLK3 También puede actuar como entrada de reloj externo para TMR3
RB6 y RB7 Líneas de E/S digitales.
PUERTO C
RC0/AD0,…, RC7/AD7
Cuando se trabaja en modo Microprocesador o Microcontrolador
ampliado, estas patitas pueden actuar como la parte baja de ocho
líneas del bus de un sistema de 16 bits (AD0-AD7 : Direcciones-
Datos).
PUERTO D
RD0/AD8,…, RD7/AD15
En modo Microprocesador o microcontrolador ampliado, estas
patitas de E/S también pueden funcionar como la mitad de las
líneas de mas peso de un bus de 16 bits
PUERTO E Es un puerto de E/S bidireccional de solo tres líneas
RE0/ALE En modo microprocesador o microcontrolador ampliado también
puede actuar como la señal de control ALE (Activación de la
bascula de direcciones)
RE1/OE En modo Microprocesador o microcontrolador ampliado actúa
como la señal de control OE (Permiso de Salida)
RE2/WR En el modo Microprocesador o Microcontrolador ampliado actúa
como la señal de control WR (Escritura)

60
4-3 ORGANIZACIÓN DE LA MEMORIA

Tal como lo exige la arquitectura Harvard, los PIC17C4X disponen de dos bloques de
memoria independientes: uno destinado al programa y el otro para los datos o los
bancos de registros. Se puede accesar a ambas memorias en el mismo ciclo, pues cada
uno tiene sus propios buses de acceso.

4-3-1 Memoria de programa

El Contador de Programa, PC, tiene un tamaño de 16 bits y proporciona la dirección de


la instrucción a la que se accede. Con 16 bits puede direccionar hasta 64 k palabras. La
memoria de programa EPROM integrada en el microcontrolador alcanza la dirección
7FFh en el PIC17C42 de 2 k palabras. La dirección FFFh en el PIC17C43 de 4 k
palabras y, finalmente, la dirección 1FFFh en el PIC17C44 de 8 k x 16. En los tres
modelos se puede ampliar externamente la memoria hasta llegar a las 64 k palabras, es
decir, hasta la dirección FFFFh.

En la cabecera de la memoria de programa hay varias posiciones reservadas.

DIRECCION FUNCION RESERVADA

0000h Vector de reset


0008h Vector de Interrupción
0010h Vector de Interrupción de TMR0
0018h Vector de Interrupción de la patita T0CKI
0020h Vector de Interrupción para periféricos

En los modos de funcionamiento como “Microcontrolador” o “Microcontrolador protegido”


solo se tiene acceso al área de memoria de programa que esta integrada en el chip. En
el modo “Microcontrolador ampliado” se puede acceder a la memoria interna y a la
externa, realizando la conmutación automáticamente.

En el modo “Microprocesador” solo se puede acceder a la memoria externa, ignorando la


interna. En este modo es el que trabaja por defecto y en el no se puede acceder al área
destinada a la configuración de la memoria. La figura 4-3 muestra el mapa de la Memoria
de programa. En la parte superior figuran los vectores de reset y de Interrupción. El
espacio destinado a los programas del usuario comprende toda la memoria interna y
parte de la externa hasta la dirección FDFFh. Las ultimas posiciones se reservan para la
configuración de la memoria.

Las líneas de los puertos C, D y E conforman el bus del sistema cuando el


microcontrolador opera en el modo Microprocesador o Microcontrolador ampliado. Los
puertos C y D multiplexan los datos y las direcciones (AD0-AD15), mientras que el puerto
E soporta las señales de control. En la figura 4-4 se muestra un esquema de
conexionado de un PIC17C4X con una memoria externa.

Un PIC17C44 tiene 8 k palabras de memoria interna y la dirección mas alta alcanza la


1FFFh, lo que significa que la dirección 1000h esta dentro de la memoria integrada en el
microcontrolador.

61
Figura 4-3.Mapa de la memoria de programa

62
Figura 4-4. Ampliacion del area de programa (memoria)

4-3-2 Memoria de datos

La Memoria de datos esta dividida en dos áreas. Una de ellas corresponde al banco de
Registros de Propósito General (GPR), y la otra esta dedicada a los Registros de
Funciones Especiales (SFR), que controlan los recursos y periféricos del
microcontrolador. Las dos áreas están repartidas en bancos, que se seleccionan
mediante ciertos bits destinados a ese propósito que se hallan en el Registro de
Selección de Banco (BSR). Cuando se realiza un acceso a una posición situada fuera de
los bancos, se ignoran los bits del BSR.

En la figura 4-5 se presentan los mapas de las memorias de datos del PIC17C42 y
PIC17C43/44. Obsérvese que hay una serie de registros que no se ubican en los
bancos. Dichos registros están asociados al núcleo del microcontrolador. Los registros
asociados con los periféricos ocupan los bancos 0, 1, 2 y 3.

63
Figura 4-5. Mapas de la memoria de datos PIC17C4X.

El área destinada a los Registro de Propósito General ocupa 232 bytes, debiendo utilizar
la partición en bancos cuando se supera ese valor como sucede con los PIC17C43 y 44.
Estos registros no cambian de valor cuando se ejecuta un reset.

El juego de instrucciones de la gama alta dispone de algunas variantes de MOV que


facilitan la conmutación entre diferentes bancos.

64
Se describen algunas peculiaridades de los registros mas novedosos del área de datos.

ALUSTA (Registro de Estado de la ALU)

Contiene los señalizadores C, DC, Z y OV. Este ultimo se usa en operaciones aritméticas
con números con signo y advierte de sobrepasamiento en el bit séptimo, que es el de
mas peso. Este hecho origina el cambio de estado del octavo bit que es el de signo.
También se hallan en este registro los bits de selección de modo (FSR0 y FSR1).

CPUSTA (Registro de Estado de la CPU)

Contiene los bits de estado y control de la CPU. Algunos bits indican si la Pila esta llena
o disponible, interrupciones permitidas o prohibidas, el bit TO para indicar el final de la
cuenta del Perro guardián y el bit PD, que señaliza la caída de la alimentación cuando se
ejecuta la instrucción SLEEP.

T0STA (Registro de Estado y Control de TMR0)

Contiene varios bits que regulan el funcionamiento de TMR0.

TBLPTRL/TBLPTRH (Puntero de la Tabla)

Estos dos registros forman un puntero de 16 bits que configuran la dirección de la


memoria de programa de 64k. Este puntero lo utilizan las instrucciones TABLWT y
TABLRD que sirven para transferir información entre los espacios de la memoria de
programa y la de datos.

TBLATH/TBLATL (Bascula-cerrojo de la Tabla)

Estos dos registros forman uno de 16 bits que se emplea para guardar temporalmente la
información que se transfiere entre la memoria de programa y la de datos.

Los PIC17C4X disponen de cuatro instrucciones especiales que permiten mover


información entre el espacio de la memoria de datos y el de la memoria de programa, y
viceversa. Como la anchura de las posiciones del programa es de 16 bits y la de datos
solo de 8 bits, hay que realizar dos operaciones para completar la transferencia.

Las instrucciones TLWT t,f y TABLWT t,i,f se usan para escribir información desde la
memoria de datos a la de programa. La figura 4-6 muestra de manera gráfica la función
de estas instrucciones.

Las instrucciones TLRD t,f y TABLRD t,i,f pasan información desde la memoria de
programa a la de datos.

65
TABLWT

TLWT
Figura 4-6. Instrucciones TLWT y TABLWT

BSR (Registro de Selección del banco)

Se emplea en la conmutación de bancos en el área de la memoria de datos. En el


PIC17C42 solo están implementados los 4 bits de menos peso, mientras que en los otros

66
dos modelos están implementando los 8 bits. Los 4 bits de menos peso seleccionan el
banco de los registros para periféricos y los 4 bits de mas peso el banco de registros de
propósito general.

4-4 PERIFERICOS

Aun con 33 patitas destinadas a las E/S, los PIC de la gama alta no integran nuevos
periféricos y recursos, los cuales se citan a continuación:

Cinco Puertos de E/S multifuncionales.


Cuatro temporizadores, TMR0, TMR1, TMR2 y TMR3.
Modulo PWM
Modulo de Captura.
Interfaz de comunicación serie (SCI).

4-4-1 Puertos de E/S

Tres de los cinco Puertos de E/S de los PIC17C4X son de 8 bits (Puertos B, C y D). El
Puerto A tiene seis líneas y el Puerto B, solo tres.

PUERTO A

Dispone de seis patitas bidireccionales pero carece de Registro de Dirección de Datos.


RA0, además de E/S digital, puede actuar como entrada de interrupción externa.

RA1 tiene multiplexada su función de E/S digital con la de entrada del reloj externo para
TMR0.

RA2 y RA3 son salidas con colector abierto.

RA4 y RA5 multiplexan sus E/S digitales con funciones para el modo SCI. Cuando se
configura dicho modo, actúan como salidas automáticamente.

PUERTO B

Es un puerto de ocho líneas bidireccionales y esta asociada con el Registro de Dirección


de datos DDRB. Un 1 en un bit de este registro configura como entrada la línea
correspondiente del Puerto B y un 0 la configura como salida.

El Puerto B tiene la posibilidad de generar una interrupción cuando cambia el estado


lógico de alguna de sus líneas.

PUERTO C

Es un puerto de ocho líneas de E/S digitales y tiene asociado el registro DDRC como
Registro de Dirección de datos. Para acceder e inicializar el Puerto C hay que
seleccionar previamente el banco 1 con el Registro de Selección de banco (BSR).

67
Cuando el microcontrolador funciona en un entorno con un bus de sistema externo, las
líneas del Puerto C soportan el byte de menos peso de dicho bus (AD0-AD7).

PUERTO D

Es un puerto de ocho líneas que seleccionan el banco 1.

Además, sus líneas pueden actuar como el byte de mas peso del bus del sistema
exterior (AD8-AD15).

PUERTO E

Solo dispone de tres líneas de E/S bidireccionales, asociadas al Registro de Direcciones


de datos, DDRE. Cuando funciona con un bus de sistema exterior, estas líneas soportan
las señales de control ALE, OE y WR.

Hay que inicializar este puerto desde el banco 1.

4-4-2 Temporizadores TMR0, TMR1, TMR2 y TMR3

Los PIC17C4X disponen de cuatro temporizadores cada uno de los cuales puede
generar una interrupción. Sus características generales son:

TMR0: Temporizador de 16 bits con Predivisor de frecuencia de 8 bits.


TMR1: Temporizador de 8 bits
TMR2: Temporizador de 8 bits
TMR3: Temporizador de 16 bits

Para mejorar sus prestaciones, los temporizadores, puede asociarse a dos módulos
PWM y a otros dos de Captura.

TMR0

Se trata de un contador de 16 bits que puede alimentarse con los impulsos de reloj del
oscilador interno o con otros procedentes del exterior. Puede programarse para funcionar
con un Predivisor de frecuencia cuya rango es seleccionable entre 1:1, 1:2, 1:4, 1:8,
1:16, 1:32, 1:64, 1:128 y 1:256.

Cuando se utiliza el Predivisor, los impulsos de reloj exteriores se sincronizan después


de pasar por el, debiendo ser la frecuencia mayor que la de funcionamiento con un
máximo de 50 MHz.

TMR1

Es un Temporizador/Contador de 8 bits con un registro de periodo PR1 de 8 bits.


Cuando TMR1 sobrepasa el valor del periodo, vuelve a 0, se pone a 1 el señalizador
TMR1IF y se puede generar una interrupción.

TMR1 puede concatenarse con TMR2 para conformar un temporizador de 16 bits. En tal
caso, TMR1 es el registro de menos peso y TMR2 el de mas. Se usa como registro de

68
periodo el que se forma de la concatenación de TMR1:TMR2. Cuando el contador
concatenado TMR1:TMR2 sobrepasa el valor del periodo guardado en PR2:PR1, vuelve
a 0 y se pone a 1 el señalizador TMR1IF, pudiéndose generar una interrupción si esta
autorizada.

TMR2

Funciona de forma similar a TMR1 y dispone de su propio registro de periodo, PR2 y de


su señalizador de sobrepasamiento TMR2IF.

TMR3

Es un Contador/Temporizador de 16 bits asociado a un registro de periodo de 16 bits.


Cuando el valor existente en TMR3H:TMR3L vuelve a 0, se pone a 1 el señalizador
TMR3IF pudiendo provocar una interrupción.

Cuando funciona en modo contador, los impulsos de contaje se reciben por la patita
RB5/TCLK3.

Cuando funciona en modo de Doble captura, se utiliza como registro de periodo el


registro de Captura.

4-4-3 Modo PWM

Los componentes de la gama alta tienen dos salidas (patitas RB2/PWM1 y RB3/PWM2)
para poder producir impulsos modulados en anchura y a elevada velocidad. La salida
PWM1 usa al TMR1 como base de tiempos y la del PWM2 puede utilizar el TMR1 o el
TMR2.

Cada salida PWM puede alcanzar una resolución de hasta 10 bits, con lo que se
consigue una salida de 24,4 MHz. Si la resolución es de 8 bits, la salida puede llegar
hasta 97,7 kHz.

El periodo de PWM1 se determina con TMR1 y su registro de periodo PR1. El periodo de


PWM2 lo puede controlar TMR1 o TMR2. Para el calculo del periodo se puede utilizar la
siguiente formula:

Periodo de PWM1 = [ (PR1) + 1] x 4 x TOSC

Los módulos PWM emplean las interrupciones de TMR1 y TMR2, que se generan
cuando los registros temporizadores igualan en valor a los de periodo. Esta interrupción
también indica el principio de un ciclo PWM.

4-4-4 Modulo de Captura

Este modulo tiene dos formas de funcionar.

Modo de Captura simple con un registro de periodo


Modo de doble Captura

69
El modo de Captura simple se selecciona poniendo a 0 el bit de control CA1/PR3. El
registro de Captura 1 (PR3L/CA1L-PR3H/CA1H) se configura como registro de control
del periodo de TMR3. En este modo no actúa el bloque de Captura 1 y nunca se activa
su interrupción CA1IF. TMR3 se incrementa hasta que su valor iguala al registro de
periodo, en cuyo momento vuelve a 0000h.

El bloque de Captura 2 esta activo en este modo. Lo bits CA2ED1/2 determinan el tipo
de acontecimiento de captura que se ha producido:

- Captura con cada flanco ascendente


- Captura con cada flanco descendente
- Captura con cada cuatro flancos ascendentes
- Captura con cada cuatro flancos descendentes

Cuando ocurre una captura, el señalizador CA2IF se pone a 1, lo que puede originar una
interrupción si lo autoriza su correspondiente bit de permiso.

Para seleccionar el modo de doble Captura se pone a 1 el bit CA1/PR3. En este modo el
TMR3 no dispone de registro de periodo y se incrementa de 0000h a FFFFh y luego
vuelve a 0000h, en cuyo instante se activa el señalizador TMR3IF.

Los registros PR3/CA1H y PR3/CA1L forman el modulo de Captura 1, que es un registro


de 16 bits que captura los eventos que suceden sobre la patita RB0/CAP1.

4-4-5 Interfaz de Comunicación serie (SCI)

Es un modo de E/S serie. Se puede configurar como un sistema full-duplex asincrono


para comunicación de periféricos como un CRT de un computador personal. También
puede programarse para funcionar como un sistema half duplex sincrono capaz de
comunicarse con periféricos tales como convertidores A/D y D/A, memorias EEPROM
serie, etc. El SCI admite los siguientes modos de trabajo:

Asincrono (full duplex)


Sincrono Master (half duplex)
Sincrono Slave (half duplex)

Para activar el modulo SCI hay que poner a 1 el bit SPEN del registro RCSTA, con lo
que las patitas RC6 y RC7 se asignan a este modo. También el SCI controlara la
dirección de las patitas RA4/Rx/DT y RA5/Tx/CK según el estado de los bits de los
registros RCSTA y TXSTA. Existe un generador de la frecuencia de baudios para el
modo sincrono y asincrono, cuyo periodo se controla desde el registro SPBRG. El valor X
que se carga en dicho registro determina los baudios según las formulas siguientes:

Modo asincrono

Baudios = FOSC / (64 (X + 1))

Modo sincrono

Baudios = FOSC / (4 (X+1))

70
En el modo asincrono SCI utiliza el formato NZR que se compone de un bit de “start”, 8 o
9 de información y un ultimo bit de “stop”. El transmisor y el receptor funcionan de forma
independiente pero usando el mismo formato para los datos e igual frecuencia.

El SCI sincrono admite dos variantes: modo Master y modo Slave. En el modo Master se
emplea la transmisión half duplex, que no soporta la transmisión y recepción
simultaneas. El procesador transmite la señal de reloj principal por la línea CK.

El modo Slave difiere del Master en que la señal de reloj se proporciona externamente
por la patita RA5/Tx/CK en lugar de obtenerse internamente. Esto permite seguir
recibiendo o transmitiendo datos en el estado de reposo o bajo consumo del
microcontrolador.

4-5 REPERTORIO DE INSTRUCCIONES

Los PIC17CXX disponen de un repertorio de 58 instrucciones cada una de ellas con una
longitud de 16 bits. Los bits de la instrucción se dividen en varios campos; un grupo
forma el campo del código de OP y puede haber uno o mas campos para definir los
operandos.

El campos del código OP determina el tipo de instrucción y se clasifica en tres grandes


grupos:

- Orientado a bytes
- Orientado a bits
- Orientado a operandos aritméticos (literales) y operaciones de control

Todas las instrucciones se ejecutaban en un ciclo excepto las siguientes que requieren
dos:

Instrucciones condicionales
Instrucciones que modifican el valor del PC
Instrucciones que leen o escriben la Tabla (transferencia entre la memoria de programa y
la de datos, y viceversa)

En la Tabla 4-2 se describe el significado de las abreviaturas empleadas en la exposición


de las instrucciones. En la Tabla 4-3 se presentan los mnemónicos con su misión, ciclos,
código OP y señalizadores afectados.

ABREVIATURA DESCRIPCION
f Dirección del registro (00h a 1Fh)
P Dirección del registro externo (00h a 1Fh)
I Tabla del puntero de control i=”0” (no cambia)
i=”1”(se incrementa después de la instrucción en
ejecución)
t Tabla de selección de byte t =”0”
WREG Registro de trabajo (acumulador)

71
b Bit de dirección en un registro de 8 bits
k Campo literal, dato constante o etiqueta
x No hay que preocuparse por su localización (=”0” o
“1”).
El ensamblador generara código con x =”0”. La
forma recomendada de uso para compatibilidad
con todas las utilidades software de Microchip
d Selección de destino
0 = resultado almacenado en WREG
1 = resultado almacenado en el registro “f”
Por defecto es d = “1”
u Sin usar, codificado como “0”
s Selección de destino
0 = almacena el resultado en el registro f y en el
WREG
1 = almacena el resultado en el registro “f”
por defecto es “1”
etiqueta Nombre de la etiqueta
C, DC, Z, OV Bits de estado de la ALU: Carry, Cero, Overflow
GLINTD Bit para deshabilitar la interrupción global
(CPUSTA<4>)
TBLPTR Puntero de la tabla (16 bits)
TBLAT Puntero de la bascula (16 bits) consistente en byte de
la parte alta (TBLATH) y byte de la parte baja
(TBLATL)
TBLATL Byte bajo de la bascula de la tabla
TBLATH Byte alto de la bascula de la tabla
TOS Cima de la pila
CP Contador de programa
BSR Registro selector de banco
WDT Perro guardián
TO Bit Time-Out
PD Bit Power-Down
dest Cualquier destino del registro WREG o de
cualquier posición especificada por el usuario
[] Opciones
() Contenidos
 Asignado a
<> Bit campo del registro
itálica Termino definido por el usuario (la fuente es
courier)

72
Tabla 4-3. Instrucciones de los PIC de la gama alta.

4-6 MICROCONTROLADORES NUEVOS Y ESPECIALES

Todos los fabricantes de microcontroladores (y en especial Microchip) lanzan


continuamente nuevos productos para satisfacer la demanda creciente. Una manera
cómoda de ponerse al día de todas las novedades es consultar los bancos de datos de
los fabricantes que están disponibles a través de Internet. Se puede consultar a
Microchip accediendo a http://www.mircochip.com. Utilizando este procedimiento en el
lluvioso verano de 1996 (esto solo ocurrió en el Norte de España) el fabricante de los
PIC anunciaba varias novedades entre las que destacaremos:

PIC12C5X Microcontrolador de solo 8 patitas

73
PIC16C55X Microcontroladores de 8 bits (554, 556 y 558)
PIC16C642 Microcontrolador de 28 patitas con comparador analógico y
memoria de programa de 4 k x 14
PIC16C662 Microcontrolador de 40 patitas con comparadores analógicos y
memoria de programa de 4 k x 14
PIC16C9XX Microcontrolador de 8 bits CMOS, tipo OTP, para control de
LCD

El lector que deba diseñar aplicaciones deberá consultar periódicamente a los


fabricantes para estar al corriente de los productos que ofertan y así poder optimizar sus
proyectos.

Se describen someramente dos de las novedades que se han citado.

4-6-1 Microcontrolador PIC12C5XX de ocho patitas

Acaban de aparecer dos versiones: PIC12C508 y PIC12C509. Son microcontroladores


de 8 bits, pertenecientes a la gama baja modificada y que se caracterizan por tener solo
8 patitas en su cápsula.

El 508 dispone de 512 x 12 palabras de EPROM y 25 bytes de RAM, mientras que el


509 tiene una EPROM de 1024 x 12 y una RAM de 41 bytes.

Funcionan a una frecuencia de 4 MHz, que determinan un ciclo de instrucción de 1 s. El


repertorio es de 33 instrucciones, que se ejecutan en un ciclo menos las de salto que
tardan dos. La pila es de dos niveles y el direccionamiento de datos e instrucciones
puede ser directo, indirecto y relativo.

La peculiaridad del chip es que se presenta encapsulado con ocho patitas. Figura 4-7.

Figura 4-7. Diagrama de conexionado del PIC12C5XX

Entre los recursos y periféricos mas destacables de estos modelos se citan: Patitas de
E/S digitales con pull-up, TMR0 con predivisor, Perro guardián, POR, Modo de reposo
(SLEEP), código de protección programable y cuatro opciones para el oscilador.

4-6-2 Microcontroladores PIC16C92X para control de LCD

Hay dos versiones : PIC16C923 y 924 ambas con 4 k x 14 de memoria EPROM y con
176 bytes de SRAM. Trabajan a 8 MHz con un ciclo de instrucción de 500 ns. El 924
dispone de 60 registros especiales en ligar de los 57 que dispone el 923. Otra diferencia
importante es que el 924 dispone de un convertidor A/D.

74
El repertorio es de 35 instrucciones y la pila tiene ocho niveles. Tienen capacidad de
generar interrupciones y admite los direccionados directo, indirecto y relativo.

Además de los recursos típicos de los PIC, tienen los siguientes periféricos:

- 25 patitas E/S digitales


- Tres temporizadores (TMR0, TMR1 y TMR2)
- Módulos de Captura
- Módulos PWM
- Puerto Serie Sincrono SSP/I 2C
- Convertidor A/D de 8 bits, solo en el 924

La novedad mas importante que incorporan estos dos microcontroladores es un modulo


programable para el control de LCD. Dispone de múltiples opciones para controlar LCD,
capacidad de gobernarlo en modo de reposo, 16 bytes de RAM destinados a este
propósito y puede gobernar hasta 32 segmentos y 116 pixeles.

75
5 PROGRAMACIÓN (ASM)

5-1 SISTEMA DE DESARROLLO

Un sistema de desarrollo esta formado por el conjunto de herramientas, tanto de tipo


hardware como software, que se necesitan para desarrollar un diseño con
microcontroladores.

Se puede comenzar con un sistema de desarrollo mínimo con las herramientas


imprescindibles e irlo ampliando hasta configurar un equipo profesional. Una de las mas
interesantes peculiaridades de los microcontroladores PIC es la existencia de numerosas
empresas, entre las que destaca Microchip, que ofrecen desde sistemas de desarrollo
simples y baratos hasta otros mas potentes y caros. El abanico de posibilidades es
increíble.

A nivel software, las principales herramientas de un sistema de desarrollo son las


siguientes:
· Programa Ensamblador
· Compilador de alto nivel (C, Fortran, PASCAL)
· Programa para la grabación de la memoria de instrucciones del microcontrolador
· Simulador

A nivel hardware, las herramientas mas destacadas son:


· Dispositivo “programador-grabador” de la memoria de instrucciones de los
microcontroladores
· Simulador híbrido
· Depurador con programa monitor
· Emulador “in-circuit”

El sistema mínimo de desarrollo debe disponer como herramientas de software un


Ensamblador y un programa para grabar en la memoria de instrucciones del
microcontrolador el código binario ejecutable. Una ampliación interesante consiste en un
compilador de un compilador de un lenguaje de alto nivel. En un sistema de desarrollo
bien concebido, el Ensamblador y el compilador deben coexistir y seleccionar
cómodamente el que interese utilizar en cada momento. Debe ser posible, también incluir
dentro del programa a compilar trozos de código escritos en lenguaje Ensamblador. Esta
característica es muy importante al existir partes del programa, como son las entradas y
salidas, que tienen que ser rápidas y se diseñan con lenguaje Ensamblador, mientras
que los cálculos complejos se escriben mas cómodamente con un lenguaje de alto nivel,
por lo tanto, conviene que el compilador permita insertar rutinas en lenguaje
ensamblador.

Una vez escrito el programa en lenguaje ensamblador o de alto nivel, se ensambla o se


compila para obtener el archivo binario ejecutable, objeto o hexadecimal que necesite
grabarse en la memoria de instrucciones del microcontrolador. Por esto se necesita
hardware grabador-programador y otro software que consiste en un programa para la PC
que controla al grabador y gobierna la grabación del archivo en la memoria.

76
Antes de la grabación de la memoria de instrucciones del microcontrolador es
conveniente asegurarse del correcto comportamiento del programa confeccionado, para
cuya verificación existe una herramienta software que consiste en un programa de
simulación. Estos programas “simulan con software” la ejecución en el microcontrolador
del programa bajo prueba. Los resultados obtenidos no son reales porque no se utiliza el
microcontrolador físico en la prueba del programa. Con la finalidad de realizar esta
verificación y depuración de la manera mas exacta, se disponen de herramientas
hardware mas caras como los simuladores híbridos, los depuradores con programa
monitor y los emuladores “in-circuit”.

5-2 CODIGO MAQUINA Y ENSAMBLADOR

El único lenguaje que puede interpretar la CPU del microcontrolador es el binario por lo
que la memoria de instrucciones su código de operación esta implementado en binario.

Dado lo poco inteligible y descifrable que tiene el lenguaje binario para el ser humano, se
descarta la posibilidad de escribir los programas ejecutables directamente. El
ensamblador es un lenguaje de bajo nivel porque cada una de sus instrucciones se
corresponde con otra capaz de interpretar la CPU. Es mas humano pues en vez de ser
unos y ceros, emplea conjuntos de letras que facilitan la operación de las instrucciones y
es muy cercano a la maquina por la correspondencia que tiene con las instrucciones.

El programa escrito en un lenguaje diferente al maquina recibe la denominación de


“fuente” y, cuando esta escrito en ensamblador, suele tener la extensión .ASM o .SRC.
El calificativo de fuente se debe a que dicho programa no puede ser ejecutado por el
microcontrolador, debe ser traducido a código binario, de lo cual se encarga un programa
traductor, que también se denomina ensamblador.

5-3 EMULACIÓN

La clave del éxito en la depuración de sistemas basados en microcontroladores es la


posibilidad de utilizar algún control externo y poder monitorear la actividad del
microcontrolador.

En el nivel mas bajo y económico del diseño, el usuario graba el programa en el


microcontrolador y cuando conecta este al circuito a controlar, ejecuta el programa. Con
esta forma de trabajar no se puede comprobar la validez del código hasta que el
microcontrolador se encuentra conectado en tiempo real. Un buen trabajo de depuración
requiere sustituir al microcontrolador por un equipo que permita el seguimiento del
programa y la monitorización de las funciones del sistema.

Los sistemas destinados a controlar la ejecución del programa pueden incluir:


· Ejecución del programa instrucción a instrucción
· Detención del programa en cualquier dirección
· Colocar valores determinados en registros o posiciones de memoria

En cuanto a las posibilidades de mas interés en la monitorización figuran:


· Visualizar el contenido de registros o posiciones de memoria

77
· Comprobar el orden y la duración en la ejecución de instrucciones

Recibe el nombre de “emulación” la técnica que permite manejar las posibilidades


descritas en control y monitoreo. Existen cuatro tipos de simulación que difieren en
aspectos importantes:
Simulador
Simulador híbrido
Depurador
Emulador “in-circuit”

5-3-1 Simulador

Se trata de un programa que corre normalmente sobre un computador personal e


implementa con software a un microcontrolador virtual, que es controlado y monitoreado
a través de la PC. Ejecuta el programa bajo prueba como si se tratase de un
microcontrolador.

Una de las ventajas mas importantes de la simulación reside en que la depuración no


exige disponibilidad del sistema a controlar, permite la depuración del software antes de
construir el primer prototipo. También permite que varios miembros del equipo trabajen
en paralelo en diferentes partes del programa.

La simulación es muy eficaz en el desarrollo de pequeños programas que no dependen


mucho del hardware del proyecto y no interactúen con el mundo exterior. Por ejemplo,
son muy útiles en la comprobación de algoritmos y subrutinas.

La mayor desventaja de la simulación como herramienta depuradora es su


inequivalencia con el tiempo real. Al no estar conectado al sistema en análisis, no se
pueden verificar rutinas que manejan una red local o un convertidor A/D.

5-3-2 Simuladores híbridos

Interfaz Serie
RS-232 Interfaz
Microcontrolador

Tarjeta de Prueba

Figura 5-1. Simulador Híbrido

En un simulador híbrido el programa de simulación se combina con un interfaz hardware


que se conecta al sistema a depurar en lugar del microcontrolador que se intenta emular.
Figura 5-1.

La comunicación entre el sistema a depurar y el computador principal se realiza a través


de un puerto serie o paralelo. El programa en análisis se ejecuta parcial o totalmente

78
desde el simulador del computador. La interfaz hardware proporciona las líneas de E/S
que simulan al microcontrolador y para asegurar al máximo las mismas características
eléctricas, suele estar fabricado con un microcontrolador de la misma familia que el que
se desea emular. Este sistema no permite emular en su totalidad a todos los recursos del
microcontrolador.

5-3-3 Depurador

El depurador es una aproximación a la emulación pero con la diferencia que añade


código extra al programa (monitor). El monitor esta comunicado con el computador
principal y controla la ejecución del programa y su monitoreo.

Permite examinar el contenido de los registros y las posiciones de memoria, colocar


puntos de ruptura para detener el programa en cualquier punto y comenzar la ejecución
en cualquier dirección.

5-3-4 Emulador “in-circuit”

El termino “in-circuit” se reserva a los sistemas de emulación que no consumen recursos


del periférico a emular. En su funcionamiento se debe reemplazar el microcontrolador en
prueba por la sonda del emulador que se halla conectada a un cable que sale de la caja
del emulador; el emulador esta controlado desde una PC sobre la que interactúa el
usuario.

Un emulador bien diseñado ofrece el mismo comportamiento eléctrico, lógico y temporal


que el microcontrolador que emula, lo que proporciona un excelente y completo servicio
de depuración. Permite ejecución paso-paso, puntos de ruptura, monitoreo y
modificación de registros y posiciones de memoria, temporización, etc.… Los emuladores
son caros y no están protegidos ante fallos.

5-4 EDICION DE PROGRAMAS

Desde que se concibe la idea y se confecciona el programa hasta que se graba en la


memoria del microcontrolador, suceden una serie de operaciones que se muestran en la
figura 5-2.

El primer paso en un diseño basado en microcontrolador consiste en escribir el código


fuente del programa en el lenguaje seleccionado. Posteriormente, si el lenguaje usado
ha sido el ensamblador, se convierte a código ejecutable mediante el uso de un
programa ensamblador. Todos los archivos fuente se deben escribir en un editor de
textos ASCII. Los pasos lógicos siguientes serán la depuración y simulación de nuestro
programa para a final de cuentas grabarlo a la memoria de instrucciones del
microcontrolador y probarlo.

79
INICIO
SOFTWARE
INICIO

ESCRITURA DEL
EDITAR EL CODIGO FUENTE
PROGRAMA
FUENTE

ENSAMBLADO

ENSAMBLAR

SIMULACION
SIMULAR EL ARCHIVO HEX
PROGRAMA
EJECUTABLE
DEPURACION DEL
PROGRAMA

SI ¿ERRORES?
GRABAR EL PIC

NO

MONTAR EL
GRABACION DEL
PROTOTIPO Y
Microcontrolador
PROBAR

PRODUCTO FINAL PRUEBA FISICA

Figura 5-2. Organigramas de la secuencia a seguir para el grabado de un


microcontrolador.

80
5-5 ESCRITURA DEL CODIGO FUENTE

El código fuente del lenguaje ensamblador esta estructurado en columnas. Cualquier


texto que comience en la primera columna, se considera una etiqueta y es una parte del
campo de etiquetas. Las siguientes columnas contienen el campo de instrucciones, el
campo de datos y el campo de comentarios. Los comentarios deben empezar con (;)
punto y coma y pueden ir también en la primera columna.

5-5-1 Campo de Etiquetas

Las etiquetas son nombres de subrutinas o secciones de código fuente. Dando nombres
a partes del programa, se posibilita que las instrucciones puedan saltar o hacer
referencia a esas partes sin necesidad de recordar las direcciones físicas donde están
ubicadas.

Muchos ensambladores establecen un limite pequeño al tamaño de las etiquetas así


como caracteres que pueden usarse en ellas, el MPASM permite de hasta 32 caracteres.
En el ensamblador MPASM, una etiqueta puede ir seguida de dos puntos (:), espacios,
tabuladores o ENTER; deben comenzar con caracteres alfanuméricos o guión bajo (_) y
pueden contener cualquier combinación de caracteres alfanuméricos.

5-5-2 Campo de Instrucciones

La segunda columna corresponde al campos de instrucciones. Puede ser una instrucción


del microcontrolador o una instrucción para el ensamblador, llamada directiva.

5-5-3 Campo de Datos

La columna que sigue al campo de instrucciones, es el campo de datos. Como su


nombre lo indica, contiene datos u operandos para las instrucciones. En el caso de los
microcontroladores PIC, los datos pueden ser un registro, un bit de registro, una etiqueta,
o un numero constante (literal). Algunas instrucciones no llevan datos, y si una
instrucción necesita múltiples datos, deben separarse por comas (,).

5-5-4 Campo de Comentarios

El ultimo campo es el de comentarios siempre y cuando haya un punto y coma (;) como
primer carácter. Pueden colocarse en cualquier lugar del código fuente.

Los comentarios son uno de los trabajos mas importantes que el programador debe
desarrollar a la hora de escribir el código. Comentarios correctamente escritos describen
la tarea que realizan determinadas instrucciones o subrutinas. Sin comentarios es muy
difícil descifrar, algunos días después, el código fuente que uno mismo ha creado.

5-6 CONVENCIONES EN LA ESCRITURA DEL CODIGO FUENTE

Para hacer la tarea del programador mas grata, se usan algunas convenciones. Cada
uno puede adoptar las que mas le agraden y ayuden a ser mas productivos. En general,
las convenciones son cualquier acción que facilite la revisión y comprensión de un

81
programa, especialmente el que uno mismo ha escrito cuando tiene que revisarlo
algunos meses después.
Los archivos de código fuente llevaran la extensión *.ASM o *.SRC
Los archivos de listado llevaran la extensión *.LST
Los archivos de código objeto llevaran la extensión *.OBJ
Archivos ejecutables en formato Intel Hex tendrán la extensión *.HEX
Archivos de referencias cruzadas llevaran la extensión *.XRF
Archivos de errores de ensamblado llevaran la extensión *.ERR
Archivos de símbolo y depuración para la posterior simulación llevan la extensión *.COD
Archivos con comandos de inicialización para el simulador llevaran la extensión *.INI
Los mnemónicos escritos en mayúsculas hacen que el código escrito sea mas visible
Comentarios que expliquen cada línea o conjunto de líneas de código
Un párrafo de comentario explica rutinas o conjunto de instrucciones
El espacio entre caracteres se escribe “_”

Recuerde que las convenciones son cualquier cosa que le haga mas fácil la lectura y
comprensión de su código, como por ejemplo:
Una cabecera estandarizada
Colocar subrutinas en el mismo sitio, todas contiguas
Dibujar diagramas de flujo escribir pseudocódigo

82
6 SISTEMA DE DESARROLLO PICSTART-16B1
Guía de Usuario

6-1. INTRODUCCIÓN

Definición.
El PICSTART-16B1 es un dispositivo programador basado en una interfaz DOS de una
PC, la cual proporciona a los desarrolladores de aplicaciones la capacidad de programar
software de usuario dentro de las familias CMOS microcontroladores PIC16C5X,
PIC16C61, PIC16C71 y PIC16C84 de Microchip.
El programa de interfaz, MPS16B.EXE, permite la operación del dispositivo programador
PICSTART-16B1 desde una computadora. Con el programa de interfaz, se pueden
manejar todas las funciones del dispositivo programador así como se permite la
manipulación de archivos.

6-2. INSTALACIÓN.

Hardware
Requerimientos del sistema.
Computadora Personal IBM PC/AT compatible con:
Drive de Diskette de 3 ½” y 1.44MB
1.2 MB de espacio en Disco Duro
Un puerto serie disponible (COM1-COM4)
640 k RAM (min.)
DOS 5 o superior
Mouse (recomendado)
Monitor VGA (recomendado)

Requerimientos del cable.


El dispositivo programador se comunica mediante un conector tipo-D RS-232. El
PICSTART16-B1 es un equipo de comunicación de datos por lo cual se proporciona con
un cable de 1.80 m, macho-hembra con conectores tipo DB-9.

Fuente de Poder.
El PICSTART16-B1 viene con una fuente de poder universal, el dispositivo requiere +9
Volts con un 10% de tolerancia a 500 mA (max).

Software
Instalando el MPS16B.EXE
Microchip recomienda que el MPS16B.EXE se ejecute desde el disco duro. El programa
corre escribiendo MPS16B desde el prompt de DOS. La computadora debe estar lista
para aceptar y establecer la comunicación con el programador desde antes de ejecutar
el programa. Si la comunicación no se puede establecer no puede ocurrir la
programación. Aparecerá un cuadro de dialogo si la comunicación falla, si esto sucede
se deberá corregir el problema.

Ajustando.
PASO 1: Cargando el software

83
Desde el prompt A:\ se instala el programa del diskette
A:\INSTALL <intro>
Se te preguntara por el lugar de destino de los archivos del PICSTART-16B1 y el
programa de instalación instalara todos los archivos necesarios.
PASO 2: Conectando la PC
Conecte el cable de nueve pines macho-hembra RS-232 a un puerto serial abierto en la
PC (por default es COM1). Si la PC tiene un puerto serial de 25 pines, se hace referencia
a los requerimientos del cable para una equivalencia 25-9.
25 Pines (PC) 9 Pines (PICSTART-16B1)
Pin Función Pin Función
2 Tx 3 Rx
3 Rx 2 Tx
20 DTR 4 Data ready
7 Ground 5 Ground
6 DSR 6 5V
4 RTS 7 CTS
5 CTS 8 RTS
PASO 3: Fuente de poder
Conecte la fuente de poder proporcionada al PICSTART-16B1
PASO 4: Ejecutando el programa
Desde el prompt de DOS, escriba MPS16B para iniciar el programa. MPSB tratara ahora
de establecer comunicación con el PICSTART-16B1 utilizando COM1 por default como
puerto. Si se desea otro puerto, escriba MPS16B /n donde n es el puerto COM deseado,
todos los puertos COM (1-4) son validos.
El MPS16B.EXE es un programa basado en ventanas de DOS, se puede utilizar desde
un teclado o a través de un mouse. Si no se usa un mouse presione la tecla TAB para
mover el cursor al siguiente campo en cualquier cuadro de dialogo y se hacen
selecciones desde el teclado.
Nota: No se encienda el PICSTART-16B1 con un dispositivo en el socket pues podría
resultar en daño en alguno de los dos.

Estados
Habrá un LED que indica que el nivel de voltaje es suficiente para operar el
programador.
Un LED activo se encenderá cuando un dispositivo se este probando o se este
energizando. Nunca inserte o remueva un dispositivo cuando el LED activo este
encendido.
El botón de reset se podría presionar si ha ocurrido un error de comunicación, esto
reseteara al sistema.

Formatos de Datos HEX


El dispositivo programador utiliza el formato el siguiente formato que se utiliza y genera
por el ensamblador:
PIC16C5X/6X INHX8M
Este formato produce un archivo en Hex de 8 bits con combinaciones de bits alto-bajo.
Todas las direcciones contienen 8 bits en este formato, todas las direcciones son dobles.
Cada registro de dato comienza con un prefijo de 9 caracteres y termina con 2
caracteres de chequeo.

84
6-3. UTILIZANDO LA INTERFAZ PRESENTADA EN PANTALLA.

Pantalla en la PC

La pantalla consiste en tres secciones básicas: la barra de menús, el área de ventana y


la barra de comandos.
File Edit Program Options Windows Help Time Menu Bar

Window Area

Alt-X Exit F1Help F4 Edit F5 Program F6 Verify F7 Blank F8 Read Command Bar

Barra de Menú
La barra de menú permite realizar las operaciones y ajustar el sistema para programar.
Area de Ventana
El área de ventana proporciona el espacio para desplegar la información de la
programación y la información de los menús.
Barra de Comandos
La barra de comandos proporciona un atajo sencillo para la programación de dispositivos
microcontroladores.

Ventanas desplegadas

El programa de interfaz proporciona tres ventanas desplegadas. Todas las ventanas


desplegadas son ajustables en tamaño y posición.
Ventana de Buffer
Despliega el contenido HEX de la memoria de programa
Ventana de error de la memoria del programa
Despliega errores en la memoria principal del programa durante la programación o
verificación, desplegada solamente cuando hay errores.
Ventana de Error de fusibles
Despliega los errores en los fusibles durante la programación o verificación, desplegada
solo cuando ocurren errores.

6-4. TAREAS BÁSICAS DE USUARIO

Utilizando las funciones básicas del programador.


El programador realiza las siguientes funciones básicas asociadas con la programación
de un dispositivo microcontrolador.
Programando un dispositivo microcontrolador

85
El programador checa para ver si el microcontrolador esta en blanco. Si el
microcontrolador no esta en blanco, el programador pregunta si deseas continuar.
El programador programa el contenido de su memoria al microcontrolador situado en el
socket.
El programador realiza un chequeo para verificar los datos programados dentro del
microcontrolador y regresa los resultados de la verificación.

Verificando el microcontrolador
El programador compara el contenido de su memoria con el contenido del
microcontrolador.
El programador reporta los resultados de la verificación. Los resultados reportados
incluyen lo siguiente:
Mismos contenidos
Errores

Checando un dispositivo en blanco


El programador checa el microcontrolador para verificar que todas las localidades del
programa contiene unos (en estado de borrado) y despliega el contenido de la localidad
de los fusibles.

Leyendo un dispositivo
El programador lee el contenido del microcontrolador y copia los contenidos del
microcontrolador al buffer de memoria de la computadora el cual puede ser guardado a
un archivo.

Modo PC
El siguiente diagrama de flujo muestra gráficamente los pasos básicos que se deben
seguir para programar un microcontrolador en Modo PC.

86
Paso 1. Seleccionar el
dispositivo

Paso 2. Carga el
archivo HEX

Paso 3. Ajustar los


fusibles

Paso 4. Programar el
dispositivo

Checa si el dispositivo
No
esta en blanco

Ciclo de programacion
¿Continuar? No
abortado

Si

Programa ahora el
dispositivo

Errores de Programa Error en la memoria de


Checa errores Si programa o error en los
fusibles

No

Programacion completa

Programando un dispositivo en Modo PC


Para programar un microcontrolador se deben seguir los siguientes:
Paso 1. Seleccionar y cargar el microcontrolador
De la ventana Config, seleccione DEVICE EDIT. La PC mostrara un menú enlistando los
dispositivos soportados de Microchip.
Seleccione el microcontrolador que se va a programar. Para seleccionar un dispositivo
diferente utilice el mouse o las teclas de cursor.
Después de seleccionar el microcontrolador, inserte el dispositivo para ser programado
dentro del socket en el programador. Coloque el pin uno del dispositivo en el pin uno del
socket.
Paso 2. Cargar el archivo HEX
Para cargar el archivo HEX, abra el archivo deseado desde FILE>OPEN de la barra de
menú. Utilice FILE>CHANGE DIR si el archivo que se quiere abrir se encuentra en otro
directorio.
Paso 3. Ajustar los fusibles

87
Ajuste los fusibles si es necesario en el cuadro de dialogo presionando el botón FUSE
EDIT
Paso 4. Programar el microcontrolador
La selección del menú Program inicializa la programación del microcontrolador como
sigue:
Checando el dispositivo
El programador realiza un chequeo de los lugares en blanco que permitan la
reprogramación de un dispositivo
Programando
El programa transfiere los datos de la PC al programador. Entonces el programador
programa los datos dentro del microcontrolador una localidad a la vez. Un cuadro de
estado aparece y muestra la localidad que esta siendo programada.
Verificando
El programador verifica todas las localidades de memoria.

6-5. TAREAS DE SOPORTE

Edición de la ventana desplegada.


Presione F4 para desplegar el cuadro de dialogo EDIT SELECTION, y para editar los
contenidos de la ventana desplegada
El cuadro de dialogo te permitirá Editar o Llenar.
Cuadro de Dialogo EDIT SELECTION
Selección Descripción
Edit Abre EDIT ADDRESS para editar la ventana desplegada
Fill Abre FILL BUFFER para llenar la ventana desplegada con un
valor constante

EDIT
El cuadro de dialogo EDIT ADDRESS permite seleccionar una dirección especifica para
iniciar la edición. El programa presentara el cuadro de dialogo EDIT ADDRESS
Cuadro de dialogo EDIT ADDRESS
Selección Descripción
Address Introduce un dirección especifica donde quieres empezar
a editar
OK Despliega el contenido de la dirección seleccionada
Cancel o ESC Cancela la función de edición

El cuadro de dialogo EDIT BUFFER permite la introducción de nuevos valores de datos


en localidades especificas. Utiliza Tab/Shift Tab para moverse a través de las
selecciones. Utilice Enter para introducir un nuevo valor y avanzar a la siguiente
dirección.
Cuadro de dialogo EDIT BUFFER
Selección Descripción
Address Introduce un valor especifico de una dirección que
quieras editar
Data Introduce un nuevo valor de dato
OK Acepta la dirección especificada con los datos desplegados
y avanza a la siguiente dirección
Cancel o ESC Cancela la función de edición.

88
FILL
El cuadro de dialogo FILL BUFFER permite especificar un rango especifico de
direcciones con valor. Utilice Tab para moverse a través de las selecciones.
Cuadro de dialogo FILL BUFFER
Selección Descripción
Start Address Introduce el valor de la dirección inicial del rango
que se quiere llenar
End Address Introduce el valor de la dirección final del rango
Data Introduce el valor que se quiere llenar en la dirección especifica
OK Llena las direcciones especificadas con los valores de datos
especificados, y sale de la función de llenado.
Cancel o ESC Cancela la función de llenado.
Precaución: Asegúrese de verificar la dirección inicial y final antes de llenarla con un
valor de datos

Configurando los fusibles.


Seleccione FUSE EDIT de la ventana CONFIG para configurar los fusibles para el
microcontrolador cargado en el programador. La configuración de los fusibles puede ser
cualquiera de las siguientes:
Tipo de Oscilador (LP, RC, XT, HS)
Watchdog Timer
Power Up Timer
Protección de código
Presione OK para aceptar su selección de fusibles. Presiones ESC o Cancel para salir
de este menú.

6-6. DESCRIPCIONES.

Opciones de la línea de comandos.


El PICSTART-16B1 puede ser invocado con el siguiente comando:
MPS16B.EXE [/n] [/filename] [/partname]
donde [] implica argumentos opcionales del comando.
n = 1|2|3|4 Selección del puerto COM. Un parámetro invalido se mostrara con
un
mensaje de error y el programa no se ejecutara. COM1 es la
selección
por default.
filename Cadena de variables que describen un archivo de DOS, si el
archivo
no se encuentra aparecerá un mensaje de error pero el programa si
iniciara
partname = 54|55|56|57|58|71|84 Selección del microcontrolador que se trabaja.

Barra de Menús
La barra de menú permite realizar las operaciones y ajustes del sistema de
programación. La barra de menú tiene seis selecciones de menú:
File Edit Program Options Window Help
Cada menú es desplegable hacia abajo y tiene una letra resaltada en su nombre. Esta
letra , cuando es presionado con la tecla ALT, invoca ese menú.

89
Cada menú consta además de mas opciones seleccionables cada uno. Algunas de ellas
también cuentan con combinaciones de teclas o atajos asociados a ellas.
FILE
El menú File da acceso a los archivos que se utilizaran en la programación de
microcontroladores.
Menú
Selección Descripción
Open (F3) Despliega el cuadro de dialogo para abrir un archivo
Save (F2) Guarda la actual memoria de programa, memoria de datos,
ID y ajuste de fusibles de la ventana actual. El archivo se guarda
en el directorio actual
Save As… Permite nombrar o renombrar el archivo desplegado en la ventana
activa. El archivo se guarda en el directorio actual
Change Dir… Permite cambiar de directorio
DOS Shell Sale a DOS sin salir del programa, escriba EXIT para volver
Exit (Alt-X) Sale del programa

EDIT
El menú Edit
Menú
Selección Descripción
Edit Buffer (F4) Despliega el cuadro de dialogo para editar el contenido del buffer
Fill Buffer Despliega el cuadro de dialogo para llenar el buffer con un valor
especifico
Clear Buffer Restaura el buffer entero al estado no programado
Clear Fuses Restaura los ajustes de fusibles a su estado por default

PROGRAM
El menú Program permite:
Menú
Selección Descripción
Program (F5) Ejecuta un ciclo de programación y programa/verifica todas las
localidades y fusibles
Program Fuses Solamente programa/verifica la localidad de fusibles
Only (Alt-F5)
Verify (F6) Checa el contenido y dispositivo con el buffer y los fusibles.
Reporta
cualquier error.
Verify Fuses Checa solamente los fusibles y reporta cualquier error
Only (Alt-F6)
Blank Check (F7) Compara el contenido del dispositivo con el estado de borrado.
Despliega el resultado y los ajustes actuales de los fusibles
Read (F8) Transfiere el contenido del dispositivo a los buffers.

OPTION
El menú Option permite seleccionar las opciones soportadas.
Menú
Selección Descripción
Establish Communication Establece conexión con el programador

90
Comm Port Selection Permite seleccionar y cambiar el puerto com del
programador

WINDOWS
El menú Windows te permite manipular las ventanas desplegadas
Menú
Selección Descripción
Buffer Display Despliega el contenido del buffer de memoria del programa actual
en la pantalla
Resize/Move(Ctrl-F5) Activa las teclas de cursor para reajustar y mover la ventana activa
Esto es útil cuando no se esta usando el mouse
Zoom Window Activa la ventana a su estado completo o lo decrementa a un área
mas pequeña
Next Window Cambia a la siguiente ventana y activa esa ventana
Close Window (F9) Cierra la ventana activa

HELP
El menú Help
Menú
Selección Descripción
Context Sensitive Brinda los tópicos de ayuda para el elemento activo
Help (F1)
Index Help Despliega el índice de los tópicos de ayuda
About…This Version Despliega la versión actual y los dispositivos que soporta

Barra de Comandos
Los seis comandos de la barra de comandos permiten realizar las operaciones básicas
de programación y salida del programa.
Comando Descripción
Alt-X-Exit Sale inmediatamente del programa. Si se presiona mientras una
función se esta ejecutando, la salida ocurrirá cuando la función
haya
terminado
F4 Edit Permite la Edición o Llenado de un archivo con un valor constante
F5 Program Inicia un ciclo de programación del dispositivo seleccionado.
F6 Verify Inicia un ciclo de verificación del dispositivo seleccionado
F7 Blank Checa/Borra el dispositivo seleccionado
F8 Read Inicia un ciclo de lectura del dispositivo seleccionado.

91
7 MP DriveWay

7-1 LA NECESIDAD DE DRIVEWAY

¿Cuantas hojas de especificaciones has tenido que leer antes de programar un


dispositivo?
¿Cuantas noches te has pasado buscando por un bit que no se ha ejecutado
correctamente?
¿Cuanto tiempo has gastado buscando un error de software cuando el hardware era el
culpable?
¿Cuanto esfuerzo has gastado depurando hardware utilizando software que nunca
trabajo?
DriveWay es la respuesta a todos estos problemas.

7-2 ¿QUE ES DRIVEWAY?

DriveWay es una manera rápida y eficiente de desarrollar aplicaciones para dispositivos


procesadores PIC de multiprotocolo integrado. Es una aplicación basada en Windows
fácil de usar que genera código fuente en “C” probado y documentado.
Para cada periférico, DriveWay puede producir un conjunto de funciones para controlar
el periférico. Tu aplicación llama entonces esas funciones para controlar el hardware
requerido. DriveWay puede asistirte en la entrada de datos o calculando valores
complicados basados en los requerimientos que se introducen, o proporcionando una
ventana de dialogo que permite fácilmente la entrada a todos los valores que se
requieran.

Después de usar DriveWay para generar sus controladores, puede usar la herramienta
integrada de creación de diagramas de flujo de DriveWay para construir un código de
aplicación en C utilizando los símbolos convencionales de los diagramas de flujo que
representen las variables en C, los enunciados tales como: if, if-else, while, do-while,
swictch, case.
Primero, seleccionas el periférico, las tareas y las funciones por medio de series de
ventanas de selección simple proporcionadas por DriveWay. Entonces se especifican los
valores para los parámetros usados por el sistema.
Entonces DriveWay genera el código en lenguaje C, permitiendo fácil y rápidamente la
integración de tus dispositivos periféricos dentro de tus diseños. Este código fuente
generado en lenguaje C esta escrito y documentado profesionalmente. Esta
acompañado por servicios de ayuda los cuales permiten un profundo entendimiento del
chip y su funcionalidad y describe todos los aspectos de la operación de DriveWay.

DriveWay utiliza una base de datos que describe a los chips que soporta. Esta base de
datos permite a DriveWay generar las rutinas del dispositivo que necesitas.
El tiempo de desarrollo se minimiza por la creación rápida y eficaz de los controladores
de DriveWay
El ciclo entero de desarrollo se reduce desde que DriveWay puede estar integrado
dentro de las primeras etapas de desarrollo de los procesos del hardware y software.

92
El tiempo de aprendizaje del chip es reducido notablemente. El usuario necesita
únicamente un enfoque del chip y las opciones para la operación seleccionada.
El rendimiento del sistema es aprovechado.

El objetivo de DriveWay es dar soporte a los chip tal y como ellos lo anuncian. Esta
característica provee sistemas de desarrollo incrustado, la flexibilidad de enfocar los
esfuerzos en el diseño del hardware y el nivel de programación de aplicaciones mientras
DriveWay maneja la programación del dispositivo.

7-3 ORIENTADO A OBJETOS

DriveWay produce un dispositivo objeto para cada periférico en el chip seleccionado.


Este objeto pertenece al programa en C que permite al usuario operar un periférico en un
chip de acuerdo a los requerimientos de la aplicación. El objeto consiste en un conjunto
de funciones y parámetros. Ajustando los parámetros a valores específicos, y llamando a
las funciones, la funcionalidad del periférico deseado puede ser implementada.

7-4 LA OPERACIÓN DE DRIVEWAY ES CLARA Y FÁCIL DE USAR

DriveWay corre en un computadora personal (PC) en un ambiente Windows (Microsoft).


La interfaz gráfica de usuario clara y familiar de DriveWay presenta pantallas simples que
ofrecen una opción entre alternativas claras (tal como: manejo de interrupciones). Lo que
habla de el lenguaje de aplicación, no el lenguaje del chip. No se necesita volver al nivel
de programación de bits en el chip, desde que DriveWay lo maneja por ti. Adicionalmente
a los dispositivos, DriveWay produce un archivo principal, con una función de
inicialización de proyectos y una función de prueba de proyectos.

Durante la operación, DriveWay puede proveer una guía concerniente al periférico


seleccionado y su operación, hasta el ultimo bit requerido en el proceso. Además, todos
los niveles de operación de DriveWay están apoyados por una herramienta de ayuda.

7-5 DRIVEWAY CUBRE TODAS LAS APLICACIONES DE LOS PERIFÉRICOS

DriveWay cubre comprensivamente varias aplicaciones de los periféricos:


Por ejemplo: Para CCP1 se puede seleccionar una de las siguientes aplicaciones:
Captura
Comparación
PWM- Modulación por Anchura de Pulso
Simplemente seleccione la aplicación de su decisión de la lista desplegada.
Entonces DriveWay le ofrecerá una lista de configuraciones para esa aplicación.
Por ejemplo: Si selecciona la opción de Captura, entonces las siguientes configuraciones
se despliegan para su selección: Tiempo Interno y Sincronización Externa.
Entonces DriveWay ofrece una opción de todas las posibles funciones para la selección
que se ha hecho, asegurando que las funciones obligatorias para accionar ese periférico
estén seleccionadas.

93
7-6 PORTABILIDAD DEL HARDWARE

El código fuente en C producido por DriveWay esta basado en una biblioteca genérica
de definiciones de DriveWay, la cual generalmente refleja la misma funcionalidad,
prototipo y secuencialidad para todos los objetos similares. Este concepto facilita la
transferencia del dispositivo preparado por DriveWay a otros chips.

7-7 DRIVEWAY PREPARA FUNCIONES DE PRUEBA POR TI.

Automáticamente, DriveWay prepara funciones de prueba para el dispositivo que


defines, permitiendo probar las conexiones del circuito hardware.
Una función de prueba es generada para cada periférico junto con un procedimiento
para ejecutarlo como parte del archivo principal.

7-8 CÓDIGO DE USUARIO DE DRIVEWAY

Después de hacer tus selecciones en DriveWay y activar la opción de generación de


código, podrías desear escribir algo de tus propios comandos dentro de los archivos de
código resultante. Esto puede realizarse utilizando cualquier editor de texto
convencional.
Como sea, podrías preguntar ahora, ¿que sucede la próxima vez que cambie o agregue
a DriveWay definiciones y las genere de nuevo? ¿ pierdo el código que agregue o
cambie en los archivos?. La respuesta es “No”.
DriveWay proporciona un numero de lugares especiales en cada archivo generado
dentro del cual se podrían introducir tus propios comandos. La próxima vez que tu
generes este proyecto, DriveWay no solamente preparara los archivos de código de
acuerdo a las nuevas definiciones de DriveWay, sino que también copiara todos los
cambios que se hayan hecho en esos lugares especiales en el proyecto previamente
generado.

7-9 CUADROS DE DIALOGO DE LOS CONJUNTOS DE PARÁMETROS DE


DRIVEWAY

Una de las características mas útiles de DriveWay es la habilidad de calcular


automáticamente los valores exactos de los parámetros que deberían ser especificados
a fin de llevar a cabo el código para el dispositivo que se requiere.
Adicionalmente, calcula automáticamente los parámetros requeridos basado en tus
entradas, DriveWay combina todos los parámetros que deberían ser introducidos dentro
de una sencilla ventana de dialogo fácil de usar para cada periférico.

7-10 OBJETOS EMULADOS

Los objetos emulados son proporcionados para soportar los chips de Microchip.

94
DriveWay te permite extender la funcionalidad de tus chips programando
automáticamente un periférico virtual llamado un Objeto Emulado. Esta característica
utiliza uno o mas de los periféricos existentes en el chip para realizar la funcionalidad
requerida.
Por ejemplo: La funcionalidad de PWM (Modulación por Anchura de Pulso) es llevada a
cabo utilizando un Timer(Temporizador) y un puerto periférico en el chip.
Esto te permite especificar cual periférico del chip es utilizado para implementar la
funcionalidad del Objeto Emulado.
Cada chip que DriveWay soporta viene con unas cuantas opciones de Objetos Emulados
los cuales aparecen en la vista del chip.

7-11 HOJAS DE ESPECIFICACIONES INTERACTIVAS (IDS)

También DriveWay proporciona Hojas de especificaciones interactivas(IDS) en-linea las


cuales proporcionan dos clases de información:
Datos en Hipertexto describiendo al chip, periféricos, modos, registros y pines. Esta
información puede ser usada como en un manual de especificaciones del chip.
Una descripción de los objetos de DriveWay en la base de datos que se pueden
seleccionar para permitir a DriveWay para generar el código que se requiere.

7-12 PROCESOS DE DESARROLLO ASISTIDO DE DRIVEWAY

DriveWay te asiste en los siguientes procesos:


Diseño de software: Interface software/hardware
Diseño de hardware: Muestra al chip con sus especificaciones y restricciones
Preparación de la aplicación: DriveWay proporciona una herramienta de diagramas de
flujo para ayudarte a preparar tu código de aplicación usando símbolos convencionales
de diagramas de flujo
Implementación de software para dispositivos: DriveWay desarrolla controladores a la
medida para la aplicación requerida
Software de integración y prueba: Utilizando objetos preparados de DriveWay
previamente probados, el proceso se hace mas eficiente
Hardware de integración y prueba: DriveWay prepara funciones de prueba para probar el
comportamiento de cada periférico
Software/hardware de integración y prueba: Utilizando dispositivos preparados de
DriveWay probados, el proceso se hace mas eficiente

7-13 LA APLICACIÓN DRIVEWAY

La aplicación DriveWay esta compuesta de dos partes:


La interface de usuario: la cual consiste en la operación de los menús para la operación
del sistema, seleccionando los modos de operación del chip, ajustando los valores
iniciales y generando el código fuente. Las diferentes vistas desplegadas presentan
claramente los datos y las posibles selecciones para el proyecto actual (un proyecto
consiste de un numero de definiciones de dispositivo)
La base de datos: la cual consiste en todos los componentes requeridos por la interfaz
de usuario para generar un controlador de dispositivo para el chip. Esto incluye toda la

95
información para auxiliar al usuario a entender y aplicar las opciones de DriveWay que
están disponibles.

7-14 OPERACIÓN DE DRIVEWAY

La operación de DriveWay se divide en dos etapas:


Definiendo los requerimientos del dispositivo: El software te lleva a través de una
selección y un proceso de entrada el cual define el dispositivo requerido.
Generación del código: Después de haber especificado todos los requerimientos,
simplemente se selecciona la opción de Generar para generar el código.

7-15 DISEÑO DE DRIVEWAY

El diseño de DriveWay esta basado en los tres principios siguientes:


Eficiencia del código: El código de DriveWay es eficiente, mientras permanece siendo
estructurado y simple
Operación simple: DriveWay pone énfasis en el lenguaje de aplicación, una estructura
jerárquica y una ayuda contextual para operaciones comunes y una base de datos
Forma del código: DriveWay genera archivos fuente conteniendo código fácil de leer y
bien documentado el cual es personalizado a tus especificaciones (modos de operación,
nombres de función y parámetros, estilo del código). El código fuente en C y los archivos
de cabecera generados por DriveWay son archivos convencionales en C, los cuales se
pueden editar, compilar y enlazar. También es creado un archivo de documentación
conteniendo información acerca de los controladores generados.

7-16 CONTENIDO DEL PAQUETE DRIVEWAY

El paquete DriveWay incluye:


Una guía de usuario
Software DriveWay
Licencia
Formas de solicitud de características
Tarjeta de Registro

7-17 REQUERIMIENTOS DEL SISTEMA

Para ejecutar DriveWay se necesita:


Computadora Personal 80386 o superior
Microsoft Windows 3.1 o superior
4 Mb RAM
12 Mb de espacio libre en el disco duro
Drive de disquete 3 1/2” o unidad de CD-ROM

96
7-18 TÉRMINOS DE DRIVEWAY

Base de datos (Knowledge Base): Los datos que definen la información especifica del
chip para la generación del código. Incluye la definición del chip, la estructura del chip, el
código genérico y la información de ayuda.
Controlador (device driver): Software que contiene el código para controlar un periférico
especifico en un circuito. Esta descripción se refiere al nivel bajo de controladores.
Proyecto (project): Software de desarrollo que requiere la preparación de los
controladores para chips específicos en un circuito.
Periférico (peripheral): Una unidad en un chip que realiza una función especifica.
Objeto Funcional (funcional object): Un objeto que describe la manera en que una
aplicación puede usar un periférico especifico.
Establecer un Objeto (object setup): La configuración de un objeto funcional, expresando
la manera en que trabaja el objeto funcional.
Función (function): Una función o macro en lenguaje C que realiza una tarea especifica
para un periférico seleccionado, un objeto funcional o establecer un objeto.
Parámetro (parameter): Una variable, constante, definición de comando o nombre de
identificación en lenguaje C.
Procesador (processor): Un chip que incluye un CPU y periféricos (microcontrolador)
Vista del Chip (chip view): La pantalla principal de DriveWay para mostrar los periféricos,
los objetos funcionales, los objetos establecidos, funciones, macros y parámetros
seleccionados en el proyecto. Estos objetos se despliegan como iconos dentro de un
árbol jerárquico. Cada icono representa un diferente tipo de objeto.
Código de Usuario (user code): DriveWay proporciona un numero de lugares especiales
en cada archivo generado dentro de los cuales se pueden introducir tus propios
comandos. Estos comandos serán transferidos a los nuevos archivos cada vez que el
proyecto sea generado de nuevo.
Cuadro de dialogo de Parámetros (set parameter dialog): DriveWay proporciona una
ventana de parámetros sencilla y fácil de usar para cada periférico. Esta ventana te
permite especificar los ajustes requeridos para los periféricos y automáticamente calcula
la mayoría de ellos basado en tus entradas.
Objeto Emulado (emulated object): Los objetos emulados son proporcionados para
apoyar los chips de Microchip. Los objetos emulados utilizan periféricos existentes del
chip para proporcionar un periférico virtual adicional, tal como un UART virtual que utiliza
un Timer y un puerto paralelo.

7-19 SALIDA DE DRIVEWAY

DriveWay genera un código en lenguaje C para permitir la rápida y fácil integración de


tus dispositivos periféricos en tus diseños. El diseño de DriveWay pone un énfasis
particular en la realización clara, forma y estilo estructurado en código C y en los otros
archivos que genera. Para cada periférico de un chip, DriveWay puede producir un
conjunto de instrucciones para controlar ese periférico. Tu aplicación puede entonces
llamar esas funciones para controlar el dispositivo requerido.

97
8 PRACTICAS/EJEMPLOS

98
BIBLIOGRAFIA

Microcontroladores PIC, la solución en un chip


J. Ma. Angulo Usategui, E. Martín Cuenca y J. Angulo Martínez
Editorial Paraninfo, 1997

Aplicaciones de los microcontroladores PIC de Microchip


J. Ma. Angulo Usategui, E. Martín Cuenca y J. Angulo Martínez
Editorial McGraw Hill, 1998

Microchip PIC Microcontrollers


Data Book, Microchip Technology Inc.
Microchip, The embedded control solutions company, 1997

Problemas de metodología de la programación


Luis Joyanes Aguilar
Editorial McGraw Hill, 1996

INTERNET

99

También podría gustarte