Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROCHIP
Índice
Comparación microcontroladores de la
misma serie (16F87X)
Microcontrolador
Característica
PIC 16F873 PIC 16F874 PIC 16F876 PIC 16F877
Frecuencia de operación
20 20 20 20
(MHz)
Memoria FLASH
4K 4K 8K 8K
(Espacios de 14 bits)
Memoria para datos
192 192 368 368
(Bytes)
Memoria EEPROM
128 128 256 256
(Bytes)
Fuentes de Interrupción 13 14 13 14
Índice
MUX Direcciones
Contador Programa
Memoria Programa
Stack RAM
Registro
Registro FSR
Instrucciones
Arquitectura
Registro
STATUS
Decodificador de
Instrucciones y MUX
Unidad de Control
Registro
Unidades de: W
•Reset
•Inicialización Puerto
•Watchdog
•Debugger Paralelo
•Programación
PUERTOS
EEPROM CCP 1,2 SPI USART
Índice
Puertos Regresar
Puerto B
Puerto D
Puerto C
Puerto E
Puerto A
Regresar
Puerto A
Posee 6 bits bi-
bi-direccionales
Se configura en el registro TRISA
Un 1 configura una entrada, un 0 configura una
salida en el pin correspondiente al bit
El registro de datos de entrada/salida es PORTA
El pin RA4 es multiplexado con el Timer
Los pines RA0…RA3 y RA5 son multiplexados
con el ADC
Regresar
Puerto B
Posee 8 bits bi-
bi-direccionales
Se configura en el registro TRISB
Un 1 configura una entrada, un 0 configura una salida en el pin
correspondiente al bit
El registro de datos de entrada/salida es PORTB
Puede activar/desactivar las resistencias internas de Pull Up (Con el
bit RBPU del registro OPTION)
El pull up está normalmente inactivo
Los pines RB7…RB4 pueden usarse como entradas de interrupción
externa por cambio
Las interrupciones se configuran en el bit RBIF del registro INTCON
Uso: Teclado hexadecimal con atención de teclas por interrupción
Regresar
Puerto C
Posee 8 bits bi-
bi-direccionales
Se configura en el registro TRISC
Un 1 configura una entrada, un 0 configura una salida en el pin
correspondiente al bit
El registro de datos de entrada/salida es PORTC
Tiene sus pines de entrada con buffers tipo Schmitt Trigger
Comparte pines con funciones de conexión serial de periféricos
externos (Protocolo I2C para SPI) [RC3:RC4]
Comparte pines con salidas PWM o entradas de comparadores
[RC0:RC2]
Comparte pines con sistema comunicación serial USART [RC7:RC6]
Regresar
Puerto D
Posee 8 bits bi-
bi-direccionales
Se configura en el registro TRISD
Un 1 configura una entrada, un 0 configura una salida
en el pin correspondiente al bit
El registro de datos de entrada/salida es PORTD
Tiene sus pines de entrada con buffers tipo Schmitt
Trigger
El bit PSPMODE del registro TRISE permite usar este
puerto como puerto de expansión de memoria del
microprocesador o para conexión a sistemas
multiprocesador como esclavo con transferencias
paralelas.
Regresar
Puerto E
Posee 3 bits bi-
bi-direccionales
Se configura en el registro TRISE
Un 1 configura una entrada, un 0 configura una
salida en el pin correspondiente al bit
El registro de datos de entrada/salida es PORTE
Son entradas Schmitt Trigger
Sus pines se convierten en señales de control
cuando se configura en modo de expansión de
memoria o en sistemas multiprocesador con
transferencia paralela de datos.
Regresar
Registro W
Registro de trabajo
Recibe los resultados de las operaciones
ejecutadas por la ALU
Puede ser escrito
Se usa para las transferencias indirectas entre
registros y ubicaciones de memoria
Por ejemplo: Puede usarse para transferir datos a la
pila y ejecutar un “Push” o un “Pop”
ALU
Regresar
(Unidad Aritmética
ritmética--Lógica)
Ejecuta las operaciones con los operandos
de entrada
Tiene un registro acumulador “W” donde
se almacenan los resultados
El registro W puede realimentar su valor
como dato de entrada a la ALU
Ejecuta operaciones según el código que
reciba en las entradas de control.
Regresar
Registro STATUS
Ubicado en 03h,83h,103h y 183h
Resume las condiciones en que se encuentra el microcontrolador
Bits:
IRP: Selecciona bancos altos (2 y 3) cuando vale 1 y bancos bajos (1 y 0)
cuando vale 0
RP1 y RP0: Selectores de bancos para acceso directo.
00: Banco 0
01: Banco 1
10: Banco 2
11: Banco 3
#TO: Bit de “Time Out”. Se pone en 0 cuando hay un “RESET”
#PD: Bit de “Power Down”. Se pone en 0 cuando entra en “SLEEP”
Z: Bandera del Cero. Se pone en 1 si el resulatado de la última operación
realizada es un 0.
DC: Bandera de Acarreo Intermedio. Se pone en 1 si hay un carry de los 4 bits
menos segnificativos a los 4 bits más significativos.
C: Bandera de Acarreo. Se pone en 1 si el resultado de una operación excede la
capacidad de 8 bits y requiere de un acarreo.
Regresar
Registro FSR
File Select Register
MUX de direcciones
STACK
Capacidad de 8 niveles de almacenamiento de 13 bits
cada nivel
Es parte de la memoria RAM, pero independiente de la
memoria de datos y de programa
No tiene banderas de “Overflow” o “Underflow”
No existen instrucciones de “Push” o “Pop”
El contador de programa se ingresa/saca de stack
automáticamente cuando se hace un “Call/Return”
Operación de “Buffer circular”: Si se ingresan 8 datos, se
llena el stack, un noveno dato que ingrese desplaza los
contenidos de la pila y elimina el primer dato que se
ingresó a la pila.
Regresar
Contador de Programa
Contador de 13 bits.
Capacidad de direccionar programas de hasta 8k
instrucciones de 14 bits
La ubicación del vector de RESET (0000h) es el
valor del contador de programa cuando la
máquina se inicializa
La ubicación del vector de interrupciones es
(0004h) y funciona como índice para cargar el
contador de programa con el valor de la
localidad de memoria que tiene el código de
programa para atender una interrupción.
Regresar
Memoria de Programa
Almacena la secuencia de instrucciones que corresponde
al programa escrito
Almacena códigos hexadecimales generados en un
archivo *.hex por el compilador o el ensamblador
Consta de páginas de 2kbytes
Se ubica en la parte alta de la memoria, después del
vector de interrupciones
En 16F877 y 16F876 se tienen 4 páginas
En 16F874 y 16F873 se tienen 2 páginas
Es memoria de tipo FLASH
Regresar
Registro de Instrucciones
Registro que almacena la instrucción
siguiente a ejecutar tomada de la
memoria de programa
Envía la instrucción a RAM en casos que
requieren la modificación de algún registro
Envía la instrucción a la unidad de
decodificación para preparase a ejecutar la
siguiente instrucción
Decodificador Instrucciones y
Regresar
Unidad de Control
Recibe la instrucción siguiente a ejecutar
Realiza la decodificación del dato recibido
al código de operación que debe utilizarse
El código de operación se aplica a la ALU,
unidad de RESET, unidad de WDT, etc
según sea la operación
Regresar
Unidad de “Timing”
Es la unidad que transforma la señal del cristal
en una señal de reloj adecuada para el
funcionamiento del sistema
Incluye divisores de frecuencia para generar
señales de reloj de diferentes frecuencias para
los timers y otros elementos que requieren
señales de reloj como el ADC
Genera además la señal de RESET externo
tomada de un pulsador.
Regresar
Timers (0 1 2)
Capacidad de 8 bits Registros de datos en
Lectura y escritura TMR0, TMR1 y TMR2
Prescala de 8 bits EL TMR1 es de 16 bits, y
controlada por software usa los registros TMR1L
Reloj interno o externo con para los 8 bits menos
selección de flanco significativos y TMR1H para
los más significativos
Interrupción por rebaso
activada al cambiar de FFh El TMR2 se usa como base
a 00h de tiempo para el PWM
Los registros de
configuración son T0CON,
T1CON y T2CON
Regresar
SPI
Serial Peripheral Interface
Capture/Compare/PWM
Módulo de captura de 16 bits
Módulo de comparación de 16 bits
Módulo de salida PWM maestro y esclavo
Utiliza los registros CCPR1H y CCPR1L
El modo “Captura” guarda el valor del timer cada vez
que ocurre un evento en el pin de entrada RC2
El modo “Compara” compara el valor del registro CCPR1
con el timer. Cuando son iguales produce un cambio de
estado en el pin RC2.
El modo PWM produce una señal con ciclos de trabajo
variables según el dato de 10 bits del registro CCPR1. La
señal de salida se ubica en el pin RC2
Regresar
EEPROM
Puede habilitarse/deshabilitarse para ser usada como
memoria de almacenamiento secundario (Como el disco duro en
un PC) o como memoria de programa con el registro
EEPGD
Se configura con los registros EECON1 y EECON2
Si se usa como memoria de datos, en el registro EEDATA
se escriben/leen los datos.
Requiere de señales de control de flujo de información
como EEWR para escritura y EERD para lectura
Capacidad máxima de 256 bytes
Regresar
Puerto Paralelo
Ejecuta transferencias de 8 bits
Utiliza 3 señales adicionales de control
(RD/WR/CS)
Se activa con el bit PSPIE del registro PIE1
Usa la bandera PSPIF del registro PIR1
para manejo de interrupción
Solo tolera la conexión a sistemas
multiprocesador como esclavo
Organización de Memoria
Índice
Regresar
Memoria de programa
Esquema general:
-Posee un contador de 13 bits
-Maneja direccionamiento 8Kx14 ó 4Kx14
-Vector de reset se ubica en 00H
-Vector de interrupción ubicado en 04H
Mapa de memoria
Regresar
PIC 16F876/877
Regresar
Status
Regresar
OPTION_REG REGISTER
Regresar
INTCON REGISTER
Regresar
PIE1 REGISTER
Set de Instrucciones
Índice
Conclusiones
Arquitectura RISC de 35 instrucciones.
Operaciones de duración igual, excepto saltos.
Compatible con otras familias de PIC.
Pila de 8 niveles y 14 fuentes de interrupción.
Protección de código programable.
Frecuencia de operación programable.
Comunicación serie
ADC´
ADC ´s de 10 bits de Resolución
Índice