Es necesario escribir un programa en C. Cuando se presiona la tecla P1.0, las luces LED conectadas a los pines P1.6 y P1.7 se encienden en secuencia. Se requiere un retraso de 10 segundos. ¡Luego presiona la tecla para que se apaguen todos!
Requerido para escribir un programa C Cuando se presiona la tecla P1.0, las luces LED conectadas a los pines P1.6 y P1.7 se encenderán a su vez. espere 10 segundos y luego todos los botones se apagarán cuando se presionen
------"Este flujo de programa
---->Primero determine si el botón está presionado , es decir, la función principal realiza un bucle while() para determinar si el botón está presionado. Si está presionado, luego presione el botón y todas las luces se apagarán. 1) Determine si el botón está presionado
-. ----->Después de presionar, ingresará al juicio anti-vibración. Si se cumple, comenzará a ingresar al interruptor de rotación
---->Estado, inicialmente, uno. uno de ellos está encendido y el otro está apagado.
Cambie el estado después de 10 segundos. En este momento, agregue un comando.
Es decir, determine si se presiona el botón nuevamente. Si se presiona, se dará el nivel bajo de las dos luces para salir de esto. estado de cambio de rotación.
------" Después de salir, ingrese a la función principal nuevamente, es decir, el bucle de función principal mientras (1) determina si se presiona la tecla
>#include
contador de caracteres sin firmar;
sbit control_s=P1^0;
sbit Led1=P1^6;
bit Led1=P1 ^7;
//**** ********* *****
//*** * Interrupción del servicio***** *
//**** ***** *****
void set_state()
{
TMOD=0x01; //selecciona el modo de funcionamiento 1
TH0=0x3c;
TL0=0xb0;
ET0=1 ; //activar el temporizador 0
TR0=1; //modo de interrupción del temporizador 0
EA=1; //interrumpir el control general
} p>
void switch_led( ); //switch_led declaración de función
//**** ********* *****
/**** función principal * *****
//* *** ********* *****
void main( )
{
void set_state(); //activar el servicio de interrupción
while(1); //iniciar el ciclo 1, esperar a que se presione la tecla
{
if(control_s==0) //cuando se presiona la tecla, antijitter
{
delay_time(10); //retraso
if( control_s==0) switch_led();
}
}
}
}
//**** ********* *****
//**** timer0 interrumpe el servicio** ****
/ /**** ********* *****
void timer0() interrupción 1
{
TH0=0x3c ;
TL0=0xb0;
contador++;
if(contador>19) {contador= 0 ; s++;}
}
//**** ********* *****
//** ** Función de luz giratoria******
//**** Intervalo de conmutación 10 s *****
void switch_led()
{
Led1=0; // oscurecer Led1
Led2=1; // iluminar Led2
while(1) //iniciar bucle p>
if (s> 9) / /s de 0-9, 10 veces, 1s cada vez
{
s= 0
;
Led1=~Led1; //Invierte el estado, cuando Led1=1, entonces ~Led1=0;
Led2=~Led2; //Igual que arriba
if( control_s==0 ){Led1= 0; Led2= 0;break }// Presione la tecla nuevamente, la luz se apaga, salga de esta función y regrese al bucle de función principal 1. }
}
Debido a que no hay una descripción del problema en el proceso, puede ser más simple, igual que arriba, pero la persona de arriba probablemente sea la misma que yo, y No puedo entender de dónde vienen los 10 segundos de retraso. Reflexión, simplemente guarda estos 10 segundos, jeje.
Yumian|Nivel 3
#include
#define uint unsigned int
#define uchar unsigned char
sbit a=P1^0;
retraso nulo (uint x)
{
uint i, j;
para(i=x;i>0;i--)
para(j=110;j>0;j--);
} p >
void main()
{
mientras(1)
{
if(a==0)
{
retraso(10);
si(a==0)
{
P1 ^ 6=0;
retraso(50);
P1^6=1;
retraso(50);
P1 ^ 7=0;
retraso(50);
P1^7=1;
retraso(50);
}
}
}
}
}
}
}