Also bei den AVR´s ist das eigentlich so:
erstmal kann jeder der 32 I/O pins (reset, Versorgungsspannung und so nicht) als digitaler Output und als Digitaler Input (sagt ja schon der Name I/O Port)
verwendet werden, es bedarf nur einer einzeiligen Konfiguration in der Programmierung.
Dann hat aber jeder dieser Pins noch eine Extrafunktion, die dann nur dieser Pin (bzw. nur diese Pins) ausführen können.
Beispiele sind:
RXD/TXD für die UART verbindung
SCK/MISO/MOSI für die SPI Schnittstelle, die auch zur Programmierung genutzt wird (ISP)
ADC pins sind die Analogen eingänge des AVR, zum Auswerten diverser Sendsoren
SDA/SCL sind die Beiden Leitungen für Hardware I²C, an die man einen I²C Slave anschließt
usw. man kann ja im Internet nachschauen, was die Machen

Wenn man eine Bestimme funktion nicht braucht, kann man diesen Pin als I/O verwenden z.B. einen ADC, man hat ja 5 davon (bei mega 8 )
Den Motortreiber muss man an einem PWM - Pin anschließen, die Heißen OC1A OC1B und so weiter.
Um die richtung festzulegen (motortreiber) kann man natürlich auch einen gewöhnlichen I/O port verwenden.

Mfg Thegon