Вы находитесь на странице: 1из 11

PIC16F877 15 de noviembre

Marvin Amador.
Yamil Flores. 3T2 Eo
2010
In this paper, we’re going to introduce a new device that can be programmed to be able to
perform multiple functions, which will be limited by the capacity of the program or the
result that we’re going to obtain. This paper presents the latest knowledges required when
you’re going to program the PIC 16F877, which is part of a subfamily of PIC (Peripheral
Interface Controller) mid-range 8-bit, manufactured by Microchip Technology Inc. and it
has an improved memory Flash EEPROM program, allowing a device to be programmed
easily using PIC programmer. This feature significantly facilitates the design of projects,
minimizing the time spent on programming microcontrollers (microcontrollers).It actually
is an improved version of the workhorse PIC16F84, widely used in simple projects, for
educational purposes and training.
INTRODUCCION. importante señalar que estas entradas y
salidas digitales tienen niveles TTL, por lo
El Microcontrolador PIC16F877 de que su tensión de entrada y salida tendrá
Microchip pertenece a una gran familia de que estar comprendida entre 0 y 5V, es
Microcontroladores de 8 bits (bus de por eso que necesitaremos unos circuitos
datos) que tienen las siguientes que harán de interface entre estos niveles
características generales que los TTL y los niveles con los que estemos
distinguen de otras familias: trabajando, 220 VAC, 24 VDC o cualquier
- Arquitectura Harvard otra tensión.
- Tecnología RISC
- Tecnología CMOS Este material está referido al estudio del
Estas características se conjugan para Microprocesador 16F877, enmarcándonos
lograr un dispositivo altamente eficiente en en sus partes principales, Arquitectura,
el uso de la memoria de datos y programa designaciones de pines, funcionamiento y
y por lo tanto en la velocidad de ejecución. algunas indicaciones de cómo
programarlo.[1]
Una de las tarea más básica que
podemos hacer con un microprocesador DESARROLLO.
es sustituir a un circuito combinacional o
secuencial. Para poder hacer estas cosas, Los Microcontroladores que produce
el microprocesador necesitará tener Microchip cubren un amplio rango de
entradas y salidas digitales, igual que las dispositivos cuyas características pueden
de cualquier puerta lógica. El variar como sigue:
microprocesador PIC16F877 tiene 33
patillas que pueden ser, a voluntad - Empaquetado (desde 8 patitas hasta 68
nuestra, entradas o salidas, de forma que patitas)
podemos hacer, por ejemplo, 10 funciones - Tecnología de la memoria incluida.
con 15 entradas. De todos modos, el - Voltajes de operación (desde 2.5 v.
tiempo de respuesta de esas funciones es Hasta 6v)
mucho mayor que el de las funciones - Frecuencia de operación (Hasta 20 MHz)
realizadas con puertas lógicas, aunque
en la mayoría de los casos ese tiempo no Aunque cada empaquetado tiene
es demasiado importante. Ahora bien, es variantes, especialmente en lo relativo a
las dimensiones del espesor del paquete, Memoria:
en general se pueden encontrar paquetes - Hasta 8k x 14 bits de memoria Flash de
tipo PDIP (doble hilera de patitas de programa
plástico), PLCC (De plástico con chip con - Hasta 368 bytes de memoria de datos
plomo), QFP (Paquete cuádruple (RAM)
depósitos) y SOIC (De contorno pequeño - Hasta 256 bytes de memoria de datos
I.C.); este último no aplica para un EEPROM
encapsulado del PIC16F877. La sigla F - Lectura/escritura de la CPU a la memoria
del PIC16F877 indica que el tipo de flash de programa
memoria que utiliza es una memoria - Protección programable de código
FLASH y que se encuentra entre un rango - Stack de hardware de 8 niveles
de voltaje de 4.5 a 6V.

1. Características generales del Reset e interrupciones:


PIC16F877. - Hasta 14 fuentes de interrupción
- Reset de encendido (POR)
La siguiente es una lista de las - Timer de encendido (PWRT)
características que comparte el - Timer de arranque del oscilador (OST)
PIC16F877 con los dispositivos más - Sistema de vigilancia Watchdog timer.
cercanos de su familia:
Otros:
PIC16F87 PIC16F87 PIC16F87 PIC16F8 - Modo SLEEP de bajo consumo de
3 4 6 77
energía
- Programación y depuración serie “In-
Circuit” (ICSP) a través de dos patitas
CPU:
- Rango de voltaje de operación de 2.0 a
- Tecnología RISC.
5.5 volts
- Sólo 35 instrucciones para aprender
- Alta disipación de corriente de la fuente:
- Todas las instrucciones se ejecutan en
25mA
un ciclo de reloj, excepto los saltos que
- Rangos de temperatura: Comercial,
requieren dos
Industrial y Extendido
- Frecuencia de operación de 0 a 20 MHz
- Bajo consumo de potencia:
(200 nseg de ciclo de instrucción)
 Menos de 0.6mA a 3V, 4 Mhz
- Opciones de selección del oscilador
 20 μA a 3V, 32 Khz
 Menos de 1μA corriente de
standby (modo SLEEP). [2]
2. Asignación de pines y propósito. pasándose a llamar N0. En el esquema de
 OSC/CLKIN (13): Entrada del
cristal de cuarzo o del oscilador externo.
 OSC2/CLKOUT (14): Salida del
cristal de cuarzo. En modo RC, el pin
OSC2 saca la cuarta parte de la
frecuencia que se introduce por OSC1,
que determina el ciclo de instrucción.
 VSS (12-31): Conexión a tierra.
 VDD (11-32): entrada de
alimentación positiva.
 MCLR#/VPP (1): entrada de
RESET o entrada del voltaje alto en el
modo el modo test.
Pines de entradas/salidas digitales:
 PORTA: 6 pines.RA0-RA5.
Figura 1.PIC16F877 Encapsulado.
 PORTB: 8 pines RB0 a RB7
las patillas del microprocesador
 PORTC: 8 pines. RC0 a RC7
PIC16F877/874 podemos ver las 2 o 3
 PORTD: 8 pines. RD0 a RD7
funciones, normalmente excluyentes, que
 PORTE: 3 pines. RE0 a RE2
tienen la mayoría de las patillas. [3]

En resumen tenemos 33 patillas de


3- Osciladores:
entrada y salida. Cada una de ellas
Cristal externo: En los tres modos
puede ser entrada o salida
mostrados en la tabla anterior se puede
independientemente de las otras, aunque
usar un cristal o resonador cerámico
algunas tienen alguna peculiaridad. La
externo. En la siguiente figura se muestra
principal precaución que hay que tener a
la conexión de un cristal a las patitas
la hora de usar estas patillas es que RA4
OSC1 y OS2 del PIC.
como salida, es en colector abierto.
Además de los puertos paralelo, el
microprocesador dispone de entradas
analógicas, puertos de comunicación
serie, contadores, los cuales utilizan Figura 2.Oscilador cristal externo
algunas de las 33 patillas que tienen doble
Circuito RC externo: En los modos RC y
triple función. Por ejemplo, la patilla RA0
EXTRC el PIC puede generar su señal
puede ser una entrada analógica,
oscilatoria basada en un arreglo RC
externo conectado a la patita OSC1 como interno que genera una frecuencia de 4
se muestra en la siguiente figura: Mhz con un rango de error calibrable de ±
1.5%. Para calibrar el error de oscilación
se usan los bits CAL3, CAL2, CAL1 Y
CAL0 del registro OSCCAL.

Figura 3. Oscilador RC externo. Calibración del oscilador interno.- El


fabricante ha colocado un valor de
calibración para estos bits en la última
Este modo sólo se recomienda cuando la dirección de la memoria de programa.
aplicación no requiera una gran precisión Este dato ha sido guardado en la forma de
en la medición de tiempos. una instrucción RETLW XX. Si no se
quiere perder este valor al borrar el PIC
Rangos.- La frecuencia de oscilación (en versiones EPROM con ventana)
depende no sólo de los valores de Rext y primero se deberá leer y copiar. Es una
Cext, sino también del voltaje de la fuente buena idea escribirlo en el empaquetado
Vdd. Los rangos admisibles para antes de borrar la memoria). [1]
resistencia y capacitor son: 3. Diagrama de Bloques del
Rext: de 3 a 100 K. PIC16F877.
Cext: mayor de 20 pf. A continuación presentamos un diagrama
en bloques la organización interna del
Oscilador externo.- También es posible PIC16F877, Se muestra también junto a
conectar una señal de reloj generada este diagrama su diagrama de pines, para
mediante un oscilador externo a la patita tener una visión conjunta del interior y
OSC1 del PIC. Para ello el PIC deberá exterior del Chip:
estar en uno de los tres modos que
admiten cristal (LP, XT o HS). La conexión
se muestra en la siguiente figura:

Figura 4. Oscilador externo.

Oscilador interno de 4Mhz.- En los PIC’s


