Sí.
El registro DDRx establece la dirección de los pines individuales. Un bit establecido en 0 configura el pin como entrada y establecido como 1 lo configura como salida.
El registro PINx contiene los valores leídos de los pines configurados para ingresar.
El registro PORTx se escribe para establecer el estado de cualquier pin configurado para la salida.
DDRB = 0x01; // Set pin 0 as output, all others as input on port B
if (PINB & 0x02) { // Check state of pin 1 on port B
PORTB |= 0x01; // Set pin 0 on
} else {
PORTB &= 0xFE; // Turn pin 0 off
}
Observe el uso de operadores bitwise allí para modificar el valor existente en el registro PORTB, en lugar de escribir un valor completo. Eso le permite establecer o borrar un bit individual en el registro.