8255 Programmable Peripheral Interface: Block Diagram and Working Explained