libro ee digitales 2 borrador 1

45
Sistemas Digitales II Microcontroladores PIC uC PIC CCS Compiler Proteus Ing. Emilio J. Escalante S

Upload: emilio-escalante

Post on 23-Mar-2016

218 views

Category:

Documents


2 download

DESCRIPTION

Microcontroladores PIC

TRANSCRIPT

Page 1: Libro ee digitales 2 borrador 1

Sistemas Digitales I I

Microcontroladores

PIC

uC PIC CCS Compi ler

Proteus

I n g . E m i l i o J . E s c a l a n t e S

Page 2: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

1

INTRODUCCIÓN.

La situación actual en el campo de los

microcontroladores se ha producido gracias al desarrollo

de la tecnología de fabricación de los circuitos

integrados. Este desarrollo ha permitido construir las

centenas de miles de transistores en un chip. Esto fue

una condición previa para la fabricación de un

microprocesador. Las primeras microcomputadoras se

fabricaron al añadirles periféricos externos, tales como

memoria, líneas de entrada/salida, temporizadores u

otros. El incremento posterior de la densidad de

integración permitió crear un circuito integrado que

contenía tanto al procesador como periféricos. Así es

cómo fue desarrollada la primera microcomputadora en un

solo chip, denominada más tarde microcontrolador.

Para entender con más facilidad las razones del éxito

tan grande de los microcontroladores, vamos a prestar

atención al siguiente ejemplo. Hace unos 10 años, diseñar

un dispositivo electrónico de control de un ascensor de

un edificio de varios pisos era muy difícil, incluso para

un equipo de expertos. ¿Ha pensado alguna vez en qué

requisitos debe cumplir un simple ascensor? ¿Cómo lidiar

con la situación cuando dos o más personas llaman al

ascensor al mismo tiempo? ¿Cuál llamada tiene la

prioridad? ¿Cómo solucionar las cuestiones de seguridad,

de pérdida de electricidad, de fallos, de uso indebido?

Lo que sucede después de resolver estos problemas básicos

es un proceso meticuloso de diseñar los dispositivos

adecuados utilizando un gran número de chips

Page 3: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

2

especializados. Este proceso puede tardar semanas o

meses, dependiendo de la complejidad del dispositivo.

Cuando haya terminado el proceso, llega la hora de

diseñar una placa de circuito impreso y de montar el

dispositivo. ¡Un dispositivo enorme! Es otro trabajo

difícil y tardado. Por último, cuando todo está terminado

y probado adecuadamente, pasamos al momento crucial y es

cuando uno se concentra, respira profundamente y enciende

la fuente de alimentación.

Esto suele ser el punto en el que la fiesta se

convierte en un verdadero trabajo puesto que los

dispositivos electrónicos casi nunca funcionan

apropiadamente desde el inicio. Prepárese para muchas

noches sin dormir, correcciones, mejoras… y no se olvide

de que todavía estamos hablando de cómo poner en marcha

un simple ascensor.

Cuando el dispositivo finalmente empiece a funcionar

perfectamente y todo el mundo esté satisfecho, y le

paguen por el trabajo que ha hecho, muchas compañías de

desarrollo estarán interesadas en su trabajo. Por

supuesto, si tiene suerte, cada día le traerá una oferta

de trabajo de un nuevo inversionista. Sin embargo, si lo

requieren para trabajar en el control de los elevadores

de un nuevo edificio que tiene cuatro pisos más de los

que ya maneja su sistema de control. ¿Sabe cómo proceder?

¿Cree acaso que se pueden controlar las demandas de sus

clientes? Suponiendo que se va a construir un dispositivo

universal, que se puede utilizar en los edificios de 4 a

40 pisos, una obra maestra de electrónica. Bueno, incluso

si se consigue construir esta joya electrónica, el

Page 4: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

3

inversionista esperará delante de la puerta pidiendo una

cámara en el ascensor o una música relajante en caso de

fallo de ascensor, u un ascensor con dos puertas.

De todos modos, la ley de Murphy es inexorable y sin

duda usted no podrá tomar ventaja a pesar de todos los

esfuerzos que ha hecho. Por desgracia, todo lo que se ha

dicho hasta ahora sucede en la realidad. Esto es lo que

“dedicarse a la ingeniería electrónica” realmente

significa. Es así como se hacían las cosas hasta la

aparición de los microcontroladores (dispositivos

pequeños, potentes y baratos).

El dispositivo electrónico capaz de controlar un

pequeño submarino, una grúa o un ascensor como el

anteriormente mencionado, ahora está incorporado en un

sólo chip. Los microcontroladores ofrecen una amplia gama

de aplicaciones y sólo algunas se exploran normalmente.

¿Cómo elegir un microcontrolador?

Bueno, si se es principiante, y se ha tomado la

decisión de trabajar con los microcontroladores,

¡Felicitaciones por la elección! No obstante, a primera

vista, no es fácil la elección del microcontrolador más

adecuado. ¡El problema no es el pequeño rango de

dispositivos a elegir, sino todo lo contrario! Antes de

empezar a diseñar un dispositivo basado en un

microcontrolador, se debe tomar en cuenta lo siguiente:

cuántas entradas/salidas son necesarias para su

funcionamiento, realizaría el dispositivo otras

Page 5: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

4

operaciones además de activar/desactivar un relé,

necesita algún modulo especializado tal como el de

comunicación en serie, convertidor A/D, modulación de

ancho de pulso, entre otros. Cuando se tiene una clara

imagen de lo que se quiere, el rango de selección se

reduce considerablemente, y queda pensar es en el precio.

Si se piensa en todas estas cosas por primera vez,

todo parecerá un poco confuso, por esa razón, se va paso

a paso. Antes que nada, se selecciona el fabricante, es

decir, la familia de microcontroladores que ofrece, luego

se aprende a trabajar con un modelo particular. Sólo es

