¿Pueden ayudarme a escribir un programa c51 de alcance ultrasónico? El microcontrolador es stc89c52. Hay un módulo ultrasónico listo para usar. Puedo proporcionar uno de más de 10u.
sbit Beep=P5^5;
ulint wavaVal;
/****************** Inicialización del temporizador Función******************************/
void InitTimer(void)
{
TMOD &= 0x10; //Establecer modo temporizador
TH0 = 0;
TL0 = 0;
TR0 = 0;
INT_CLKO |=0x10
EA = 1;
}
//******* * **Función de cálculo de distancia********//
ulint Distance_count()
{
ulint temp;
temp=wavaVal*172; //Cálculo de distancia, 2S=V*T V/2=344/2
temp=temp*12/18432;
return temp-30 ;
}
void Dis_Wave()
{
TH0=0;
TL0=0; /Borrar tiempo 0
TR0=1; //Abrir tiempo 0
INT_CLKO |=0x10; //Habilitar interrupción externa
ENVIAR = 1; p>
Delay10us(5);
ENVIAR = 0;
Delay10ms();
dis=Distance_count();//Activado Luego llama la función de cálculo de distancia
w_str[0]=(dis/1000%10)+0x30;
w_str[1]=(dis/100%10)+0x30;< / p>
w_str[2]=(dis/10%10)+0x30;
w_str[3]=(dis%10)+0x30
}< / p>
//Rutina de servicio de interrupción
void exint2() interrupción 10 //Entrada de interrupción INT2
{
TR0=0;// Girar temporizador de apagado 0
INT_CLKO &=0xEF; //Desactivar interrupciones externas
// INT_CLKO |=0x10; //Habilitar interrupciones externas
wavaVal=TH0 *256+TL0; // Manejar interrupciones externas
if(wavaVal>10000)
wavaVal=0;
}