Deutsch
Zeit: 2026/08/25
Durchsuchen: 810

Abbildung 1. PIC16F877A Mikrocontroller

Abbildung 2. PIC16F877A Mikrocontroller Pinbelegung
| Pin |
Pinname |
Hauptfunktionen |
| 1 |
MCLR/VPP |
Aktive-negativ Master-Reset-Eingang und Programmier-Spannungseingang. |
| 2 |
RA0/AN0 |
Port A digitales I/O und ADC analoger Eingangskanal 0. |
| 3 |
RA1/AN1 |
Port A digitales I/O und ADC analoger Eingangskanal 1. |
| 4 |
RA2/AN2/VREF−/CVREF |
Digital I/O, ADC Kanal 2, niedriger ADC Referenz-Eingang und Komparator Referenz-Ausgang. |
| 5 |
RA3/AN3/VREF+ |
Digital I/O, ADC Kanal 3 und hoher ADC Referenz-Eingang. |
| 6 |
RA4/T0CKI/C1OUT |
Digital I/O, Timer0 externe Takt-Eingang und Komparator 1 Ausgang. RA4 verwendet einen Open-Drain-Ausgang. |
| 7 |
RA5/AN4/SS/C2OUT |
Digital I/O, ADC Kanal 4, aktive-negative SPI Slave-Auswahl und Komparator 2 Ausgang. |
| 8 |
RE0/RD/AN5 |
Port E digitales I/O, aktive-negative Parallel-Slave-Port Lese-Steuerung und ADC Kanal 5. |
| 9 |
RE1/WR/AN6 |
Port E digitales I/O, aktive-negative Parallel-Slave-Port Schreib-Steuerung und ADC Kanal 6. |
| 10 |
RE2/CS/AN7 |
Port E digitales I/O, aktive-negative Parallel-Slave-Port Chip-Auswahl und ADC Kanal 7. |
| 11 |
VDD |
Positive Stromversorgungsanschluss. |
| 12 |
VSS |
Erdungsanschluss. |
| 13 |
OSC1/CLKI |
Kristall, Resonator oder externer Takt-Eingang. |
| 14 |
OSC2/CLKO |
Kristall- oder Resonator-Ausgang. Im RC-Modus gibt CLKO ein Viertel der Oszillatorfrequenz aus. |
| 15 |
RC0/T1OSO/T1CKI |
Port C digitale I/O, Timer1 Oszillatorausgang und Timer1 externe Taktinput. |
| 16 |
RC1/T1OSI/CCP2 |
Digitale I/O, Timer1 Oszillatoreingang und CCP2 Erfassung, Vergleich oder PWM Verbindung. |
| 17 |
RC2/CCP1 |
Digitale I/O und CCP1 Erfassung, Vergleich oder PWM Verbindung. |
| 18 |
RC3/SCK/SCL |
Digitale I/O, SPI Takt Eingang/Ausgang und I²C Takt Eingang/Ausgang. |
| 19 |
RD0/PSP0 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 0. |
| 20 |
RD1/PSP1 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 1. |
| 21 |
RD2/PSP2 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 2. |
| 22 |
RD3/PSP3 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 3. |
| 23 |
RC4/SDI/SDA |
Digitale I/O, SPI Daten Eingang und I²C Daten Eingang/Ausgang. |
| 24 |
RC5/SDO |
Digitale I/O und SPI Daten Ausgang. |
| 25 |
RC6/TX/CK |
Digitale I/O, USART asynchroner Versand und synchroner Takt Eingang/Ausgang. |
| 26 |
RC7/RX/DT |
Digitale I/O, USART asynchroner Empfang und synchroner Daten Eingang/Ausgang. |
| 27 |
RD4/PSP4 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 4. |
| 28 |
RD5/PSP5 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 5. |
| 29 |
RD6/PSP6 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 6. |
| 30 |
RD7/PSP7 |
Port D digitale I/O und Parallel Slave Port Daten-Bit 7. |
| 31 |
VSS |
Masseanschluss. |
| 32 |
VDD |
Positiver Spannungsversorgungsanschluss. |
| 33 |
RB0/INT |
Port B digitale I/O und externer Interrupt Eingang. |
| 34 |
RB1 |
Port B digitale I/O. |
| 35 |
RB2 |
Port B digitale I/O. |
| 36 |
RB3/PGM |
Digitale I/O und Eingang zur Aktivierung der Niederspannungs-ICSP-Programmierung. |
| 37 |
RB4 |
Digitale I/O mit Interrupt-bei-Änderung-Funktion. |
| 38 |
RB5 |
Digitale I/O mit Interrupt-bei-Änderung-Funktion. |
| 39 |
RB6/PGC |
Digitale I/O, Interrupt-bei-Änderung, ICSP Programmierung Takt und Debugging Takt. |
| 40 |
RB7/PGD |
Digitale I/O, Interrupt-bei-Änderung, ICSP Programmierung Daten und Debugging Daten. |
Beide VDD-Pins und beide VSS-Pins müssen angeschlossen werden. Die PORTB-Pins unterstützen softwaregesteuerte schwache Pull-ups, während RB4–RB7 Interrupt-bei-Änderung unterstützen. Analog-fähige Pins müssen korrekt konfiguriert werden, bevor sie als digitale I/O verwendet werden.
Die Temperatursuffix identifiziert den Betriebsbereich: I steht für industriell, während E für erweitert steht. Der Paketcode nach dem Schrägstrich identifiziert entweder P für PDIP oder PT für TQFP.
| Bestellbare Teilenummer |
Gehäusetyp |
Pin-Anzahl |
Betriebstemperatur |
| PIC16F877A-I/P |
PDIP |
40 |
−40 °C bis +85 °C, industriell |
| PIC16F877A-I/PT |
TQFP |
44 |
−40 °C bis +85 °C, industriell |
| PIC16F877A-E/P |
PDIP |
40 |
−40 °C bis +125 °C, erweitert |
| PIC16F877A-E/PT |
TQFP |
44 |
−40 °C bis +125 °C, erweitert |
Alle vier Versionen bieten denselben 8K × 14-Wort Programmspeicher, 368 Byte SRAM, 256 Byte EEPROM und 33 I/O-Pins. Diese Spezifikationen werden daher einmal angegeben, anstatt in der Tabelle wiederholt zu werden.
Der PIC16F877A verwendet eine 8-Bit RISC-CPU mit Harvard-Architektur. Sein 14-Bit Programmbus und 8-Bit Datenbus sind getrennt, was es der CPU ermöglicht, Anweisungen abzurufen, während Daten zugegriffen werden. Er enthält 8K × 14-Bit Flash-Programmspeicher, 368 Byte RAM und 256 Byte Daten-EEPROM.
Der 13-Bit Programmzähler wählt Anweisungen aus, während der achtstufige Hardware-Stack Rücksprungadressen für Unterprogramme und Interrupts speichert. Die ALU, das W-Register und das STATUS-Register verarbeiten Daten. PORTA bis PORTE bieten 33 I/O-Pins.

Abbildung 3. Blockdiagramm der PIC16F877A Architektur
Der Oszillator-Takt wird in vier Phasen unterteilt, Q1 bis Q4. Daher läuft der Befehltakt bei , und ein Befehlszyklus dauert. Bei 20 MHz entspricht dies 200 ns. Eine zweistufige Pipeline ruft den nächsten Befehl ab, während der vorherige ausgeführt wird. Die meisten Befehle benötigen einen Zyklus, während Verzweigungen zwei Zyklen erfordern, da die Pipeline geleert werden muss.

Abbildung 4. Befehlszyklus der PIC16F877A
Wenn ein aktivierter Interrupt auftritt, speichert die CPU die Rücksprungadresse auf dem Hardware-Stack, löscht das globale Interrupt-Enable-Bit und springt zur Adresse 0004h. Die Interrupt-Routine überprüft und löscht das entsprechende Flag, bevor RETFIE die normale Ausführung wiederherstellt. Die Firmware muss bei Bedarf wichtige Register wie W, STATUS und PCLATH speichern.
Timer, ADC, CCP/PWM, USART, SPI, I²C, Comparatoren und der Parallel Slave Port werden über spezielle Funktionsregister gesteuert. Diese Peripheriegeräte können parallel zur CPU arbeiten, Statusflags setzen und Interrupts generieren, wenn sie aktiviert sind.
| Spezifikation |
PIC16F877A |
| CPU-Architektur |
8-Bit RISC |
| Maximale Taktfrequenz |
20 MHz |
| Maximale Leistung |
5 MIPS |
| Programmspeicher |
8K × 14-Bit-Wörter |
| SRAM |
368 Bytes |
| Daten-EEPROM |
256 Bytes |
| I/O-Pins |
33 |
| Betriebsspannung |
4,0–5,5 V |
| ADC |
10-Bit, 8 Kanäle |
| Timer |
Zwei 8-Bit und ein 16-Bit |
| CCP/PWM-Module |
2 Module, PWM-Auflösung bis zu 10 Bit |
| Kommunikationsschnittstellen |
USART, SPI und I²C |
| Interrupt-Quellen |
15 |
| Comparatoren |
2 |
| Gehäuseoptionen |
40-polige PDIP- und 44-polige Oberflächenmontagepakete |
| Betriebstemperatur |
−40 °C bis +85 °C oder −40 °C bis +125 °C, je nach Modell |