necesario aprender lo que se necesite aprender, con ello

se es capaz de manejar cualquier modelo del mismo

fabricante.

Más o menos, todo se parece a montar en bicicleta:

después de varias caídas inevitables en el principio,

luego se tendrá la capacidad de mantener el equilibrio y

montar en cualquier otra bicicleta. ¡Por supuesto, nunca

se olvida tanto de montar en bicicleta, como de la

destreza de programación!

Ahora toca decidir qué se quiere que haga el

microcontrolador, cargar un programa en él con las

instrucciones apropiadas. Antes de encender el

dispositivo es recomendable verificar su funcionamiento

con ayuda de un simulador. Si todo funciona como es

debido, se incorpora el microcontrolador al sistema. Si

alguna vez se necesita cambiar, mejorar o actualizar el

programa, se puede hacer, ¿Hasta cuándo? Hasta quedar

satisfecho con el resultado.

Page 6: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

5

MICROCONTROLADORES

Historia e importancia de los microcontroladores

Hasta antes de la aparición de los microprocesadores

(1971), la mayor parte de las aplicaciones digitales en

electrónica se basaban en la llamada lógica cableada, es

decir, si existía un problema este era analizado y se

sintetizaba una función en base a la lógica de Boole que

era la solución al problema planteado.

Con la aparición de los microprocesadores, se varió el

esquema de diseño de tal forma que un problema era

descompuesto en una serie de tareas más simples, el

microprocesador ejecutaba una serie de pasos o

instrucciones para llevar a efecto cada una de las

tareas, en ocasiones no era necesario volver a armar un

circuito para solucionar otro problema sino que se

cambiaba las instrucciones (programa) para obtener otra

aplicación.

Desde luego el microprocesador es como el cerebro que

ejecuta operaciones de índole aritméticas y lógicas, por

tanto, no manejaba líneas externas (periféricos), más aún

tampoco tenía un lugar donde almacenar el programa y los

datos que necesitaba el programa para encontrar la

respuesta al problema. El microprocesador buscaba una

instrucción y la ejecutaba; al conjunto de circuitos

(hardware) que daban el soporte necesario al

microprocesador se le llamo sistema mínimo.

Page 7: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

6

Con el pasar de los años el sistema mínimo se

convirtió en un estándar, por otro lado, la escala de

integración mejoro y posibilito (1976) sintetizar en un

solo chip un sistema mínimo, al cual se le llamo SISTEMA

A que no era otra cosa que el primer microcontrolador.

Los principiantes en electrónica creen que un

microcontrolador es igual a un microprocesador. Esto no

es cierto. Difieren uno del otro en muchos sentidos. La

primera y la más importante diferencia es su

funcionalidad. Para utilizar al microprocesador en una

aplicación real, se debe de conectar con componentes

tales como memoria o componentes buses de transmisión de

datos. Aunque el microprocesador se considera una máquina

de computación poderosa, no está preparado para la

comunicación con los dispositivos periféricos que se le

conectan. Para que el microprocesador se comunique con

algún periférico, se deben utilizar los circuitos

especiales. Así era en el principio y esta práctica sigue

vigente en la actualidad.

Por otro lado, al microcontrolador se le diseña de tal

manera que tenga todas las componentes integradas en el

mismo chip. No necesita de otros componentes

especializados para su aplicación, porque todos los

circuitos necesarios, que de otra manera correspondan a

los periféricos, ya se encuentran incorporados. Así se

ahorra tiempo y espacio necesario para construir un

dispositivo.

En consecuencia definimos así a un microcontrolador;

como un procesador con su sistema mínimo en un chip

(incluye memoria para programa y datos, periféricos de

Page 8: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

7

entrada/salida, conversores AD y DA, módulos

especializados en la transmisión y recepción de datos).

Desde luego que hay diferencias sustanciales como la

arquitectura cerrada de un microcontrolador, en cambio en

un microprocesador es abierta, podemos sumar nuevos

dispositivos en hardware en función a las necesidades que

la aplicación demande.

Figura 1. Estructura interna de un microcontrolador.

Otra diferencia entre los microcontroladores y los

microprocesadores es que los primeros cuentan con un set

de instrucciones reducido en cambio la mayoría de los

microprocesadores tienen mayor cantidad de instrucciones.

Por otro lado la mayoría de los microcontroladores posee

Page 9: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

8

una arquitectura Harvard frente a una arquitectura Von

Neumann de los microprocesadores.

Los microcontroladores se especializan en

aplicaciones industriales para resolver problemas

planteados específicos, por ejemplo: los encontramos en

los teclados o mouse de las computadoras, son el cerebro

de electrodomésticos, también los encontramos en la

industria automotriz, en el procesamiento de imagen y

video. Cabe señalar que el aumento progresivo de la

escala de integración y las técnicas de fabricación hacen

que cada vez aparezcan microcontroladores más poderosos y

rápidos.

El mundo que nos rodea está basado en sistemas

digitales desarrollados entorno a microcontroladores, por

tanto, un microcontrolador no es más que un dispositivo

electrónico encargado de “controlar” un proceso

especifico, es por ello que surge la necesidad de

analizar y entender dichos elementos.

La presente obra está desarrollada con la finalidad

de dar las nociones básicas a la programación de

microcontroladores PIC utilizando un compilador C,

concretamente el compilador CCS Compiler. A lo largo del

desarrollo de cada uno de los temas se ira analizando los

rudimentos del lenguaje y el repertorio de instrucciones

incluidas en él. Este puede ser un buen punto de partida

para aquellos programadores que están empleando algún

otro dialecto (Basic, Ensamblador, PicC18).

Lo habitual, hasta ahora, es que los usuarios que se

inician en este apasionante mundo de la programación de

Microcontroladores, sin tomar en cuenta la marca que sea,

Page 10: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

9

primero lo hacían utilizando el lenguaje ensamblador,

