// GPIO AVR addresses
volatile uint8_t* portb = 0x25;
volatile uint8_t* ddrb = 0x24;
volatile uint8_t* pinb = 0x23;
int main(void){
*ddrb |= (1 << 5); // Setting pin 13 as output
for(;;){
// Toggle pin logic
if ((*portb >> 5) & 1){ // Reading pin 13
*portb &= ~(1 << 5); // Clearing pin 13 if its state is true
} else {
*portb |= (1 << 5); // Setting pin 13 if its state is false
}
// A very, very imprecise delay
for (volatile uint64_t timer = 0 ; timer < 80000 ; timer++);
}
}