#include <string.h>
#include <util/delay.h>
#ifndef _BV
#define _BV(bit) (1<<(bit))
#endif
#ifndef sbi
#define sbi(reg,bit) reg |= (_BV(bit))
#endif
#ifndef cbi
#define cbi(reg,bit) reg &= ~(_BV(bit))
#endif
#ifndef tbi
#define tbi(reg,bit) reg ^= (_BV(bit))
#endif
#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))
#define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit)))
#define loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit))
#define loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit))
void setup() {
// bla bla
}
void buzzer(uint8_t time) {
sbi(PORTB, PB5);
_delay_ms(time);
cbi(PORTB, PB5);
}
int main() {
DDRD = 0xff;
PORTD = 0x00;
DDRB |= _BV(PB5);
PORTB &= ~_BV(PB5);
DDRC &= ~_BV(PC6);
PORTC |= _BV(PC6);
//while(1) {
// turn LEDs on sequentially
for (uint8_t i = 0; i < 8; i++) {
tbi(PORTD, i);
buzzer(200);
_delay_ms(800);
}
// blink LEDs 5x
for (uint8_t i = 0; i < 11; i++) {
tbi(PORTD, 0);
tbi(PORTD, 1);
tbi(PORTD, 2);
tbi(PORTD, 3);
tbi(PORTD, 4);
tbi(PORTD, 5);
tbi(PORTD, 6);
tbi(PORTD, 7);
buzzer(500);
_delay_ms(500);
}
// do poprawy
while (1) {
if (bit_is_set(PINC, PC6)) {
asm volatile ("jmp 0");
}
}
//}
}