#include <avr/io.h> #include <util/delay.h> /* Button click with software debounce */ int main(void) { DDRB |= 1 << PINB0; // set PINB0 as output PORTB ^= 1 << PINB0; // xor toggling only PORTB0 DDRB |= 1 << PINB2; // set PINB2 as output DDRB &= ~(1 << PINB1); // set PINB1 as input PORTB |= 1 << PINB1; // pull PINB1 high int press = 0; int pressed_cf=0; int released_cf=0; while(1) // infinite loop { if(bit_is_clear(PINB,1)) { if (pressed_cf++ > 500) { if (press == 0 ) { PORTB ^= 1 << PINB0; PORTB ^= 1 << PINB2; press = 1; } pressed_cf = 0; } } else { if(released_cf++ > 500) { press=0; released_cf=0; } } } }
Tag: