Esto es lo que encontré en la hoja de datos PIC16F1947:
Al leer el registro PORTB se lee el estado de los pines, mientras que escribir en él se escribirá en el pestillo PORT. Todas las operaciones de escritura son operaciones de lectura-modificación-escritura. Por lo tanto, una escritura en un puerto implica que los pines del puerto se leen, este valor se modifica y luego se escribe en el pestillo de datos del PUERTO (LATB).
Soy desarrollador de firmware y mi experiencia es informática. Todavía me cuesta entender la electrónica y la lógica a nivel de hardware. Solo tengo el conocimiento básico.
Por lo tanto, quiero entender qué sucede cuando los datos se escriben para retener en el nivel de hardware.
Gracias.
fuente
Para evitar problemas de lectura-modificación-escritura, debe escribir en el puerto en su conjunto, en lugar de configurar o restablecer bits individuales en el puerto. Un problema de RMW puede ocasionar que no se establezca un bit o que otra salida se ponga alta, especialmente si los pines de salida están generando o hundiendo mucha corriente.
Normalmente se usa un "registro de sombra". Establezca o restablezca bits en eso, y envíelo al puerto, para evitar problemas de RMW.
El problema se evita con los PIC 18F mediante el uso de un pestillo separado, los bits individuales se pueden configurar y restablecer con impunidad.
fuente