The internal architecture of 8086 shows the interconnection of all important components of the controller along with its data path. Figure-1 shows the internal architecture of 16F877 microcontroller
PIC16F877 architecture shows the following components:
Figure-1: Internal Architecture of PIC16F877
I/O PORTS : It has five I/O ports PORT A,B,C,D,E. Port A is 6-bit wide, and is used also as analog input. Port E is 3-bit wide i/o port, and also used as analog inputs and Read,write and chip select signals
Communication Protocols : USART, I2C, PSP, Synchronous Serial,
Timers : T0, T1, T2. Timer T0 and T2 are 8-bit and T1 is 16-bit timer counter. It is used to generate precise count, and delay signals and used to generate interrupt signals
Capture, Compare, and PWM modules:
Data EEPROM : It has 256 byte of read/write data EEPROM
Program Memory: It supports 8kx14 bit wide program memory where word size is 14-bit. The memory is divided into pages of 2KB each. PIC has two separate buses for the program and the data memory allowing faster access to data.
8-level hardware stack: stack is not implemented in program or data memory instead it is implemented on hardware. There is no PUSH or POP instructions. The SP is auto incremented on PUSH and POP operations. It is a circular stack which rolls back after 8th write operation, the 9th write operation will overwrite the 1st position and so on.
Data Memory: The registers in PIC are divided into the special function registers (SFR) which are in the lower part of data memory, and the General purpose registers which are above the SFR and are implemented as static RAM. The data memory is divided into four banks each of 128 bytes. Out of these 92 bytes of the space is reserved for the general purpose register or data memory amounting to a total of 92×4 = 368 bytes of data memory. \
10-bit ADC : It has a 8 channel, 10-bit resolution ADC.
Instruction register: The 14-bit instruction from the memory is read into the IR register
Decoder Unit: It is used to decode the instruction from the IR register.
Timing and Control Unit: It is used to generate the timing and necessary control signals
ALU: The arithmetic and logical operations is carried out inside this unit.