especifico no solo para cada marca de microcontrolador

sino para cada modelo, ya que hay que conocer

perfectamente los recursos de cada Microcontrolador

(Número de puertos de Entrada/Salida, Relojes internos,

entre otros), al principio de los tiempos de estos

dispositivos esto era obligatorio, ya que los recursos de

memoria y velocidad de procesamiento no eran muy grandes

y había que optimizar el código al máximo, esto implicaba

la utilización de un lenguaje de programación de bajo

nivel, que bien utilizado explota los recursos de estos

dispositivos sin desperdiciar memoria y velocidad de

procesamiento, pero al igual que ha ocurrido con los

computadores personales, las prestaciones de estos

dispositivos ha ido creciendo exponencialmente con el

tiempo, siendo ya perfectamente factible el utilizar un

lenguaje de alto nivel para programar estos dispositivos

y aprovechar las ventajas de portabilidad que ofrecen

este tipo de lenguajes, de esta manera por ejemplo,

podemos hacer un programa para un PIC en concreto y

utilizarlo en otro de mayores prestaciones sin modificar

apenas nada del código fuente.

Cualquiera que comience en este mundo de la

programación pensara que para aprender a programar en

lenguaje C vale cualquier compilador de uso general y lo

que realmente interesa es saber las instrucciones de C

que se tienen que utilizar para configurar, por ejemplo,

un puerto como entrada o salida, o que código tengo que

emplear para utilizar los convertidores A/D, que

incorporan ya casi todos los microcontroladores, pero hay

Page 11: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

10

que tener en cuenta que los compiladores para

microcontroladores son específicos para estos

dispositivos embebidos y no cumplen con el Estándar ANSI

C al ciento por ciento, por lo que cuando se comience a

programar, lo más seguro es que se observe que una

función del C estándar no funciona perfectamente, dando

un error al compilar.

Page 12: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

11

MICROCONTROLADORES PIC

Los PIC son una familia de microcontroladores tipo

RISC (del inglés Reduced Instruction Set Computer, en

español Computador con Conjunto de Instrucciones

Reducidas) fabricados por Microchip Technology Inc. y

derivados del PIC1650, originalmente desarrollado por la

división de microelectrónica de General Instrument. El

nombre actual no es un acrónimo. En realidad, el nombre

completo es PICmicro, aunque generalmente se utiliza como

Peripheral Interface Controller (controlador de interfaz

periférico). El PIC original se diseñó para ser usado con

la nueva CPU (Central Processing Unit, Unidad Central de

Procesamiento) de 16 bits CP16000. Siendo en general una

buena CPU, ésta tenía malas prestaciones de entrada y

salida, y el PIC de 8 bits se desarrolló en 1975 para

mejorar el rendimiento del sistema quitando peso de

Entradas/Salidas (E/S) a la CPU. El PIC utilizaba

microcódigo simple, almacenado en ROM para realizar estas

tareas; y aunque el término no se usaba por aquel

entonces, se trata de un diseño RISC que ejecuta una

instrucción cada 4 ciclos del oscilador.

Figura 2. General Instrument PIC1650.

Page 13: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

12

En 1985 la división de microelectrónica de General

Instrument se separa como compañía independiente que es

incorporada como filial (el 14 de diciembre de 1987

cambia el nombre a Microchip Technology y en 1989 es

adquirida por un grupo de inversores) y el nuevo

propietario canceló casi todos los desarrollos, que para

esas fechas la mayoría estaban obsoletos. El PIC, sin

embargo, se mejoró con EPROM (Erasable Programmable Read-

Only Memory; Memoria de solo lectura programable

borrable) para conseguir un controlador de canal

programable. Hoy en día multitud de PICs vienen con

varios periféricos incluidos (módulos de comunicación

serie, UARTs, núcleos de control de motores, entre

otros.) y con memoria de programa desde 512 a 32.000

palabras (una palabra corresponde a una instrucción en

lenguaje ensamblador, y puede ser de 12, 14, 16 ó 32

bits, dependiendo de la familia específica de PICmicro).

Figura 3. PIC® Microcontrollers

Page 14: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

13

Arquitectura Microcontroladores PIC

El PIC usa un juego de instrucciones tipo RISC

(Reduced Instruction Set Computer / Computador con

Conjunto de Instrucciones Reducidas), cuyo número puede

variar desde 35 para PICs de gama baja a 70 para los de

gama alta. Las instrucciones se clasifican en las que

realizan operaciones entre el acumulador y una constante,

entre el acumulador y una posición de memoria,

instrucciones de condicionamiento y de salto/retorno,

implementación de interrupciones y una para pasar a modo

de bajo consumo llamada sleep. La arquitectura del PIC es

sumamente minimalista. Está caracterizada por las

siguientes prestaciones:

- Área de código y de datos separadas (Arquitectura

Harvard).

- Un reducido número de instrucciones de longitud

fija.

- Implementa segmentación de tal modo que la mayoría

de instrucciones duran 1 tiempo de instrucción (o 4

tiempos de reloj). Puede haber instrucciones de dos

tiempos de instrucción (saltos, llamadas y retornos de

subrutinas y otras) o inclusive con más tiempo de

instrucción en PICs de gama alta. Esto implica que el

rendimiento real de instrucciones por segundo del

procesador es de al menos 1/4 de la frecuencia del

oscilador.

- -Un solo acumulador (W), cuyo uso (como operador de

origen) es implícito (no está especificado en la

instrucción).

Page 15: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

14

- Todas las posiciones de la RAM funcionan como

registros de origen y/o de destino de operaciones

matemáticas y otras funciones.

- Una pila de hardware para almacenar instrucciones de

regreso de funciones.

- Una relativamente pequeña cantidad de espacio de datos

direccionable (típicamente, 256 bytes), extensible a

través de manipulación de bancos de memoria.

