// Lecture d'une position par capteur XY avec un ATmega32 // X sur INT0 = PD2 (pin 16), Y sur INT1 = PD3 (pin 17) // La position s'affiche sur le port C #include #include #include char Position; char AncienX; void GereXY() { char XY=(PIND>>2)&3; // les bits X et Y remis en position 0 et 1 if ((XY>>1)==AncienX) PORTC=Position++; // compare Y et ancienX else PORTC=Position--; AncienX=XY&1; } ISR (INT0_vect) { GereXY(); } ISR (INT1_vect) { GereXY(); } int main () { DDRC=0xFF; // Port C en sortie PORTD=0xFF; // Port D en entrée, avec pull-up MCUCR=((1<>2)&1; while (1); // boucle infinie }