Texto II
Microcontroladores são pequenos computadores embutidos em um único chip, projetados para controlar funções específicas em sistemas eletrônicos. Eles combinam uma CPU, memória e periféricos de E/S (Entrada/Saída) em um encapsulamento compacto e de baixo custo. Sua capacidade de processamento, versatilidade e eficiência energética os tornam fundamentais para a automação e o controle em uma ampla gama de dispositivos e sistemas.
Considere um microcontrolador com o seguinte diagrama de blocos simplificado que representa as portas E/S digitais.

As configurações de cada porta são definidas pelo registrador a seguir. Este registrador é responsável pela configuração de cinco portas E/S através da definição dos bits 16 a 1.

Bit 16: não especificado;
Bits 15 – 13: Bits de configuração da Porta 4;
Bits 12 – 10: Bits de configuração da Porta 3;
Bits 9 – 7: Bits de configuração da Porta 2;
Bits 6 – 4: Bits de configuração da Porta 1;
Bits 3 – 1: Bits de configuração da Porta 0;
Y-C2, Y-C1 e Y-C0: Bits de configuração da Porta Y (Y = 4 ... 0) Esses bits são definidos por software para configurar a Porta E/S correspondente.

C2 e C1: são responsáveis por configurar a operação da Porta Y.
Exemplo:
- [C2 = 0] e [C1 = 0] Saída no modo push-pull;
- [C2 = 0] e [C1 = 1] Saída no modo open-drain;
- [C2 = 1] e [C1 = 0] Entrada no modo pull-down;
- [C2 = 1] e [C1 = 1] Entrada no modo pull-up.
C0: Quando configurado como saída, o valor desse bit determina o comportamento do pino de entrada/saída da Porta Y.
- Se a porta for saída Push-Pull:
- [C0 = 0]: ativa o N-MOS e desativa o P-MOS;
- [C0 = 1]: desativa o N-MOS e ativa o P-MOS.
- Se a porta for saída Open-Drain:
- [C0 = 0]: ativa o N-MOS e desativa o P-MOS;
- [C0 = 1]: desativa o N-MOS e desativa o P-MOS.
- Se a porta estiver definida como entrada, não se aplica.
Obs: Ativar um determinado (P/N)-MOS significa permitir a passagem de corrente, enquanto desativar impede essa passagem.
A seguir, as portas 4 a 0 deste microcontrolador foram conectadas aos seguintes componentes:

B3, B2 e B1 são interruptores, que permanecem em um estado de circuito aberto quando não estão pressionados e fecham o circuito entre seus terminais quando são pressionados. R2 e R1 são resistores.
O registrador foi configurado com os seguintes valores:

Com base nos dados fornecidos, considerando que o registrador de configuração esteja localizado no endereço de memória 0x0020, o seguinte código é executado pelo microcontrolador:
#include <stdint.h>
#define REG_ADDR 0x0020
int main() {
volatile uint16_t *mem_ptr = (
uint16_t*)REG_ADDR; uint16_t valor = 0xAFBC;
*mem_ptr = valor;
return 0;
}
Neste caso, a porta 2 será configurada como