martes, 18 de diciembre de 2012

LED intermitente con 8051 (Código + Simulación en Proteus)

Este post proporciona el código del parpadeo de un LED para el microcontrolador 8051 (y similares como, AT89C51 o AT89C52 etc). El código y la Simulación en Proteus se da en la sección "Descargas" en la parte inferior de esta página. El circuito requerido se muestra a continuación.
Figura 1. Circuito requerido para 8051 LED parpadeante
En el diagrama de circuito anterior, AT89C52 se utiliza para simular el código de parpadeo del LED. Usted puede colocar el AT89C51 sin ningún otro cambio y el código seguirá funcionando igual. Por lo tanto, este código de ejemplo se puede trabajar tanto en AT89C51 y microcontroladores AT89C52. Un cristal de 11,0592 MHz. Se puede utilizar cualquier valor cristal de 3 a 24 MHz con 8051. Como sabemos el microcontrolador 8051 tiene una arquitectura que ejecuta una instrucción en 12 ciclos de CPU, por lo tanto este cristal 11.0592MHz hace que esta carrera en 8051 0,92 MIPS (millones de instrucciones por segundo). El código de este proyecto se muestra a continuación.


Figura 2. LED parpadeante código para 8051 microcontrolador
En el código anterior, LED se define como en el puerto 1 pin 0 (es decir P1.0). En la función principal, el LED se activa después de cada medio segundo. 'La función de retardo o delay 'ejecuta sentencias nulas. Un valor de 30000 genera alrededor de 0,5 segundos tiempo nulo ejecución declaraciones  , cuando 11,0592 MHz cristal se está utilizando. De este modo, el LED conectado al pin P1.0 se hace parpadear utilizando el código indicado anteriormente. Puedes dejar tus comentarios en la sección de comentarios a continuación.


Notas y referencias

[1]   De  http://en.wikipedia.org/wiki/Intel_MCS-51 
[2]  Este código fue compilado usando Keil micro-Vision4 software. [3]  por el retraso, he simulado el código en el Keil micro-Vision4 software y el valor 30000 le da un retraso de medio segundo aproximadamente. En sentido estricto este retraso es dependiente del compilador. Diferentes compiladores darán diferentes retardos. Incluso la nueva versión del mismo compilador puede dar retardo diferente. Usando el procedimiento descrito a continuación, se puede calcular exactamente demora producida por valor 30000.
Figura 3. Retraso en código ensamblador
 Así que efectivamente un total de aproximadamente 15 * 30000 = 450000 instrucciones se ejecutan. Dado que este 8051 se está ejecutando una sola instrucción en 1,08 segundos micro (12/11.0592 micro segundos), por lo que toma aproximadamente 450.000 * 1,08 = 0,49 segundos en ejecutarse 30.000 declaraciones nulas.

Descargas

El código fue compilado en Keil micro-Vision4 y la simulación se realizó en Proteus v7.10.
Para descargar el código y la simulación de proteus, haga clic aquí.
 

No hay comentarios: