Está en la página 1de 10

PIC 16F877A

ESTRUCTURA DEL 16F877A Y CARACTERÍSTICAS GENERALES

CPU RISC

- Sólo 35
instrucciones que
aprender

- 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.

- Protección programable de código

Página 1
PIC 16F877A

- 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:

o Menos de 0.6mA a 3V, 4 Mhz

o 20 µA a 3V, 32 Khz

o 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

FUNCIONAMIENTO

Descripción de la CPU

Página 2
PIC 16F877A

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 la
memoria de datos. Para operar sobre la memoria de datos además, si se van a realizar
operaciones lógicas o aritméticas, requieren usar la Unidad de Lógica y Aritmética (ALU).
La ALU controla los bits de estado (Registro STATUS), los bits de este registro se alteran
dependiendo del resultado de algunas instrucciones.

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:

Como puede verse, cada ciclo de instrucción (Tcy = 4Tosc) se compone a su vez de cuatro
ciclos del oscilador (Tosc= 1/Fosc)). 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 él


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

Página 3
PIC 16F877A

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 operación como se indica
en la siguiente figura:

Z.- Este bit se pone (=1) para indicar que el resultado de la última operación fue cero, de lo
contrario se limpia (=0)

C.- Bit de acarreo/préstamo’ de la última operación aritmética (en el caso de préstamo


(resta), el bit se invierte antes de guardarse)

DC.- Acarreo/ prestamo proveniente del cuarto bit menos significativo. Funciona igual que
el bit C, pero para operaciones de 4 bits.

Las restas se realizan sumando el complemento a dos del segundo operando, por

ejemplo, para los datos 4FH y 25H:

La Memoria de Datos

La memoria de datos consta de dos áreas mezcladas y destinadas a funciones distintas:

• Registros de Propósito Especial (SFR)

• Registro de Propósito General (GPR)

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 general.

La Memoria de Programa

Los PIC de rango medio poseen un registro Contador del Programa (PC) de 13 bits, capaz
de direccionar un espacio de 8K x 14, como todas la instrucciones son de 14 bits, esto
Página 4
PIC 16F877A

significa un bloque de 8k instrucciones. El bloque total de 8K x 14 de memoria de


programa está subdividido en 4 páginas de 2K x 14. En la siguiente figura se muestra esta
organización.

PATILLAJE

NOMBRE DEL PIN PIN TIPO TIPO DE DESCRIPCIÓN

BUFFER

OSC1/CLKIN 13 I ST/MOS Entrada del oscilador de cristal / Entrada


de señal de reloj externa

OSC2/CLKOUT 14 O - Salida del oscilador de cristal

MCLR/Vpp/THV 1 I/P ST Entrada del Master clear (Reset) o


entrada de voltaje de programación o
modo de control high voltaje test

RA0/AN0 PORTA es un puerto I/O bidireccional


Página 5
PIC 16F877A

TTL

RA1/AN1 2 I/O TTL RAO: puede ser salida analógica 0

RA2/AN2/ Vref- 3 I/O TTL RA1: puede ser salida analógica 1

RA3/AN3/Vref+ 4 I/O TTL RA2: puede ser salida analógica 2 o


referencia negativa de voltaje
RA4/T0CKI 5 I/O ST
RA3: puede ser salida analógica 3 o
RA5/SS/AN4 6 I/O TTL referencia positiva de voltaje
7 I/O RA4: puede ser entrada de reloj el
timer0.

RA5: puede ser salida analógica 4 o el


esclavo seleccionado por el puerto serial
síncrono.

RBO/INT PORTB es un puerto I/O bidireccional.


Puede ser
RB1 programado todo comoentradas
RB2 33 I/O TTL/ST RB0 pude ser pin de interrupción
RB3/PGM 34 I/O TTL externo.

RB4 35 I/O TTL RB3: puede ser la entada


de programación de bajo voltaje
RB5 36 I/O TTL
Pin de interrupción
RB6/PGC 37 I/O TTL
Pin de interrupción
RB7/PGD 38 I/O TTL
Pin de interrupción. Reloj de
39 I/O TTL/ST programación serial

40 I/O TTL/ST

RCO/T1OSO/T1CKI 15 I/O ST PORTC es un puerto I/O bidireccional

RC1/T1OS1/CCP2 16 I/O ST RCO puede ser la salida del oscilador


timer1 o la entrada de reloj del timer1
RC2/CCP1 17 I/O ST
RC1 puede ser la entrada del oscilador
RC3/SCK/SCL

