todas las categorias

Carro 0 artículo

Carrito de compras 0 artículo

Parte de MFR # Cantidad
ENVIAR (0)

Seleccione el idioma

Idioma actual

español

  • English
  • Deutsch
  • Italia
  • Français
  • 한국의
  • русский
  • Svenska
  • Nederland
  • español
  • Português
  • polski
  • Suomi
  • Gaeilge
  • Slovenská
  • Slovenija
  • Čeština
  • Melayu
  • Magyarország
  • Hrvatska
  • Dansk
  • românesc
  • Indonesia
  • Ελλάδα
  • Български език
  • Afrikaans
  • IsiXhosa
  • isiZulu
  • lietuvių
  • Maori
  • Kongeriket
  • Монголулс
  • O'zbek
  • Tiếng Việt
  • हिंदी
  • اردو
  • Kurdî
  • Català
  • Bosna
  • Euskera
  • العربية
  • فارسی
  • Corsa
  • Chicheŵa
  • עִבְרִית
  • Latviešu
  • Hausa
  • Беларусь
  • አማርኛ
  • Republika e Shqipërisë
  • Eesti Vabariik
  • íslenska
  • မြန်မာ
  • Македонски
  • Lëtzebuergesch
  • საქართველო
  • Cambodia
  • Pilipino
  • Azərbaycan
  • ພາສາລາວ
  • বাংলা ভাষার
  • پښتو
  • malaɡasʲ
  • Кыргыз тили
  • Ayiti
  • Қазақша
  • Samoa
  • සිංහල
  • ภาษาไทย
  • Україна
  • Kiswahili
  • Cрпски
  • Galego
  • नेपाली
  • Sesotho
  • Тоҷикӣ
  • Türk dili
  • ગુજરાતી
  • ಕನ್ನಡkannaḍa
  • मराठी
CasaBlogPIC16F877A: Diagrama de pines, Hoja de datos, Programación y Proyectos

COMPONENTES ELECTRÓNICOS EN STOCK.
COTIZACIONES RÁPIDAS.

Circuitos integrados, dispositivos de potencia y componentes pasivos
Soporte de abastecimiento inmediato

COTIZAR AHORA

PIC16F877A: Diagrama de pines, Hoja de datos, Programación y Proyectos

Tiempo: 25/08/2026

Navegar: 847

El PIC16F877A es un microcontrolador Flash de 8 bits de Microchip diseñado para control y monitoreo embebido. Disponible en paquetes de 40 y 44 pines, soporta frecuencias de reloj de hasta 20 MHz y proporciona 33 pines de I/O para conectar sensores, interruptores, pantallas, alarmas, motores y módulos de comunicación. Los programas se pueden desarrollar en C utilizando MPLAB X IDE y el compilador XC8, y luego cargarlos a través de la Programación Serial en el Circuito (ICSP) con un programador compatible como un PICkit. El PIC16F877A sigue en producción, aunque Microchip lista el PIC16F18877 como el dispositivo más nuevo. Este artículo explica su diagrama de pines, especificaciones, pruebas prácticas, programación, resultados del mundo real, problemas comunes y alternativas.

Catálogo

PIC16F877A Microcontroller

Figura 1. Microcontrolador PIC16F877A

Diagrama de pines del microcontrolador PIC16F877A

 PIC16F877A Microcontroller Pinout

Figura 2. Diagrama de pines del microcontrolador PIC16F877A

