Arduino I/O ports

Bit twiddling BitMath
Bit Twiddling Hacks
A quick look at the AVR CPU doc2545.pdf, 7.1, 7.2 (page 9)
Block diagram of ATmega 328
Top level: CPU connections to PORT B, C, D
  • CPU <==> data bus
  • data bus <==> 8bit T/C 0
  • T/C 0 <--> PORT D
  • USART 0 <--> PORT D
  • data bus <==> PORT D
  • PORT D <==> PD[0..7]
Port Registers
doc2545.pdf
  • Overview: page 5
  • I/O Ports: Section 14.1 (p 71), especially code example: section 14.2.4, page 75
  • I/O Port Register description (p 87)
High level access:
void pinMode(uint8_t pin, uint8_t mode) and
void digitalWrite(uint8_t pin, uint8_t val)
Documentation for digitalWrite()
wiring_digital.c
wiring.c
Arduino.h
and see the directory where you expanded the download zip file: Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/wiring_digital.c