Problemas de programación en lenguaje C del microcontrolador at89c51
En realidad, solo hay 3 combinaciones de los dos botones. Si no se presionan dos botones, la combinación no es válida. Para obtener la cuarta combinación, se agrega el botón 2 (P1.1). usando timing, si el tiempo de pulsación de la tecla es mayor a 1 segundo, es la combinación 3, de lo contrario es la combinación 4, programa:
main()
{
carácter sin firmar i;
p>while(1)
{
while((P1amp;0x03)==0x03); para presionar el botón
retraso (5); //Botón antirrebote durante 50 milisegundos
if(!(P1amp;0x03))//Si se presionan ambos botones
{
P2 |= 0x0F; //Todos los LED están apagados
P2^0 = 0; //Combinación 1: LED1 está encendido
mientras ((P1amp;0x03)!=0x03) ;//Espera a que se suelten ambos botones
}
else if(!P1^0)//Si solo se suelta el botón 1 presionado
{
p>P2 |= 0x0F; //Todos los LED están apagados
P2^1 = 0 //Combinación 2: LED2 está encendido;
while(!P1^0) ; //Espera a que se suelte el botón 1
}
else if(!P1^1) //Si solo se presiona el botón 2
{
for(i = 100; igt; 0; i--)
{
if (P1^1)break;
delay(1 ); //Retraso 10 milisegundos
}
if(!i)//Si el botón está presionado durante más de 1 segundo
{
P2 |= 0x0F; // Todos los LED están apagados
P2^2 = 0 // Combinación 3: LED3 está encendido
}
else{
P2 |= 0x0F //Todos los LED están apagados
P2^3 = 0 ; //Composición 4: LED4 está encendido
}
p>while(!P1^1);
Espere a que se suelte el botón 2
}
}
}