Programación MCU. Intente escribir un programa para encender las luces LED una por una durante un segundo. Gracias de antemano.
El oscilador de cristal cree que el tiempo de interrupción del temporizador de 12 MHz es de 50 ms y los 20 tiempos de interrupción acumulados son de 1 s
Este programa está sincronizado con precisión, a diferencia de la función de retardo de arriba, que tiene una sincronización inexacta.
#include
#include
unsigned
char
i=0;
vacío
init();
vacío
principal()
{
init( ) ;
mientras
(1)
{
si(i==20)
{
i=0;
P1=_crol_(P1, 1); //Función de desplazamiento circular
Definida en la función intrínseca
}
}
}
void
init()
{
TH0=0x3c;
//Al temporizador se le asigna un valor inicial de 50ms
TL0=0xB0;
TMOD=0x01;
//Establece el modo de trabajo del temporizador en modo 1
EA=1;
//Habilita interrupción total
ET0=1;
//Habilitar bit de habilitación de interrupción
TR0=1;
//Recuento del temporizador
P1=0xfe;
/ /Aquí se supone que la luz LED está conectada al puerto P1 y
//El nivel bajo está activo
}
void
temporizador0()
interrupción
1
{
TH0=0x3c;
TL0=0xB0 ;
//Reasignar valor inicial después del desbordamiento
i;
//El tiempo de interrupción del temporizador es 50 ms
//20 tiempo de interrupción es 1s
}