Abbildung 5. PIC16F877A minimale Betriebsschaltung, ICSP-Header und RB0-Test-LED
Abbildung 5 zeigt die minimalen Verbindungen, die erforderlich sind, um einen 40-poligen PIC16F877A zu betreiben und zu programmieren. Beide VDD-Pins, 11 und 32, verbinden sich mit der geregelten +5-V-Schiene, während die VSS-Pins 12 und 31 mit der Erde verbunden sind. Ein separater 100 nF Keramikkondensator muss nahe jedem VDD-VSS-Paar platziert werden. Der optionale 4,7–10 µF-Kondensator in der Nähe von J2 bietet eine zusätzliche Versorgungsglättung. Die RB0-Test-LED entspricht dem Programmierbeispiel in C6.
Der MCLR/VPP-Pin wird über einen 10 kΩ-Widerstand auf +5 V gezogen. Ein 20 MHz parallel geschnittener Quarz verbindet sich zwischen OSC1 auf Pin 13 und OSC2 auf Pin 14. Jeder Oszillator-Pin wird über einen Ladekondensator mit der Erde verbunden. Die angegebenen 22 pF Werte sind Startwerte; die endgültigen Werte sollten den Lastkondensatorspezifikationen des Quarzherstellers folgen. Die Oszillatorkonfiguration muss auf HS eingestellt sein.
Der ICSP-Header wird wie folgt verbunden:
| ICSP-Signal |
PIC16F877A-Verbindung |
| MCLR/VPP |
Pin 1 |
| VDD Ziel/Sensor |
+5 V Schiene |
| VSS |
Erde |
| PGD |
RB7, Pin 40 |
| PGC |
RB6, Pin 39 |
| PGM/AUX |
RB3, Pin 36 |
Für Hochspannungs-ICSP werden die Pins 1–5 verwendet und das LVP-Konfigurationsbit sollte deaktiviert werden. Wenn die Niederspannungsprogrammierung verwendet wird, muss RB3/PGM verbunden bleiben und kann nicht als normaler Ausgang verwendet werden. Nur eine Quelle sollte den Schaltkreis gleichzeitig speisen: entweder J2 oder der PICkit.
RB0 auf Pin 33 steuert die Test-LED über einen 470 Ω Strombegrenzungswiderstand. Schließen Sie RB0 an den Widerstand an, verbinden Sie den Widerstand mit der Anode der LED und verbinden Sie die Kathode der LED mit VSS. Die LED leuchtet auf, wenn RB0 hoch ist.
• Stellen Sie sicher, dass die Stromversorgung getrennt ist, und überprüfen Sie die Verkabelung, die Kondensatorverbindungen, den Quarz, die LED-Polarität und die IC-Orientierung.
• Überprüfen Sie, ob die +5 V-Schiene nicht mit der Erde kurzgeschlossen ist.
• Wenden Sie eine geregelte, strombegrenzte +5 V Versorgung an. Bestätigen Sie, dass beide VDD-VSS-Paare die richtige Spannung erhalten.
• Verbinden Sie den ICSP-Programmierer und wählen Sie den PIC16F877A aus. Konfigurieren Sie FOSC = HS und, für Hochspannungs-ICSP, LVP = AUS.
• Programmieren und verifizieren Sie das Beispiel C6, das RB0 als Ausgang konfiguriert und seinen Zustand alle 500 ms ändert.
• Schalten Sie die Stromversorgung ein und beobachten Sie die LED. Ein wiederholtes Blinken ist das erwartete Zeichen dafür, dass die Strom-, Reset-, Oszillator-, Programmier- und RB0-Ausgangsschaltungen zusammenarbeiten.
Hinweis: Dies ist nur ein vorgeschlagenes Verifizierungsverfahren. Es werden keine physischen Tests oder gemessene Ergebnisse beansprucht. Jeder gemeldete Test sollte die Platine, die Firmware, die Versorgung, die Instrumente, die Probeneinstellungen und die gemessenen Werte angeben.
Der PIC16F877A kann in C unter Verwendung von MPLAB X IDE und dem MPLAB XC8 Compiler programmiert werden. MPLAB X verwaltet das Projekt und das Programmierwerkzeug, während XC8 die HEX-Datei erzeugt.
Dieses Beispiel richtet sich an MPLAB X IDE v6.35 und MPLAB XC8 v4.00. Es wurde während der Vorbereitung dieses Beispiels keine lokale Kompilierung oder Hardware-Test durchgeführt, sodass kein erfolgreicher Build oder gemessenes Ergebnis beansprucht wird. Dies waren die aktuellen offiziellen Versionen im August 2026. Wenn PICkit 3 verwendet wird, beachten Sie, dass MPLAB X v6.20 die letzte unterstützte Version ist.
• Installieren Sie MPLAB X IDE und MPLAB XC8.
• Wählen Sie Datei > Neues Projekt > Microchip Embedded > Standalone-Projekt.
• Wählen Sie PIC16F877A, den angeschlossenen Programmierer und XC8 aus.
• Erstellen Sie eine main.c Quelldatei und geben Sie das folgende Programm ein.
• Bauen Sie das Projekt, wählen Sie dann Erstellen und Programm Gerät.
Verbinden Sie die Test-LED wie folgt:
RB0 (Pin 33) → 330 Ω–1 kΩ Widerstand → LED-Anode → LED-Kathode → 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);
}
}
Für ICSP-Programmierung verbinden Sie MCLR/VPP, RB6/PGC, RB7/PGD, VDD und VSS. Die FOSC = HS-Einstellung und der _XTAL_FREQ-Wert müssen mit dem installierten 20 MHz-Kristall übereinstimmen.
Versionsinformationen: Microchip Technology Inc., MPLAB X IDE, v6.35, veröffentlicht am 24. Juli 2026; und MPLAB XC8 Compiler, v4.00, veröffentlicht am 8. Juli 2026. Abgerufen am 24. August 2026.
Die folgenden Fallstudien fassen Ergebnisse zusammen, die von unabhängigen Forschern berichtet wurden.
Manju und Katoch (2014) entwickelten einen PIC16F877A-Solar-Tracker mit einer Achse, der drei LDRs, einen motorisierten Schrittmotor, Spannungs- und Strommessung, ein LCD und RS-232-Kommunikation umfasste.
Während eines eintägigen Tests an der NIT Hamirpur am 19. Februar 2014 erfassten die Forscher neun stündliche Vergleiche unter Bestrahlungsniveaus von 96,423–810,295 W/m². Sie summierten die gemessenen Leistung readings auf 4,6388 W für das feste Panel und 5,5071 W für den Tracker und berichteten von einer Verbesserung von 18,7167%.
Dieses Ergebnis eines Dritten basierte auf einem Tag und schloss keine Unsicherheit, wiederholte Tagesmessungen oder den Betriebsenergieverbrauch des Trackers ein. Da die momentanen Leistungswerte addiert wurden, anstatt die Energie in Wattstunden zu messen, sollte die berichtete Verbesserung nicht als universeller täglicher Energiegewinn interpretiert werden.
Gharghan (2017) entwickelte ein PIC16F877A-Temperaturüberwachungssystem mit einem LM35-Sensor, LCD, Summer und SmartG100 GSM-Modem. Der Controller maß periodisch die Temperatur und sendete SMS-Warnungen für dringende Bedingungen.
Der veröffentlichte Vergleich mit einem digitalen Thermometer ergab einen durchschnittlichen absoluten Fehler von 0,205 °C und einen R²-Wert von 0,987. Mit gemessenen aktiven und im Schlafmodus befindlichen Strömen berechnete die Studie einen durchschnittlichen Strom von 3,087 mA mit ihrem Schlaf-Wach-Algorithmus im Vergleich zu 315,138 mA während des kontinuierlichen Betriebs. Für einen 1.000 mAh-Akku schätzte der Forscher ungefähr 324 Stunden Betrieb statt drei Stunden.
Diese Ergebnisse Dritter wurden hier nicht reproduziert. Das Papier berichtete nicht klar über die Anzahl der Patienten oder Tests zur SMS-Zustellung, und die geschätzte Batterielebensdauer wurde berechnet, anstatt durch einen vollständigen Entladungstest bestätigt zu werden. Der Prototyp zeigt die technische Durchführbarkeit, stellt jedoch keine klinische Validierung dar.
• Analoge Sensierung: Der achtkanalige, 10-Bit-ADC kann Temperatur, Licht, Druck, Spannung und andere analoge Signale überwachen.
• PWM- und Motorsteuerung: Zwei CCP/PWM-Module können die Motordrehzahl, die Helligkeit von LEDs, Pumpen, Lüftern und Ventilen über geeignete Treiberschaltungen regulieren.
• Serielle Kommunikation: USART-, SPI- und I²C-Schnittstellen unterstützen die Kommunikation mit Computern, Sensoren, GSM- oder GPS-Modulen, EEPROMs und Echtzeituhren.
• Display-Interface: Seine 33共享功能 I/O-Pins können mit LCDs, Sieben-Segment-Anzeigen, Tastenfeldern, Schaltern, LEDs und Summern verbunden werden.
• Datenspeicherung: Der 256-Byte-EEPROM behält Einstellungen, Kalibrierungswerte und kleine Aufzeichnungen nach dem Entfernen der Stromversorgung.
• Timing: Drei Hardware-Timer und Interrupt-Funktionen unterstützen Verzögerungen, Pulsmessungen, Ereigniszählung und schnelle Reaktionen auf externe Ereignisse.
• Systemschutz: Der Watchdog-Timer, das Brownout-Reset, der Power-Up-Timer und der MCLR-Eingang helfen dem Controller, sich von Programm- oder Versorgungs-Spannungsfehlern zu erholen.
Diese Funktionen eignen sich für Wasserstandskontrollen, Alarmanlagen, Datenlogger, Temperaturregler und kleine Automatisierungssysteme. Motoren, Relais und andere hochstromtragende Lasten benötigen externe Treiber. Der PIC16F877A hat außerdem kein integriertes Wi-Fi, Bluetooth oder USB.
| Problem |
Wahrscheinliche Ursache |
Empfohlene Lösung |
| Mikrocontroller startet nicht |
Falsche Stromversorgung, schwebendes MCLR oder fehlender Takt |
Überprüfen Sie beide VDD–VSS-Paare, verwenden Sie eine geregelte Versorgung, fügen Sie einen 10 kΩ MCLR-Pull-up hinzu und verifizieren Sie den externen Oszillator |
| Programmer kann den IC nicht erkennen |
Falsche ICSP-Verkabelung oder stark beladene Programmierpins |
Überprüfen Sie die Verbindungen zu MCLR/VPP, RB6/PGC, RB7/PGD, VDD und VSS |
| Programm läuft mit falscher Geschwindigkeit |
Oszillator-Einstellung stimmt nicht mit der Hardware überein |
Wählen Sie die richtige Oszillator-Konfiguration und setzen Sie _XTAL_FREQ auf die tatsächliche Taktfrequenz |
| PORTA oder PORTE funktioniert nicht digital |
Pins bleiben als analoge Eingänge konfiguriert |
Konfigurieren Sie das ADCON1-Register für die erforderlichen digitalen oder analogen Funktionen |
| RB3 funktioniert nicht als GPIO |
Niederspannungsprogrammierung ist aktiviert |
Deaktivieren Sie das LVP-Konfigurationsbit, wenn RB3/PGM als normaler GPIO benötigt wird |
| RA4 erzeugt keinen hohen Ausgang |
RA4 verwendet eine Open-Drain-Ausgangsstruktur |
Fügen Sie einen externen Pull-up-Widerstand zu RA4 hinzu |
| ADC-Ablesungen sind instabil |
Geräuschanfällige Versorgung, poor grounding oder unzureichende Erfassungszeit |
Fügen Sie Entkopplung hinzu, verwenden Sie eine stabile Referenz, reduzieren Sie die Quellenimpedanz und erlauben Sie genügend Erfassungszeit |
| UART-Daten sind beschädigt |
Falsche Baudrate oder Oszillator-Einstellung |
Berechnen Sie SPBRG unter Verwendung der tatsächlichen Taktfrequenz neu und bestätigen Sie die übereinstimmenden Baudraten |
| I²C-Kommunikation schlägt fehl |
Fehlende Pull-up-Widerstände oder falsche Pinrichtung |
Fügen Sie Pull-ups zu RC3/SCL und RC4/SDA hinzu und konfigurieren Sie beide Pins korrekt |
| PWM-Ausgang fehlt |
CCP oder Timer2 ist nicht richtig konfiguriert |
Konfigurieren Sie das CCP-Modul, PR2, den Timer2-Vor teiler und den PWM-Ausgangspin |
| Zufällige Rücksetzungen treten auf |
Spannungseinbrüche, elektrische Störungen, Watchdog Timer oder instabiles MCLR |
Verbessern Sie die Entkopplung, überprüfen Sie die Rücksetz-Einstellungen und schützen Sie MCLR vor Störungen |
| Motor oder Relais verursacht Rücksetzungen |
Last ist direkt an einen GPIO-Pin angeschlossen |
Verwenden Sie einen Transistor oder MOSFET-Treiber und fügen Sie eine Freilaufdiode über induktive Lasten ein |
| Schlafstrom ist zu hoch |
Externe Lasten, schwebende Eingänge oder Programmer bleiben angeschlossen |
Trennen Sie unnötige Lasten, setzen Sie ungenutzte Pins auf definierte Pegel und entfernen Sie den Programmer während der Messung |
| Merkmale |
PIC16F877A |
PIC16F887 |
PIC16F18877 |
ATmega328P |
| Architektur |
Klassischer Mid-Range 8-Bit PIC |
Klassischer Mid-Range 8-Bit PIC |
Verbesserter Mid-Range 8-Bit PIC |
8-Bit AVR |
| Maximale Takt- und Instruktionsrate |
20 MHz, 5 MIPS bei 4.0–5.5 V |
20 MHz, 5 MIPS bei 4.5–5.5 V; niedrigere Versorgungsspannungen erfordern niedrigere Taktfrequenzen |
32 MHz, 8 MIPS bei 2.5–5.5 V; bis zu 16 MHz bei 2.3–5.5 V |
20 MHz, bis zu 20 MIPS bei 4.5–5.5 V; 10 MHz bei 2.7–5.5 V; 4 MHz bei 1.8–5.5 V |
| Programmspeicher |
8K × 14-Bit-Worte |
8K × 14-Bit-Worte |
32K × 14-Bit-Worte |
32 KB |
| SRAM |
368 Bytes |
368 Bytes |
4.096 Bytes |
2.048 Bytes |
| EEPROM |
256 Bytes |
256 Bytes |
256 Bytes |
1.024 Bytes |
| I/O-Pins |
33 |
35 |
Bis zu 36 |
23 |
| ADC |
10-Bit, 8 Kanäle |
10-Bit, 14 Kanäle |
10-Bit-ADC mit Berechnung, bis zu 35 Kanäle |
10-Bit, 6 Kanäle in PDIP oder 8 in TQFP/QFN |
| Interner Hauptoszillator |
Nein |
Ja, bis zu 8 MHz |
Ja, bis zu 32 MHz |
Ja, 8 MHz |
| Betriebsspannung |
4.0–5.5 V |
2.0–5.5 V |
2.3–5.5 V |
1.8–5.5 V |
| Kommunikation |
USART, SPI und I²C |
EUSART, SPI und I²C |
EUSART, zwei SPI und zwei I²C-Module |
USART, SPI und TWI/I²C |
| Hauptvorteil |
Einfach und gut dokumentiert |
Mehr ADC-Kanäle und einen internen Oszillator |
Mehr Speicher und moderne Peripheriegeräte |
Umfangreiche Arduino- und AVR-Unterstützung |
| Hauptbeschränkung |
Sehr begrenzter RAM und kein interner Hauptoszillator |
Begrenzter Speicher und ältere Architektur |
Kein direkter Ersatz für PIC16F877A-Designs |
Nicht für neue Designs empfohlen |
| Am besten geeignet für |
Vorhandene Boards und Lernprojekte |
Einfache 40-Pin-Steuerprojekte |
Neue PIC-basierte Produkte |
Vorhandene Arduino- oder AVR-Projekte |
Microchip identifiziert PIC16F18877 als das neuere Gerät für PIC16F877A, aber die Migration erfordert Firmware-, Peripheriegeräte- und Pinout-Überprüfung.
• Microchip Technology Inc. (2013). PIC16F87XA Datenblatt (DS39582C).
• Microchip Technology Inc. (2026). MPLAB XC8 C Compiler Benutzerhandbuch für PIC MCU (DS50002737L).
• Microchip Technology Inc. (2021). PIC16(L)F18857/77 Datenblatt (DS40001825F).
• Microchip PIC16F87XA Datenblatt, DS39582C; PIC16F87XA Flash-Programmierungsspezifikation, DS39589B.
• Manju, S., und Katoch, S. S. (2014). „Design eines photovoltaischen Solar-Tracking-Systems basierend auf einem Peripherie-Interface-Controller.“ International Journal of Current Engineering and Technology, 4(3), 1800–1805.
• Gharghan, S. K. (2017). „Energieeffizientes Fernüberwachungssystem für Patienten basierend auf GSM-Modem und Mikrocontroller.“ Journal of Communications, 12(8), 433–442.
Der PIC16F877A speichert Anweisungen in 14-Bit-Wörtern. Er bietet 8.192 Anweisungswörter, was ungefähr 14,3 KB physischen Flash-Speicher entspricht. Es sollte nicht einfach als 8 KB beschrieben werden.
Ja, aber ein kompatibler Bootloader muss zuerst über ICSP installiert werden. Der Bootloader kann dann neue Firmware über USART empfangen, obwohl er einen Teil des verfügbaren Programmspeichers nutzt.
Bei einer Referenz von 5,0 V beträgt die ideale ADC-Schrittgröße etwa 4,88 mV. Die tatsächliche Genauigkeit hängt auch von der Stabilität der Referenz, elektrischem Rauschen, Quelleimpedanz, Akquisitionszeit und Kalibrierung ab.
Nicht direkt. Verwenden Sie einen korrekt berechneten Spannungsteiler, Puffer oder Signalaufbereitungsschaltung, um den ADC-Eingang innerhalb seines Referenzspannungsbereichs zu halten. Ein zusätzlicher Schutz des Eingangs kann ebenfalls erforderlich sein.
Ein kleiner Scheduler ist möglich, aber sein 368-Byte-RAM und der Hardware-Stack mit acht Ebenen machen ein vollständiges RTOS unpraktisch. Timer-Interrupts und kooperatives Task-Scheduling sind in der Regel geeigneter.
Der interne 256-Byte-EEPROM ist nur für kleine Einstellungen und Aufzeichnungen geeignet. Verwenden Sie externen EEPROM, FRAM oder eine SD-Karte für größere Protokolle und wenden Sie Wear-Leveling an, wenn Daten häufig geschrieben werden.
Ja, insbesondere für relativ langsame Systeme wie Temperatur-, Geschwindigkeits- und Niveau-Regelung. Festkommaarithmetik ist normalerweise vorzuziehen, da Fließkomma-Berechnungen mehr Verarbeitungszeit und Programmspeicher erfordern.
Die CP- und CPD-Konfigurationsbits blockieren das normale Lesen des Programm- und Datenspeichers durch Standard-Programmierwerkzeuge. Sie garantieren jedoch keinen Schutz gegen fortgeschrittene physische Extraktionsmethoden.
CAP CER 3PF 100V C0G/NP0 0603
CAP CER 100PF 50V NP0 0603
CAP TANT 150UF 20% 16V 2924
IC ADC 10BIT SAR 20SSOP
IC OPAMP CHOPPER 2.5MHZ 8SO
IC BATT CNTL LI-ION 1CEL SOT23-5
DGTL ISO 2500VRMS 2CH GP 8SOIC
IGCM04F60GA LS
BQ29415PWRRG4 TI
AS7C34098-15TC ALLIANC
PEX8717-CA80BC PEX
TI QFP100


