51 conjuntos de microcontroladores controlan 8 luces de marcha
Idea:
Bucle para controlar el valor del estado siempre activo y cicle desde el bit más alto al bit más bajo. Esto se utiliza para la luz constante en el último estado.
En el ciclo de luz constante, todos los demás bits que no siempre están encendidos se controlan para que realicen un ciclo nuevamente, pasando gradualmente del bit más bajo al más alto.
El código es el siguiente: #include?lt;reg51.hgt;
unsigned?char?PData;//Resultado general
unsigned?char? CurrData;//El bit de cambio más alto
p>//Retraso, esta función es un retraso impreciso. Si se requiere un retraso preciso, el número de bucles debe ajustarse después de un cálculo preciso de acuerdo con el. declaración de ensamblaje de esta función
void?delay(unsigned? int?ms){? unsigned?char?i; while(ms--){
for(i=0; ilt;120;t){ ;
} }
}
void?main(){ unsigned?char?i=0, j=0; PData=0x00; //Estado de destrucción total para?(i=8; igt; 0; i--){//Controla la posición siempre activa, comenzando desde el bit más alto y pasando al bit más bajo
for?(j=0;jlt;i-1;j){/ /Ciclo desde el bit más bajo al bit más alto que no siempre está en P1=~(PData (1lt;lt;j)); El i-ésimo bit está en retardo (500); P1=~PData; // El i-ésimo bit está en retardo (500);
}
PData=PData ( 1lt;lt;(i-1));//Establece el bit más alto en siempre activado
P1 =~PData;
delay(500 } //Detener while( 1){ }
}