El microcontrolador 51 se retrasa durante más de 3 s y luego controla el servo para que gire 90°. Es mejor dar un programa general.
//Suponiendo que el oscilador de cristal sea de 12 MHZ, puede controlar la función del servo usted mismo
#include "reg51.h"
unsigned int YSJS=0;
void Timer1Init(void) //50 milisegundos @12.000MHz
{
TMOD &= 0x0F //Establecer modo de temporizador
TMOD |= 0x10; //Establece el modo del temporizador
TL1 = 0xB0; //Establece el valor inicial del temporizador
TH1 = 0x3C; el temporizador
ET1 = 1; //Habilita la interrupción del temporizador 1
TR1=1; //El temporizador 1 inicia el cronometraje
EA =1; interrupción total
}
void main(void)
{
Timer1Init();
while( 1)
{
}
}
void TIMER1(void) interrupción 3 //La función de interrupción del temporizador 1 utiliza el registro predeterminado group
{
TL1 = 0xB0; //Establece el valor inicial del tiempo
TH1 = 0x3C //Establece el valor inicial del tiempo
YSJS++;
if(YSJS==60) //50mS*60=3 segundos, de hecho, puedes retrasar todo el tiempo que quieras
{
YSJS=0;
//Controla el servo aquí
}
}