P: ¿los pines individuales de puerto diferente de un micro-controlador de ser asignado a un registro y sus valores se han cambiado al cambiar el valor del registro?
Escenario: he utilizado hasta algunos pines de cada puerto(8 bits) de la micro-controlador. Ahora quiero interfaz de un dispositivo que necesita un bus de 8 bits (supongamos D0 a D7 EN la SECUENCIA), es decir, necesito 8 pines del controlador, así que me puedo conectar en uno-a-uno de la moda
portx0 -> D0 // x is the name of port followed by bit location on that port
portx1 -> D1
...
portx7 -> D7
pero no tengo todo un puerto de 8 pines que me puedo conectar con este dispositivo, más bien tengo algunos pines de portx, algunos de porty y algunos pines de portz. El nuevo escenario de conexión es como (conexión de un micro-controlador de dispositivo respectivamente )
portx0 -> D0
portx1 -> D1
portx2 -> D2
porty4 -> D3
porty5 -> D4
porty6 -> D5
porty7 -> D6
portz1 -> D7
En esta condición, si quiero enviar un valor de decir
unsigned char dataReg = 0xFA;
a mi dispositivo de controlador que tengo que realizar poco sabio operaciones en el valor de ser enviados y configurar cada pin de acuerdo con el valor en el registro de forma individual. Por ejemplo
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 );
Ahora, llegando a la cuestión principal, para evitar estos cálculos individuales en cada uno de los bits en los diferentes puertos, puede clavijas individuales de puerto diferente de un micro-controlador de ser asignado a un registro y sus valores se han cambiado al cambiar el valor del registro?