10static volatile uint8_t
lastB = PINB;
17 PCMSK0 |= (1 << pcInt);
23 lastB &= ~(1 << pcInt);
24 lastB |= PINB & (1 << pcInt);
31 volatile uint8_t pinsB = PINB;
34 volatile uint8_t deltaB = pinsB ^
lastB;
37 volatile uint8_t maskedDeltaB = deltaB & PCMSK0;
40 if((maskedDeltaB & (1 << PCINT0))) {
pcISR[PCINT0]();}
41 if((maskedDeltaB & (1 << PCINT1))) {
pcISR[PCINT1]();}
42 if((maskedDeltaB & (1 << PCINT2))) {
pcISR[PCINT2]();}
43 if((maskedDeltaB & (1 << PCINT3))) {
pcISR[PCINT3]();}
44 if((maskedDeltaB & (1 << PCINT4))) {
pcISR[PCINT4]();}
45 if((maskedDeltaB & (1 << PCINT5))) {
pcISR[PCINT5]();}
46 if((maskedDeltaB & (1 << PCINT6))) {
pcISR[PCINT6]();}
47 if((maskedDeltaB & (1 << PCINT7))) {
pcISR[PCINT7]();}
55 uint8_t pcInt = NOT_AN_INTERRUPT;
57#if defined(__AVR_ATmega32U4__)
60 case 17: pcInt = PCINT0;
break;
61 case 15: pcInt = PCINT1;
break;
62 case 16: pcInt = PCINT2;
break;
63 case 14: pcInt = PCINT3;
break;
64 case 8: pcInt = PCINT4;
break;
65 case 9: pcInt = PCINT5;
break;
66 case 10: pcInt = PCINT6;
break;
67 case 11: pcInt = PCINT7;
break;
uint8_t digitalPinToPCInterrupt(uint8_t pin)
static volatile uint8_t lastB
void attachPCInt(uint8_t pcInt, void(*pcisr)(void))
Attaches a function to a pin change interrupt.