#define NES_A 0x80
+#define PULSE_TIME 25
+
// Data to store the pins for each controller
struct nesPinsStruct
// Toggle Latch - which presents the first bit
- digitalWrite (pins->lPin, HIGH) ;
- delayMicroseconds (1) ;
- digitalWrite (pins->lPin, LOW) ;
- delayMicroseconds (1) ;
+ digitalWrite (pins->lPin, HIGH) ; delayMicroseconds (PULSE_TIME) ;
+ digitalWrite (pins->lPin, LOW) ; delayMicroseconds (PULSE_TIME) ;
// Read first bit
for (i = 0 ; i < 7 ; ++i)
{
- digitalWrite (pins->cPin, HIGH) ;
- delayMicroseconds (1) ;
- digitalWrite (pins->cPin, LOW) ;
- delayMicroseconds (1) ;
+ digitalWrite (pins->cPin, HIGH) ; delayMicroseconds (PULSE_TIME) ;
+ digitalWrite (pins->cPin, LOW) ; delayMicroseconds (PULSE_TIME) ;
value = (value << 1) | digitalRead (pins->dPin) ;
}
- return ~value ;
+ return value ^ 0xFF ;
}