Desfase usando PORTK=FF PORTF=FF

Desfase usando PORTK=FF PORTF=FF .
He usado esta sintaxis para no escribir pin por pin a high por que si lo hago hay un desfase tremendo entre ellos. usando PORTK no existe desfase entre los bits del puerto (K) pero si entre los puertos "K" y "F", existe una sintaxis como esta ?(var_16_bits=PORTK+PORTF)
y a si poder escribir en una sola instrucción a (var_16_bit=FFFF)

¿Que consideras un desfasa tremendo? Si el programa no esta escrito con delays(), seria en el orden de microsegundos.

No, no se puede hacer lo que preguntas ni siquiera en assembler.

Para estas dudas la mejor fuente de información, siempre, es la hoja de datos del micro.

La instrucción que podría llegar a hacerlo es MOVW ya que copia registros de 16 bits (o sea copia el contenido de dos registros consecutivos).

El problema es que los puertos ocupan tres bytes consecutivos cada uno: PINx, DDRx, PORTx (ordenados según su dirección y siendo x la letra que identifica al puerto).

Por lo tanto no hay manera de leer o escribir dos puertos con una sola instrucción ya que sus direcciones PINx o PORTx (según sea leer o escribir) no son consecutivas.

Saludos

gracias por su pronta respuesta .

un desfase de 16 microsegundos aproximadamente solo cuando activo pin por pin.

Bueno, me entro la intriga ¿Para que necesitas que los pines se activen de modo simultaneo?

Nesesito precision como por ejemplo un generador de patrones. tendre que aumentar la velocidad del micro.

Lo único que se me ocurre es utilizar compuertas AND de un sl74hc00 o algo parecido para sincronizar las salidas .

Pero si escribes directo a los puertos, como has planteado originalmente, el tiempo es muchísimo menor.

Y si quieres toda la velocidad que el micro puede dar entre ambas instrucciones de escritura siempre puedes recurrir al assembler, así tardaría menos de 0.2 useg.

Saludos

existe

// si considero a PORTK como MSB y PORTF como LSB
var_16_bits=(int16_t) (PORTK<<8+PORTF);

Pero sigue leyendo un puerto y luego el otro, no los dos puertos simultáneamente.

Saludos

Pero ya explicaste en #3 que no es posible entonces?
Una cosa es esto

var_16_bits=PORTK+PORTF)

y otra lo que yo plantee.
Lo de @luchito2000 es un OR de dos puertos, resultado algo de 8 bits
lo que yo le planteo es una variable que contiene los dos puertos. Ahora si no es satisfactorio okay, pero al menos es correcto.
Si es un problema de velocidad como el explica, tiene otras alternativas.

La respuesta es correcta, mi pregunta fue mal planteada. como dijo nuestro compañero gatul no existe la forma solo funionaria con micros que trabajen con 32 bits como los stm32fxxx