Está en la página 1de 40

Microcontroladores PIC

Apoyo Tcnico 2009

INTRODUCCIN A LOS MICROCONTROLADORES PIC Y


PROGRAMACIN DE UNA MATRIZ DE LEDs

Elaborado por:
Luis Edier Gaan Gaan
Vctor Alexander Quintana Trujillo
Grupo de Apoyo Tcnico

Revisado por:
Sal Alfredo Erazo
Instructor del rea de automatizacin

SENA
CENTRO DE DISEO E INNOVACIN TECNOLGICA INDUSTRIAL
REGIONAL RISARALDA
NOVIEMBRE 2009

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

El presente proyecto tiene como objetivo servir de manual para todas aquellas
personas interesadas en la programacin de microcontroladores, consta de un
conjunto de prcticas de diferente complejidad, as como el funcionamiento de
estos dispositivos.
Los microcontroladores PIC suponen un avance significativo en la materia de
dispositivos digitales empleados en el control de sistemas. Su reducido tamao
as como sus elevadas prestaciones lo convierten en un elemento
indispensable en el campo de los microcontroladores. Por ste motivo, el rea
de Automatizacin del Centro de Diseo e Innovacin Tecnolgica del SENA
regional Risaralda, pretende realizar un conjunto de prcticas que profundicen
en las prestaciones de los microcontroladores de forma que el aprendiz asimile
los conceptos fundamentales mediante la realizacin de una serie de prcticas
de complejidad creciente, finalizando con la prctica sobre el funcionamiento y
programacin de una matriz de leds.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Capitulo 1

Introduccin a los PIC

1. Diferencia entre el Microprocesador y Microcontrolador


El microprocesador es un chip que contiene integrado la Unidad Central de
Proceso (CPU), tambin llamada procesador en los computadores. Esta CPU
es la encargada de interpretar las instrucciones y procesar los datos contenidos
en el programa, que previamente se han guardado ah.
El microprocesador permite conectarle la memoria y los mdulos de entrada y
salida, estos dispositivos se conectan a los pines del microprocesador que
ponen en el exterior las lneas de sus buses de direcciones, datos y control.
Se dice que un microprocesador es un sistema abierto porque su configuracin
es variable de acuerdo con la aplicacin a la que se destine.

El microcontrolador es un circuito integrado que incluye en definitiva todos los


componentes de un computador. En un microcontrolador encontramos la
Unidad Central de Proceso (CPU), memoria RAM, memoria ROM, EPROM,
EEPROM, FLASH, lneas de entrada y salida para comunicarse con el exterior,
mdulos para el control de perifricos, entre otros.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

2. Arquitectura de los Microcontroladores


La arquitectura de un microcontrolador se define como la estructura,
funcionalidades, y modelos de programacin del Microprocesador. Ms
concretamente nos referimos a su conjunto de instrucciones al nmero de
ciclos de reloj por instruccin, a su conjunto de Registros internos, al modelo de
gestin de la memoria etc.
2.1 Arquitectura Von Neumann
Es la arquitectura tradicional de computadores y microprocesadores, que se
basa en el esquema propuesto por John Von Neumann, en la cual la CPU
(Unidad Central de Proceso), esta conectada a una memoria nica que
contiene las instrucciones del programa y los datos.
Cuando la CPU se dirige a la memoria principal, primero saca la instruccin y
despus saca los datos necesarios para ejecutarla, esto retarda el
funcionamiento de la CPU.

2.2 Arquitectura Harvard


La arquitectura conocida como Harvard, consiste simplemente en un esquema
en el que el CPU esta conectado a dos memorias por intermedio de dos buses
separados. Una de las memorias contiene solamente las instrucciones del
programa, y es llamada Memoria de Programa. La otra memoria solo almacena
los datos y es llamada Memoria de Datos.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

3- Tipos de Memoria
La memoria interna de datos del PIC, tambin llamada archivos de registro,
esta dividida en dos grupos: Los registros especiales, y los registros de
propsito general. Los primeros ocupan por lo general los primeros lugares, por
ejemplo en el PIC 16F877, en el banco 0, los registros especiales estn entre
00h y 1Fh, los registros de propsito general van desde 20h, hasta 7Fh.
3.1 Memoria ROM
La informacin pregrabada electrnicamente en ella (programa o lista de
instrucciones) Solamente puede ser leda y no es posible alterar su contenido
por ningn mtodo directo.
La memoria ROM es escrita, directamente por el fabricante es no Voltil, esto
significa que su informacin no se pierde aun cuando se le suspende el
suministro de energa.
El precio de los microcrontroladores con este tipo de memoria es elevado.
3.2 Memoria OTP
El microcontrolador contiene una memoria no voltil de slo lectura
programable una sola vez por el usuario. OTP (One Time Programmable).
El usuario puede grabar solo una vez el programa en el chip.
Es recomendable usarla en el prototipo y produccin en serie del producto en
cantidades muy pequeas.
3.3 Memoria EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable
Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces.
La grabacin del programa se hace igual a los OTP, con un grabador manejado
por PC. Si, posteriormente se desea borrar el contenido del programa,
disponen de una ventana de cristal en su superficie por la cual se somete la
EPROM a rayos ultravioletas durante varios segundos. Su precio es un poco
ms elevado que el de los microcontroladores OTP.
3.4 Memoria EEPROM
Se trata de memorias de slo lectura, programables y borrables elctricamente
EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la
programacin como el borrado, se realizan elctricamente desde el propio
grabador y bajo el control programado de un PC. Es muy cmoda y rpida la
operacin 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.
3.5 Memoria FLASH
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y


borrar. Funciona como una ROM y una RAM pero consume menos y es ms
pequea.
A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es
ms rpida que la EEPROM.
La alternativa FLASH est recomendada frente a la EEPROM cuando se
precisa gran cantidad de memoria de programa no voltil. Es ms veloz y tolera
ms 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 el circuito integrado de la tarjeta. As, un
dispositivo con este tipo de memoria incorporado al control del taxmetro de un
automvil publico, al variar los valores del precio por recorrido, el programador
solo tendr que reprogramar el chip en el circuito, con los valores actuales, sin
necesidad de extraer el microcontrolador, ni comprando un nuevo taxmetro.
4- Puertos de entrada y salida
La principal funcin de los pines de un microcontrolador es permitir la
comunicacin entre si, con perifricos exteriores.
Estos pines pueden variar dependiendo del microcontrolador, pueden tener
ms o menos pines, cada pin tendr un funcionamiento diferente para el
procesamiento de las seales de entrada, salida o de control, dependiendo del
fabricante del microcontrolador y su modelo.

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 sincronizacin de todas las operaciones del sistema.
Generalmente, el circuito de reloj est incorporado en el microcontrolador y
slo 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 cermico 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 energa.

6- Recursos especiales

Cada microcontrolador incorpora caractersticas diferentes a los dems, estas


caractersticas dependen del fabricante y versin del microcontrolador,
simplemente estos recursos deben representar alguna ventaja o facilidad a la
hora de hacer un diseo.
La labor del diseador es encontrar el modelo mnimo que satisfaga todos los
requerimientos de su aplicacin.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