Página 6
PIC 16F877A

RC4/SD1/SDA 18 I/O ST timer1 o salida PMW 2

RC5/SD0 RC2 puede ser una entrada de captura y


comparación o salida PWN
RC6/Tx/CK 23 I/O ST
RC3 puede ser la entrada o salida serial
RC7/RX/DT 24 I/O ST de reloj síncrono para modos SPI e I2C
25 I/O ST RC4 puede ser la entrada de datos SPI y
26 I/O ST modo I2C

RC5 puede ser la salida de datos SPI

RC6 puede ser el transmisor asíncrono


USART o el reloj síncrono.

RC7 puede ser el receptor asíncrono


USART o datos síncronos

RD0/PSP0 PORTD es un puerto bidireccional


paralelo
RD1/PSP1 19 I/O ST/TTL

RD2/PSP2 20 I/O I/O ST/TTL


I/O I/O
RD3/PSP3 21 I/O I/O ST/TTL
RD4/PSP4 22 I/O ST/TTL

RD5/PSP5 27 ST/TTL

RD6/PSP6 28 ST/TTL

RD7/PSP7 29 ST/TTL

30 ST/TTL

Página 7
PIC 16F877A

REO/RD/AN5 8 I/O ST/TTL PORTE es un puerto I/O bidireccional

RE1/WR/AN REO: puede ser control de lectura para el


puerto esclavo paralelo o entrada
RE2/CS/AN7 9 I/O ST/TTL analógica 5

RE1: puede ser escritura de control para


10 I/O ST/TTL el puerto paralelo esclavo o entrada
analógica 6

RE2: puede ser el selector de control para


el puerto paralelo esclavo o la entrada
analógica 7.

Vss 12.31 P - Referencia de tierra para los pines


lógicos y de I/O

Vdd 11.32 P - Fuente positiva para los pines lógicos y


de I/O

NC - - - No está conectado internamente

CARACTERÍSTICAS DEL PIC16F877A

CARACTERÍSTICAS 16F877

Frecuencia máxima DX-20MHz

Memoria de programa 8KB


flash palabra de 14 bits

Posiciones RAM de datos 368

Posiciones EEPROM de datos 256

Puertos E/S A,B,C,D,E

Número de pines 40

Página 8
PIC 16F877A

Interrupciones 14

Timers 3

Módulos CCP 2

Comunicaciones Serie MSSP,


USART

Comunicaciones paralelo PSP

Líneas de entrada de CAD de 10 8


bits

Juego de instrucciones 35
Instrucciones

Longitud de la instrucción 14 bits

Arquitectura Harvard

CPU Risc

Canales Pwm 2

Pila Harware -

Ejecución En 1 Ciclo Máquina -

PROGRAMACION DE UN PIC, SE PUEDE DIVIDIR EN CUATRO PASOS:

• EDITAR

• COMPILAR

• QUEMAR EL PIC

Página 9
PIC 16F877A

• PROBAR EL PROGRAMA

Editar

Editar es escribir el programa, es hacer una lista de instrucciones en un lenguaje que nos
permita indicarle al PIC lo que deseamos que haga. Existen varios lenguajes como:
Ensamblador, Basic, C, etc. Todos ellos pretenden acercarse a nuestra manera de pensar y
de hablar. Sin embargo los PIC no conocen más que unos y ceros. Por eso es necesario el
siguiente paso.

Compilar

Compilar es traducir el programa al lenguaje de máquina que ¡ Si ! “entiende” el PIC. Para


realizar esta traducción hacemos uso de un software que transforma el “Programa Fuente”,
aquel que editamos en el paso 1 en otro que si podemos comunicarle al PIC.1.3

Quemar el PIC

En este paso se grava el programa en el PIC. Mediante una tarjeta electrónica y un poco
software se pasa el programa compilado de la PC al PIC. Son solamente unos cuantos
Cliks y listo.

Es necesario hacer una aclaración en este momento. Frecuentemente le llamamos


Programador de PIC a la tarjeta electrónica que transfiere el programa compilado de la PC
al PIC. Esta bien mientras entendamos que este aparato no va ha pensar por nosotros y que
es incapaz de programar instrucciones por sí mismo.

Probar el Programa

Bueno en este paso se trata de verificar el funcionamiento del programa. Se trata de


comprobar que el PIC se comporta como lo programamos. Si todo salió bien, pues
fantástico y si no comenzamos de nuevo en Editar.

Página 10