- El espacio de datos está relacionado con el CPU,

puertos, y los registros de los periféricos.

- El contador de programa está también relacionado

dentro del espacio de datos, y es posible escribir en

él (permitiendo saltos indirectos).

A diferencia de la mayoría de otros CPU, no hay

distinción entre los espacios de memoria y los espacios

de registros, ya que la RAM cumple ambas funciones, y

esta es normalmente referida como "archivo de registros"

o simplemente, registros.

Los microcontroladores PIC16F de Microchip pertenecen

a una gran familia de microcontroladores de 8 bits (bus

de datos) que tienen las siguientes características

generales que los distinguen de otras familias:

- Arquitectura Harvard

- Tecnología RISC

- Tecnología CMOS

Estas características se conjugan para lograr un

dispositivo altamente eficiente en el uso de la memoria

Page 16: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

15

de datos y programa y por lo tanto en la velocidad de

ejecución.

Los microcontroladores que produce Microchip cubren un

amplio rango de dispositivos cuyas características pueden

variar según:

- Empaquetado

- Tecnología de la memoria incluida

- Voltajes de operación

- Frecuencia de operación

Microchip ha dividido sus microcontroladores en tres

grandes subfamilias de acuerdo al número de bits de su

bus de instrucciones:

Tabla 1. Subfamilias microcontroladores Microchip

Subfamilia Bits del bus de instrucciones Nomenclatura

Base – Line 12 PIC12XXX y PIC14XXX

Mid – Range 14 PIC16XXX

High – End 16 PIC17XXX y PIC18XXX

En el nombre específico del microcontrolador pueden

aparecer algunas siglas, las cuales determinan ciertas

características eléctricas y funcionales del

microcontrolador, como se muestra en la siguiente tabla:

Tabla 2. Características eléctricas y funcionales de los PIC

Memoria/ Rango de

voltaje EPROM ROM Flash

Estándar C 4.5 a 6v CR 4.5 a 6v F 4.5 a 6v

Extendido LC 2.5 a 6v LCR 2.5 a 6v LF 2 a 6v

Page 17: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

16

Empaquetados

Aunque cada empaquetado tiene variantes, especialmente

en lo relativo a las dimensiones del espesor del paquete,

en general se pueden encontrar paquetes tipo PDIP

(Plastic Dual In Line Package), PLCC (Plastic Leaded Chip

Carrier) y QFP (Quad Flat Package), los cuales se

muestran en las figuras siguientes:

Figura 4. Paquetes tipo PDIP, PLCC, SOIC, y QFP.

Oscilador

Los PIC permiten diferentes modos para el oscilador.

El usuario puede seleccionar alguno de estos modos

Page 18: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

17

programando 3 bits de configuración del dispositivo

denominados: FOSC2, FOSC1 y FOSC0. En algunos de estos

modos el usuario puede indicar que se genere o no una

salida del oscilador (CLKOUT) a través de un pin de

Entrada/Salida. Los modos de operación se muestran en la

siguiente lista:

Tabla 3. Osciladores

LP Baja frecuencia (y bajo consumo de potencia)

XT Cristal / Resonador cerámico externos, (Media

frecuencia)

HS Alta velocidad (y alta potencia) Cristal/resonador

RC Resistencia / capacitor externos (mismo que EXTRC

con CLKOUT)

EXTRC Resistencia / capacitor externos

EXTRC Resistencia / Capacitor externos con CLCKOUT

INTRC Resistencia / Capacitor internos para 4 MHz

INTRC Resistencia / Capacitor internos para 4 MHz con

CLKOUT

Los tres modos LP, XT y HS usan un cristal o resonador

externo, la diferencia sin embargo es la ganancia de los

drivers internos, lo cual se ve reflejado en el rango de

frecuencia admitido y la potencia consumida. En la

siguiente tabla se muestran los rangos de frecuencia así

como los capacitores recomendados para un oscilador en

base a cristal.

Page 19: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

18

Tabla 4. Rangos de frecuencia y capacitores recomendados

Modo Frecuencia típica Capacitores recomendados

C1 C2

LP 32 kHz 200 kHz

68 a 100 pf 15 a 30 pf

68 a 100 pf 15 a 30 pf

XT 100 kHz 2 MHz 4 MHz

68 a 150 pf 15 a 30 pf 15 a 30 pf

150 a 200 pf 15 a 30 pf 15 a 30 pf

HS 8 MHz 10 MHz 20 MHz

15 a 30 pf 15 a 30 pf 15 a 30 pf

15 a 30 pf 15 a 30 pf 15 a 30 pf

Cristal externo: En los tres modos mostrados en la

tabla anterior se puede usar un cristal o resonador

cerámico externo. En la siguiente figura se muestra la

conexión de un cristal a las patitas OSC1 y OS2 del PIC.

Figura 5. Conexión oscilador XT.

Figura 6. Cristales de uso comercial.

Page 20: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

19

Circuito RC externo: En los modos RC y EXTRC el PIC

puede generar su señal oscilatoria basado en un arreglo

RC externo conectado a la patita OSC1 como se muestra en

la siguiente figura:

Figura 7. Oscilador RC externo

Este modo sólo se recomienda cuando la aplicación no

requiera una gran precisión en la medición de tiempos. La

frecuencia de oscilación depende no sólo de los valores

de Rext y Cext, sino también del voltaje de la fuente

Vdd. Los rangos admisibles para resistencia y capacitor

son: Rext: de 3 a 100 Kohms y Cext: mayor de 20 pf

Oscilador externo: También es posible conectar una

señal de reloj generada mediante un oscilador externo a

la patita OSC1 del PIC. Para ello el PIC deberá estar en

uno de los tres modos que admiten cristal (LP, XT o HS).

La conexión se muestra en la siguiente figura:

Page 21: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

20

Figura 8. Oscilador externo

Características generales del PIC16F877

La siguiente es una lista de las características que

comparte el PIC16F877 con los dispositivos más cercanos

de su familia (PIC16F873, PIC16F874, PIC16F876,

PIC16F877)

- CPU RISC. Sólo 35 instrucciones que aprender (En

lenguaje ensamblador)

- Todas las instrucciones se ejecutan en un ciclo de

reloj, excepto los saltos que requieren dos

- Frecuencia de operación de 0 a 20 MHz (DC a 200 nseg

de ciclo de instrucción)

- Hasta 8k x 14 bits de memoria Flash de programa

- Hasta 368 bytes de memoria de datos (RAM)

- Hasta 256 bytes de memoria de datos EEPROM

- Hasta 4 fuentes de interrupción

- Stack de hardware de 8 niveles

- Reset de encendido (POR)

- Timer de encendido (PWRT)

- Timer de arranque del oscilador (OST)

- Sistema de vigilancia Watchdog timer.

Page 22: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

21

- Protección programable de código

- Modo SEP de bajo consumo de energía

- Opciones de selección del oscilador

- Programación y depuración serie “In-Circuit” (ICSP) a

través de dos patitas

- Lectura/escritura de la CPU a la memoria flash de

programa

- Rango de voltaje de operación de 2.0 a 5.5 volts

- Alta disipación de corriente de la fuente: 25mA

- Rangos de temperatura: Comercial, Industrial y

Extendido

- Bajo consumo de potencia, Menos de:

- 0.6mA a 3V, 4 Mhz

- 20 µA a 3V, 32 Khz

- menos de 1µA corriente de standby.

- Periféricos

- Timer0: Contador/Temporizador de 8 bits con pre-

escalador de 8 bits

- Timer1: Contador/Temporizador de 16 bits con pre-

escalador

- Timer0: Contador/Temporizador de 8 bits con pre-

escalador y post-escalador de 8 bits y registro

de periodo.

- Dos módulos de Captura, Comparación y PWM

- Convertidor Analógico/Digital: de 10 bits, hasta

8 canales

- Puerto Serie Síncrono (SSP)

- Puerto Serie Universal (USART/SCI).

- Puerto Paralelo Esclavo (PSP): de 8 bits con

líneas de protocolo

Page 23: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

22

Diagrama de Bloques del PIC16F877

En la siguiente figura se muestra a manera de bloques

la organización interna del PIC16F877, Se muestra también

junto a este diagrama su diagrama de patitas, para tener

una visión conjunta del interior y exterior del Chip.

Figura 9. Diagrama de bloques

Descripción de la CPU

Unidad Central De Procesamiento (Central Processor

Unit). Como indica su nombre, esto es una unidad que

controla todos los procesos dentro del microcontrolador.

La CPU es la responsable de la interpretación y ejecución

de la información (instrucciones) guardada en la memoria

de programa. Muchas de estas instrucciones operan sobre

Page 24: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

23

la memoria de datos. El CPU Consiste en varias unidades

más pequeñas, de las que las más importantes son:

Decodificador de instrucciones es la parte que

descodifica las instrucciones del programa y acciona

otros circuitos basándose en esto. El “conjunto de

instrucciones” que es diferente para cada familia de

microcontrolador expresa las capacidades de este

circuito.

Unidad lógica aritmética (Arithmetical Logical Unit -

ALU) realiza todas las operaciones matemáticas y lógicas

sobre datos.

Acumulador o registro de trabajo. Es un registro SFR

estrechamente relacionado con el funcionamiento de la

ALU. Es utilizado para almacenar todos los datos sobre

los que se debe realizar alguna operación (sumar, mover).

También almacena los resultados preparados para el

procesamiento futuro. Uno de los registros SFR,

denominado Registro Status (PSW), está estrechamente

relacionado con el acumulador. Muestra el “estado” de un

número almacenado en el acumulador (el número es mayor o

menor que cero entre otros.) en cualquier instante dado.

Figura 10. Componentes de una CPU

Page 25: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

24

BUS

El bus está formado por 8, 16 o más cables. Hay dos

tipos de buses: el bus de direcciones y el bus de datos.

El bus de direcciones consiste en tantas líneas como sean

necesarias para direccionar la memoria. Se utiliza para

transmitir la dirección de la CPU a la memoria. El bus de

datos es tan ancho como los datos, en este caso es de 8

bits o líneas de ancho. Se utiliza para conectar todos

los circuitos dentro del microcontrolador.

Ciclo de instrucción

El registro Program Counter (PC) es gobernado por el

ciclo de instrucción como se muestra en la siguiente

figura. Cada ciclo de instrucción la CPU lee (ciclo

Fetch) la instrucción guardada en la memoria de programa

apuntada por PC y al mismo tiempo ejecuta la instrucción

anterior, esto debido a una cola de instrucciones que le

permite ejecutar una instrucción mientras lee la próxima.

Figura 11. Ciclo de instrucción

Como puede verse, cada ciclo de instrucción (Tcy) se

compone a su vez de cuatro ciclos del oscilador (Tosc).

Page 26: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

25

Cada ciclo Q provee la sincronización para los siguientes

eventos:

Q1: Decodificación de la instrucción

Q2: Lectura del dato (si lo hay)

Q3: Procesa el dato

Q4: Escribe el dato

Debido a esto cada ciclo de instrucción consume 4

ciclos de reloj, de manera que si la frecuencia de

oscilación es Fosc, Tcy será 4/Fosc.

Registros de la CPU.

Registro PC. Registro de 13 bits que siempre apunta a

la siguiente instrucción a ejecutarse. En la siguiente

sección se dan mayores detalles en el manejo de este

registro.

Registro de Instrucción. Registro de 14 bits. Todas

las instrucciones se colocan en el para ser

decodificadas por la CPU antes de ejecutarlas.

Registro W. Registro de 8 bits que guarda resultados