6.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
continuacin dicho valor se va incrementando o decrementando al ritmo de los
impulsos de reloj o algn mltiplo hasta que se desborde y llegue a 0, momento
en el que se produce un aviso.
6.2 Perro guardin o Watchdog
Cuando el computador personal se bloquea por un fallo del software u otra
causa, se pulsa el botn del reset y se reinicializa el sistema. Pero un
microcontrolador funciona sin el control de un supervisor y de forma continuada
las 24 horas del da. El Perro guardin consiste en un temporizador que,
cuando se desborda y pasa por 0, provoca un reset automticamente en el
sistema.
Es muy til cuando se trabaja en ambientes con mucha interferencia o ruido
electromagntico. Es conformado por un oscilador RC que se encuentra dentro
del microcontrolador.
Este oscilador corre de manera independiente al oscilador principal. Cuando se
habilita su funcionamiento, dicho circuito hace que el microcontrolador sufra un
reset cada determinado tiempo (que se puede programar entre 18 ms y 2
segundos). Este reset lo puede evitar el usuario mediante una instruccin
especial del microcontrolador (CLRWDT: borrar conteo del watchdog), la cual
se debe ejecutar antes de que termine el perodo nominal de dicho
temporizador. De esta manera si el programa se ha salido de su flujo normal,
por algn ruido o interferencia externa, el sistema se reiniciar (cuando se
acabe el tiempo programado y no se haya borrado el contador) y el programa
puede restablecerse para continuar su funcionamiento normal.
6.3 Proteccin ante fallo de alimentacin o Brownout
Se trata de un circuito que resetea al microcontrolador cuando el voltaje de
alimentacin (VDD) es inferior a un voltaje mnimo (brownout). Mientras el
voltaje de alimentacin sea inferior al de brownout el dispositivo se mantiene
reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho
valor.
6.4 Modo de bajo consumo (Sleep)
Esta caracterstica permite que el microcontrolador entre a un estado pasivo
donde consume muy poca potencia. Se usa en muchas aplicaciones donde el
micro debe esperar sin hacer nada, a que se produzca algn acontecimiento
externo que lo ponga de nuevo en funcionamiento.
En dicho estado se detiene el reloj principal y se congelan sus circuitos
asociados, quedando sumido en un profundo sueo el microcontrolador. Al
activarse una interrupcin ocasionada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

6.5 Conversor D/A (CDA)


Transforma los datos digitales obtenidos del procesamiento del computador en
su correspondiente seal analgica que saca al exterior por una de las patitas
de la cpsula.
6.6 Conversor A/D
Una conversin analgica-digital (CAD) (o ADC) consiste en la transcripcin de
seales analgicas en seales digitales, con el propsito de facilitar su
procesamiento (codificacin, compresin, etc.) y hacer la seal resultante (la
digital) ms inmune al ruido y otras interferencias a las que son ms sensibles
las seales analgicas.
6.7 Comparador analgico
Algunos modelos de microcontroladores disponen internamente de un
Amplificador Operacional que acta como comparador entre una seal fija de
referencia y otra variable que se aplica por una de las patitas de la cpsula. La
salida del comparador proporciona un nivel lgico 1 0 segn una seal sea
mayor o menor que la otra.
6.8 Modulacin por ancho de pulsos o PWM
La modulacin por ancho de pulsos de una seal o fuente de energa es una
tcnica en la que se modifica el ciclo de trabajo de una seal peridica (una
sinusoidal o una cuadrada, por ejemplo), ya sea para transmitir informacin a
travs de un canal de comunicaciones o para controlar la cantidad de energa
que se enva a una carga.
Estos impulsos de anchura variable, se ofrecen al exterior a travs de las pines
del encapsulado.
6.9 Puertos de E/S
Los puertos son el puente entre el microcontrolador y el mundo exterior. Son
lneas que trabajan entre cero y cinco voltios.
Las lneas 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 configuracin.
6.10 Puertos de comunicacin
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 permiten
directamente esta tarea, entre los que destacan:

UART, adaptador de comunicacin serie asncrona.

USART, adaptador de comunicacin serie sncrona y asncrona

Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.

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

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), para permitir la adaptacin con redes de
conexionado multiplexado desarrollado conjuntamente por Bosch e Intel
para el cableado de dispositivos en automviles. En EE.UU. se usa el
J185O.

6.11 Interrupciones
Se trata de un acontecimiento que hace que el micro deje de lado lo que se
encuentra realizando, atienda ese suceso y luego regrese y contine con lo
suyo.
Existen dos tipos de interrupciones posibles, una es mediante una accin
externa (es decir por la activacin de uno de sus pines), la otra es interna (por
ejemplo cuando ocurre el desbordamiento de uno de sus registros)

7. Herramientas para el desarrollo de aplicaciones


Uno de los factores que ms importancia tiene a la hora de seleccionar un
microcontrolador entre todos los dems es el soporte tanto software como
hardware de que dispone. Un buen conjunto de herramientas de desarrollo
puede ser decisivo en la eleccin, ya que pueden suponer una ayuda
inestimable en el desarrollo del proyecto.
Las principales herramientas de ayuda al desarrollo de sistemas basados en
microcontroladores son:

Desarrollo del software:

Ensamblador. La programacin en lenguaje ensamblador puede resultar un


tanto ardua para el principiante, pero permite desarrollar programas muy
eficientes, ya que otorga al programador el dominio absoluto del sistema. Los
fabricantes suelen proporcionar el programa ensamblador de forma gratuita y
en cualquier caso siempre se puede encontrar una versin gratuita para los
microcontroladores ms populares.
Compilador: La programacin en un lenguaje de alto nivel (como el C) permite
disminuir el tiempo de desarrollo de un producto. No obstante, si no se
programa con cuidado, el cdigo resultante puede ser mucho ms ineficiente
que el programado en ensamblador. Las versiones ms potentes suelen ser
muy caras, aunque para los microcontroladores ms populares pueden
encontrarse versiones demo limitadas e incluso compiladores gratuitos.
Simulador: Son capaces de ejecutar en un PC programas realizados para el
microcontrolador. Los simuladores permiten tener un control absoluto sobre la
ejecucin de un programa, siendo ideales para la depuracin de los mismos.
No cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el
paso fsico de la implementacin de un modo ms seguro y menos costoso. En
circuitos donde se requiere mucha velocidad para poder ver un efecto, los
simuladores muchas veces no reaccionan como funcionaria en un medio fsico,
tal es el caso de los displays de 7 segmentos y matrices de leds.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Entrenadores: Se trata de pequeos sistemas con un microcontrolador ya


montado y que suelen conectarse a un PC desde el que se cargan los
programas que se ejecutan en el microcontrolador. Las placas suelen incluir
visualizadores LCD, teclados, LEDs, fcil acceso a los pines de E/S, etc.

8. Microcontroladores PIC
Son los dispositivos que ms se usan en nuestra regin, la realidad es que no
hay una repuesta concreta de la explicacin del uso de PIC en vez del Motorola
(su uso se esta popularizando en los ltimos tiempos) o cualquier otra familia
de microcontroladores. Pero puede ser su velocidad, el precio, su facilidad de
uso, la informacin, su pequeo tamao Todo esto es lo que produce esa
imagen de sencillez y utilidad que al parecer le agradan tanto a un diseador
de microcontroladores, pero en un futuro alguna otra familia le puede arrebatar
ese algo.
Queremos constatar que para las aplicaciones ms habituales (casi un 90%) la
eleccin de una versin adecuada de PIC es la mejor solucin; sin embargo,
dado su carcter general, otras familias de microcontroladores son ms
eficaces en aplicaciones especficas, especialmente si en ellas predomina una
caracterstica concreta, que puede estar muy desarrollada en otra familia.
Los PIC son relativamente ms baratos econmicamente que el de sus
competidores, la informacin es fcil de conseguir y econmica, buenos
parmetros de funcionamiento: velocidad, consumo tamao, etc.; la
herramientas de software se pueden bajar libremente por su pagina:
http://www.microchip.com).
Una de las razones del xito de los PIC se basa en su utilizacin. Cuando se
aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de
instrucciones, es muy fcil emplear otro modelo.

