Big change, from 108 instructions to 54 - cut the time in half !
358: e5 2e mov r14, r21
35a: ff 24 eor r15, r15
35c: 1c c0 rjmp .+56 ; 0x396 <_ZN9PCintPort5PCintEv+0x78>
35e: 8b 81 ldd r24, Y+3 ; 0x03
360: 28 2f mov r18, r24
362: 30 e0 ldi r19, 0x00 ; 0
364: c7 01 movw r24, r14
366: 82 23 and r24, r18
368: 93 23 and r25, r19
36a: 89 2b or r24, r25
36c: 89 f0 breq .+34 ; 0x390 <_ZN9PCintPort5PCintEv+0x72>
#ifndef NO_PIN_STATE
PCintPort::pinState=PCintPort::curr & p->mask ? HIGH : LOW;
36e: 80 91 44 01 lds r24, 0x0144
372: 40 e0 ldi r20, 0x00 ; 0
374: 90 e0 ldi r25, 0x00 ; 0
376: 82 23 and r24, r18
378: 93 23 and r25, r19
37a: 89 2b or r24, r25
37c: 09 f0 breq .+2 ; 0x380 <_ZN9PCintPort5PCintEv+0x62>
37e: 41 e0 ldi r20, 0x01 ; 1
380: 40 93 46 01 sts 0x0146, r20
#endif
#ifndef NO_PIN_NUMBER
PCintPort::arduinoPin=p->arduinoPin;
384: 8c 81 ldd r24, Y+4 ; 0x04
386: 80 93 45 01 sts 0x0145, r24
#endif
#ifdef PINMODE
PCintPort::pinmode=p->mode;
#endif
p->PCintFunc();
38a: e8 81 ld r30, Y
38c: f9 81 ldd r31, Y+1 ; 0x01
38e: 09 95 icall
}
p = p->next;
Great work Rob and greynomad
Duane B