© Copyright 2026. All Rights Reserved
PIC16F886 8 Bit Microcontroller is a microcontroller good for experimenting and developing applications because it has a high flash memory rewrite cycle. Also, there are a lot of tutorials and support available online. The controller has 16KBytes flash memory which is enough for many applications. Along with 24 programmable Input/output pins that are developed to handle 20mA current (direct LED driving capability) the system can interface many peripherals easily. With Watchdog timer to reset under error automatically, the controller can be used to develop applications of permanent installation.

PIC16F886 is a 28 pin IC and each pin can perform multiple functions as shown in the above PIC16F886 pin diagram. The description for each of these pins is given below.
| Pin Number | Pin Name | Description |
| 1 | RE3/MCLR/VPP | RE3: Pin3 of Port E
MCLR: Master Clear Input or Reset pin VPP: Programming voltage |
| 2 | RA0/AN0/ULPWU/C12IN0- | RA0: Pin0 of Port A
AN0: Analog input 0 ULPWU: Ultra Low-Power Wake-up input C12IN0-: Comparator C1 or C2 negative input |
| 3 | RA1/AN1/C12IN1- | RA1: Pin1 of Port A
AN1: Analog input 1 C12IN1-: Comparator C1 or C2 negative input |
| 4 | RA2/AN2/VREF-/CVREF/C2IN+ | RA2: Pin2 of Port A
AN2: Analog input 2 VREF-: A/D reference voltage (low) input CVREF: Comparator voltage reference output C2IN+: Comparator C2 positive input |
| 5 |
RA3/AN3/VREF+/C1IN+ |
RA3: Pin3 of Port A
AN3: Analog input 3 VREF+: A/D reference voltage (high) input C1IN+: Comparator C1 positive input |
| 6 | RA4/T0CKI/C1OUT | RA4: Pin4 of Port A
T0CKI: Timer0 external clock input C1OUT: Comparator C1 output |
| 7 | RA5/AN4/SS/ C2OUT | RA5: Pin5 of Port A
AN4: Analog input 4 SS: SPI slave select input C2OUT: Comparator C2 output |
| 8 | VSS | Ground |
| 9 | RA7/OSC1/CLKIN | RA7: Pin7 of Port A
OSC1:Oscillator pin 1 CLKI: External clock source input |
| 10 | RA6/OSC2/CLKOUT | RA6: Pin6 of Port A
OSC2: Oscillator pin 2 CLKO: Clock source output |
| 11 | RC0/T1OSO/T1CKI | RC0: Pin0 of Port C
T1OSO :Timer1 oscillator output T1CKI: Timer1 external clock input |
| 12 | RC1/T1OSI/CCP2 | RC1: Pin1 of Port C
T1OSI: Timer1 oscillator input CCP2:Capture 2 input/Compare 2 output/PWM2 output |
| 13 | RC2/P1A/CCP1 | RC2: Pin2 of Port C
P1A: PWM output CCP1: Capture 1 input/Compare 1 output/PWM1 output. |
| 14 | RC3/SCK/SCL | RC3: Pin3 of Port C
SCK: SPI clock SCL: I2C clock |
| 15 |
RC4/SDI/SDA |
RC4: Pin4 of Port C
SDI: SPI data input SDA: I2C data I/O |
| 16 | RC5/SDO | RC5: Pin5 of Port C
SDO: SPI data out |
| 17 | RC6/TX/CK | RC6: Pin6 of Port C
TX: EUSART asynchronous transmit CK: EUSART synchronous clock |
| 18 | RC7/RX/DT | RC7: Pin7 of Port C
RX: EUSART asynchronous receive DT: EUSART synchronous data |
| 19 | VSS | Ground |
| 20 | VDD | Positive Power Supply |
| 21 | RB0/AN12/INT | RB0: Pin0 of Port B
AN12: Analog input 12 INT: External interrupt |
| 22 | RB1/AN10/P1C/C12IN3- | RB1: Pin1 of Port B
AN10: Analog input 10 P1W: PWM output C12IN3-: Comparator C1 or C2 negative input |
| 23 | RB2/AN8/P1B | RB2: Pin2 of Port B
AN8: Analog input 8 P1B: PWM output |
| 24 | RB3/AN9/PGM/C12IN2- | RB3: Pin3 of Port B
AN9: Analog input 9 PGM: Low-voltage ICSP Programming enable pin C12IN2-: Comparator C1 or C2 negative input |
| 25 | RB4/AN11/P1D | RB4: Pin4 of Port B
AN11: Analog input 11 P1D: PWM output |
| 26 | RB5/AN13/T1G | RB5 Pin5 of Port B
AN13: Analog input 13 T1G: Timer1 Gate input |
| 27 | RB6/ICSPCLK | RB6: Pin6 of Port B
ICSPCLK: Serial Programming Clock |
| 28 | RB7/ICSPDAT | RB7: Pin7 of Port B
ICSPDAT: ICSP Data I/O |
| CPU | 8-bit |
| Total pins | 28 |
| Programmable pins | 24 |
| Communication Interface | SPI Serial Interface(7,14,15,16 PINS)
UART Interface(17,18 PINS) Two-wire Serial Interface or I2C(14,15 PINS) ICSP or In-Circuit Serial Programming Interface (27,28 Pins) |
| ADC Feature | 11channels of 10-bit resolution |
| Timer Feature | One 8-bit counter, Two 16-bit counter |
| Analog Comparators | 2 |
| PWM channels | 4 |
| External Oscillator | Up to 20MHz |
| Internal Oscillator | 31KHz-8MHz Internal R-C Oscillator featured with:
|
| Program memory / Flash memory | 16Kbytes |
| CPU Speed | 1MIPS @ 1MHz |
| RAM | 368Bytes |
| EEPROM | 256Bytes |
| Watchdog Timer | Programmable Watchdog Timer with separate on-chip oscillator |
| Power Save Modes | Available |
| Operating Voltage | 2.0V to 5.5V |
| Maximum current to any I/O pin | IN :25mA
OUT : 25mA |
| Operating Temperature | -40°C to +125°C |
Like any other microcontroller, PIC16F886 needed to be programmed before getting the chip working. So for working of PIC16F886, first we need to save the appropriate program file in the controller FLASH memory. Once power is provided, the controller executes this code saved in FLASH memory to create the response.
The entire process of programming PIC16F886 goes like this:
(MPLAB IDE for Windows OS [www.microchip.com/mplabx-ide-windows-installer ])
(For these MPLAB IDE you can use ‘C’ language to write the application program)
After connecting the power, the controller executes this HEX code saved in the memory (which is written a program) and creates a response as instructed.

PIC16F886 Microcontroller Datasheet
1 x PIC16F886 8 Bit Microcontroller