Všechny kategorie

Vozík 0 položka

Nákupní košík 0 položka

Část MFR # Množství
PřEDLOžIT (0)

Zvolte jazyk

Aktuální jazyk

Čeština

  • 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
  • मराठी
domůBlogPIC16F877A: Vývodové schéma, technický list, programování a projekty

ELEKTRONICKÉ KOMPONENTY SKLADEM.
RYCHLÉ NABÍDKY.

Integrované obvody, napájecí zařízení a pasivní komponenty
Okamžitá podpora nákupu

ZÍSKEJTE NABÍDKU HNED

PIC16F877A: Vývodové schéma, technický list, programování a projekty

Čas: 2026/08/25

Prohlížet: 884

PIC16F877A je 8-bitový Flash mikroprocesor od společnosti Microchip navržený pro vestavěnou kontrolu a monitoring. Dostupný v balíčcích s 40 a 44 piny, podporuje pracovní frekvence až do 20 MHz a poskytuje 33 I/O pinů pro připojení senzorů, spínačů, displejů, alarmů, motorů a komunikačních modulů. Programy lze vyvíjet v C pomocí MPLAB X IDE a kompilátoru XC8 a poté načítat prostřednictvím in-circuit sériového programování (ICSP) s kompatibilním programátorem, jako je PICkit. PIC16F877A zůstává v produkci, ačkoliv společnosti Microchip uvádí PIC16F18877 jako novější zařízení. Tento článek vysvětluje jeho vývodové schéma, specifikace, praktické testování, programování, reálné výsledky, běžné problémy a alternativy.

Katalog

PIC16F877A Microcontroller

Obrázek 1. Mikroprocesor PIC16F877A

Vývodové schéma mikroprocesoru PIC16F877A

 PIC16F877A Microcontroller Pinout

Obrázek 2. Vývodové schéma mikroprocesoru PIC16F877A

