Si bien la respuesta de PeterJ es casi totalmente correcta, hay una cantidad de casos limitados que quedan fuera de esa generalización: de alguna manera muy limitada, su MCU tiene formas de hacer más de una cosa a la vez, pero solo si una de las cosas que necesita hacer está integrada en el hardware de la MCU:
- El ejemplo más simple de esto es PWM: la mayoría de las MCU pueden producir ondas cuadradas con ciertas características mientras ejecutan su código
- De manera similar, si su MCU tiene soporte de hardware para el protocolo SPI, puede estar enviando un carácter mientras ejecuta su código (por ejemplo, preparando el siguiente carácter para enviarlo)
- Lo mismo se aplica al uso de USART y a otra transmisión o recepción en serie
Los ejemplos en hojas de datos usualmente no aprovechan este hecho. Por ejemplo, para AVR, los ejemplos de SPI se ven así (pseudocódigo)
Loop:
Prepare byte of data
Write data to register
Wait for send to finish
Go to loop
Puede aprovechar las débiles capacidades de multiprocesamiento reescribiendo el código de la siguiente manera:
Loop:
Prepare byte of data
Wait for send to finish
Write data to register
Go to loop
De esta manera, los datos se preparan mientras se envían: casi como hacer dos cosas a la vez. Lo mismo se puede lograr usando interrupciones, sin embargo, generalmente tienen una gran sobrecarga y, como resultado, no proporcionan una ventaja sobre el código de sondeo para eventos relativamente frecuentes, al menos en la plataforma AVR.