Edição didática em português. O código e suas saídas preservam o original.
C para sistemas embarcados
Entenda registradores, máscaras de bits, interrupções e limites do hardware ao programar em C.

C embarcado utiliza a linguagem C com interfaces específicas de um microcontrolador. Memória disponível, periféricos e inicialização dependem do dispositivo. Um simulador de console não substitui a documentação nem os testes no hardware.
Máscaras de bits permitem ativar, limpar e consultar campos de um registrador. Use tipos sem sinal quando apropriado e verifique a largura antes de deslocar bits. Cabeçalhos do fabricante costumam definir endereços e campos; não copie endereços entre dispositivos diferentes.
volatile informa ao compilador que certos acessos devem ser preservados, por exemplo quando o ambiente modifica um registrador. Ele não torna uma operação atômica nem substitui a sincronização entre interrupções e o programa principal.
Evite trabalho demorado em uma interrupção e documente os dados compartilhados. Analise limites da pilha, tempos e erros dos periféricos. Para praticar neste compilador, use exemplos padrão de bits e estados; o acesso real a registradores exige o ambiente do dispositivo.
Perguntas frequentes
Por que o código e a saída continuam em inglês?
Palavras-chave, identificadores e textos verificados pelos testes são preservados para não alterar o programa. As explicações e os controles estão traduzidos.