Pin
Název pinu
Hlavní funkce
1
MCLR/VPP
Aktivní nízký vstup pro resetování a vstup programovacího napětí.
2
RA0/AN0
Digitální I/O portu A a analogový vstupní kanál ADC 0.
3
RA1/AN1
Digitální I/O portu A a analogový vstupní kanál ADC 1.
4
RA2/AN2/VREF−/CVREF
Digitální I/O, ADC kanál 2, nízký referenční vstup ADC a výstup referenčního komparátoru.
5
RA3/AN3/VREF+
Digitální I/O, ADC kanál 3 a vysoký referenční vstup ADC.
6
RA4/T0CKI/C1OUT
Digitální I/O, externí hodinový vstup Timer0 a výstup komparátoru 1. RA4 používá výstup s otevřeným kolektorem.
7
RA5/AN4/SS/C2OUT
Digitální I/O, ADC kanál 4, aktivně nízký vstup pro výběr SPI Slave a výstup komparátoru 2.
8
RE0/RD/AN5
Digitální I/O portu E, aktivně nízké ovládání čtení paralelního slave portu a ADC kanál 5.
9
RE1/WR/AN6
Digitální I/O portu E, aktivně nízké ovládání zápisu paralelního slave portu a ADC kanál 6.
10
RE2/CS/AN7
Digitální I/O portu E, aktivně nízký výběr čipu paralelního slave portu a ADC kanál 7.
11
VDD
Konektivita pozitivního napájení.
12
VSS
Konektivita uzemnění.
13
OSC1/CLKI
Vstup pro krystal, rezonátor nebo externí hodiny.
14
OSC2/CLKO
Výstup pro krystal nebo rezonátor. V režimu RC vychází z CLKO čtvrtina frekvence oscilátoru.
15
RC0/T1OSO/T1CKI
Digitální I/O portu C, výstup oscilátoru Timer1 a externí vstup hodin Timer1.
16
RC1/T1OSI/CCP2
Digitální I/O, vstup oscilátoru Timer1 a připojení pro CCP2 zachytávání, porovnávání nebo PWM.
17
RC2/CCP1
Digitální I/O a připojení pro CCP1 zachytávání, porovnávání nebo PWM.
18
RC3/SCK/SCL
Digitální I/O, SPI vstup/výstup hodin a I²C vstup/výstup hodin.
19
RD0/PSP0
Digitální I/O portu D a datový bit 0 paralelního slave portu.
20
RD1/PSP1
Digitální I/O portu D a datový bit 1 paralelního slave portu.
21
RD2/PSP2
Digitální I/O portu D a datový bit 2 paralelního slave portu.
22
RD3/PSP3
Digitální I/O portu D a datový bit 3 paralelního slave portu.
23
RC4/SDI/SDA
Digitální I/O, SPI vstup dat a I²C vstup/výstup dat.
24
RC5/SDO
Digitální I/O a SPI výstup dat.
25
RC6/TX/CK
Digitální I/O, USART asynchronní přenos a synchronní vstup/výstup hodin.
26
RC7/RX/DT
Digitální I/O, USART asynchronní příjem a synchronní vstup/výstup dat.
27
RD4/PSP4
Digitální I/O portu D a datový bit 4 paralelního slave portu.
28
RD5/PSP5
Digitální I/O portu D a datový bit 5 paralelního slave portu.
29
RD6/PSP6
Digitální I/O portu D a datový bit 6 paralelního slave portu.
30
RD7/PSP7
Digitální I/O portu D a datový bit 7 paralelního slave portu.
31
VSS
Zemní připojení.
32
VDD
Připojení kladného napájení.
33
RB0/INT
Digitální I/O portu B a externí vstup přerušení.
34
RB1
Digitální I/O portu B.
35
RB2
Digitální I/O portu B.
36
RB3/PGM
Digitální I/O a vstup pro povolení programování ICSP s nízkým napětím.
37
RB4
Digitální I/O s možností přerušení při změně.
38
RB5
Digitální I/O s možností přerušení při změně.
39
RB6/PGC
Digitální I/O, přerušení při změně, hodiny programování ICSP a hodiny ladění.
40
RB7/PGD
Digitální I/O, přerušení při změně, data pro programování ICSP a data pro ladění.

Obě piny VDD a obě piny VSS musí být připojeny. Piny PORTB podporují softwarově řízené slabé pull-up rezistory, zatímco RB4–RB7 podporují přerušení při změně. Piny schopné analogového vstupu musí být před použitím jako digitální I/O správně nakonfigurovány.

Objednatelné čísla dílů a balení PIC16F877A

Přípona teploty identifikuje provozní rozsah: I znamená průmyslové, zatímco E znamená rozšířené. Kód balení za lomítkem identifikuje P pro PDIP nebo PT pro TQFP.

Objednatelné číslo dílu
Typ balení
Počet pinů
Provozní teplota
PIC16F877A-I/P
PDIP
40
−40 °C až +85 °C, průmyslové
PIC16F877A-I/PT
TQFP
44
−40 °C až +85 °C, průmyslové
PIC16F877A-E/P
PDIP
40
−40 °C až +125 °C, rozšířené
PIC16F877A-E/PT
TQFP
44
−40 °C až +125 °C, rozšířené

Všechny čtyři verze poskytují stejnou 8K × 14-slabičnou programovou paměť, 368 bajtů SRAM, 256 bajtů EEPROM a 33 I/O pinů. Tyto specifikace jsou tedy uvedeny jednou místo opakování v tabulce.

Architektura a pracovní princip PIC16F877A

Architektura PIC16F877A

PIC16F877A používá 8-bitový RISC CPU s Harvardovou architekturou. Jeho 14-bitová programová sběrnice a 8-bitová datová sběrnice jsou oddělené, což umožňuje CPU načítat instrukce při přístupu k datům. Obsahuje 8K × 14-bitovou Flash programovou paměť, 368 bajtů RAM a 256 bajtů EEPROM dat.

13-bitový programový čítač vybírá instrukce, zatímco osmibodový hardwarový zásobník ukládá adresy návratu pro podprogramy a přerušení. ALU, W registr a STATUS registr zpracovávají data. PORTA až PORTE poskytují 33 I/O pinů.

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

Obrázek 3. Blokový diagram architektury PIC16F877A

Cyklus instrukcí PIC16F877A

Oscilační hodiny jsou rozděleny do čtyř fází, Q1 až Q4. Proto hodiny instrukcí běží na , a jeden cyklus instrukce trvá. Při 20 MHz to odpovídá 200 ns. Dvoufázová trubka načítá další instrukci během provádění předchozí. Většina instrukcí trvá jeden cyklus, zatímco větve vyžadují dva cykly, protože trubka musí být vymazána.

 PIC16F877A Instruction Cycle

Obrázek 4. Cyklus instrukcí PIC16F877A

Přerušení a periferní operace

Když dojde k povolenému přerušení, CPU uloží návratovou adresu na hardwarovou zásobník, vymaže globální bit povolení přerušení a skočí na adresu 0004h. Přerušovací rutina zkontroluje a vymaže relevantní příznak před tím, než RETFIE obnoví normální vykonávání. Firmware musí uložit důležité registry, jako jsou W, STATUS a PCLATH, když je to potřeba.

Taktovací obvody, ADC, CCP/PWM, USART, SPI, I²C, komparátory a paralelní slave port jsou řízeny pomocí registrů speciálních funkcí. Tyto periférie mohou pracovat po boku CPU, nastavovat stavy příznaků a generovat přerušení, když jsou povoleny.

Technické specifikace PIC16F877A

Specifikace
PIC16F877A
Architektura CPU
8-bit RISC
Maximální frekvence hodin
20 MHz
Maximální výkon
5 MIPS
Programová paměť
8K × 14-bit slova
SRAM
368 bytů
Data EEPROM
256 bytů
I/O piny
33
Prevádzková napětí
4.0–5.5 V
ADC
10-bit, 8 kanálů
Taktovací obvody
Dva 8-bitové a jeden 16-bitový
Moduly CCP/PWM
2 moduly, rozlišení PWM až 10 bitů
Komunikační rozhraní
USART, SPI a I²C
Zdroje přerušení
15
Komparátory
2
Možnosti balení
40-pin PDIP a 44-pin povrchové balení
Prevádzková teplota
−40°C až +85°C nebo −40°C až +125°C, v závislosti na modelu

Minimální obvod a testovací postup PIC16F877A

 PIC16F877A minimum operating circuit, ICSP header and RD0 test LED

Obrázek 5. Minimální provozní obvod PIC16F877A, ICSP konektor a testovací LED RB0

Obrázek 5 ukazuje minimální připojení potřebná k provozu a programování 40-pinu PIC16F877A. Oba piny VDD, 11 a 32, se připojují k regulované +5 V větvi, zatímco piny VSS 12 a 31 se připojují k zemi. Samostatný 100 nF keramický kondenzátor musí být umístěn blízko každé dvojice VDD–VSS. Volitelný kondenzátor 4.7–10 μF u J2 poskytuje dodatečné filtrování napájení. Testovací LED RB0 odpovídá programovému příkladu v C6.

Pin MCLR/VPP je tažen na +5 V přes rezistor 10 kΩ. Křišťál s frekvencí 20 MHz je připojen mezi OSC1 na pinu 13 a OSC2 na pinu 14. Každý pin oscilátoru je připojen k zemi přes zátěžový kondenzátor. Ilustrované hodnoty 22 pF jsou počáteční hodnoty; konečné hodnoty by měly odpovídat specifikaci zatížení kondenzátoru výrobce křišťálu. Konfigurace oscilátoru musí být nastavena na HS.

Konektor ICSP se připojuje následovně:

ICSP signál
Připojení PIC16F877A
MCLR/VPP
Pin 1
VDD Target/Sense
+5 V větvi
VSS
Zem
PGD
RB7, pin 40
PGC
RB6, pin 39
PGM/AUX
RB3, pin 36

Pro vysoké napětí ICSP jsou použity piny 1–5 a bit konfigurace LVP by měl být zakázán. Pokud je použito programování s nízkým napětím, RB3/PGM musí zůstat připojen a nemůže být použit jako běžný výstup. Pouze jeden zdroj by měl napájet obvod současně: buď J2, nebo PICkit.

RB0 na pinu 33 ovládá testovací LED přes rezistor pro omezování proudu 470 Ω. Připojte RB0 k rezistoru, připojte rezistor k anodě LED a připojte katodu LED k VSS. LED se rozsvítí, když je RB0 vysoký.

Navrhovaný testovací postup

• Při odpojení napájení zkontrolujte zapojení, připojení kondenzátorů, křišťál, polaritu LED a orientaci IC.

• Zkontrolujte, že +5 V větev není zkrácena na zem.

• Aplikujte regulované, proudově omezené napájení +5 V. Potvrďte, že obě dvojice VDD–VSS dostávají správné napětí.

• Připojte ICSP programátor a vyberte PIC16F877A. Nastavte FOSC = HS a pro vysoké napětí ICSP LVP = VYP.

• Programujte a ověřte příklad C6, který konfiguruje RB0 jako výstup a mění jeho stav každých 500 ms.

• Aplikujte napájení a sledujte LED. Opakovaný záblesk je očekávaným znakem, že napájení, reset, oscilátor, programování a výstupní obvody RB0 pracují společně.

Poznámka: Toto je pouze navrhovaný ověřovací postup. Nebylo uvedeno žádné fyzické testování nebo měřený výsledek. Jakýkoli hlášený test by měl identifikovat desku, firmware, napájení, přístroje, nastavení sondy a měřené hodnoty.

Programování PIC16F877A pomocí MPLAB a XC8

PIC16F877A může být programován v C pomocí MPLAB X IDE a kompilátoru MPLAB XC8. MPLAB X spravuje projekt a programovací nástroj, zatímco XC8 generuje HEX soubor.

Tento příklad cílí na MPLAB X IDE v6.35 a MPLAB XC8 v4.00. Při přípravě tohoto příkladu nebyla provedena žádná místní kompilace ani testování hardwaru, takže se nečiní žádné nároky na úspěšnou kompilaci nebo naměřené výsledky. Toto byly aktuální oficiální verze k srpnu 2026. Pokud je použit PICkit 3, mějte na paměti, že MPLAB X v6.20 je jeho poslední podporovaná verze.

• Nainstalujte MPLAB X IDE a MPLAB XC8.

• Vyberte Soubor > Nový projekt > Mikrochip Embedded > Samostatný projekt.

• Vyberte PIC16F877A, připojený programátor a XC8.

• Vytvořte soubor main.c a zadejte následující program.

• Sestavte projekt, poté vyberte Uložit a naprogramovat zařízení.

Připojte testovací LED následujícím způsobem:

RB0 (pin 33) → 330 Ω–1 kΩ rezistor → anoda LED → katoda 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);

}

}

Pro ICSP programování připojte MCLR/VPP, RB6/PGC, RB7/PGD, VDD a VSS. Nastavení FOSC = HS a hodnota _XTAL_FREQ musí odpovídat nainstalovanému krystalu o frekvenci 20 MHz.

Informace o verzi: Microchip Technology Inc., MPLAB X IDE, v6.35, vydáno 24. července 2026; a MPLAB XC8 Compiler, v4.00, vydáno 8. července 2026. Přístup k 24. srpnu 2026.

Publikované případové studie projektu PIC16F877A

Následující případové studie shrnují výsledky hlášené nezávislými výzkumníky.

