Microcontrollers are only interesting insofar as they can interact with input and output devices. The gatekeeper between a microcontroller and external devices are I/O pins. The ATmega328P has three I/O ports that connect to each of the I/O pins. These ports are called Port B, Port C, and Port D.
The pins associated with each of these ports are listed in Table 5.0.1. The labeling used for the ATmega328P differs from the labeling used by Arduino Uno R3. Note that the ATmega328P has more available I/O pins than the Arduino Uno R3. The Arduino platform has external hardware connected to pins PB6, PB7, and PC5, so they are not available for general I/O usage. The Arduino labeling of pins in Port C with the letter A is due to the fact that these pins can act as an input source to the analog to digital converter (ADC), which is discussed in Chapter 6. This does not mean that the pins on Port C are “analog” pins. All I/O pins on the ATmega328P are digital I/O pins.