39 lines
627 B
C
39 lines
627 B
C
|
#include <avr/io.h>
|
||
|
#include <avr/interrupt.h>
|
||
|
|
||
|
volatile uint8_t current_led = 3;
|
||
|
volatile uint8_t reverse = 0;
|
||
|
|
||
|
ISR(ANALOG_COMP_vect){
|
||
|
uint8_t next = current_led + 1;
|
||
|
if (next > 3){
|
||
|
next = 0;
|
||
|
reverse = (reverse + 1) % 2;
|
||
|
}
|
||
|
if (!reverse){
|
||
|
PORTC |= (1<<next);
|
||
|
}else{
|
||
|
PORTC &= ~(1<<next);
|
||
|
}
|
||
|
|
||
|
current_led = next;
|
||
|
}
|
||
|
|
||
|
int main(void){
|
||
|
// ustawienie C0-C3 jako wyjscie
|
||
|
DDRC |= 0b00001111;
|
||
|
|
||
|
// wylaczenie interrupow
|
||
|
cli();
|
||
|
|
||
|
// wlaczenie interrupu na komparator
|
||
|
ACSR |= (1<<ACIE);
|
||
|
|
||
|
// wlaczenie interrupow
|
||
|
sei();
|
||
|
|
||
|
for(;;);
|
||
|
|
||
|
return 1;
|
||
|
}
|