Hatten motsvarar den bitvisa logiska operationen XOR. Alltså, om en bit i båda operanderna är lika så blir resultatet 0.
Denna är ganska märklig att använda som evaluerande funktion i en if-sats eftersom det kommer att medföra att påstående i princip är sant av andra anledning än den tänkta.
Varför? Jo för om nu hela PIND inte är helt identisk med _BV(PD1) (som är lika med talet 0x02), så blir resultatet av XOR:en något skilt från noll, vilket gör att if satsen alltid körs.
Jag skulle rekommendera att du kollar efter pulserna i två steg, ett där du väntar på att pulsen skall gå hög, och ett där du väntar på att den går låg igen.[/code]