Formula? ninguna que yo sepa
Son bucles de contadores, generalmente. Si lo hacemos por software, por ejemplo:
contador = 0
inicio contador + 1
contador = 50 ?
aún no, volvemos a inicio hasta que lleguemos a 50.
si, ya ha llegado a 50. Fin de el retardo.
Dependiendo de la velocidad del reloj del micro será el retardo. Esta rutina de ejemplo en un micro de 4mhz de reloj y por lo tanto que ejecuta 1 millon de instrucciones (lineas) por segundos sólo te daría un retardo de aproximadamente 50 microsegundos.
Para lograr un retardo mas largo deberás anidar contadores; o sea un contador dentro de otro.
También se pueden hacer retardos con los temporizadores incorporados que tienen generalmente los micros, como el TMR0, TMR1, etc etc que si los activas pueden temporizar, interrumpiendo el programa principal en cuanto lleguen a un límite (desbordamiento) e indicándote que el tiempo ha terminado.
Hay varias maneras de generar demoras, pero la mas simple son de contadores dentro de contadores.
Se me entiende?
PD: El ejemplo que te he puesto no es ningún idioma que puedas usar en micros, sólo es para darte una idea global de como funciona.