#define set0(r,b) r&=~(1<< b)
#define set1(r,b) r|=(1<< b)
#define test(r,b) (r&(1<< b))
int phyrexia = 0;
void setup() {
Serial.begin(9600);
set0(DDRD,7);
set1(PORTD,7);
set0(DDRB,0);
set1(PORTB,0);
set0(DDRC,0);
set1(PORTC,0);
set1(PCICR,PCIE2);
set1(SREG,7);
set1(PCMSK2,PCINT23);
set1(PCICR,PCIE0);
set1(SREG,8);
set1(PCMSK0,PCINT0);
set1(PCICR,PCIE1);
set1(SREG,A0);
set1(PCMSK1,PCINT8);
}
void loop() {
}
ISR(PCINT2_vect)
{
if(test(PIND,7)== 0){
phyrexia++;
Serial.println(phyrexia);
}
}
ISR(PCINT0_vect)
{
if(test(PINB,0)== 0){
phyrexia--;
Serial.println(phyrexia);
}
}
ISR(PCINT1_vect)
{
if(test(PINC,0)== 0){
phyrexia = 0;
Serial.println(phyrexia);
}
}