Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <inttypes.h>
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <avr/sleep.h>
- #define byte unsigned char
- volatile byte lastPins = 0;
- #define isPinChanged(pin) ((diff >> pin) & 1)
- #define isPinHigh(pin) ((mPins >> pin) & 1)
- ISR(INT0_vect) {
- byte mPins = PINB;
- byte diff = mPins ^ lastPins;
- if(isPinChanged(2) && isPinHigh(1) && !isPinHigh(2)) {
- PORTB |= 1 << 0;
- }
- lastPins = mPins;
- }
- #undef isPinChanged
- #undef isPinHigh
- int main() {
- DDRB |= (1 << 1) | (1 << 2);
- PORTB &= ~(1 << 2);
- MCUCR |= (1 << 0);
- GIMSK |= (1 << 6);
- asm("sei");
- while(1) {
- asm("nop");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement