¿Qué sucede cuando escribimos las instrucciones de retardo dos veces seguidas en un MSP430?

0

¿Qué sucede cuando escribimos una instrucción de retardo dos veces de manera continua en el código MSP430 de la siguiente manera?

void delay();
{
    __delay_cycles(1000); 
    __delay_cycles(1000);
}

Para 1 ciclo, el tiempo de retardo es de 1 ms si agregamos otro ¿qué sucede?

    
pregunta user39460

1 respuesta

5

__delay_cycles (const int) es una función intrínseca. Eso significa que el compilador sustituye al ensamblaje prediseñado para la función, y no está optimizado de ninguna manera por el optimizador en el compilador. Insertarlo dos veces significa que la demora se duplica y, en lo que respecta al código, dos conjuntos del mismo código se ejecutan de forma consecutiva. No está optimizado para ser un retraso mayor. Una diferencia sutil pero clave.

Ten en cuenta que esta es la misma razón por la que __delay_cycles solo toma una constante y no una variable. Se analiza en tiempo de compilación y no puede funcionar como una función de tiempo de ejecución.

    
respondido por el Passerby

Lea otras preguntas en las etiquetas