Paso 13: Loop-the-Loop
Otra cosa que las computadoras son buenas en una y otra es hacer cosas. Un PC no se aburrirá ni neumático hacia fuera (a menos que la carga de la batería comienza bajando, pero eso es otro tema). En este paso, vamos a ver una forma de hacer el ' 2313 repetirse.
Salvar su programa del último paso y comenzar un nuevo programa haciendo clic en archivo y luego guardar como... Dar a tu nuevo programa un nuevo nombre ("LED prueba Flash", tal vez.) Ahora inmediatamente después de la línea de comentario rutina principal, agregue:
hacer ' introduciendo el bucle DO
Ahora tras el cuerpo de su programa de añadir otra línea:
lazo
Para que el cuerpo principal del programa tendrá el siguiente aspecto:
' Programa principal
Hacer
Set PortB.0
waitms 500
restablecer PortB.0
Lazo
Esto se llama un bucle, ya que las líneas entre el Do y la instrucción de bucle se ejecutan una y otra vez, en forma de lazo. Por tradición, sangría, o colocar en blanco espacios delante, las líneas de dentro del bucle. Esto hace más fácil para nosotros ver de un vistazo qué líneas se repite. El compilador BASCOM no preocupa de una manera u otra; recopila estas líneas el mismo con o sin los guiones (espacios en blanco en la parte delantera de la línea).
Como se puede ver, el programa hará el Tiny2313 chip set puerto B.0 alta, iluminación del LED y luego baja otra vez. El golpear la instrucción Loop el programa y volver a subir a la declaración de la para ejecutar a través del lazo otra vez. ¿Esto debería hacer que el controlador de encender la luz y, repetidamente, a la derecha?
Compilar y descargar, este nuevo programa a su 2313. El programa pondrá inmediatamente en marcha. ¿Esto funcionó como se esperaba? ¿Umm, no? Tiempo, sacar el sombrero de pensar - esto se denomina depuración o buscando los errores en un programa.
Piense en cuando usted primero el ATtiny2313 encienda el LED y luego a la derecha detrás de. Recuerde que el microcontrolador ejecuta un programa extremadamente rápido (al menos en comparación con la velocidad humana.) ¿Recuerde que usted necesita insertar una instrucción de la espera entre encender el LED y luego de vuelta, para que tuvieras tiempo suficiente para ver la luz? Bien, el mismo error (o problemas) es que afectan a nosotros aquí. Siga a lo largo de examinar el programa anterior. La primera línea, en el lazo, enciende el LED; a continuación el programa hace una pausa de medio segundo para que podamos ver el LED enciende para arriba. A continuación, el programa nuevo apaga el LED y luego vuelve a la parte superior del bucle para empezar de nuevo. Tenga en cuenta que, mientras que el programa hace una pausa para hacernos ver que el LED está sintonizado en, nunca hace una pausa para hacernos ver que el LED se ha apagado detrás - simplemente sigue adelante y se enciende el LED una vez más, dentro de unas pocas millonésimas de segundo. Vaya, tenemos que añadir otra pausa (esperar, o waitms, declaración) después de encender el LED y antes de repetir el bucle.
Añadir la segunda declaración de la espera, para que tu programa se ve así:
' Programa principal
Hacer
Set PortB.0
waitms 500
restablecer PortB.0
waitms 500
Lazo
Ahora, compilar y descargar el programa otra vez. ¿Todo se ve bien este momento?
La forma en que está escrito este programa, el experimentador sistema flash el LED en y luego se apaga, una vez por segundo. Juega con los valores de tiempo en los Estados waitms para hacer el flasheo más rápido y más lento. Vea si usted puede conseguir su LED parpadea en la misma velocidad que la luz de señal de vuelta en su coche. Observe que los valores de las declaraciones de waitms son exactamente iguales. Esto hace que el LED se encienda y luego se apaga para exactamente la misma cantidad de tiempo, en cada bucle. ¿Qué pasa si cambia los tiempos, utilizando diferentes valores para las dos diferentes waitms declaraciones?
Asegúrese de guardar su programa antes de ir al siguiente paso.