Il PIC16F877 ha 8k di flash memory (area programma), 368 byte di ram e 256 byte di e2prom. Tutte le istruzioni, ad eccezione di quelle di salto, che ne utilizzano 2, utilizzano 1 ciclo macchina che corrisponde a 4 periodi di clock. Il PIC16F877 può lavorare con un clock compreso da 0 a 20 Mhz, può avere fino a 14 sorgenti diverse di interrupt (da periferiche interne e/o esterne) ed è possibile annidare fino ad 8 chiamate a subroutine in quanto lo Stack ha una profondità pari a 8.
Ha un architettura RISC che significa : Reduced Instruction Set Computing, cioè elaborazione con insieme di istruzioni ridotto.
Le istruzioni sono quindi solo poche decine, sono eseguite molto velocemente e non serve un clock molto elevato per un efficiente funzionamento ( dai 4-8 MHz per i tipi più semplici, fino a 33-50 MHz per i tipi più evoluti)
Supporta la ICSP : In Serial Circuit Programmino cioè la possibilità di programmarlo senza togliere il chip dalla scheda, con un apposito cavetto.
Elenco delle periferiche contenute nel PIC16F877
- 3 Timer (Timer0 8 bit, Timer1 16 bit e Timer2 8 bit)
- 2 moduli CCP capture, compare e pwm
- 8 adc a 10 bit
- porta seriale sincrona e i2c
- porta di comunicazione parallela (PSP)
- porta seriale asincrona (usart)
- diversi pin di i/o distribuiti su 5 porte (Porta, Portb, Portc, Portd, Porte)
Dando il reset al microcontrollore (uC) il Program Counter (PC) si resetta per cui il programma riparte dalla locazione 0000h (Reset Vector)
Di seguito un ottimo .pdf con l'architettura del PIC16F877