# Digital INPUT OUTPUT There are three registers which initialize Digital INPUT and DIGITAL OUTPUT port: 1. DDRB 2. DDRC 3. DDRD Each pin is 1 bit of DDRx. Here P means Port Example: PC → Port C Microcontroller pins are grouped as: 1. PORTB → PB0–PB7 2. PORTC → PC0–PC6 3. PORTD → PD0–PD7 --- ## Important - In Arduino Uno, PC7 does not exist → PORTC is only PC0–PC6 - PB6 and PB7 are used by 16MHz crystal → DO NOT USE - PC6 is RESET pin → DO NOT USE as GPIO → can reset system - PD0 and PD1 are Serial pins (RX TX) → used for USB upload and debugging → DO NOT USE during development --- ## SPI (just remember) - PB3 → MOSI - PB4 → MISO - PB5 → SCK → used for SPI and programming → can be used as GPIO but avoid if SPI used → PB5 has onboard LED --- ## I2C (just remember) - PC4 → SDA - PC5 → SCL → used for I2C communication --- ## Safe pins for Digital I/O - PORTD → PD2–PD7 - PORTB → PB0–PB2 (PB3–PB5 usable but SPI) - PORTC → PC0–PC5 (PC4 PC5 shared with I2C) --- ## Use with care - PB3 PB4 PB5 → SPI pins - PC4 PC5 → I2C pins --- ## Final Best pins to use: PD2–PD7 PB0–PB2 PC0–PC5 Avoid: PB6 PB7 → crystal PC6 → reset PD0 PD1 → serial