Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROCONTROLADORES PIC
MICROCHIP TECHNOLOGY
* * * * * * 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.
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.
7
1. PRINCIPIOS, CARACTERISTICAS Y APLICACIONES
GENERALES
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.
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-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.
Los campos más destacados en los que so emplean microcontroladores son las
siguientes:
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.
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.
11
Figura 1-4. La arquitectura Harvard dispone de dos memorias independientes para datos
y para instrucciones, permitiendo accesos simultáneos.
CISC
RISC
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
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.
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
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
4ª. EEPROM
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.
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.
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.
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.
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. '
15
Modulador de anchura de impulsos o PWM
Puertos de E/S digitales.
Puertos de comunicación.
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.
16
1-5-5 Conversor A/D
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.
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.
Se han desarrollado todo tipo de lenguajes para los microcontroladores, pero los más
usados son el Ensamblador, el BASIC y el C.
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.
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.
Simuladores
Depuradores residentes
19
Tienen las ventajas de un simulador y muestran el desarrollo real del programa (no está
simulado por software).
Emuladores en circuito.
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
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.
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.
22
2 ARQUITECTURA GENERAL DE LA GAMA BAJA
2-1 INTRODUCCION
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.
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.
Todas las instrucciones de los PIC se ejecutan en un ciclo, menos las de salto que
tardan dos.
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.
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.
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.
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.
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
27
Puertos de E/S
Disponen de hasta tres puertos para E/S (PA, PB y PC).
Temporizador
Registros
28
Figura 2-7 Esquema detallado de la arquitectura de los microcontroladores PIC de la
gama baja.
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.
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.
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.
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.
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 :
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.
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.
34
3 REPERTORIO DE INSTRUCCIONES
1ª Juego reducido
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.
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.
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.
35
3-1-1 Diferencias entre los repertorios de las gamas baja y media
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.
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.
ABREVIATURA DESCRIPCION
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
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
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
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.
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.
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
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”).
Tabla 3-5. Instrucciones de salto que rompen la secuencia normal del programa (TOS
representa el contenido de la cima de la Pila)
40
Tabla 3-6. Instrucciones para el manejo de un bit de un registro.
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
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
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
42
Código OP: 0101 bbbf ffff
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
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
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
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
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
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
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
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
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
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
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
49
Después de la instrucción:
PC = dirección de retorno
A = 0x37
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
50
Flags afectados: Z
Código OP: 1 1 1 1 k k k k kkkk
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
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.
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
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:
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.
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
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
55
Tabla 4-1. Microcontroladores de la gama alta (caracteristicas)
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.
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
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.
61
Figura 4-3.Mapa de la memoria de programa
62
Figura 4-4. Ampliacion del area de programa (memoria)
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.
64
Se describen algunas peculiaridades de los registros mas novedosos del área de datos.
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).
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.
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.
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
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:
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
RA1 tiene multiplexada su función de E/S digital con la de entrada del reloj externo para
TMR0.
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
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
Además, sus líneas pueden actuar como el byte de mas peso del bus del sistema
exterior (AD8-AD15).
PUERTO E
Los PIC17C4X disponen de cuatro temporizadores cada uno de los cuales puede
generar una interrupción. Sus características generales son:
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.
TMR1
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
TMR3
Cuando funciona en modo contador, los impulsos de contaje se reciben por la patita
RB5/TCLK3.
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.
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.
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:
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.
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
Modo sincrono
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.
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.
- 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)
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.
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
La peculiaridad del chip es que se presenta encapsulado con ocho patitas. Figura 4-7.
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.
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:
75
5 PROGRAMACIÓN (ASM)
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”.
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.
5-3 EMULACIÓN
77
· Comprobar el orden y la duración en la ejecución de instrucciones
5-3-1 Simulador
Interfaz Serie
RS-232 Interfaz
Microcontrolador
Tarjeta de Prueba
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
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
80
5-5 ESCRITURA DEL CODIGO FUENTE
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.
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.
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)
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.
84
6-3. UTILIZANDO LA INTERFAZ PRESENTADA EN PANTALLA.
Pantalla en la PC
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
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
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 4. Programar el
dispositivo
Checa si el dispositivo
No
esta en blanco
Ciclo de programacion
¿Continuar? No
abortado
Si
Programa ahora el
dispositivo
No
Programacion completa
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.
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
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
6-6. DESCRIPCIONES.
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
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.
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.
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.
95
información para auxiliar al usuario a entender y aplicar las opciones de DriveWay que
están disponibles.
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.
97
8 PRACTICAS/EJEMPLOS
98
BIBLIOGRAFIA
INTERNET
99