Red de conocimientos turísticos - Conocimientos sobre calendario chino - La frecuencia de reloj del microcontrolador 8051 es de 12 MHz y T0 se utiliza para la programación de prueba para generar ondas cuadradas de P1.0 y P1.1 con períodos de 2 ms y 500 ms respectivamente.

La frecuencia de reloj del microcontrolador 8051 es de 12 MHz y T0 se utiliza para la programación de prueba para generar ondas cuadradas de P1.0 y P1.1 con períodos de 2 ms y 500 ms respectivamente.

Hay muchos métodos. El primero es usar PWM analógico. Configure el ciclo de trabajo en 1/2 y configure la frecuencia de acuerdo con el período. Si no necesita cambiarlo, puede hacerlo. hazlo sin PWM Sí, puedes escribirlo así:

#define T0_delay 1000

sbit P10=P1^0;

sbit P11=P1. ^1;

unsigned int Pwm_Count=0;

void Timer0_init();

void main()

{

Timer0_init();

while(1);// Bucle vacío

}

void Timer0_init()

{

TMOD |=0x01; //Utiliza temporizador de 16 bits

TH0 = (65536-T0_delay)/256; //El temporizador se carga con un valor inicial de 1000

TL0 = (65536-T0_delay )%256

EA=1;

ET0=1;

TR0=1;

}

void timer0() interrupción 1

{

TH0 = (65536-T0_delay)/256 //Insertar valor inicial 1000, interrumpir una vez cada 1 ms

TL0 = (65536-T0_delay)%256;

P10=~P10;// Inversión, conversión de nivel después de 1 ms, generando una onda cuadrada con un período de 2ms

Pwm_Count++;/ /Count

if(Pwm_Count==250)

{

Pwm_Count=0;// Restablezca a cero y comience a contar desde cero nuevamente la próxima vez

p>

P11=~P11;//Inversión, conversión de nivel una vez cada 250 ms, salida de onda cuadrada

}

}

Se debe utilizar analógico. Para la función PWM, puedes escribirlo así:

El temporizador se carga con un valor inicial de 1 ms (mismo como arriba)

#define LED_ON 1

#define LED_OFF 0

Los códigos principales son los siguientes:

P10=~P10 ;

//--------------------- ------------------- ---------------------

Pwm_Count_500 ++;

if(Pwm_Count>500)

{

Pwm_Count_500 =0;

}

(Pwm_Count _500< 250)?(P11= LED_ON):(P11= LED_OFF);// La declaración con signo de interrogación reemplaza a la declaración if, que es más concisa. De hecho, la prueba toma el mismo tiempo para ambas pruebas. El consumo de tiempo es más corto que si, y las declaraciones con signo de interrogación obviamente pueden ocupar menos espacio. espacio cuando se utiliza PWM multicanal. Estos aspectos pueden ser una de las razones por las que la función estándar de la biblioteca C utiliza el signo de interrogación al comparar el tamaño de dos números.

t" src="../css/tongji.js">