Inilah yang saya temukan di lembar data PIC16F1947:
Membaca register PORTB membaca status pin, sedangkan menulis padanya akan menulis ke kait PORT. Semua operasi tulis adalah operasi baca-modifikasi-tulis. Oleh karena itu, penulisan ke port menyiratkan bahwa pin port dibaca, nilai ini dimodifikasi dan kemudian ditulis ke kait data PORT (LATB).
Saya seorang pengembang firmware dan latar belakang saya adalah Ilmu Komputer. Saya masih berjuang untuk memahami elektronik dan logika di tingkat perangkat keras. Saya hanya memiliki pengetahuan dasar.
Jadi, saya ingin memahami apa yang terjadi ketika data ditulis untuk mengunci tingkat perangkat keras.
Terima kasih.
sumber
Untuk menghindari masalah baca-modifikasi-tulis, Anda harus menulis ke port secara keseluruhan, daripada mengatur atau mengatur ulang bit individual di port. Masalah RMW mungkin mengakibatkan sedikit tidak diatur, atau output lain menjadi tinggi, terutama jika pin output sumber atau menenggelamkan banyak arus.
"Daftar bayangan" biasanya digunakan. Atur atau setel ulang bit-bit itu, dan outputkan ke port, untuk menghindari masalah RMW.
Masalahnya dihindari dengan PIC 18F dengan menggunakan kait terpisah, bit individual yang dapat diatur dan diatur ulang dengan impunitas.
sumber