T: Dapatkah masing-masing pin port yang berbeda dari mikrokontroler dipetakan ke register dan nilainya diubah ketika mengubah nilai register?
Skenario: Saya telah menggunakan beberapa pin dari setiap port (8-bit) dari micro-controller. Sekarang saya ingin menghubungkan perangkat yang membutuhkan bus 8-bit (misalkan D0 ke D7 DALAM URUTAN) artinya saya membutuhkan 8 pin dari pengontrol sehingga saya dapat menghubungkannya dalam mode satu-ke-satu
portx0 -> D0 // x is the name of port followed by bit location on that port
portx1 -> D1
...
portx7 -> D7
tetapi saya tidak memiliki seluruh port 8 pin yang dapat saya hubungkan dengan perangkat ini, tetapi saya memiliki beberapa pin dari portx, beberapa dari porty dan beberapa pin dari portz. Skenario koneksi baru adalah as (masing-masing koneksi dari mikrokontroler ke perangkat)
portx0 -> D0
portx1 -> D1
portx2 -> D2
porty4 -> D3
porty5 -> D4
porty6 -> D5
porty7 -> D6
portz1 -> D7
Dalam kondisi ini jika saya ingin mengirim nilai katakanlah
unsigned char dataReg = 0xFA;
ke perangkat saya dari controller saya harus melakukan operasi sedikit bijak pada nilai yang akan dikirim dan mengatur setiap pin sesuai dengan nilai dalam register secara individual. Sebagai contoh
portx0 = ((dataReg & 0x01) >> 0 ); // Masking and shifting as bit position
portx1 = ((dataReg & 0x02) >> 1 );
portx2 = ((dataReg & 0x04) >> 2 );
porty4 = ((dataReg & 0x08) >> 3 );
porty5 = ((dataReg & 0x10) >> 4 );
porty6 = ((dataReg & 0x20) >> 5 );
porty7 = ((dataReg & 0x40) >> 6 );
portz1 = ((dataReg & 0x80) >> 7 );
Sekarang, sampai pada pertanyaan utama, untuk menghindari kalkulasi individual ini pada setiap bit pada port yang berbeda, bisakah pin individual port yang berbeda dari mikrokontroler dipetakan ke register dan nilainya diubah ketika mengubah nilai register?