Pin
Nombre del pin
Funciones principales
1
MCLR/VPP
Entrada de reinicio maestro activo-bajo y entrada de voltaje de programación.
2
RA0/AN0
I/O digital del puerto A y canal de entrada analógica ADC 0.
3
RA1/AN1
I/O digital del puerto A y canal de entrada analógica ADC 1.
4
RA2/AN2/VREF−/CVREF
I/O digital, canal ADC 2, entrada de referencia baja de ADC y salida de referencia del comparador.
5
RA3/AN3/VREF+
I/O digital, canal ADC 3 y entrada de referencia alta de ADC.
6
RA4/T0CKI/C1OUT
I/O digital, entrada de reloj externo para Timer0 y salida del comparador 1. RA4 utiliza una salida de drenaje abierto.
7
RA5/AN4/SS/C2OUT
I/O digital, canal ADC 4, entrada activa-baja de selección de esclavo SPI y salida del comparador 2.
8
RE0/RD/AN5
I/O digital del puerto E, control de lectura del puerto esclavo paralelo activo-bajo y canal de entrada ADC 5.
9
RE1/WR/AN6
I/O digital del puerto E, control de escritura del puerto esclavo paralelo activo-bajo y canal de entrada ADC 6.
10
RE2/CS/AN7
I/O digital del puerto E, selección de chip del puerto esclavo paralelo activa-baja y canal de entrada ADC 7.
11
VDD
Conexión de alimentación positiva.
12
VSS
Conexión a tierra.
13
OSC1/CLKI
Entrada de cristal, resonador o reloj externo.
14
OSC2/CLKO
Salida de cristal o resonador. En modo RC, CLKO produce una cuarta parte de la frecuencia del oscilador.
15
RC0/T1OSO/T1CKI
Puerto C E/S digital, salida del oscilador del Timer1 y entrada del reloj externo del Timer1.
16
RC1/T1OSI/CCP2
E/S digital, entrada del oscilador del Timer1 y conexión de captura, comparación o PWM de CCP2.
17
RC2/CCP1
E/S digital y conexión de captura, comparación o PWM de CCP1.
18
RC3/SCK/SCL
E/S digital, entrada/salida del reloj SPI y entrada/salida del reloj I²C.
19
RD0/PSP0
Puerto D E/S digital y bit de datos 0 del Puerto Esclavo Paralelo.
20
RD1/PSP1
Puerto D E/S digital y bit de datos 1 del Puerto Esclavo Paralelo.
21
RD2/PSP2
Puerto D E/S digital y bit de datos 2 del Puerto Esclavo Paralelo.
22
RD3/PSP3
Puerto D E/S digital y bit de datos 3 del Puerto Esclavo Paralelo.
23
RC4/SDI/SDA
E/S digital, entrada de datos SPI y entrada/salida de datos I²C.
24
RC5/SDO
E/S digital y salida de datos SPI.
25
RC6/TX/CK
E/S digital, transmisión asíncrona USART y entrada/salida de reloj síncrono.
26
RC7/RX/DT
E/S digital, recepción asíncrona USART y entrada/salida de datos síncrona.
27
RD4/PSP4
Puerto D E/S digital y bit de datos 4 del Puerto Esclavo Paralelo.
28
RD5/PSP5
Puerto D E/S digital y bit de datos 5 del Puerto Esclavo Paralelo.
29
RD6/PSP6
Puerto D E/S digital y bit de datos 6 del Puerto Esclavo Paralelo.
30
RD7/PSP7
Puerto D E/S digital y bit de datos 7 del Puerto Esclavo Paralelo.
31
VSS
Conexión a tierra.
32
VDD
Conexión de alimentación positiva.
33
RB0/INT
Puerto B E/S digital y entrada de interrupción externa.
34
RB1
Puerto B E/S digital.
35
RB2
Puerto B E/S digital.
36
RB3/PGM
E/S digital y entrada para habilitar la programación ICSP de bajo voltaje.
37
RB4
E/S digital con capacidad de interrupción por cambio.
38
RB5
E/S digital con capacidad de interrupción por cambio.
39
RB6/PGC
E/S digital, interrupción por cambio, reloj de programación ICSP y reloj de depuración.
40
RB7/PGD
E/S digital, interrupción por cambio, datos de programación ICSP y datos de depuración.

Ambos pines VDD y ambos pines VSS deben estar conectados. Los pines de PORTB soportan resistencias de pull-up débiles controladas por software, mientras que RB4–RB7 soportan interrupciones por cambio. Los pines capaces de funcionar como analógicos deben configurarse correctamente antes de ser utilizados como E/S digital.

Números de parte y paquetes ordenables PIC16F877A

El sufijo de temperatura identifica el rango de funcionamiento: I significa industrial, mientras que E significa extendido. El código de paquete después de la barra identifica ya sea P para PDIP o PT para TQFP.

Número de parte ordenable
Tipo de paquete
Número de pines
Temperatura de funcionamiento
PIC16F877A-I/P
PDIP
40
−40 °C a +85 °C, industrial
PIC16F877A-I/PT
TQFP
44
−40 °C a +85 °C, industrial
PIC16F877A-E/P
PDIP
40
−40 °C a +125 °C, extendido
PIC16F877A-E/PT
TQFP
44
−40 °C a +125 °C, extendido

Todas las cuatro versiones proporcionan la misma memoria de programa de 8K × 14 palabras, 368 bytes de SRAM, 256 bytes de EEPROM y 33 pines de E/S. Estas especificaciones se mencionan una vez en lugar de repetirse en la tabla.

Arquitectura y Principio de Funcionamiento del PIC16F877A

Arquitectura del PIC16F877A

El PIC16F877A utiliza una CPU RISC de 8 bits con arquitectura Harvard. Su bus de programa de 14 bits y bus de datos de 8 bits son separados, permitiendo que la CPU recupere instrucciones mientras accede a datos. Contiene 8K × 14 bits de memoria de programa Flash, 368 bytes de RAM y 256 bytes de EEPROM de datos.

El contador de programa de 13 bits selecciona instrucciones, mientras que la pila de hardware de ocho niveles almacena direcciones de retorno para subrutinas e interrupciones. La ALU, el registro W y el registro STATUS procesan datos. PORTA a PORTE proporcionan 33 pines de E/S.

PIC16F877A Architecture Block Diagram. Source: Microchip PIC16F87XA Data Sheet, Figure 1-2.

Figura 3. Diagrama de Bloque de la Arquitectura del PIC16F877A

Ciclo de Instrucción del PIC16F877A

El reloj del oscilador se divide en cuatro fases, Q1 a Q4. Por lo tanto, el reloj de instrucción funciona a , y un ciclo de instrucción dura. A 20 MHz, esto equivale a 200 ns. Una tubería de dos etapas recupera la siguiente instrucción mientras se ejecuta la anterior. La mayoría de las instrucciones toman un ciclo, mientras que las ramas requieren dos ciclos porque la tubería debe ser vaciada.

 PIC16F877A Instruction Cycle

Figura 4. Ciclo de Instrucción del PIC16F877A

Interrupción y operación de periféricos

Cuando ocurre una interrupción habilitada, la CPU almacena la dirección de retorno en la pila de hardware, borra el bit global de habilitación de interrupciones y salta a la dirección 0004h. La rutina de interrupción verifica y borra la bandera relevante antes de que RETFIE restablezca la ejecución normal. El firmware debe guardar registros importantes como W, STATUS y PCLATH cuando sea necesario.

Los temporizadores, ADC, módulos CCP/PWM, USART, SPI, I²C, comparadores y el puerto esclavo paralelo se controlan a través de registros de función especial. Estos periféricos pueden operar junto con la CPU, establecer banderas de estado y generar interrupciones cuando están habilitados.

Especificaciones técnicas del PIC16F877A

Especificación
PIC16F877A
Arquitectura de la CPU
RISC de 8 bits
Frecuencia máxima del reloj
20 MHz
Rendimiento máximo
5 MIPS
Memoria de programa
8K × 14-bit palabras
SRAM
368 bytes
EEPROM de datos
256 bytes
Pines de I/O
33
Voltaje de operación
4.0–5.5 V
ADC
10-bit, 8 canales
Temporizadores
Dos de 8 bits y uno de 16 bits
Módulos CCP/PWM
2 módulos, resolución PWM de hasta 10 bits
Interfaces de comunicación
USART, SPI e I²C
Fuentes de interrupción
15
Comparadores
2
Opciones de paquete
Paquetes PDIP de 40 pines y de montaje en superficie de 44 pines
Temperatura de operación
−40°C a +85°C o −40°C a +125°C, dependiendo del modelo

Procedimiento mínimo de circuito y prueba del PIC16F877A

 PIC16F877A minimum operating circuit, ICSP header and RD0 test LED

Figura 5. Circuito mínimo de operación del PIC16F877A, encabezado ICSP y LED de prueba RB0

La Figura 5 muestra las conexiones mínimas requeridas para operar y programar un PIC16F877A de 40 pines. Ambos pines VDD, 11 y 32, se conectan a la línea regulada de +5 V, mientras que los pines VSS 12 y 31 se conectan a tierra. Se debe colocar un capacitor cerámico de 100 nF cerca de cada par VDD–VSS. El capacitor opcional de 4.7–10 µF cerca de J2 proporciona filtrado adicional de la alimentación. El LED de prueba RB0 coincide con el ejemplo de programación en C6.

El pin MCLR/VPP está conectado a +5 V a través de una resistencia de 10 kΩ. Un cristal de corte paralelo de 20 MHz se conecta entre OSC1 en el pin 13 y OSC2 en el pin 14. Cada pin de oscilador se conecta a tierra a través de un capacitor de carga. Los valores ilustrados de 22 pF son valores iniciales; los valores finales deben seguir las especificaciones de capacitancia de carga del fabricante del cristal. La configuración del oscilador debe establecerse en HS.

El encabezado ICSP se conecta de la siguiente manera:

Señal ICSP
Conexión del PIC16F877A
MCLR/VPP
Pin 1
VDD objetivo/sentido
Línea de +5 V
VSS
Tierra
PGD
RB7, pin 40
PGC
RB6, pin 39
PGM/AUX
RB3, pin 36

Para ICSP de alta tensión, se utilizan los pines 1–5 y se debe deshabilitar el bit de configuración LVP. Si se usa programación de baja tensión, RB3/PGM debe permanecer conectado y no se puede usar como una salida normal. Solo una fuente debe alimentar el circuito a la vez: o J2 o el PICkit.

RB0 en el pin 33 activa el LED de prueba a través de una resistencia limitadora de corriente de 470 Ω. Conecte RB0 a la resistencia, conecte la resistencia al ánodo del LED y conecte el cátodo del LED a VSS. El LED se enciende cuando RB0 está alto.

Procedimiento de prueba propuesto

• Con la alimentación desconectada, inspeccione el cableado, las conexiones del capacitor, el cristal, la polaridad del LED y la orientación del IC.

• Verifique que la línea de +5 V no esté en cortocircuito con tierra.

• Aplique una alimentación regulada y limitada a +5 V. Confirme que ambos pares VDD–VSS reciban el voltaje correcto.

• Conecte el programador ICSP y seleccione el PIC16F877A. Configure FOSC = HS y, para ICSP de alta tensión, LVP = APAGADO.

• Programa y verifica el ejemplo C6, que configura RB0 como una salida y cambia su estado cada 500 ms.

• Aplique alimentación y observe el LED. Un destello repetido es la indicación esperada de que los circuitos de alimentación, reinicio, oscilador, programación y salida RB0 están funcionando juntos.

Nota: Este es solo un procedimiento de verificación propuesto. No se reclama ninguna prueba física o resultado medido. Cualquier prueba reportada debe identificar la placa, firmware, fuente de alimentación, instrumentos, configuraciones de sonda y valores medidos.

Programación del PIC16F877A con MPLAB y XC8

El PIC16F877A se puede programar en C utilizando MPLAB X IDE y el compilador MPLAB XC8. MPLAB X gestiona el proyecto y la herramienta de programación, mientras que XC8 genera el archivo HEX.

Este ejemplo está dirigido a MPLAB X IDE v6.35 y MPLAB XC8 v4.00. No se realizó ninguna compilación local ni prueba de hardware mientras se preparaba este ejemplo, por lo que no se reclama un resultado de compilación exitoso o medido. Estas eran las versiones oficiales actuales a partir de agosto de 2026. Si se utiliza PICkit 3, tenga en cuenta que MPLAB X v6.20 es su última versión compatible.

• Instalar MPLAB X IDE y MPLAB XC8.

• Seleccionar Archivo > Nuevo Proyecto > Microchip Embedded > Proyecto Independiente.

• Seleccionar PIC16F877A, el programador conectado y XC8.

• Crear un archivo fuente main.c e ingresar el siguiente programa.

• Compilar el proyecto, luego seleccionar Hacer y Programar Dispositivo.

Conectar el LED de prueba de la siguiente manera:

RB0 (pin 33) → Resistor de 330 Ω–1 kΩ → ánodo del LED → cátodo del LED → VSS

#include

#define _XTAL_FREQ 20000000UL

#pragma config FOSC = HS

#pragma config WDTE = OFF

#pragma config PWRTE = ON

#pragma config BOREN = ON

#pragma config LVP = OFF

#pragma config CPD = OFF

#pragma config WRT = OFF

#pragma config CP = OFF

void main(void)

{

PORTBbits.RB0 = 0;

TRISBbits.TRISB0 = 0;

while (1)

{

PORTBbits.RB0 = 1;

__delay_ms(500);

PORTBbits.RB0 = 0;

__delay_ms(500);

}

}

