pregunta PIC del principiante

1

Empecé a aprender sobre los microcontroladores PIC a partir del PIC16F84A de 8 bits. He escrito un código simple que parpadea un LED y quería preguntar algo. Aquí hay un segmento del código que enciende el LED y espera. Lo que quería preguntar es que en el bucle cuenta 255 veces, 255 veces. Si una instrucción necesita 1uS para ejecutarse, entonces todo el bucle toma un tiempo de 255 * 255 * (1E-06) = 65ms. Pero cuando simulo el mismo programa en Proteus, muestra que el LED permanece encendido durante 198 ms y no a 65 ms. ¿Qué podría estar haciendo mal?

    
pregunta hacker804

1 respuesta

4

Tu bucle toma 3 ciclos de instrucción para ejecutarse. No todas las instrucciones en el PIC toman exactamente un ciclo de instrucciones. Consulte la Tabla 7-2 en la hoja de datos de PIC16F84A.

DECFSZ toma 1 ciclo de instrucciones generalmente (2 cuando se salta) y GOTO toma 2 ciclos de instrucciones. Eso es 3 ciclos normalmente. Entonces, dado 3uS por bucle, es casi exactamente el tiempo que tienes (196 ms). El tiempo adicional probablemente proviene de los 5 ciclos que toma el bucle cuando COUNT1 se desborda y los 4 ciclos en el último ciclo del bucle.

    
respondido por el Los Frijoles

Lea otras preguntas en las etiquetas