/* -------------------------------------------------------- *
Arduino register control
Ports: {
B: gpio 7-0,
D: gpio 13-8,
C: adc 5-0
}
Registers: {
DDRx: set input/output,
PORTx: write low/high,
PINx: read low/high
}
PinMap: {
Pxn: {x: Porta, n: Pino},
PB5: 13 (LED_BUILTIN),
PD4: 4 (gpio),
PC0: 0 (A0),
}
/* -------------------------------------------------------- */
void setup() {
Serial.begin(9600);
/* --------------- pinMode --------------- */
DDRB |= (1 << PB5); // set ledPin: output
DDRD &= ~(1 << PD4); // set buttonPin: input
}
/* -------------------------------------------------------- */
void loop() {
/* --------------- digitalWrite --------------- */
//PORTB |= (1 << PB5); // high
//PORTB &= ~(1 << PB5); // low
PORTB ^= (1 << PB5); // toggle
/* --------------- digitalRead --------------- */
//printBinary(PINB, 5);
printBinary(PIND, 8);
/* --------------- executionControl --------------- */
//while(1);
delay(5000);
}
/* -------------------------------------------------------- */
void printBinary(byte reg, size_t numberOfBits) {
for (size_t i = 0; i < numberOfBits; i++) {
size_t thisBit = numberOfBits - i; // decrement index
bool bitValue = (reg & (1 << thisBit));
Serial.print(bitValue);
}
Serial.print("\n");
}
/* -------------------------------------------------------- */