Publikovaná studie sledování slunce

Manju a Katoch (2014) vyvinuli jednostranný sledovač slunce PIC16F877A se třemi LDR, krokovým motorem s převodem, měřením napětí a proudu, LCD a komunikací RS-232.

Během jednodenního testu na NIT Hamirpur dne 19. února 2014 výzkumníci zaznamenali devět hodinových srovnání při úrovních osvětlení 96,423–810,295 W/m². Součet naměřených hodnot výkonu byl 4,6388 W pro pevnou desku a 5,5071 W pro sledovač, což představuje zlepšení o 18,7167%.

Tento výsledek třetí strany byl založen na jednom dni a nezohledňoval nejistotu, opakované testování během dne ani provozní energii sledovače. Protože byly přidávány okamžité hodnoty výkonu namísto toho, aby byla měřena energie ve watthodinách, zprávu o zlepšení by nebylo možné interpretovat jako univerzální denní nárůst energie.

Publikovaná studie monitorování teploty na dálku

Gharghan (2017) vyvinul systém monitorování teploty PIC16F877A s použitím senzoru LM35, LCD, bzučáku a GSM modemu SmartG100. Univerzální ovladač pravidelně měřil teplotu a posílal SMS upozornění na urgentní podmínky.

Publikované srovnání s digitálním teploměrem vykázalo průměrnou absolutní chybu 0,205 °C a hodnotu R² 0,987. Pomocí měřených aktivních a spánkových proudů studie vypočítala průměrný proud 3,087 mA se svým algoritmem spánku/probuzení, ve srovnání se 315,138 mA během nepřetržitého provozu. U baterie 1 000 mAh odhadl výzkumník přibližně 324 hodin provozu namísto tří hodin.

Tato zjištění třetí strany zde nebyla reprodukována. Práce jasně nehlásila počet pacientů nebo pokusů o doručení SMS a odhadovaná životnost baterie byla vypočítána spíše než potvrzena kompletním testem vybíjení. Prototyp demonstruje technickou proveditelnost, ale nepředstavuje klinickou validaci.

Funkce a aplikace PIC16F877A

• Analogové snímání: Osmikanálový 10bitový ADC může sledovat teplotu, světlo, tlak, napětí a další analogové signály.

• PWM a řízení motoru: Dva moduly CCP/PWM mohou regulovat rychlost motoru, jas LED, čerpadla, ventilátory a ventily prostřednictvím vhodných řídicích obvodů.

• Sériová komunikace: Rozhraní USART, SPI a I²C podporují komunikaci s počítači, senzory, GSM nebo GPS moduly, EEPROM a hodinami reálného času.

• Připojení displeje: Jeho 33 sdílených funkčních I/O pinů lze připojit k LCD, sedmisegmentovým displejům, klávesnicím, přepínačům, LED a bzučákům.

• Úložiště dat: 256bajtová EEPROM uchovává nastavení, kalibrace a malé záznamy po odstranění napájení.

• Časování: Tři hardwarové časovače a funkce přerušení podporují zpoždění, měření pulsů, počítání událostí a rychlé reakce na externí události.

• Ochrana systému: Časovač watchdog, reset při poklesu napětí, časovač při zapnutí a vstup MCLR pomáhají ovladači zotavit se z chyb programů nebo napájecího napětí.

Tyto funkce jsou vhodné pro měřiče hladiny vody, alarmy, datové loggery, teplotní regulátory a malé automatizační systémy. Motory, relé a další zatížení s vysokým proudem vyžadují externí ovladače. PIC16F877A také nemá vestavěné Wi-Fi, Bluetooth ani USB.

Časté problémy a opravy PIC16F877A

Problém
Pravděpodobná příčina
Doporučené řešení
Mikrokontroler se nespouští
Nesprávné napájení, plovoucí MCLR nebo chybějící hodinový signál
Zkontrolujte oba páry VDD–VSS, použijte regulované napájení, přidejte 10 kΩ MCLR pull-up a ověřte externí oscilátor
Programátor nemůže detekovat IC
Nesprávné zapojení ICSP nebo silně zatížené programovací piny
Zkontrolujte připojení MCLR/VPP, RB6/PGC, RB7/PGD, VDD a VSS
Program běží na nesprávné rychlosti
Nastavení oscilátoru neodpovídá hardwaru
Vyberte správnou konfiguraci oscilátoru a nastavte _XTAL_FREQ na skutečnou frekvenci hodinového signálu
PORTA nebo PORTE nefunguje digitálně
Piny zůstávají nastaveny jako analogové vstupy
Nakonfigurujte registr ADCON1 pro požadované digitální nebo analogové funkce
RB3 nefunguje jako GPIO
Programování s nízkým napětím je povoleno
Zakážete konfiguraci LVP, když je RB3/PGM potřebný jako běžné GPIO
RA4 nevytváří vysoký výstup
RA4 používá strukturu otevřeného výstupu
Přidejte externí pull-up rezistor k RA4
ADC měření jsou nestabilní
Hlučné napájení, špatné uzemnění nebo nedostatečný čas pro akvizici
Přidejte odrušovací kondenzátory, použijte stabilní referenci, snižte impedanci zdroje a nechte dostatek času na akvizici
UART data jsou poškozena
Nesprávná rychlost přenosu nebo nastavení oscilátoru
Přepočítejte SPBRG pomocí skutečné frekvence hodinového signálu a potvrďte odpovídající rychlosti přenosu
I²C komunikace selhává
Chybějící pull-up rezistory nebo nesprávný směr pinu
Přidejte pull-up rezistory k RC3/SCL a RC4/SDA a správně nakonfigurujte oba piny
PWM výstup chybí
CCP nebo Timer2 není správně nakonfigurován
Nakonfigurujte modul CCP, PR2, před děličem Timer2 a pin PWM výstupu
Dochází k náhodným resetům
Poklesy napájení, elektrický šum, časovač watchdog nebo nestabilní MCLR
Zlepšete odrušení, zkontrolujte nastavení resetu a chraňte MCLR před šumem
Motor nebo relé způsobuje resety
Zatížení je připojeno přímo k GPIO pinu
Použijte tranzistor nebo MOSFET ovladač a přidejte flyback diodu napříč induktivními zatíženími
Spací proud je příliš vysoký
Externí zatížení, plovoucí vstupy nebo programátor zůstává připojen
Odpojte nepotřebná zatížení, nastavte nepoužívané piny na definované úrovně a odpojte programátor během měření

PIC16F877A ve srovnání s alternativami

Funkce
PIC16F877A
PIC16F887
PIC16F18877
ATmega328P
Architektura
Klasický střední rozsah 8bitový PIC
Klasický střední rozsah 8bitový PIC
Vylepšený střední rozsah 8bitový PIC
8bitový AVR
Maximální frekvence a rychlost instrukcí
20 MHz, 5 MIPS při 4,0–5,5 V
20 MHz, 5 MIPS při 4,5–5,5 V; nižší napájecí napětí vyžaduje nižší frekvence
32 MHz, 8 MIPS při 2,5–5,5 V; až 16 MHz při 2,3–5,5 V
20 MHz, až 20 MIPS při 4,5–5,5 V; 10 MHz při 2,7–5,5 V; 4 MHz při 1,8–5,5 V
Paměť programu
8K × 14bitových slov
8K × 14bitových slov
32K × 14bitových slov
32 KB
SRAM
368 bytů
368 bytů
4 096 bytů
2 048 bytů
EEPROM
256 bytů
256 bytů
256 bytů
1 024 bytů
I/O piny
33
35
Až 36
23
ADC
10bitový, 8 kanálů
10bitový, 14 kanálů
10bitový ADC s výpočtem, až 35 kanálů
10bitový, 6 kanálů v PDIP nebo 8 v TQFP/QFN
Interní hlavní oscilátor
Ne
Ano, až 8 MHz
Ano, až 32 MHz
Ano, 8 MHz
Provozní napětí
4,0–5,5 V
2,0–5,5 V
2,3–5,5 V
1,8–5,5 V
Komunikace
USART, SPI a I²C
EUSART, SPI a I²C
EUSART, dva SPI a dva I²C moduly
USART, SPI a TWI/I²C
Hlavní výhoda
Jednoduchý a široce zdokumentovaný
Více ADC kanálů a interní oscilátor
Více paměti a moderní periferie
Rozsáhlá podpora Arduino a AVR
Hlavní omezení
Velmi omezená RAM a žádný interní hlavní oscilátor
Omezená paměť a starší architektura
Not a direct replacement for PIC16F877A designs
Not recommended for new designs
Best suited to
Existing boards and learning projects
Simple 40-pin control projects
New PIC-based products
Existing Arduino or AVR projects

Microchip identifies PIC16F18877 as the newer device for PIC16F877A, but migration requires firmware, peripheral and pinout verification.




Technical References

• Microchip Technology Inc. (2013). PIC16F87XA Data Sheet (DS39582C).

• Microchip Technology Inc. (2026). MPLAB XC8 C Compiler User’s Guide for PIC MCU (DS50002737L).

• Microchip Technology Inc. (2021). PIC16(L)F18857/77 Data Sheet (DS40001825F).

• Microchip PIC16F87XA Data Sheet, DS39582C; PIC16F87XA Flash Programming Specification, DS39589B.

• Manju, S., and Katoch, S. S. (2014). “Design of Photo-voltaic Solar Tracking System Based on Peripheral Interface Controller.” International Journal of Current Engineering and Technology, 4(3), 1800–1805.

• Gharghan, S. K. (2017). “Energy-Efficient Remote Temperature Monitoring System for Patients Based on GSM Modem and Microcontroller.” Journal of Communications, 12(8), 433–442.






Frequently Asked Questions [FAQ]

1. Why is the program memory listed as 8K × 14-bit words instead of 8 KB?

The PIC16F877A stores instructions in 14-bit words. It provides 8,192 instruction words, equivalent to approximately 14.3 KB of physical Flash storage. It should not be described simply as 8 KB.

2. Can firmware be updated without an ICSP programmer?

Yes, but a compatible bootloader must first be installed through ICSP. The bootloader can then receive new firmware through USART, although it uses part of the available program memory.

3. How accurate is the 10-bit ADC?

With a 5.0 V reference, the ideal ADC step size is approximately 4.88 mV. Actual accuracy also depends on reference stability, electrical noise, source impedance, acquisition time and calibration.

4. Can the ADC measure voltages above 5 V?

Not directly. Use a correctly calculated voltage divider, buffer or signal-conditioning circuit to keep the ADC input within its reference-voltage range. Input protection may also be required.

5. Can the PIC16F877A run an RTOS?

A small scheduler is possible, but its 368-byte RAM and eight-level hardware stack make a full RTOS impractical. Timer interrupts and cooperative task scheduling are usually more suitable.

6. How can larger amounts of data be logged?

The internal 256-byte EEPROM is suitable only for small settings and records. Use external EEPROM, FRAM or an SD card for larger logs, and apply wear leveling when data is written frequently.

7. Can the PIC16F877A run PID control algorithms?

Yes, especially for relatively slow systems such as temperature, speed and level control. Fixed-point arithmetic is usually preferable because floating-point calculations require more processing time and program memory.

8. Do code-protection bits fully secure the firmware?

The CP and CPD configuration bits block normal program and data-memory reading through standard programming tools. However, they do not guarantee protection against advanced physical extraction methods.

Související článek

Online podání RFQ: Rychlé odpovědi, lepší ceny!

RFQ