Para la programación ICSP, conectar MCLR/VPP, RB6/PGC, RB7/PGD, VDD y VSS. La configuración FOSC = HS y el valor de _XTAL_FREQ deben coincidir con el cristal de 20 MHz instalado.

Información de la versión: Microchip Technology Inc., MPLAB X IDE, v6.35, lanzado el 24 de julio de 2026; y MPLAB XC8 Compiler, v4.00, lanzado el 8 de julio de 2026. Accedido el 24 de agosto de 2026.

Estudios de Caso Publicados sobre el Proyecto PIC16F877A

Los siguientes estudios de caso resumen resultados reportados por investigadores independientes.

Estudio de Seguimiento Solar Publicado

Manju y Katoch (2014) desarrollaron un rastreador solar de un solo eje PIC16F877A utilizando tres LDR, un motor paso a paso con engranajes, detección de voltaje y corriente, un LCD y comunicación RS-232.

Durante una prueba de un día en NIT Hamirpur el 19 de febrero de 2014, los investigadores registraron nueve comparaciones horarias bajo niveles de irradiancia de 96.423–810.295 W/m². Sumarizaron las lecturas de potencia muestreadas como 4.6388 W para el panel fijo y 5.5071 W para el rastreador, informando una mejora del 18.7167%.

Este resultado de terceros se basó en un día y no incluyó incertidumbre, pruebas en días repetidos o la energía operativa del rastreador. Debido a que las lecturas de potencia instantánea se sumaron en lugar de medirse la energía en vatios-hora, la mejora reportada no debe interpretarse como una ganancia de energía diaria universal.

Estudio de Monitoreo de Temperatura Remoto Publicado

Gharghan (2017) desarrolló un sistema de monitoreo de temperatura PIC16F877A utilizando un sensor LM35, LCD, zumbador y módem GSM SmartG100. El controlador medía periódicamente la temperatura y enviaba alertas SMS para condiciones urgentes.

La comparación publicada con un termómetro digital reportó un error absoluto medio de 0.205°C y un valor R² de 0.987. Utilizando corrientes activas y en modo de sueño medidas, el estudio calculó una corriente promedio de 3.087 mA con su algoritmo de sueño/despertar, comparado con 315.138 mA durante la operación continua. Para una batería de 1,000 mAh, el investigador estimó aproximadamente 324 horas de operación en lugar de tres horas.

Estos hallazgos de terceros no se reprodujeron aquí. El artículo no reportó claramente el número de pacientes o ensayos de entrega de SMS, y la vida útil de la batería estimada se calculó en lugar de confirmarse a través de una prueba de descarga completa. El prototipo demuestra viabilidad técnica, pero no constituye una validación clínica.

Funciones y Aplicaciones del PIC16F877A

• Detección analógica: El ADC de ocho canales y 10 bits puede monitorear temperatura, luz, presión, voltaje y otras señales analógicas.

• Control PWM y de motores: Dos módulos CCP/PWM pueden regular la velocidad del motor, el brillo de los LED, bombas, ventiladores y válvulas a través de circuitos de controlador adecuados.

• Comunicación serie: Las interfaces USART, SPI e I²C admiten comunicación con computadoras, sensores, módulos GSM o GPS, EEPROMs y relojes en tiempo real.

• Interfaz de visualización: Sus 33 pines de E/S de función compartida pueden conectarse a LCD, displays de siete segmentos, teclados, interruptores, LED y zumbadores.

• Almacenamiento de datos: La EEPROM de 256 bytes retiene configuraciones, valores de calibración y pequeños registros después de que se corta la energía.

• Temporización: Tres temporizadores de hardware y funciones de interrupción admiten retrasos, medición de pulsos, conteo de eventos y respuestas rápidas a eventos externos.

• Protección del sistema: El temporizador de vigilancia, el reinicio por caída de tensión, el temporizador de encendido y la entrada MCLR ayudan al controlador a recuperarse de fallos de programa o de voltaje de suministro.

Estas funciones son adecuadas para controladores de nivel de agua, alarmas, registradores de datos, controladores de temperatura y pequeños sistemas de automatización. Los motores, relés y otras cargas de alta corriente requieren controladores externos. El PIC16F877A tampoco tiene Wi-Fi, Bluetooth o USB incorporados.

Problemas Comunes del PIC16F877A y Soluciones