que poseen este modo de oscilación,
(Modo INTRC) el PIC usa un arreglo RC
Descripción de la CPU este registro se alteran dependiendo del
La CPU es la responsable de la resultado de algunas instrucciones.
interpretación y ejecución de la
información (instrucciones) guardada en la Ciclo de instrucción
memoria de programa. Muchas de estas El registro Program Counter (PC) es
instrucciones operan sobre la memoria de gobernado por el ciclo de instrucción
datos. Para operar sobre la memoria de como se muestra en la siguiente figura.
datos además, si se van a realizar Cada ciclo de instrucción la CPU lee (ciclo
operaciones lógicas o aritméticas, Fetch) la instrucción guardada en la
requieren usar la Unidad de Lógica y memoria de programa apuntada por PC y
Aritmética (ALU). La ALU controla los bits al mismo tiempo ejecuta la instrucción
de estado (Registro STATUS), los bits de anterior, esto debido a una cola de
instrucciones que le permite ejecutar una Ejemplo 1.- Para realizar la suma y la resta
mencionadas en la sección anterior (4Fh+25h y
instrucción mientras lee la próxima: 4Fh-25h) se pueden usar las siguientes
instrucciones:

Suma MOVLW 0x4F ;carga el primer sumando en


W
ADDLW 0x25 ;suma W+25h y guarda el
resultado en W
...
Resta MOVLW 0x25 ;carga el sustraendo
en W
SUBLW 0x4F ;Resta 4Fh-W y guarda el
resultado en W

Como puede verse, cada ciclo de


5. Organización de la memoria del PIC
instrucción (Tcy = 4Tosc) se compone a
Los PIC tienen dos tipos de memoria:
su vez de cuatro ciclos del oscilador
Memoria de Datos y Memoria de
(Tosc= 1/Fosc)). Cada ciclo Q provee la
programa, cada bloque con su propio bus:
sincronización para los siguientes
Bus de datos y Bus de programa; por lo
eventos:
cual cada bloque puede ser accesado
Q1: Decodificación de la instrucción
durante un mismo ciclo de oscilación.
Q2: Lectura del dato (si lo hay)
La Memoria de datos a su vez se divide
Q3: Procesa el dato
en
Q4: Escribe el dato
- Memoria RAM de propósito general
Debido a esto cada ciclo de instrucción
- Archivo de Registros (Special Function
consume 4 ciclos de reloj, de manera que
Registers (SFR))
si la frecuencia de oscilación es Fosc, Tcy
será 4/Fosc.
a) La Memoria de Programa.
Los PIC posee un registro Contador del
4. Conjunto de Instrucciones.
Programa (PC) de 13 bits, capaz de
La tabla en los anexos, presenta un
direccionar un espacio de 8K x 14, como
resumen de 35 Mnemónicos que la
maquina reconoce.

Descripción de algunas instrucciones.


A continuación sólo se ejemplifica una
instrucción con el propósito de clarificar la
operación que realizan: [4]
todas las instrucciones son de 14 bits,
esto significa un bloque de 8k
instrucciones. El bloque total de 8K x 14 6. Programación de los puertos de
de memoria de programa está subdividido entrada/salida paralelos.
en 4 páginas de 2K x 14. En la siguiente En general, los puertos de entrada/salida
figura se muestra esta organización tienen un funcionamiento similar. Para
b) La Memoria de Datos cada puerto existen dos registros, el
La memoria de datos consta de dos áreas TRISX y el PORTX. La X indica cualquiera
mezcladas y destinadas a funciones de los puertos que tiene el
distintas: microprocesador, A, B, C, D o E.
• Registros de Propósito Especial (SFR)
• Registro de Propósito General (GPR) TRISX Este registro sirve para indicar si la

Los SFR son localidades asociadas patilla va a ser salida o no. Un 0 en un bit

específicamente a los diferentes de este registro indica que la patilla

periféricos y funciones de configuración Direcc.


del PIC y tienen un nombre específico Indirecto(IRP) RP1:RP0 Banco
asociado con su función. Mientras que los
00 0
GPR son memoria RAM de uso general.
0
01 1

Bancos de memoria 10 2
Toda la memoria de datos está 1
11 3
organizada en 4 bancos numerados 0, 1,
2 y 3. Para seleccionar un banco se debe correspondiente es una salida. Un 1 indica
hacer uso de los bits del registro que la patilla es entrada. Siendo más
STATUS<7:5> denominados IRP, RP1 y preciso no es exactamente así, los pines
RP0. Hay dos maneras de acceder a la siempre funcionan como entrada, y
memoria de datos: Direccionamiento cuando ponemos el bit TRIS
directo e indirecto. La selección de correspondiente a 1 indicamos que
bancos se basa en la siguiente tabla.[5] ponemos la salida en alta impedancia, y
Cada banco consta de 128 bytes (de 00h por lo tanto no funciona como salida.
a 7Fh). En las posiciones más bajas de Cuando TRISX está a 1 activamos la
cada banco se encuentran los SFR, y salida en alta impedancia, y por lo tanto
arriba de éstos se encuentran los GPR. solo funciona como entrada, pero cuando
Toda la memoria de datos está ponemos TRISX a 0 la salida impone su
implementada en Ram estática. nivel, pero al mismo tiempo funciona como
entrada, aunque salvo algún problema en
el circuito (una salida conectada a masa), // los bits 6 y 4 de
deberemos leer lo que hemos escrito en la entrada estarán a 0
salida. Además, podemos también leer la // el resto de bits
palabra TRISX, conociendo lo que dependen del circuito
previamente habíamos escrito en TRISX. exterior.[6]

