S: Bir mikro denetleyicinin farklı bağlantı noktasındaki tek tek pimler bir kayıtçıyla eşlenebilir ve kayıt değeri değiştirilirken değerleri değiştirilebilir mi?
Senaryo: Mikro denetleyicinin her bağlantı noktasından (8 bit) bazı pimler kullandım. Şimdi 8 bit veriyoluna ihtiyaç duyan bir cihazı arayüzlemek istiyorum (DQU'dan D0'a D7 diyelim), yani denetleyiciden 8 pime ihtiyacım var, böylece onları bire bir şekilde bağlayabiliyorum
portx0 -> D0 // x is the name of port followed by bit location on that port
portx1 -> D1
...
portx7 -> D7
ama bu cihazla bağlanabileceğim 8 pinli bir portum yok, bunun yerine portx'ten bazı portlar, porty'den bazıları ve portz'dan bazı pinler var. Yeni bağlantı senaryosu aşağıdaki gibidir (sırasıyla mikro denetleyiciden cihaza bağlantı)
portx0 -> D0
portx1 -> D1
portx2 -> D2
porty4 -> D3
porty5 -> D4
porty6 -> D5
porty7 -> D6
portz1 -> D7
Bu durumda bir değer göndermek istersem
unsigned char dataReg = 0xFA;
denetleyiciden cihazıma gönderilecek değer üzerinde biraz akıllı işlemler yapmalı ve her pimi kayıttaki değere göre ayrı ayrı ayarlamalıyım. Örneğin
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 );
Şimdi, ana soruya gelince, farklı portlardaki her bir bit üzerindeki bu bireysel hesaplamaları önlemek için, bir mikro denetleyicinin farklı portunun bireysel pinleri bir kayıtçıya eşlenebilir ve kayıt değeri değiştirilirken değerleri değiştirilebilir mi?