Problema
Causa probable
Solución recomendada
El microcontrolador no arranca
Alimentación incorrecta, MCLR flotante o reloj missing
Verifica ambos pares VDD–VSS, usa una fuente regulada, añade una resistencia pull-up de 10 kΩ en MCLR y verifica el oscilador externo
El programador no puede detectar el IC
Cableado ICSP incorrecto o pines de programación muy cargados
Verifica las conexiones MCLR/VPP, RB6/PGC, RB7/PGD, VDD y VSS
El programa se ejecuta a la velocidad incorrecta
La configuración del oscilador no coincide con el hardware
Selecciona la configuración de oscilador correcta y establece _XTAL_FREQ a la frecuencia de reloj real
PORTA o PORTE no funciona digitalmente
Los pines permanecen configurados como entradas analógicas
Configura el registro ADCON1 para las funciones digitales o analógicas requeridas
RB3 no funciona como GPIO
La programación de bajo voltaje está habilitada
Desactiva el bit de configuración LVP cuando RB3/PGM es necesario como GPIO normal
RA4 no produce una salida alta
RA4 utiliza una estructura de salida de drenaje abierto
Añade una resistencia pull-up externa a RA4
Las lecturas de ADC son inestables
Fuente ruidosa, mala conexión a tierra o tiempo de adquisición insuficiente
Añade desacoplamiento, utiliza una referencia estable, reduce la impedancia de la fuente y permite suficiente tiempo de adquisición
Los datos UART están corruptos
Velocidad de baudios o configuración de oscilador incorrectas
Recalcula SPBRG utilizando la frecuencia de reloj real y confirma las tasas de baudios coincidentes
La comunicación I²C falla
Faltan resistencias pull-up o dirección de pin incorrecta
Añade pull-ups a RC3/SCL y RC4/SDA y configura ambos pines correctamente
Falta la salida PWM
CCP o Timer2 no están configurados correctamente
Configura el módulo CCP, PR2, preescalador de Timer2 y pin de salida PWM
Ocurren reinicios aleatorios
Caídas de alimentación, ruido eléctrico, temporizador Watchdog o MCLR inestable
Mejora el desacoplamiento, verifica la configuración de reinicio y protege MCLR del ruido
El motor o relé causa reinicios
La carga está conectada directamente a un pin GPIO
Usa un transistor o controlador MOSFET y añade un diodo de flyback a través de cargas inductivas
La corriente de sueño es demasiado alta
Cargas externas, entradas flotantes o el programador permanece conectado
Desconecta cargas innecesarias, establece pines no utilizados a niveles definidos y retira el programador durante la medición

PIC16F877A Comparado con Alternativas

Característica
PIC16F877A
PIC16F887
PIC16F18877
ATmega328P
Arquitectura
PIC clásico de rango medio de 8 bits
PIC clásico de rango medio de 8 bits
PIC mejorado de rango medio de 8 bits
AVR de 8 bits
Frecuencia máxima del reloj y tasa de instrucciones
20 MHz, 5 MIPS a 4.0–5.5 V
20 MHz, 5 MIPS a 4.5–5.5 V; voltajes de suministro más bajos requieren tasas de reloj más bajas
32 MHz, 8 MIPS a 2.5–5.5 V; hasta 16 MHz a 2.3–5.5 V
20 MHz, hasta 20 MIPS a 4.5–5.5 V; 10 MHz a 2.7–5.5 V; 4 MHz a 1.8–5.5 V
Memoria del programa
8K × 14-bit words
8K × 14-bit words
32K × 14-bit words
32 KB
SRAM
368 bytes
368 bytes
4,096 bytes
2,048 bytes
EEPROM
256 bytes
256 bytes
256 bytes
1,024 bytes
Pines de E/S
33
35
Hasta 36
23
ADC
10 bits, 8 canales
10 bits, 14 canales
ADC de 10 bits con cálculo, hasta 35 canales
10 bits, 6 canales en PDIP o 8 en TQFP/QFN
Oscilador principal interno
No
Sí, hasta 8 MHz
Sí, hasta 32 MHz
Sí, 8 MHz
Voltaje de operación
4.0–5.5 V
2.0–5.5 V
2.3–5.5 V
1.8–5.5 V
Comunicación
USART, SPI e I²C
EUSART, SPI e I²C
EUSART, dos módulos SPI y dos módulos I²C
USART, SPI y TWI/I²C
Principal ventaja
Simple y ampliamente documentado
Más canales de ADC y un oscilador interno
Más memoria y periféricos modernos
Amplio soporte para Arduino y AVR
Principal limitación
RAM muy limitada y sin oscilador principal interno
Memoria limitada y arquitectura más antigua
No es un reemplazo directo para diseños de PIC16F877A
No recomendado para nuevos diseños
Mejor adecuado para
Placas existentes y proyectos de aprendizaje
Proyectos de control simples de 40 pines
Nuevos productos basados en PIC
Proyectos existentes de Arduino o AVR