PORTX Con este registro nos 7. Aplicaciones comunes.


comunicamos con el exterior. Al leer el El PIC 16F877, tiene muchas aplicaciones
registro leemos un 0 si la tensión en la debido a sus multiples ventajas sobre
entrada está a nivel bajo y un 1 si la otros PIC. Aca solo menciono algunos
tensión está a nivel alto, al escribir el ejemplos mas buscados e interesantes,
registro hacemos que fuera aparezcan 0 Ejemplo:
V. o 5 V. dependiendo de si hemos escrito  Grua controlada. [8]
un 0 o un 1. El nivel alto y el bajo no son  Robotica [9]
valores fijos, sino que hay un margen de  Carrito seguidor de línea. [10]
valores posibles.  Modulador de ancho de pulso. [11]

Ejemplo: Conclusión
TRISA = 0b00001111; // Los pines RA0, Con este documento, determinamos la
RA1, RA2 y RA3 son entradas importancia que el pic 16F877 tiene en la
// Los pines RA4, función de muchos sistemas de control y
RA5, RA6 y RA7 son de transmisión. Las aplicaciones que este
entradas y salidas puede tomar, esta en dependencia de la
PORTA = 0b10101010; // Los pines RA7 y imaginación del programador.
RA5 se pondrán a 1 (5 voltios) Se vio la manera en la cual está integrado
// Los pines RA6 y y de las partes en que está constituido. Se
RA4 se pondrán a 0 (0 demostró la manera en que los pines
voltios) están designados como entrada o salida
entrada = PORTA; // Cada bit de la en dependencia de la programación que
variable entrada tomará un valor se le provea.
dependiendo Como hemos visto el pic 16F877 posee
// de la tensión que tecnología RISC y la instrucciones a
haya en el pin aprender no son muchas ya que este solo
correspondiente. admite 35 las cuales se ejecutan en un
// En este caso los ciclo de reloj a una frecuencia de
bits 7 y 5 de entrada operación entre 0 y 20 MHz y además
estarán a 1 posee la ventaja de seleccionar el tipo de
oscilador que nos conviene usar. Las [6] http://server-
ventaja que este posee de acuerdo a la die.alc.upv.es/asignaturas/LSED/2003-
memoria es que tenemos una memoria 04/Placas/B01/pic16F877.pdf
flash de programa de 8kx14bits, RAM de [7]
368 bytes y 256 bytes de memoria http://www.ufps.edu.co/materias/ucontrol/h
EEPROM, contiene reset de interruptores tdocs/pdf/grua.pdf.
además de poseer un bajo consuno de [8]
energía, bajo rango de temperatura y por http://redalyc.uaemex.mx/redalyc/src/inicio
consiguiente bajo consumo de potencia. /ArtPdfRed.jsp?iCve=84903793.
[9]
Finalmente se puede decir que la http://webcache.googleusercontent.com/s
importancia de este dispositivo es muy earch?q=cache:ayvsISmQzb4J:bibliotecni
importante ya que es la base de los ca.upc.es/Factoria/arxius/67/web/annexes/
sistemas de control y que el alcance de presentacions/MICROCONTROLADORES
este radica en dependencia de la %2520EN%2520ROBTICA%2520MVIL.pp
imaginación del programador. t+pic+16f877+aplicaciones+en+robotica&c
d=2&hl=es&ct=clnk&gl=es.
REFERENCIAS: [10]
[1] http://catarina.udlap.mx/u_dl_a/tales/docu
http://www.bairesrobotics.com.ar/data/pic1 mentos/lem/escobar_a_g/apendiceB.pdf
6f877-guia%20detallada%20parte2.pdf [11]
[2] http://franalvaro.blogspot.com/2009/11/apli
http://ww1.microchip.com/downloads/en/d caciones-pic16f84-pic16f877.html.
evicedoc/30292c.pdf
[3]
www.ate.uniovi.es/fernando/Doc2006/Sed
_06/Presentaciones/Puertos%20E_S_v4.p
df
[4]
http://www.iesjuandelacierva.es/~fremiro/A
rticulos%20Resistor/PIc16F87X/Curso_9.p
df.
[5]
http://www.ate.uniovi.es/fernando/Doc200
6/Sed_06/Presentaciones/Organizacion%
20de%20la%20Memoria.pdf.
Anexos.

Вам также может понравиться