¡Dios mío, feliz año nuevo! Por favor, hazme una pregunta para la entrevista sobre microcontroladores, ¡gracias!
#include lt;reg52.hgt;
//----Tres pines de entrada------
sbit X0 = P1 ^0 ;
sbit X1 = P1^1;
sbit X2 = P1^2;
//----Tres pines de salida- ---- -
bit Y0 = P1^0;
bit Y1 = P1^1;
sbit Y2 = P1^2;
bit Reg_X0 = 1;
bit Reg_X1 = 1;
bit Reg_X2 = 1;
//----Conteo de pulsos de entrada- ---- ---------
carácter sin firmar de datos X0_Cnt = 0
carácter sin firmar de datos X1_Cnt = 0
carácter sin firmar de datos X2_Cnt = 0;
//----Establece el número de pulsos de salida----------
data unsigned char Y0_Num = 0
p>;datos sin signo char Y1_Num = 0;
datos sin signo char Y2_Num = 0;
//----Conmutador de salida de pulsos y conteo------ -
datos sin firmar char Y0_Cnt = 0;
datos sin firmar char Y1_Cnt = 0;
datos sin firmar char Y2_Cnt = 0
// ----Parámetro de división de frecuencia-----------------
datos sin signo char Y1_Pre = 0;
datos sin signo char Y2_Pre = 0;
//---Función macro de pulso de salida-----------
#define PULSE_OUT_Y0(X) {X0_Cnt = 0; 0; Y0_Num = (Xlt; lt; 1); }
#define PULSE_OUT_Y1(X) {X1_Cnt = 0; Y1_Cnt = 0;
p>
#define PULSE_OUT_Y2(X) {X2_Cnt = 0; Y2_Cnt = 0; Y2_Num = (Xlt; lt; 1);}
//----interrupción del temporizador de MCU tiempo, modificar dependiendo del reloj específico-------
#define TH0_RELOAD 0xF4//---Valor inicial del temporizador 1, tiempo 50us
#define TL0_RELOAD 0x48 // ---Valor inicial del temporizador 1, tiempo 50us
void main(void)
{
TMOD = 0x01
TH0 = TH0_RELOAD;
TL0 = TL0_RELOAD;
ET0 = 0;
EA = 0;
TR0 = 1;
para(;;)
{
>
//----Contar--------------
if(Reg_X0 != X0)
{
Reg_X0 = X0;
si(Reg_X0 == 0)
{
X0_Cnt;
si(X0_Cnt gt ; = 10)
{
PULSE_OUT_Y0(Y0_Num);
}
}
} p> p>
//----Contar--------------
if(Reg_X1 != X1)
{ p>
Reg_X1 = X1;
si(Reg_X1 == 0)
{
X1_Cnt;
si (X1_Cnt gt; = 20)
{
PULSE_OUT_Y1(Y1_Num);
}
}
}
//----Contar--------------
if(Reg_X2 != X2)
{
Reg_X2 = X2;
si(Reg_X2 == 0)
{
X2_Cnt;
if( X2_Cnt gt;= 50)
{
PULSE_OUT_Y2(Y2_Num);
}
}
}
}
}
void ISR_Timer0(void) interrupción 1
{
TH0 = TH0_RELOAD ;
TL0 = TL0_RELOAD;
if(Y0_Cnt lt; Y0_Num)
{
Y0_Cnt;
Y0 = ~Y0;
}
Y1_Pre; //---2 división de frecuencia, salida 5KHz
if(Y1_Pre gt; = 2) p>
{
Y1_Pre = 0;
if(Y1_Cnt lt; Y1_Num)
{
Y1_Cnt; p>
Y1 = ~Y1;
}
}
Y2_Pre; //---5 división de frecuencia, salida 2KHz
if(Y2_Pre gt; = 5)
{
Y2_Pre = 0;
if(Y2_Cnt lt; Y2_Num)
{
Y2_Cnt;
Y2 = ~Y2
}
}
}