2017-09-08 6 views

Répondre

1

Les constantes DDA0 etc. font référence aux positions de bit dans le registre DDRA. Ce registre détermine lequel des huit broches sur le port A sont entrées et qui sont sorties. A 1 un peu la position des moyens de broche de sortie, et un 0 (par défaut) signifie qu'il est une broche d'entrée.

(1 << DDA0) 

avec DDA0 défini comme zéro moyen, « mis à 1 dans ce registre après au niveau du bit de décalage de la positionne à zéro à gauche. » Alors oui, les opérateurs au niveau du bit, c'est-à-dire que le bit le moins significatif est un 1. Les autres décalent une position différente dans le chier. Le résultat net de cette instruction est que toutes les positions de bit sont combinées par un OU, ce qui donne une valeur de 11111111 ou 0xFF, ce qui signifie que l'ensemble du port PORTA est réglé sur être sortie.

Il convient de noter qu'en utilisant simplement pourrait être simplifié toute cette déclaration:

DDRA = 0xFF; 

Même si elle est plus courte, il n'y a pas de pénalité de la taille du code, car le compilateur s'effondre la longue expression sur le droit à 0xFF de toute façon . Vous verrez les deux styles de ports de programmation au fur et à mesure que vous en explorerez d'autres.

De la documentation ATmega:

Configuration du Pin Chaque broche du port se compose de trois bits de registre: DDxn, PORTxn et PINxn. Comme indiqué dans la description du registre, les bits DDxn sont accédés à l'adresse E/S DDRx, les bits PORTxn à l'adresse E/S PORTx et les bits PINxn à l'adresse E/S PINx.

Le bit DDxn du registre DDRx sélectionne la direction de cette broche. Si DDxn est écrit à '1', Pxn est configuré comme une broche de sortie. Si DDxn est écrit à '0', Pxn est configuré comme une broche d'entrée.

Si PORTxn est écrit à '1' lorsque la broche est configurée comme broche d'entrée, la résistance de pull-up est activée. Pour désactiver la résistance pull-up, il faut écrire PORTxn sur '0' ou la broche doit être configurée comme broche de sortie. Les broches du port sont tri-déclarées lorsque la condition de réinitialisation devient active, même si aucune horloge n'est en cours d'exécution.

Si PORTxn est écrit à '1' lorsque la broche est configurée comme broche de sortie, la broche du port est haute. Si PORTxn est écrit zéro logique lorsque la broche est configurée comme broche de sortie, la broche du port est basse.

Toggle the Pin L'écriture d'un '1' sur PINxn permet de basculer la valeur de PORTxn, indépendamment de la valeur de DDRxn. L'instruction SBI peut être utilisée pour basculer d'un seul bit dans un port.