Red de conocimiento informático - Material del sitio web - ¿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.

¿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;

}