¿Utilizar un microcontrolador para controlar la rotación y parada de un motor de CC? ¡1 luz para representar!
Programa de montaje:
Después de resetear ORG0000H, el LED se apaga.
Maestro:? JB P3.2, Maestro; Esperar la acción del botón
ACALL DELAY_50MS Retraso en el rebote del botón de 50 milisegundos.
JB P3.2, Principal; ¿Confirmar el funcionamiento del botón?
CPL p 1.0; acción del LED invertida
JNB P3.2, $; espere a que se suelte el botón
SJMP principal
Delay_50MS: MOV R2, #50; subrutina de retardo
Bucle:? MOV R3, #200
LOOP1: NOP
no se proporciona lo contrario a menos que se especifique lo contrario
DJNZ R3, LOOP1
DJNZ R2 , ¿termina el ciclo
?
Programa en lenguaje C:
#incluye ltREG51. H gt
# include ltintrins.h gt
#Definir carácter sin firmar uchar
# define ledp1 0//definición de pin led
# Tecla de definición P3 2 // Definición del pin del botón
Retraso vacío (uchar MS); //Declaración de función de retraso
void main()
{ p>
while(1)
{
while(key); //Esperar la acción del botón
DELAY _ 50m s(50); // Retraso en el rebote del botón 50 ms.
If (!KEY)LED = ~ LED; //Confirma la acción del botón y la acción del LED se invertirá.
while(!key); //espera a que se suelte el botón
}
}
Retraso no válido (uchar MS)
p>
{
Uchar I;
for(;MS gt0;MS -)
for(I = 200;i gt0; I-)
{
_ nop _();
_ nop _();
}
}