8.1 Caractersticas relevantes.


Descripcin de las caractersticas ms representativas de los PIC:

8.1.1 Arquitectura.
La arquitectura del procesador sigue el modelo Harvard. En esta
arquitectura, la CPU se conecta de forma independiente y con buses distintos
con la memoria de instrucciones y con la de datos.
La arquitectura Harvard permite a la CPU acceder simultneamente a las
dos memorias. Adems, propicia numerosas ventajas al funcionamiento del
sistema como se irn describiendo.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

8.1.2 Arquitectura basada en un banco de registros


Esto significa que todos los objetos del sistema (puertas de E/S,
temporizadores, posiciones de memoria, etc.) estn implementados fsicamente
como registros.

8.1.3 Diversidad de modelos de microcontroladores con


prestaciones y recursos diferentes
La gran variedad de modelos de microcontroladores PIC permite que el
usuario pueda seleccionar el ms conveniente para su proyecto.

8.1.4 Herramientas de soporte potentes y econmicas


La empresa Microchip y otras que utilizan los PIC ponen a disposicin de los
usuarios numerosas herramientas para desarrollar hardware y software. Son
muy abundantes los programadores, los simuladores software, los emuladores
en tiempo real, Ensambladores, Compiladores C, Intrpretes y Compiladores
BASIC, etc.

9. Las Gamas de PIC


Una de las labores ms importantes del ingeniero de diseo es la eleccin
del microcontrolador que mejor satisfaga las necesidades del proyecto con el
mnimo presupuesto.
Para resolver aplicaciones sencillas se precisan pocos recursos, en
cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo
esta filosofa Microchip construye diversos modelos de microcontroladores
orientados a cubrir, de forma ptima, las necesidades de cada proyecto. As,
hay disponibles microcontroladores sencillos y baratos para atender las
aplicaciones simples y otros complejos y ms costosos para las de mucha
envergadura.
Microchip dispone de cuatro familias de microcontroladores de 8 bits para
adaptarse a las necesidades de la mayora de los clientes potenciales.
En la mayor parte de la bibliografa encontraran tan solo tres familias de
microcontroladores, con lo que habrn despreciado la llamada gama baja, que
es en realidad una subfamilia formada por componentes pertenecientes a las
otras gamas. En nuestro caso hemos preferido comentarla dado que los PIC
bajas son muy apreciados en las aplicaciones de control de personal, en
sistemas de seguridad y en dispositivos de bajo consumo que gestionan
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

receptores y transmisores de seales. Su pequeo tamao los hace ideales en


muchos proyectos donde esta cualidad es fundamental.
9.1 La gama baja: PIC12C (F) XXX de 8 pines
Se trata de un grupo de PIC que ha acaparado la atencin del mercado. Su
principal caracterstica es su reducido tamao, al disponer todos sus
componentes de 8 pines. Se alimentan con un voltaje de corriente continua
comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan
a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y
su repertorio es de 33 o 35 instrucciones, respectivamente.

Aunque los PIC bajas slo tienen 8 pines, pueden destinar hasta 6 como
lneas de E/S para los perifricos porque disponen de un oscilador interno R-C.
En la Tabla 1.1 se presentan las principales caractersticas de los modelos
de esta subfamilia, que el fabricante tiene la intencin de potenciar en un futuro
prximo. Los modelos 12C5xx pertenecen a la gama baja, siendo el tamao de
las instrucciones de 12 bits; mientras que los 12F6xx son de la gama media y
sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash
para el programa y EEPROM para los datos.
MODELO

MEMORIA
PROGRAMA

MEMORIA DATOS

512x12
25x8
PIC12C508
1024x12
41x8
PIC12C509
512x14
80x8
PIC12C670
1024x14
128x8
PIC12C671
2048x14
128x8
PIC12C672
PIC12C680 512X12 FLASH 80x8 16x8 EEPROM
PIC12C681 1024x14 FLASH 80x8 16x8 EEPROM

FRECUENCIA
MAXIMA

LINEAS
E/S

4 MHz
4 MHz
4 MHz
4 MHz
4 MHz
4 MHz
4 MHz

6
6
6
6
6
6
6

Centro de Diseo e Innovacin Tecnolgica Industrial

ADC
8BITS

2
4
4

TEMPORIZADORE
S

PATITAS

TMR0 + WDT
TMR0 + WDT
TMR0 + WDT
TMR0 + WDT
TMR0 + WDT
TMR0 + WDT
TMR0 + WDT

8
8
8
8
8
8
8

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

9.2 Gama baja o bsica: PIC16C5X con instrucciones de 12 bits.


Se trata de una serie de PIC de recursos limitados, pero con una de la mejores
relaciones coste/prestaciones. Sus versiones estn encapsuladas con 18 y 28
patitas y pueden alimentarse a partir de una tensin de 2,5 V, lo que les hace
ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo
consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33
instrucciones cuyo formato consta de 12 bits. No admiten ningn tipo de
interrupcin y la Pila slo dispone de dos niveles.

Al igual que todos los miembros de la familia PIC16/17, los componentes de la


gama baja se caracterizan por poseer los siguientes recursos: (en la Tabla 2.2
se presentan las principales caractersticas de los modelos de esta familia).
a. Sistema POR (Power On Reset)
Todos los PIC tienen la facultad de generar una autoreinicializacin o autoreset
al conectarles la alimentacin.
b. Perro guardin (Watchdog o WDT)
Existe un temporizador que produce un reset automticamente si no es
recargado antes que pase un tiempo prefijado. As se evita que el sistema
quede colgado dado en esa situacin el programa no recarga dicho
temporizador y se genera un reset.
c. Cdigo de proteccin
Cuando se procede a realizar la grabacin del programa, puede protegerse
para evitar su lectura. Tambin disponen los PIC de posiciones reservadas
para registrar nmeros de serie, cdigos de identificacin, prueba, etc.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

d. Lneas de E/S de alta corriente


Las lneas de E/S de los PIC pueden proporcionar o absorber una corriente de
salida comprendida entre 20 y 25 mA, capaz de excitar directamente ciertos
perifricos.
e. Modo de reposo (Bajo consumo o sleep)
Ejecutando una instruccin (SLEEP), la CPU y el oscilador principal se
detienen y se reduce notablemente el consumo.
Para terminar el comentario introductorio sobre los componentes de la gama
baja conviene nombrar dos restricciones importantes:

La pila o stack slo dispone de dos niveles lo que supone no


poder encadenar ms de dos subrutinas.

Los

microcontroladores

de

la

gama

baja

no

admiten

interrupciones.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

9.3 Gama media. PIC16CXXX con instrucciones de 14 bits


Es la gama ms variada y completa de los PIC. Abarca modelos con
encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran
abundantes perifricos. Dentro de esta gama se halla el fabuloso PIC16X84
y sus variantes. En la Figura 2.3 se muestra el diagrama de conexionado de
uno de estos PIC.

En esta gama sus componentes aaden nuevas prestaciones a las que


posean los de la gama baja, hacindoles ms adecuados en las aplicaciones
complejas. Admiten interrupciones, poseen comparadores de magnitudes
analgicas, convertidores A/D, puertos serie y diversos temporizadores.
El repertorio de instrucciones es de 35, de 14 bits cada una y compatible con el
de la gama baja. Sus distintos modelos contienen todos los recursos que se
precisan en las aplicaciones de los microcontroladores de 8 bits. Tambin
dispone de interrupciones y una Pila de 8 niveles que permite el anidamiento
de subrutinas. Las principales caractersticas de los modelos de esta familia:

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que
puede trabajar asincrnicamente y que puede incrementarse aunque el
microcontrolador se halle en el modo de reposo (sleep), posibilitando la
implementacin de un reloj en tiempo real.
Las lneas de E/S presentan una carga pull-up activada por software.

9.4 Gama alta: PIC17CXXX con instrucciones de 16 bits.


Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos
disponen de un sistema de gestin de interrupciones vectoriales muy potente.
Tambin

incluyen

variados

controladores

de

perifricos,

puertas

de

comunicacin serie y paralelo con elementos externos, un multiplicador


hardware de gran velocidad y mayores capacidades de memoria, que alcanza
los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de
datos.
Quizs la caracterstica ms destacable de los componentes de esta gama es
su arquitectura abierta, que consiste en la posibilidad de ampliacin del
microcontrolador con elementos externos. Para este fin, las patitas sacan al
exterior las lneas de los buses de datos, direcciones y control, a las que se
conectan memorias o controladores de perifricos. Esta facultad obliga a estos
componentes a tener un elevado nmero de patitas comprendido entre 40 y 44.
Esta filosofa de construccin del sistema es la que se empleaba en los
microprocesadores y no suele ser una prctica habitual cuando se emplean
microcontroladores. Las caractersticas ms relevantes de los modelos de esta
gama, que slo se utilizan en aplicaciones muy especiales con grandes
requerimientos:

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

9.5 PIC18FXXX con instrucciones de 16 bits


Se alcanzan las 77 instrucciones de 16bits.
Frecuencia mxima de reloj 40 MHz. Hasta 10 MIPS (Millones de Instrucciones
por segundo).
Pila de 32 Niveles.
Perifricos de comunicacin avanzadas (CAN y USB).
De 18 a 80 pines

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

10. LOS REGISTROS DE LA GAMA MEDIA


10.1 Organizacin de la memoria de datos
La ampliacin de recursos en los PIC
forz en los catalogados como de gama
media una nueva estructura y la modificacin
de algunas instrucciones (partiendo, claro
est, de la gama baja). Una de las diferencias
fundamentales

es,

precisamente,

la

ampliacin de memoria de registros, a los


que se unieron algunos nuevos de sistema, y
la accesibilidad a parte de los mismos que
antes quedaban ocultos, como OPTION o
TRIS, de los que hablaremos a continuacin.

De este modo se opt por dos bancos de


registros de 128 posiciones cada uno, la
mayora de los cuales son de propsito
general. En el siguiente esquema, que
muestra esta organizacin, las direcciones
con casillas blancas muestran posiciones de
registros especficos, y las grises generales.

Direccin
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
.
.
.
7F

Centro de Diseo e Innovacin Tecnolgica Industrial

BANCO 0 BANCO 1 Direccin


INDF
INDF
80
TMR0
OPTION
81
PCL
PCL
82
STATUS STATUS
83
FSR
FSR
84
PORT A
TRIS A
85
PORT B
TRIS B
86
87
88
89
PCLATH PCLATH
8A
INTCON INTCON
8B
PIR1
PIE1
8C
8D
PCON
8E
8F
90
91
92
93
94
95
96
97
98
99
9A
9B
9C
9D
9E
CMCON
VRCON
9F
Registros Registros
.
de
de
.
Propsito Propsito
.
General
General
FF

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

10.2 Registros especficos


10.2.1 PCL o Contador de programa:
Se utiliza para direccionar hasta 8K
palabras, separadas en bancos de 2K,
del programa del usuario que se
encuentran
almacenadas
en
la
memoria ROM; Este contador de
programa es de 13 bits de ancho. El
byte de menos peso de la direccin se
guarda en el registro PCL, situado en
la posicin 0x02 del banco 0, mientras
los 5 bits de ms peso se guardan en
los 5 bits de menos peso del registro
PCLATH (direccin 0x08).

10.2.2 Registro STATUS


Registro de 8 bits, cada uno de sus bits (Denominados Banderas) es un
indicador de estado de la CPU o del resultado de la ltima operacin.
La siguiente figura corresponde al STATUS del microcontrolador PIC 16F877

C: Acarreo en el 8 bit
1 = acarreo en la suma y no en la resta.
0 = acarreo en la resta y no en la suma
DC: Acarreo en el 4 bit de menor peso.
Igual que C.
Z: Zero
1 = El resultado de alguna operacin es 0.
0 = El resultado es distinto de 0
/PD: Power Down.
1 = Recin encendido o tras CLRWDT.
0 = Tras ejecutar una instruccin SLEEP
/TO: Timer Out.
1 = Recin encendido, tras CLRWDT, o SLEEP.
0 = Salt el WDT
RP1:RP0: Pgina de memoria de programa.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

IRP: Direccionamiento indirecto para acceder a la paginacin de una memoria.


10.2.3 Registro OPTION:
Registro de configuracin mltiple, posee varios bits para configurar el
preescalador, la interrupcin externa, el timer y las caractersticas del puerto B.
PIC 16F877

RBPU: Conexin de cargas Pull-Up para la puerta B.


1 = Cargas Pull-Up desconectadas

INTDEG: Tipo de flanco para la interrupcin.


1 = RB0/INT sensible a flanco ascendente.
0 = RB0/INT sensible a flanco descendente.

T0CS: Fuente de reloj para el contador (registro TMR0).


1 = Pulsos por pata T0CLK (contador).
0 = Pulsos igual a reloj interno / 4 (temporizador).

T0SE: Tipo de flanco activo del T0CLK.

1 = Incremento TMR0 en flanco descendente.


0 = Incremento en flanco ascendente

PSA: Asignacin del divisor de frecuencia.


1 = Divisor asignado al WDT.
0 = Divisor asignado al TMR0.

PSA2:PSA0: Valor del divisor de frecuencia.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

10.2.4 Registro INTCON:


Registro de Interrupciones, es el encargado del control de las interrupciones y
contiene estos bits:

Bit 7 GIE: Activador general de Interrupciones.


1 = Interrupciones activadas.
0 = Interrupciones desactivadas.
Bit 6 PEIE: Habilitacin de interrupcin por escritura de la EEPROM
Activacin de la interrupcin de perifricos (comparador)
1 = Activada.
0 = Desactivada.
Bit 5 TMR0IE: Activacin de la interrupcin del TMR0.
1 = Activada.
0 = Desactivada.
Bit 4 INTE: Activacin de la interrupcin externa.
1 = Activada.
0 = Desactivada.
Bit 3 RBIE: Activacin de la interrupcin del puerto B.
1 = Activada.
0 = Desactivada.
Bit 2 T0IF: Indicador de TMR0 se ha desbordado.
1 = TMR0 desbordado. Borrar por software.
0 = No se ha desbordado.
Bit 1 INTF: Bandera de Interrupcin INT, se pone en 1 cuando la interrupcin
INT (RB0) ocurre; debe ser puesta en 0 por el programa.
Bit 0 RBIF: Bandera de Interrupcin por el cambio en el puerto B, se pone en 1
cuando una de las entradas RB<7:4> cambia, debe ser puesta en 0 por
el programa.
Los dems registros que contiene el PIC 16F877, que es el microcontrolador en
el que se centra este manual, sern estudiados en el caso que los necesite.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

