Cómo ajustar el tiempo de retardo del microcontrolador usando botones
#includelt;reg51.hgt;
#define uchar unsigned char
#define uint unsigned int
uchar clave1, clave2, key3; //Definir los códigos de las tres claves
uchar a, i, temp, temp1; //Definir las variables utilizadas en la función principal
uint x, y, z ; //Definición Tres variables utilizadas en la función de retraso
void delay1(uint); //Definir la función de retraso 1
void delay2(uint); intervalos grandes de luces encendidas Función
void keycan(); //Definir la función de escaneo del teclado
void main()
{ TMOD=0x01; Para garantizar que el teclado se escanee a tiempo. Cambios, tengo que habilitar la interrupción
TH0=(65536-500)/256; //La interrupción se habilita una vez cada 0,5 ms
TL0=(65536-500)256;
EA=1;
ET0=1;
a=0xfe;
> i=0;
temp1=1 ;
mientras(1)
{
P1=a;
temp=alt;lt;1;
a=gt;
a=temp|a;
retraso1(100);
p>if(i==8)
{
i=0; p>
retraso2(temp1);
}
}
}
vacío retraso1(uint z)
{
for(x=z ;xgt;0;x--)
for(y=110;ygt;0;y--); p>
}
retraso nulo2(uint temp1)
{
for(x=temp1;xgt;0;x--) p>
for(y=1100;ygt;0;y- -);
}
void keycan()
{
if(key1==0)
{
retardo1(10); //rebote del teclado
if(key1==0)
{
temp1= 10;
while(!key1); //Espera a que se suelte la tecla
} p>
}
if(key2==0)
{
delay1(10); //Eliminación de la fluctuación del teclado
if(key1==0)
{
temp1=20;
while(!key2); //Espera la liberación de la clave
}
}
if (clave3==0)
{
retraso1(10);
//Rebote del teclado
if(key3==0)
{
temp1=30;
while(!key3) ; //Esperar a que se libere la tecla
}
}
}
void T0_time() interrupción 1
{
TH0=(65536-500)/256; //Reinstalar valor inicial
TL0=(65536-500)256;
keyscan() ;
}
Mi proteus está roto y no se puede simular. Lo estoy escribiendo a mano. Si tienes alguna pregunta, dímelo. Mi QQ378773957 usa un microcontrolador ATMEL51. >
No he definido los bits para los puertos IO donde se encuentran los tres botones. Deberías poder definirlos al principio.