I am a student now currently learning about interfacing 8255 with 8086. For me the doubt is that, is there a need for external i/o interfacing like in 8086 for latest processors? what is GPIO ?

  • \$\begingroup\$ I would worry about the second question before asking the first. \$\endgroup\$ – Ignacio Vazquez-Abrams Mar 10 '15 at 2:12
  • \$\begingroup\$ okay... plz let me know the answers \$\endgroup\$ – Harish Sp Mar 10 '15 at 2:16

What you are referring to is the difference between microprocessors and microcontrollers.

Back when microprocessors were first invented, there was not enough room on the same die to put the CPU, read-only memory, RAM, and very many peripherals on the same chip (the Intel 8080 for example had only 4500 transistors, while the microprocessor in your new PC may have billions).

So these early chips brought out a data bus, typically 8-bits wide, and an address bus, usually 16-bits wide or wider. In addition there were read and write strobes to indicate the direction of data transfer.

So all memory was attached to these two buses. The first memory used for program storage was ROM (read-only memory), which was programmed by the manufacturer. Then came PROM (programmable ROM), which could be programmed only once. This was later replaced by EPROM (erasable programmable ROM, which was erased by ultraviolet light), and finally EEPROM, which could be electrically erased. Now we use flash, which functionally is the same as EEPROM but doesn't require an external programmer.

RAM was attached to this same same address and data bus. The two were kept separate areas because a bank of addresses were reserved for the program memory, and another for RAM. Processors like the 8086, used in PC's, typically had very little ROM, just enough to read the operating system into memory from disk. This ROM is called a BIOS (Basic Input/Output System) and is located in the upper portion of the address space.

Peripherals also used the same busses. On Intel processors, there was a bit that indicated whether an I/O port or memory was being accessed. If an I/O port, only the low byte of the address bus was used (limiting access to 256 devices). On Motorola processors (6800 etc.) the I/O addresses were included in the same address map as memory.

The 8255 is a programmable peripheral interface chip, which can be used to provide three 8-bit parallel ports (A, B, and C) to interface with external circuitry as needed (for example, to drive a printer with a Centronix parallel interface, commonly used in those days

In contrast, microcontrollers, such as the 8051, include program storage, RAM, and peripheral such as timers, I/O ports, serial busses (I2C, SPI, UART), USB interface etc. all within the same chip. Because there is no external address and data bus, these pins can be made available for either the peripherals or general purpose (GPIO) I/O ports. These are parallel ports, typically the same "width" as the data bus on the microcontroller (8, 16, or 32), that can be used to control various external circuitry. So the GPIO ports on a microcontroller are analogous to the 8255 chip for the 8086.

Note: microprocessors are still being made; that is what is in your PC Intel (80x86 variant). And some high-end 32-bit microcontrollers have external address bus and data bus, in addition to onboard memory an peripherals. The BIOS, referred to earlier, is now in flash memory instead of ROM, so it can be updated by the user if necessary.

In general, microprocessors (connected to external memory measured in several GB, and clock speeds over 1 GHz) are used in PCs, while microcontrollers (with total internal memory measured in tens or hundreds of KB to a few MB, and clock speeds from 1 MHz to 1 GHz) are used in embedded devices.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.