11. INSTRUCCIONES
11.1 Caractersticas generales
Habiendo escogido los diseadores de PIC la filosofa RISC, su juego de
instrucciones es reducido (33 instrucciones en la gama baja), siendo stas,
adems, sencillas y rpidas, puesto que casi todas se ejecutan en un nico
ciclo de mquina (equivalente a 4 del reloj principal). Sus operandos son de
gran flexibilidad, pudiendo actuar cualquier objeto como fuente y como destino.
Posee tres tipos bien diferenciados de direccionamiento, estos son:
1 Inmediato: El valor del dato est incluido en el propio cdigo OP, junto a la
instruccin.
2 Directo: La direccin del dato est incluido en el propio cdigo OP, junto a la
instruccin.
3 Indirecto: La direccin de la memoria de datos que guarda el operando est
contenida en un registro.
Nos centraremos en la gama media, que tiene 35 instrucciones. La mayora
son idnticas a las de la gama baja.

11.2 Instrucciones de la gama media


ADDLW

Suma un literal

Sintaxis: ADDLW B
Operandos: 0 B 255
Operacin: (W) + (B) (W)
Flags afectados: C, DC, Z
Cdigo OP: 11 111x kkkk kkkk

ADDWF

W+F

Sintaxis: ADDWF A, B
Operacin:(W) + (A) (dest)
Flags afectados: C, DC, Z
Cdigo OP: 00 0111 dfff ffff

Descripcin: Suma el contenido


del registro W y B, guardando el
resultado en W.
Ejemplo:
ADDLW 0x05
Antes: W = 0x02
Despus: W = 0x07

Descripcin:
Suma
el
contenido del registro W y el
registro A. Si B es 0, el
resultado se almacena en W,
si d es 1 se almacena en A.
Ejemplo: ADDWF REG, 0
Antes: W=0x17, REG = 0xC2
Despus: W = 0xD9,
REG = 0xC2

ANDWF

BCF

W AND F

Borra un bit

ANDLW

W AND literal

Sintaxis: [label] ANDLW k


Operandos: 0 k 255
Operacin: : (W) AND (k) (W)
Flags afectados: Z
Cdigo OP: 11 1001 kkkk kkkk
Descripcin: Realiza la operacin
lgica AND entre el contenido del
registro W y k, guardando el
resultado en W.
Ejemplo:

ADDLW 0xC2

Antes: W = 0x17
Despus: W = 0xD9

BSF

Activa un bit

Sintaxis:
ANDWF f,d
Operandos: d [0,1], 0 f 127
Operacin:(W) AND (f) (dest)
Flags afectados: Z
Cdigo OP: 00 0101 dfff ffff

Sintaxis:
BCF f,b
Operandos: 0 f 127, 0 b 7
Operacin: : 0 (f<b>)
Flags afectados: Ninguno
Cdigo OP: 01 00bb bfff ffff

Sintaxis:
BSF f,b
Operandos: 0 f 127, 0 b 7
Operacin: 1 (f<b>)
Flags afectados: Ninguno
Cdigo OP: 01 01bb bfff ffff

Descripcin:
Realiza
la
operacin lgica AND entre los
registros W y f. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.
Ejemplo:
ANDWF REG,0
Antes: W = 0x17., REG = 0xC2
Despus: W = 0x17,
REG = 0x02

Descripcin: Borra el bit b del


registro f

Descripcin: Activa el bit b del


registro f

Ejemplo:

BCF REG,7

Antes: REG = 0xC7


Despus: REG = 0x47

Centro de Diseo e Innovacin Tecnolgica Industrial

Ejemplo:

BSF REG,7

Antes: REG = 0x0A


Despus: REG = 0x8A

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

BTFSC Test de bit y salto

BTFSS Test de bit y salto

CALL Salto a subrutina

Sintaxis: BTFSC f,d


Operandos: d [0,1], 0 f 127
Operacin: Salto si (f<b>) = 0
Flags afectados: Ninguno
Cdigo OP:
01 10bb bfff ffff

Sintaxis: BTFSS f,d


Operandos: d [0,1], 0 f 127
Operacin: Salto si (f<b>) = 1
Flags afectados: Ninguno
Cdigo OP:
01 11bb bfff ffff

Sintaxis: CALL k
Operandos: 0 k 2047
Operacin: PC Pila; k PC
Flags afectados: Ninguno
Cdigo OP: 10 0kkk kkkk kkkk

Descripcin: Si el bit b del


registro f es 0, se salta una
instruccin y se contina con la
ejecucin. En caso de salto,
ocupar dos ciclos de reloj.

Descripcin: Si el bit b del


registro f es 1, se salta una
instruccin y se contina con la
ejecucin. En caso de salto,
ocupar dos ciclos de reloj.

Descripcin:
Salto
a
una
subrutina. La parte baja de k se
carga en PCL, y la alta en
PCLATCH. Ocupa 2 ciclos de
reloj.

BTFSC REG,6
GOTO NO_ES_0
SI_ES_0 Instruccin
NO_ES_0 Instruccin

BTFSS REG,6
GOTO NO_ES_0
SI_ES_0 Instruccin
NO_ES_0 Instruccin

Ejemplo:

Ejemplo:

Ejemplo: ORIGEN CALL


DESTINO
Antes: PC = ORIGEN
Despus: PC = DESTINO

CLRF Borra un registro

CLRW Borra el registro W

CLRWDT

Sintaxis: CLRF f
Operandos: 0 f 127
Operacin: 0x00 (f), 1 Z
Flags afectados: Z
Cdigo OP: 00 0001 1fff ffff

Sintaxis: CLRW
Operandos: Ninguno
Operacin: 0x00 W, 1 Z
Flags afectados: Z
Cdigo OP: 00 0001 0xxx xxxx

Descripcin: El registro f se
carga con 0x00. El flag Z se
activa.

Descripcin: El registro de
trabajo W se carga con 0x00. El
flag Z se activa.

Ejemplo:

CLRF REG

Antes: REG = 0x5A


Despus: REG = 0x00, Z = 1

Ejemplo:

CLRW

Antes: W = 0x5A
Despus: W = 0x00, Z = 1

Borra el WDT

Sintaxis:
CLRWDT
Operandos: Ninguno
Operacin: 0x00 WDT,
1 /TO
1 /PD
Flags afectados: /TO, /PD
Cdigo OP:
00 0000 0110
0100
Descripcin: Esta instruccin
borra tanto el WDT como su
preescaler. Los bits /TO y /PD del
registro de estado se ponen a 1.
Ejemplo: CLRWDT
Despus: Contador WDT = 0,
Preescales WDT = 0,
/TO = 1, /PD = 1

COMF Complemento de f

DECF Decremento de f

DECFSZ Decremento y
salto

Sintaxis: COMF f,d


Operandos: d [0,1], 0 f 127
Operacin: (/ f), 1 (dest)
Flags afectados: Z
Cdigo OP: 00 1001 dfff ffff

Sintaxis: DECF f,d


Operandos: d [0,1], 0 f 127
Operacin: (f) 1 (dest)
Flags afectados: Z
Cdigo OP: 00 0011 dfff ffff

Descripcin: El registro f es
complementado. El flag Z se
activa si el resultado es 0. Si d es
0, el resultado se almacena en W,
si d es 1 se almacena en f.
Ejemplo:
COMF REG, 0
Antes: REG = 0x13
Despus: REG = 0x13,
W = 0XEC

Descripcin: Decrementa en 1 el
contenido de f. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.

Sintaxis: DECFSZ f,d


Operandos: d [0,1], 0 f 127
Operacin:(f) -1 d; Salto si R=0
Flags afectados: Ninguno
Cdigo OP:
00 1011 dfff ffff
Descripcin: Decrementa el
contenido del registro f. Si d es 0,
el resultado se almacena en W, si
d es 1 se almacena en f. Si la
resta es 0 salta la siguiente
instruccin, en cuyo caso costara
2 ciclos.
Ejemplo:
DECFSC REG,0
GOTO NO_ES_0
SI_ES_0 Instruccin
NO_ES_0 Salta instruccin anterior