Microchip identifica el PIC16F18877 como el dispositivo más nuevo para el PIC16F877A, pero la migración requiere verificación de firmware, periféricos y disposición de pines.




Referencias Técnicas

• Microchip Technology Inc. (2013). Hoja de Datos del PIC16F87XA (DS39582C).

• Microchip Technology Inc. (2026). Guía del Usuario del Compilador MPLAB XC8 para MCU PIC (DS50002737L).

• Microchip Technology Inc. (2021). Hoja de Datos del PIC16(L)F18857/77 (DS40001825F).

• Hoja de Datos del PIC16F87XA de Microchip, DS39582C; Especificación de Programación Flash del PIC16F87XA, DS39589B.

• Manju, S., y Katoch, S. S. (2014). “Diseño de un Sistema de Seguimiento Solar Fotovoltaico Basado en Controlador de Interfaz Periférica.” Revista Internacional de Ingeniería y Tecnología Actual, 4(3), 1800–1805.

• Gharghan, S. K. (2017). “Sistema de Monitoreo Remoto de Temperatura Eficiente en Energía para Pacientes Basado en Módem GSM y Microcontrolador.” Revista de Comunicaciones, 12(8), 433–442.






Preguntas Frecuentes [FAQ]

1. ¿Por qué se lista la memoria del programa como 8K × 14 bits en lugar de 8 KB?

El PIC16F877A almacena instrucciones en palabras de 14 bits. Proporciona 8,192 palabras de instrucción, equivalentes a aproximadamente 14.3 KB de almacenamiento Flash físico. No debe ser descrito simplemente como 8 KB.

2. ¿Se puede actualizar el firmware sin un programador ICSP?

Sí, pero primero debe instalarse un cargador de arranque compatible a través de ICSP. El cargador de arranque puede recibir nuevo firmware a través de USART, aunque utiliza parte de la memoria de programa disponible.

3. ¿Qué tan preciso es el ADC de 10 bits?

Con una referencia de 5.0 V, el tamaño del paso ideal del ADC es de aproximadamente 4.88 mV. La precisión real también depende de la estabilidad de la referencia, el ruido eléctrico, la impedancia de la fuente, el tiempo de adquisición y la calibración.

4. ¿Puede el ADC medir voltajes superiores a 5 V?

No directamente. Utilice un divisor de voltaje correctamente calculado, un buffer o un circuito de acondicionamiento de señal para mantener la entrada del ADC dentro de su rango de voltaje de referencia. También puede ser necesaria protección de entrada.

5. ¿Puede el PIC16F877A ejecutar algoritmos de control PID?

Sí, especialmente para sistemas relativamente lentos como control de temperatura, velocidad y nivel. La aritmética de punto fijo suele ser preferible porque los cálculos de punto flotante requieren más tiempo de procesamiento y memoria de programa.

6. ¿Cómo se pueden registrar cantidades mayores de datos?

La EEPROM interna de 256 bytes es adecuada solo para configuraciones y registros pequeños. Use EEPROM externa, FRAM o una tarjeta SD para registros más grandes, y aplique nivelación de desgaste cuando los datos se escriben con frecuencia.

7. ¿Puede el PIC16F877A ejecutar algoritmos de control PID?

Sí, especialmente para sistemas relativamente lentos como control de temperatura, velocidad y nivel. La aritmética de punto fijo suele ser preferible porque los cálculos de punto flotante requieren más tiempo de procesamiento y memoria de programa.

8. ¿Los bits de protección del código aseguran completamente el firmware?

Los bits de configuración CP y CPD bloquean la lectura normal de programa y memoria de datos a través de herramientas de programación estándar. Sin embargo, no garantizan protección contra métodos avanzados de extracción física.

Artículo relacionado

Envíos de RFQ en línea: Respuestas rápidas, mejores precios!

RFQ