Étape 13 : Boucle-the-Loop
Une autre chose que les ordinateurs sont bons à fait maintes et maintes choses. Un ordinateur ne pas s’ennuyer, ni est il fatiguer (à moins que la charge de la batterie commence à devenir faible, mais c’est une autre question.) Dans cette étape, nous allons voir un moyen de rendre le 2313 ' un éternel recommencement.
Enregistrer votre programme à la dernière étape et commencer un nouveau programme en cliquant sur fichier puis enregistrer sous... Donnez à votre nouveau programme un nouveau nom (« LED Test Flash », peut-être.) Maintenant, immédiatement après la ligne de commentaire routine principale, ajoutez :
faire ' introduisant la boucle DO
Maintenant après le corps de votre programme, ajouter une autre ligne :
boucle
Pour que le corps principal de votre programme ressemblera à ceci :
"Programme principal
Faire
Set PortB.0
waitms 500
réinitialiser le PortB.0
Boucle
Cela s’appelle une boucle, car les lignes entre le Do et l’instruction Loop sont exécutés, dans un mode de boucle. Par tradition, nous le retrait, ou placer vierges places devant, les lignes à l’intérieur de la boucle. Cela rend plus facile pour nous de voir en un coup d’oeil quelles lignes sont se répète. Le compilateur BASCOM ne soucie pas unidirectionnel, ou l’autre ; Il compile ces ligne le même avec ou sans, les tirets (espaces vides à l’avant de la ligne.)
Comme vous pouvez le voir, le programme fera la puce Tiny2313 Port B.0 élevé, la LED d’éclairage de la valeur et puis faible encore. Le le programme va frapper l’instruction Loop et remonter à l’instruction Do s’exécute de nouveau dans la boucle. Cela devrait faire le contrôleur allumer la lumière et, à plusieurs reprises, à droite ?
Compiler et télécharger, ce nouveau programme à votre ' 2313. Le programme démarre immédiatement en cours d’exécution. Cela fonctionnait comme prévu ? euh, non ? Eh bien, le temps de sortir de votre chapeau de pensée - cela s’appelle le débogage, ou vous cherchez les erreurs dans un programme.
Pensez à lorsque vous aviez tout d’abord votre ATtiny2313 la LED s’allume, puis à droite dos au large. N’oubliez pas que le microcontrôleur gère un programme extrêmement rapide (du moins par rapport à nos vitesses humaines.) Vous n’oubliez pas que vous aviez besoin d’insérer une déclaration d’attente entre l’allumer la LED et puis de nouveau, afin que vous avez eu assez de temps pour voir la lumière ? Eh bien, le même bug (ou mal) sévit dans nous ici. Évoluez en examinant le programme ci-dessus. La première ligne, dans la boucle, allume la LED ; ensuite le programme fait une pause d’une seconde afin que nous puissions voir le LED s’allument. Ensuite, le programme tourne le voyant marche arrière et puis retourne vers le haut de la boucle à tout recommencer. Notez, que, tandis que le programme s’arrête pour nous laisser voir que le LED est à l’écoute sur, il ne s’arrête pour nous permettent de voir que la LED a fait demi-tour au large - il juste va de l’avant et allume la LED encore une fois, au sein de quelques millionièmes de seconde. Oups, il faut ajouter une autre pause (attendre, ou waitms, déclaration) après avoir tourné le voyant éteint et avant de répéter la boucle.
Ajoutez la seconde déclaration d’attente, afin que votre programme ressemble à ceci :
"Programme principal
Faire
Set PortB.0
waitms 500
réinitialiser le PortB.0
waitms 500
Boucle
Maintenant, compilez et retélécharger votre programme. Tout semble bon, cette fois, droite ?
La façon dont ce programme est écrit, votre système d’expérimentateur clignoter la del sur et puis en route, environ une fois par seconde. Jouer avec les valeurs de temps dans les instructions de waitms pour vous le clignotement plus rapide et plus lent. Voyez si vous pouvez obtenir votre LED clignotant à la même vitesse que le voyant clignotant sur votre voiture. Notez que les deux valeurs pour les déclarations de waitms sont exactement les mêmes. Cela provoque la LED s’allume et puis en route pour exactement le même laps de temps, dans chaque boucle. Que se passe-t-il si vous changez les temps, en utilisant différentes valeurs pour les deux waitms différentes déclarations ?
Veillez à enregistrer votre programme avant de vous passer à l’étape suivante.