Duda en código de arduino.

Buenas tardes. Abro este tema para ver si alguien me podría ayudar a corroborar esta equivalencia de código de
arduino.
Lo que pasa es que soy nuevo programando registros y la verdad no lo tengo muy claro aún.

Me gustaría cambiar el código para que haga esto mismo:
C:
      delayMicroseconds(7000-valor);       
      digitalWrite(3,HIGH);
      delayMicroseconds(10);
      digitalWrite(3, LOW);
Pero utilizando la función micros(); y el registro de puertos. Esto es lo que yo creo que sería:
C:
unsigned long currentMillis = micros();

      if (currentMillis - previousMillis >= 7000UL -valor) {
          PORTD |= B00001000;

        unsigned long currentMillis2 = micros();

        if (currentMillis2 - previousMillis2 >= 10UL) {
          PORTD &= !B00001000;
          previousMillis2 = currentMillis2;
        }
        previousMillis = currentMillis;

        }
Tambien estas dos funciones ;

C:
pinMode(2,INPUT)
if(!digitalRead(2)){
...
}
lo que yo creo que sería:
C:
DDRD &= B11111011;
if (!(PIND >> 2 & B00000100 >> 2)){
...
        }
Muchas gracias por su ayuda.

Saludos.
 
Arriba