temporales de las operaciones realizadas por la ALU

Registro de Estado (03h y 83h, STATUS) contienen

varios bits de estado de la unidad central, el estado

aritmético de la ALU, el estado del reset y un par de

bits de selección de página denominados RP1 y RP0. Ocupa

la posición 03h del banco 0 y la 83h del banco 1. Algunos

de estos bits se pueden cambiar manualmente a través del

programa. Otros los activa automáticamente el PIC cuando

se dan ciertos procesos. Estos bits se llaman flags

(banderas). Para dar una idea práctica, una bandera se

Page 27: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

26

levanta (se pone a 1) cuando ha pasado algo. El registro

STATUS está formado por 8 bits.

Tabla 5. Registro STATUS

R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x

IRP RP1 RP0 /TO /PD Z DC C

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

R/W significa que el bit correspondiente se puede leer

y escribir, mientras que R significa que solamente puede

ser leído. También se indica el estado que se establece

tras un reset.

- Bit 7, IRP: Selección del banco en direccionamiento

indirecto. Este bit junto con el de más peso del registro

FSR sirven para determinar el banco de la memoria de

datos seleccionado. En el PIC16X84 al disponer de dos

bancos no se usa y debe programarse como 0.

- Bit 6 y 5, RP0 y RP1: Register Bank Select.

Selección de página o banco de la memoria con

direccionamiento directo. Cada página contiene 128 bytes.

Como el PIC16X84 sólo tiene dos bancos únicamente se

emplea RP0 de forma que cuando vale 0 se accede al banco

0 y cuando vale 1 se accede al banco 1. Después de un

reset, RP0 se pone automáticamente a 0. RP1 debe

mantenerse a 0. El bit RP1 deberá ser puesto a cero, ya

que si no nos saldríamos del rango de memoria.

- Bit 4 (flag), TO: Time Out (Tiempo acabado)

o Se pone a 1 tras conectar la alimentación o al

ejecutar CLRWDT o SLEEP.

Page 28: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

27

o 0. Se pone a 0 por desbordamiento del Perro Guardián

WDT.

- Bit 3 (flag), PD: Power Down (Apagado).

o Se pone automáticamente a 1 tras conectar la

alimentación Vdd o ejecutar CLRWDT, que resetea el

contador WatchDog.

o Se pone a 0 al ejecutar la instrucción SLEEP.

- Bit 2 (flag), Z: Cero

o 1 = El resultado de una operación aritmética o

lógica es 0.

o 0 = El resultado es distinto de 0.

- Bit 1 (flag), DC (Digit Carry). Acarreo en el 4º bit

de menos peso. Funciona igual que el bit de Carry

descrito a continuación. De interés en operaciones en BCD

- Bit 0 (flag), C (Carry). Acarreo en el 8º bit o bit

de mas peso. Es el bit de "acarreo" en operaciones de

suma AADWF y ADDLW así como también el bit de "llevada"

en las instrucciones de sustracción SUBWF y SUBLW.

También lo emplean las instrucciones RLF y RRF de

rotación de bits.

o Suma

1. Se pone a 1 cuando se ha producido acarreo en la

suma en el bit de mayor peso con las operaciones AADWF y

ADDLW.

0. Se pone a 0 si en la suma no se ha producido

acarreo.

o Resta

1. Se pone a 1 si en la resta no se ha producido

llevada.

Page 29: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

28

0. Se pone a 0 cuando se ha producido llevada en la

resta con las operaciones SUBWF y SUBLW.

Organización de la memoria del PIC

Los PIC tienen dos tipos de memoria: Memoria de Datos

y Memoria de programa, cada bloque con su propio bus: Bus

de datos y Bus de programa; por lo cual cada bloque puede

ser accesado durante un mismo ciclo de oscilación.

La memoria de datos consta de dos áreas mezcladas y

destinadas a funciones distintas. Un registro o una celda

de memoria es un circuito electrónico que puede memorizar

el estado de un byte. En los microcontroladores se

emplean dos tipos de registros: los registros de

funciones especiales (SFR) y los Registro de Propósito

General (GPR)

Figura 12. Registros de 8 bits

Registros de Propósito Especial (SFR)

Los SFR son localidades asociadas específicamente a

los diferentes periféricos y funciones de configuración

del PIC y tienen un nombre específico asociado con su

función. Mientras que los GPR son memoria RAM de uso

Page 30: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

29

general. Cada microcontrolador dispone de un número de

registros de funciones especiales (SFR), con la función

predeterminada por el fabricante. Sus bits están

conectados a los circuitos internos del microcontrolador

tales como temporizadores, convertidores A/D, osciladores

entre otros, lo que significa que directamente manejan el

funcionamiento de estos circuitos, o sea del

microcontrolador. Imagínese ocho interruptores que

manejan el funcionamiento de un circuito pequeño dentro

del microcontrolador.

Figura 13. Registros de función especial SFR

Page 31: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

30

Tabla 6. Tabla de registros de función especial SFR

Registro de Propósito General (GPR)

Los GPR También son registros de 1 byte cada uno. Los

registros GPR (General Purpose Register) sirven para

almacenar los datos o variables que se procesan en el

programa. El PIC16F84A tiene 68 registros GPR, todos

Page 32: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

31

ubicados en el banco 0, entre las direcciones 0x0C y

0x4F. En el banco 1 no hay registros GPR, solo hay

accesos a los registros del banco 0. Dicho en otras

palabras, los registros GPR del banco 1 son un reflejo de

los GPR del banco 0. Los PIC16F877A/876A tienen 368

registros GPR. Los últimos 16 registros de los bancos 1,

2 y 3 son los mismos que del banco 0. Los PIC16F874A/873A

tienen 192 registros GPR. Su mapa de RAM es un poco

diferente debido principalmente a los accesos repetidos.

Todas estas diferencias serán de preocupación solo cuando

se programe en ensamblador.

Los registros GPR no tienen nombres propios, pero los

compiladores de alto nivel saben cómo administrarlos para

almacenar las variables del programa. Por otro lado, si

se programa en ensamblador, se les debe acceder mediante

sus direcciones, ya sea directamente usando números, o

asignándoles nombres a las direcciones con algunas

directivas, como equ o cblock. Por ejemplo, en el

siguiente código se designan los nombres var1 y var2 a

los registros de direcciones 0x25 y 0x30,

respectivamente.

var1 equ 0x25

var2 equ 0x30

Luego se podrán usar esos nombres para acceder a los

registros designados. Por ejemplo, el siguiente código

copia el contenido del primer registro al segundo.

movf var1, W ; Mover var1 a W

movwf var2 ; Mover W a var2

El diseñador puede elegir cualquier registro GPR como

sus variables de programa. Para ello debe recordar

Page 33: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

32

siempre dónde se localizan, en el PIC16F84A están

mapeados a partir de la dirección 0x0C, en los PIC16F87xA

empiezan en la dirección 0x20 en el banco 0; los otros

bancos se usan raramente en ensamblador.

Figura 14. Memorias de los Microcontroladores PIC.

Bancos de memoria

Toda la memoria de datos está organizada en 4 bancos

numerados 0, 1, 2 y 3. Para seleccionar un banco se debe

hacer uso de los bits del registro STATUS<7:5>

denominados IRP, RP1 y RP0. Hay dos maneras de acceder a

la memoria de datos: Direccionamiento directo e

Page 34: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

33

indirecto. La selección de bancos se basa en la siguiente

tabla

Tabla 7. Bits del registro STATUS<7:5>

Direccionamiento Indirecto (IRP)

RP1:RP0 Banco

0 0 0 0 0 1 1

1 1 0 2 1 1 3

Cada banco consta de 128 bytes (de 00h a 7Fh). En las

posiciones más bajas de cada banco se encuentran los SFR,

y arriba de éstos se encuentran los GPR. Toda la memoria

de datos está implementada en RAM estática.

Figura 15. Memoria de Programa

Page 35: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

34

Memoria ROM

La memoria ROM se utiliza para guardar permanente el

programa que se está ejecutando. Es la razón por la que

es frecuentemente llamada “memoria de programa”. El

PIC16F887 tiene 8Kb de memoria ROM (en total 8192

localidades). Como la memoria ROM está fabricada con

tecnología FLASH, su contenido se puede cambiar al

proporcionarle un voltaje de programación especial (13V).

No obstante, no es necesario explicarlo en detalles

puesto que se realiza automáticamente por un programa

especial en la PC y un simple dispositivo electrónico

denominado programador.

La Memoria de Programa en los PIC16Fxxx es de tipo

flash, aquí es donde se aloja el programa que el CPU

ejecutará. En los PIC16 la memoria de programa se

cuantifica en palabras, de 14 bits cada una. Son de 14

bits porque cada instrucción es de 14 bits. Esto suele

impresionar un poco al novel, quien está habituado a

medir la capacidad de las memorias en bytes (8 bits).

El PIC16F84A tiene 1 k (1024) palabras de memoria. En

tiempo de ejecución son de solo lectura. Con 1 k puede

almacenar hasta 1024 instrucciones de código ensamblador.

Los PIC16F877A/876A tienen 8 k (8192) palabras de memoria

de programa mientras que los PIC16F874A/873A tienen 4 k

(4192). Los cuatro PICmicros ofrecen la posibilidad de

escribir en su memoria de programa incluso en tiempo de

ejecución. Esta función puede ser aprovechada para

almacenar datos procesados por el usuario o para permitir

la autoprogramación del PIC.

Page 36: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

35

En las siguientes figuras las memorias de programa del

PIC están acompañadas por el PC (Program Counter) y la

Pila (Stack). Es así porque hay una estrecha relación en

su trabajo.

Figura 16. Contador de Programa, Pila y Memoria de programa.

El Contador de Programa, PC

El PC es un registro que indica la siguiente

instrucción que debe ejecutar el CPU. Al arrancar

microcontrolador, el PC vale 0x0000 y se va incrementando

automáticamente, con lo que el PIC debería ejecutar una a

Page 37: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

36

una todas las instrucciones del programa. En los PICs de

la familia Mid-Range el PC es de 13 bits, pudiendo

direccionar un máximo de 8 k palabras de memoria de

programa.

La Pila o STACK

Es una memoria que almacena temporalmente el valor del

PC (Program Counter) cuando el programa llama a una

subrutina o cuando salta al Vector de Interrupción, en

una interrupción. En los PICs de la familia Mid-Range la

Pila tiene únicamente 8 niveles y se administra a nivel

hardware, esto es, no hay instrucciones para acceder a

ella directamente. Su operación es enteramente en

background. Solo debemos cuidar de que no se llegue a

desbordar.

Cuando se ejecuta una instrucción CALL o es reconocida

una interrupción el PC es guardado en el stack y el

apuntador de stack es incrementado en 1 para apuntar a la

siguiente posición vacía. A la inversa, cuando se ejecuta

una instrucción RETURN, RETLW o RETFIE el contenido de la

posición actual del stack es colocado en el PC. El PCLATH

no se modifica en ninguna de estas operaciones, cuando el

apuntador de stack ya está en la posición 8 y se ejecuta

otro CALL se reinicia a la posición 1 sobrescribiendo en

dicha posición. No existe ningún indicador que avise de

esta situación. Así que el usuario deberá llevar el

control para que esto no ocurra.

Vector de Reset. Cuando ocurre un reset el contenido

del PC es forzado a cero, ésta es la dirección donde la

Page 38: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

37

ejecución del programa continuará después del reset, por

ello se le llama “dirección del vector de reset”.

Vector de interrupción. Cuando la CPU acepta una

solicitud de interrupción ejecuta un salto a la dirección

0004h, por lo cual a esta se le conoce como “dirección

del vector de interrupción”. El registro PCLATH no es

modificado en esta circunstancia, por lo cual habrá que

tener cuidado al manipular el PC dentro de la Rutina de

Atención a la Interrupción (Interrupt Service Routine

(ISR)).

Aunque el archivo de registros en RAM puede variar de

un PIC a otro, la familia del PIC16F87x coincide casi en

su totalidad. En la siguiente figura se muestra a detalle

el mapa de este archivo de registros y su organización en

los cuatro bancos que ya se describieron.

El PIC16F84A es de los muy pocos que tienen 2 bancos

de RAM; el resto de los PIC16F, que son la gran mayoría,

tienen 4 bancos. La existencia de los bancos solo es de

consideración (y un dolor de cabeza) cuando se programa

en lenguaje ensamblador.

Al apagar la fuente de alimentación, se pierde el

contenido de la memoria RAM. Se utiliza para almacenar

temporalmente los datos y los resultados inmediatos

creados y utilizados durante el funcionamiento del

microcontrolador.

Además los microcontroladores cuentan con una memoria

EEPROM (MEMORIA EEPROM (Electrically Erasable

Programmable Rom / rom programable y borrable

eléctricamente). El contenido de la EEPROM se puede

Page 39: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

38

cambiar durante el funcionamiento (similar a la RAM),

pero se queda permanentemente guardado después de la

pérdida de la fuente de alimentación (similar a la ROM).

Por lo tanto, la EEPROM se utiliza con frecuencia para

almacenar los valores creados durante el funcionamiento,

que tienen que estar permanentemente guardados. Por

ejemplo, si se ha diseñado una llave electrónica o una

alarma, sería estupendo permitir al usuario crear e

introducir una contraseña por su cuenta. Por supuesto, la

nueva contraseña tiene que estar guardada al apagar la

fuente de alimentación. En tal caso una solución perfecta

es el microcontrolador con una EEPROM embebida.

Puertos De Entrada/Salida (E/S)

Para hacer útil un microcontrolador, hay que

conectarlo a un dispositivo externo, es decir, a un

periférico. Cada microcontrolador tiene uno o más

registros (denominados puertos) conectados a los pines en

el microcontrolador. ¿Por qué se denominan como puertos

de entrada/salida? Porque se puede cambiar la función de

cada pin como se requiera. Por ejemplo, se desea que el

dispositivo encienda y apague las tres indicadores LED’s

y que simultáneamente monitoree el estado lógico de 5

sensores o botones de presión. Uno de los puertos debe

estar configurado de tal manera que haya tres salidas

(conectadas a los LEDs) y cinco entradas (conectadas a

los sensores). Eso se realiza simplemente por medio de

software, lo que significa que la función de algún pin

puede ser cambiada durante el funcionamiento.

Page 40: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

39

Figura 17. Pines de entrada/salida (E/S)

Una de las características más importantes de los

pines de entrada/salida (E/S) es la corriente máxima que

pueden entregar/recibir. En la mayoría de los

microcontroladores la corriente obtenida de un pin es

suficiente para activar un LED u otro dispositivo de baja

corriente (10-20mA). Mientras más pines de E/S haya, más

baja es la corriente máxima de un pin. En otras palabras,

todos los puertos de E/S comparten la corriente máxima

declarada en la hoja de especificación técnica del

microprocesador.

Otra característica importante de los pines es que

pueden disponer de los resistores pull-up. Estos

resistores conectan los pines al polo positivo del

voltaje de la fuente de alimentación y su efecto se puede

ver al configurar el pin como una entrada conectada a un

interruptor mecánico o a un botón de presión. Las últimas

versiones de los microcontroladores tienen las

resistencias pull-up configurables por software.

Page 41: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

40

Cada puerto de E/S normalmente está bajo el control de

un registro SFR especializado, lo que significa que cada

bit de ese registro determina el estado del pin

correspondiente en el el microcontrolador. Por ejemplo,

al escribir un uno lógico (1) a un bit del registro de

control (SFR), el pin apropiado del puerto se configura

automáticamente como salida. Eso significa que el voltaje

llevado a ese pin se puede leer como 0 o 1 lógico. En

caso contrario, al escribir 0 al registro SFR, el pin

apropiado del puerto se configura como salida. Su voltaje

(0V o 5V) corresponde al estado del bit apropiado del

registro del puerto.

La mayoría de los pines del microcontrolador son

multipropósito, por ejemplo, la asignación

RA3/AN3/Vref+/C1IN+ para el quinto pin del

microcontrolador indica que éste dispone de las

siguientes funciones:

- RA3 Tercera entrada/salida digital del puerto A

- AN3 Tercera entrada analógica

- Vref+ Referencia positiva de voltaje

- C1IN+ Entrada positiva del comparador C1

La funcionalidad de los pines presentados

anteriormente es muy útil puesto que permite un mejor

aprovechamiento de los recursos del microcontrolador sin

afectar a su funcionamiento. Estas funciones de los pines

no se pueden utilizar simultáneamente, sin embargo se

pueden cambiar en cualquier instante durante el

funcionamiento.

Page 42: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

41

Figura 18. Arquitectura de los microcontroladores PIC.

Page 43: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

42

Las siguientes tablas se refieren a las funciones

establecidas en los pines de microcontroladores DIP de 40

pines.

Tabla 8. Pines Microcontroladores PIC

Page 44: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

43

Tabla 9. Cont. Pines Microcontroladores PIC

Page 45: Libro ee digitales 2 borrador 1

S i s t e m a s D i g i t a l e s I I M i c r o c o n t r o l a d o r e s P I C

I n g . E m i l i o J . E s c a l a n t e S . I

44

Tabla 10. Cont. Pines Microcontroladores PIC