Red de conocimiento informático - Conocimiento del nombre de dominio - Estoy buscando un programa en lenguaje C para generar pulsos PWM desde la interfaz P2.0 del microcontrolador 89c51 con ciclo de trabajo y frecuencia ajustables.

¡Gracias! necesidad urgente!

Estoy buscando un programa en lenguaje C para generar pulsos PWM desde la interfaz P2.0 del microcontrolador 89c51 con ciclo de trabajo y frecuencia ajustables.

¡Gracias! necesidad urgente!

#include

#define uchar unsigned char

#define uint unsigned int

sbit key =P2^5;

clave de bits1=P2^4;

clave de bits2=P2^3;

clave de bits3=P2^2;

bit pwm=P1^0 ;

uint pwm_value=1960;

uint count=0;

void timer0(void) usa 1

{

cambiar(cuenta)

{

caso 1: pwm=1;

TH0=-pwm_value/256;

TL0=-pwm_value%256;

ruptura;

caso 2: pwm=0;

TH0=-(2700-pwm_value)/256;

TL0=-(2700-pwm_value)%256;

descanso;

/*caso 3: pwm1=1

TH0; =-pwm_value/256;

TL0=-pwm_value%256;

romper;

caso 4: pwm1=0;

TH0=-(2700-pwm_value)/256;

TL0=-(2700-pwm_value)%256;

descanso;

caso 5:pwm2= 1;

TH0=-pwm_value/256;

TL0=-pwm_value%256;

romper;

caso 6: pwm2 =0;

TH0=-(2700-pwm_value)/256;

TL0=-(2700-pwm_value)%256;

descanso;

p>

caso 7:pwm3=1;

TH0=-pwm_value/ 256;

TL0=-pwm_value%256;

romper;

caso 8: pwm3=0;

TH0=-(2700-pwm_value)/256;

TL0=-(2700-pwm_value )%256;

rotura;

caso 9: pwm4=1;

TH0=-pwm_value/256;

TL0=- pwm_value%256;

descanso;

caso 10: pwm4=0;

TH0=-(2700-pwm_value)%256; < (2700-pwm_value )/256;

TL0=-(2700-pwm_value)%256;

descanso;

caso 11:count=0;

}

count++;

}

void InitTimer0(void)

{

count=1 ;

TMOD=0x11;

TH0=-1500/256;

TL0=-1500%256;

EA=1 ;

ET0=1;

TR0=1;

}

retraso nulo(anulo)

{

uint i=100;

while(i--);

}

void main(void)

{

InitTimer0();

mientras(1)

{

if(pwm_value<2200)

pwm_value+=2;

if(pwm_value>1000)

pwm_value-=2;

}

}

El ancho de pulso de la modulación PWM no excede los 2,5 MS y el tiempo de ciclo es de 20 MS, por lo que 8 pueden Se emitirá en un ciclo. Pulso para controlar 8 servos. La frecuencia se puede cambiar modificando TH0 y TL0, y el ciclo de trabajo se puede cambiar modificando pwm_value. Espero que te sea útil, ¡gracias!