Ejemplo:

DECF CONT,1

Antes: CONT = 0x01, Z = 0


Despus: CONT = 0x00, Z = 1

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

IORLW

W OR literal

Apoyo Tcnico 2009

IORWF

W AND F

Sintaxis: IORLW k
Operandos: 0 k 255
Operacin: (W) OR (k) (W)
Flags afectados: Z
Cdigo OP: 11 1000 kkkk kkkk

Sintaxis: IORWF f,d


Operandos: d [0,1], 0 f 127
Operacin: (W) OR (f) (dest)
Flags afectados: Z
Cdigo OP: 00 0100 dfff ffff

Descripcin: Se realiza la
operacin lgica OR entre el
contenido del registro W y k,
guardando el resultado en W.

Descripcin:
Realiza
la
operacin lgica OR entre los
registros W y f. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.

Ejemplo:

IORLW 0x35

Antes: W = 0x9A
Despus: W = 0xBF

MOVF

Mover a f

Sintaxis: MOVF f, d
Operacin:
(f) (dest)
Flags afectados: Z
Cdigo OP:
00 1000 dfff ffff
Descripcin: El contenido del
registro f se mueve al destino d.
Si d es 0, el resultado se
almacena en W, si d es 1 se
almacena en f. Permite verificar el
registro, puesto que afecta a Z.
Ejemplo: MOVF REG,0
Despus: W = REG

Sintaxis: MOVLW f
Operandos: 0 f 255
Operacin:
(k) (W)
Flags afectados: Ninguno
Cdigo OP: 11 00xx kkkk kkkk
Descripcin: El literal k pasa al
registro W.
Ejemplo: MOVLW 0x5A
Despus:
W = 0x5A

Ejemplo: IORWF REG,0


Antes: W = 0x91, REG = 0x13
Despus: W = 0x93, REG = 0x13

MOVWF

Mover a f

NOP

No operar

Sintaxis: MOVWF f
Operandos: 0 f 127
Operacin:
W (f)
Flags afectados: Ninguno
Cdigo OP:
00 0000 1fff ffff

Sintaxis:
NOP
Operandos: Ninguno
Operacin: No operar
Flags afectados: Ninguno
Cdigo OP: 00 0000 0xx0 0000

Descripcin: El contenido del


registro W pasa el registro f.

Descripcin:
No
realiza
operacin alguna. En realidad
consume un ciclo de instruccin
sin hacer nada.
Ejemplo:
CLRWDT

Ejemplo:

MOVWF REG,0

Antes: REG = 0xFF, W = 0x4F


Despus: REG = 0x4F, W = 0x4F

GOTO Salto incondicional

INCF

Sintaxis: GOTO k
Operandos: 0 k 2047
Operacin: k PC <8:0>
Flags afectados: Ninguno
Cdigo OP: 10 1kkk kkkk kkkk

Sintaxis: INCF f,d


Operandos: d [0,1], 0 f 127
Operacin: (f ) + 1 (dest)
Flags afectados: Z
Cdigo OP: 00 1010 dfff ffff

Descripcin: Se trata de un salto


incondicional. La parte baja de k
se carga en PCL, y la alta en
PCLATCH. Ocupa 2 ciclos de
reloj.
Ejemplo: ORIGEN GOTO DESTINO

Descripcin: Incrementa en 1 el
contenido de f. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.
Ejemplo:
INCF CONT,1

Antes: PC = ORIGEN
Despus: PC = DESTINO

MOVLW Cargar literal en W

Decremento de f

Antes: CONT = 0xFF, Z = 0


Despus: CONT = 0x00, Z = 1

Centro de Diseo e Innovacin Tecnolgica Industrial

Despus: Contador WDT = 0,


Preescales WDT = 0,
/TO = 1, /PD = 1

INCFSZ Incremento y salto


Sintaxis: INCFSZ f,d
Operandos: d [0,1], 0 f 127
Operacin:(f) -1 d; Salto si R=0
Flags afectados: Ninguno
Cdigo OP:
00 1111 dfff ffff
Descripcin:
Incrementa
el
contenido del registro f. Si d es 0,
el resultado se almacena en W, si
d es 1 se almacena en f. Si la
resta es 0 salta la siguiente
instruccin, en cuyo caso costara
2 ciclos.
Ejemplo:
INCFSC REG,0
GOTO NO_ES_0
SI_ES_0 Instruccin
NO_ES_0
Salta instruccin
anterior

SENA Dosquebradas

Microcontroladores PIC

RLF

Rota f a la izquierda

Sintaxis: RLF f,d


Operandos: d [0,1], 0 f 127
Operacin:
Rotacin
a
la
izquierda
Flags afectados: C
Cdigo OP:
00 1101 dfff ffff
Descripcin: El contenido de f se
rota a la izquierda. El bit de
menos peso de f pasa al carry
(C), y el carry se coloca en el de
mayor peso. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.

Apoyo Tcnico 2009

RRF

Rota f a la derecha

SLEEP Modo bajo consumo

Sintaxis: RRF f,d


Operandos: d [0,1], 0 f 127
Operacin: Rotacin a la derecha
Flags afectados: C
Cdigo OP:
00 1100 dfff ffff
Descripcin: El contenido de f se
rota a la derecha. El bit de menos
peso de f pasa al carry (C), y el
carry se coloca en el de mayor
peso. Si d es 0, el resultado se
almacena en W, si d es 1 se
almacena en f.

Sintaxis:
SLEEP
Operandos: Ninguno
Operacin: 0x00 WDT,
1 / TO 0 WDT
Preescaler, 0 / PD
Flags afectados: / PD, / TO
Cdigo OP: 00 0000 0110 0011
Descripcin: El bit de energa se
pone a 0, y a 1 el de descanso. El
WDT y su preescaler se borran. El
micro para el oscilador, yendo al
modo durmiente.

Ejemplo: RRF REG,0


Antes: REG = 1110 0110, C = 1
Despus: REG = 1110 0110,
W = 01110 0011, C = 0

Ejemplo: SLEEP
Preescales WDT = 0,
/TO = 1, /PD = 1

SUBLW Resta Literal - W

SUBWF

SWAPF

Sintaxis: SUBLW k
Operandos: 0 k 255
Operacin: (k) - (W) (W)
Flags afectados: Z, C, DC
Cdigo OP: 11 110x kkkk kkkk
Descripcin: Mediante el mtodo
del complemento a dos el
contenido de W es restado al
literal. El resultado se almacena
en W.
Ejemplos: SUBLW 0x02
Antes: W=1, C=? Despus: W=1,
C=1
Antes: W=2,C=?. Despus: W=0,
C=1
Antes: W=3,C=?.Despus: W=FF,
C=0
(El resultado es negativo)

Sintaxis: SUBWF f,d


Operandos: d [0,1], 0 f 127
Operacin:
(f) (W) (dest)
Flags afectados: C, DC, Z
Cdigo OP:
00 0010 dfff ffff
Descripcin: Mediante el mtodo
del complemento a dos el
contenido de W es restado al de f.
Si d es 0, el resultado se
almacena en W, si d es 1 se
almacena en f.
Ejemplos: SUBWF REG,1
Antes: REG=0x03, W=0x02, C=?
Despus: REG=0x01,W=0x4F,C=1
Antes: REG=0x02, W =0x02,C= ?
Desp: REG=0x00,W=0x02,C= 1
Antes: REG= 0x01,W= 0x02,C= ?
Desp: REG=0xFF,W=0x02, C=0
(Resultado negativo)

Sintaxis:
SWAPF f,d
Operandos: d [0,1], 0 f 127
Operacin: (f <3: 0>) (f <7:4>)
Flags afectados: Ninguno
Cdigo OP: 00 1110 dfff ffff
Descripcin: Los 4 bits de ms
peso y los 4 de menos son
intercambiados. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.

RETFIE Retorno de interrup.

RETLW Retorno, carga W

RETURN Retorno de rutina

Sintaxis: RETFIE
Operandos: Ninguno
Operacin: 1 GIE; TOSPC
Flags afectados: Ninguno
Cdigo OP: 00 0000 0000 1001
Descripcin: El PC se carga con
el contenido de la cima de la pila
(TOS): direccin de retorno.
Consume
2
ciclos.
Las
interrupciones vuelven a ser
habilitadas.
Ejemplo: RETFIE
Despus: PC= direccin de
retorno
GIE = 1

Sintaxis: RETLW k
Operandos: 0 k 255
Operacin: (k) (W); TOSPC
Flags afectados: Ninguno
Cdigo OP: 11 01xx kkkk kkkk
Descripcin: El registro W se
carga con la constante k. El PC
se carga con el contenido de la
cima de la pila (TOS): direccin
de retorno. Consume 2 ciclos.
Ejemplo:
RETLW 0x37

Sintaxis: RETURN
Operandos: Ninguno
Operacin: TOS PC
Flags afectados: Ninguno
Cdigo OP: 00 0000 0000 1000

Ejemplo:

RRF REG,0

Antes: REG = 1110 0110, C = 0


Despus: REG = 1110 0110,
W = 1100 1100, C = 1

Resta f W

Despus: PC = direccin de
retorno
W = 0x37

Centro de Diseo e Innovacin Tecnolgica Industrial

Ejemplo:

Intercambio de f

SWAPF REG,0

Antes: REG = 0xA5


Despus: REG = 0xA5,
W = 0x5A

Descripcin: El PC se carga con


el contenido de la cima de la pila
(TOS): direccin de retorno.
Consume 2 ciclos.
Ejemplo: RETURN
Despus: PC = direccin de
retorno

SENA Dosquebradas

Microcontroladores PIC

XORLW

W OR literal

Apoyo Tcnico 2009

XORWF

W AND F

Sintaxis: XORLW k
Operandos: 0 k 255
Operacin: (W) XOR (k) (W)
Flags afectados: Z
Cdigo OP: 11 1010 kkkk kkkk

Sintaxis: XORWF f,d


Operandos: d [0,1], 0 f 127
Operacin: (W) XOR (f) (dest)
Flags afectados: Z
Cdigo OP: 00 0110 dfff ffff

Descripcin: Se realiza la
operacin lgica XOR entre el
contenido del registro W y k,
guardando el resultado en W.

Descripcin:
Realiza
la
operacin lgica XOR entre los
registros W y f. Si d es 0, el
resultado se almacena en W, si d
es 1 se almacena en f.
Ejemplo:
XORWF REG,0
Antes: W = 0xB5, REG = 0xAF
Despus: W = 0xB5,
REG = 0x1A

Ejemplo: XORLW 0xAF


Antes: W = 0xB5
Despus: W = 0x1A

12. Programacin de los Microcontroladores PIC


12.1 Conceptos Bsicos:
Lenguaje de Maquina: El nico lenguaje que entienden los
microcontroladores, formado por ceros y unos del sistema binario.
Lenguaje ensamblador: Expresa las instrucciones de una forma ms natural
al hombre a la vez que muy cercana al Microcontrolador, ya que cada una de
sus instrucciones se corresponde con otra en cdigo mquina.
Nemnicos: grupos de caracteres alfanumricos que simbolizan las rdenes
o tareas a realizar con los que trabaja el lenguaje ensamblador
Programa ensamblador: es una aplicacin Software que se encarga de la
traduccin de los nemnicos a cdigo mquina entendible por el
microcontrolador.
Cdigo fuente: es el programa escrito en lenguaje ensamblador al que se le
asigna una extensin (*.asm).
Cdigo mquina, fichero proporcionado por el programa ensamblador al que
se le asigna una extensin (*.hex.)
12.2 Introduccin a la programacin
Un diagrama de flujo de datos es una descripcin grfica de un procedimiento
para la resolucin de un problema. Son frecuentemente usados para describir
algoritmos y programas de computador. Los diagramas de flujo de datos estn
conformados por figuras conectadas con flechas. Para ejecutar un proceso
descrito por un diagrama de flujo de datos se comienza por el INICIO y se
siguen las flechas de figura a figura, ejecutndose las acciones indicadas por
cada figura; el tipo de figura indica el tipo de paso que representa.
Los diagramas de flujo son frecuentemente usados debido a que pueden
suprimir detalles innecesarios y tener un significado preciso, si son usados
correctamente.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Para el lenguaje ensamblador utilizamos el software de MPLAB, est es un


software gratuito que se encuentra disponible en la pgina de microchip.
Para pasar el programa del PC al microcontrolador cada grabador tiene su
software especfico, y es posible encontrar mltiples circuitos y programas en
Internet. Microchip vende sus propios equipos, as como micros programados
de fbrica.
12.3 El cdigo fuente
Est compuesto por una sucesin de lneas de programa.
Cada lnea de programa puede estar compuesta de hasta cuatro campos o
Columnas separadas por uno o ms espacios o tabulaciones entre s.
Campo de etiquetas: Expresiones alfanumricas escogidas por el
Usuario para identificar una determinada instruccin del programa.
Todas las etiquetas tienen asignado el valor de la posicin de memoria
En la que se encuentra la instruccin a la que acompaan.
Campo del cdigo de operacin: Corresponde al nemnico.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Campo de operandos y datos: Contiene los operandos que precisa el


Nemnico utilizado. Segn la instruccin, puede haber dos, uno o ningn
Operando.
Campo de comentarios: Dentro de una lnea, todo lo que se encuentre
a continuacin de un punto y coma (;) ser ignorado y considerado como
Comentario.
Directivas
Controlan el proceso de ensamblado del programa, pero no son parte del
Mismo (tambin se conocen como pseudo instrucciones).
END
Es la nica directiva obligatoria. Indica al ensamblador dnde debe
Detener el proceso. Debe colocarse en la ltima lnea del programa.
<Etiqueta> EQU <expresin>
El valor <expresin> es asignado a <etiqueta>. Estas directivas se
Suelen colocar al principio del programa y habitualmente se usan
Para definir constantes y direcciones de memoria.
[<Etiqueta>] ORG <expresin>
Las instrucciones del cdigo fuente que siguen a esta directiva se
Ensamblan a partir de la posicin indicada por <expresin>.
LIST P=16F877
Indica el tipo de microcontrolador utilizado.
INCLUDE <p16F877.inc> o INCLUDE p16F877.inc
Incluye en el programa un fichero donde se definen las etiquetas
con las que se nombra a los diferentes registros y sus bits. Este
fichero se encuentra en el directorio principal del programa
ensamblador. Puede usarse esta directiva para incluir cualquier
Otro fichero.

13. MPLAB

El MPLAB es un entorno de desarrollo integrado que permite escribir y codificar


los microcontroladores PIC de Microchip para ejecutarlos.
Por medio de este software podremos programar microcontroladores en
lenguaje C y/o ensamblador. En este manual nos centraremos en la
programacin en ASM, pero tambin explicaremos el lenguaje C, con un
diferente compilador.
13.1 Instalar MPLAB
MPLAB es un software gratuito, se puede descargar directamente desde la
pgina en Internet de Microchip.
Trabajaremos con la versin 8.30 de MPLAB, pero usted puede instalar la
versin de MPLAB que tenga en el momento, ya que los cambios fsicamente
no son muy notables entre versiones.
Tambin con este programa podemos adems de ensamblar el cdigo,
simularlo.
Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

13.2 Conociendo el entorno del MPLAB

13.3 Creando un nuevo proyecto en MPLAB


1- En la barra de herramientas hay un icono que nos permitir crear el nuevo
proyecto. El New Project .
2- Al dar click sobre est, nos aparece un cuadro al que debemos introducir el
nombre del proyecto y la ubicacin donde quedara guardado.
3- Luego de aceptar nos abre el proyecto que recin hemos creado, en donde
Debemos seleccionar el icono New File , en donde haremos nuestro
programa.
4- Ahora seleccionaremos el modelo del PIC que vamos a utilizar. En la barra
de control hay una opcin llamada Configure, al dar click sobre ella
buscaremos en la lista otro enlace llamado Select device, al seleccionarlo
nos abrir una ventana en donde aparecen en una lista todos los PIC que
permite programar el MPLAB.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

5- Antes de comenzar a programar debemos hacer algunas configuraciones al


microcontrolador. Entrando nuevamente por Configure Configuracin Bits,
haremos las configuraciones que el micro requiera, por ejemplo el tipo de
cristal oscilador que usar.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

13.4 Primer programa en MPLAB

El siguiente ejemplo ser nuestro primer programa en ASM hecho en MPLAB.

Cada pulsador manejara un LED, cuando se accione un pulsador, un LED


indicara cual fue pulsado, ya que los diodos son de colores, por lo tanto si se
pulsa el botn conectado en el BIT 0 del puerto B encender el LED AZUL. En
este ejemplo aprenderemos a usar los puertos de entrada y salida.
Programa en ASM:
Abrimos nuevo proyecto en MPLAB, definimos nombre y la ubicacin en la cual
ser guardado, abrimos un nuevo documento y seleccionas el PIC 16F877,
como dispositivo a usar, y la configuracin de los BITS.
En la hoja del documento nuevo empezamos a crear nuestro programa.
Cuando tenemos el programa listo, debemos guardar este fichero y para esto,
seleccionamos en la barra de herramientas: File Save As luego
examinamos la ubicacin donde vamos a guardar y por ultimo le asignamos un
nombre y como extensin le ponemos ASM; por ejemplo si el nombre del
archivo es display, lo guardaremos como display.asm, si no le ponemos la
extensin, el programa nos generara error al compilar.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Al compilar el programa sin error, nos generara un archivo .hex, este fichero es
el que cargamos al microcontrolador a programar o simular.

13.5 Programacin de un semforo


El siguiente programa tendr como objetivo controlar un semforo y crear
rutinas de temporizacin en ASM.
Como ejercicio propuesto para avanzar con la programacin de micros se
puede realizar el programa para controlar dos semforos en un cruce vial.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

En la programacin se usan instrucciones que no se han usado, como


DECFSZ, que indica decremente el archivo hasta que la bandera Z se ponga
en 1.
CLRF, indica borrar el archivo, clear file, ejemplo: CLRF PORTB, es igual que
si ponemos MOVLW 0, MOVWF PORTB. El puerto igual queda con 0 en sus
bits.
CALL, es la instruccin de llamado, se utiliza al querer llamar una funcin o
subrutina.
EQU, igual, se utiliza para renombrar los registros, por ejemplo:
EJEMPLO EQU 20h en el programa va a ser lo mismo mandar un dato a 20h
que a EJEMPLO.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Centro de Diseo e Innovacin Tecnolgica Industrial

Apoyo Tcnico 2009

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

14. Funcionamiento de una Matriz de Leds

Comenzamos con la segunda parte del manual: Cmo funciona una matriz de
Led?; en este apartado explicaremos el funcionamiento, Cmo multiplexarla?
Y su programacin.
Una matriz de Leds, pantalla de Leds, visualizador electrnico o publik, se
utiliza para pasar mensajes publicitarios, demarcar zonas, mostrar la hora y la
fecha, en general para pasar un mensaje informativo.
Para la construccin de un publik, se debe tener conocimientos de electrnica y
de programacin de microcontroladores, en esta guia se aprender el
funcionamiento de una matriz de leds, para que con este conocimiento se
puedan construir una pantalla con muchas de estas matrices.
Una matriz de leds consiste bsicamente en una matriz de pixeles similar a los
de una pantalla de televisor o de un computador, por lo general es de un solo
color (La mayoria de veces rojo), pero tambin hay bicolor o multicolores, estos
ultimos utilizan diodos RGB, que puede mostrar cualquier color.
Nuestra matriz ser de 7 x 5, 5 columnas por 7 filas. 30 Leds conectados
internamente.
En este caso podemos conectar los 13 pines al microcontrolador PIC16F877,
pero si trabajamos con 3 o ms matrices de estas, no podramos conectar
todos los pines de las matrices al microcontrolador, ya que 3 matrices serian 39
pines, y este micro no podra manejar esta cantidad de pines; Para este caso
se multiplexan las matrices.
Como dijimos antes, la pantalla est formada por una serie de filas y columnas.
La interseccin entre ambas contiene un LED. Para que este encienda, tiene
que recibir simultneamente un 0 en la fila, y un 1 en la columna. Cuando se
dan estas condiciones, la electrnica de la placa se encarga del encendido del
LED en cuestin.
Solo mostraremos los nmeros del 0 al 9 en esta matriz.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Tenemos conectado en el puerto B las filas y en el puerto C las columnas,


entonces para programarla utilizamos el siguiente algoritmo:
1- Limpiamos puertos
2- Mandamos el dato a el puerto B
3- Activamos la columna en la que se va a mostrar el valor
4- Temporizamos
5- Limpiamos el puerto B
6- Activamos la columna siguiente
7- Mandamos dato a mostrar.
8- Temporizamos
Para mostrar el 0:
El valor de la primera columna, de izquierda a derecha, seria
en decimal 65 en el puerto B.
El valor de la segunda columna: 62
El tiempo debe ser menor de 20 ms. para que se no se note el
parpadeo entre columnas.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

1 columna: 111
2 columna: 95
3 columna: 0
4 columna: 255
5 columna: 255

Nmeros del 0 al 9 en una matriz 7x5

La programacin para el nmero 1 seria esta:

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Centro de Diseo e Innovacin Tecnolgica Industrial

Apoyo Tcnico 2009

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

Hay que tener en cuenta que esta programacin se puede simplificar, por
ejemplo podemos usar una tabla, en donde se van a guardar los valores de las
letras.
Si vamos a utilizar ms de dos matrices entonces debemos multiplexar.
El multiplexado consiste en utilizar unos pocos pines del microcontrolador para
manejar una serie de circuitos integrados que son los que se encargan de
encender los leds. Hay muchas maneras y circuitos integrados para hacer
esto.

Este circuito es un ejemplo de cmo se conectaran 4 matrices con un 74LS164


y un PIC16F628.
En la programacin pones los datos para que el reloj del 74LS164 comience a
encender de derecha a izquierda todas las columnas de los LED.

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

Microcontroladores PIC

Apoyo Tcnico 2009

En la versin 2 de este manual:


1) Se explicar el hardware y se mostrar la programacin en ASM para un
letrero con matrices de LED.

2) Comunicacin I2C entre un PIC 16f877 y una memoria EEPROM


externa 24C128.
3) Construccin de un visualizador de LED fijos.

Bibliografa:
www.wikipedia.org
www.ucontrol.com.ar/
www.unicrom.com/
www.neoteo.com/
Curso Avanzado de Microcontroladores PIC (Cekit)

Centro de Diseo e Innovacin Tecnolgica Industrial

SENA Dosquebradas

También podría gustarte