« Utiliser les PIC 16F et 18F/Exercices/Les structures de contrôle et l'Arithmétique » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
Ligne 40 :
 
2°) Écrire un programme qui additionne quatre valeurs valeurs 8 bits pour mettre le résultat dans deux variables 8 bits("somme_pdsfort" et "somme_pdsfaible"). On vous donne la structure de données associée :
<sourcesyntaxhighlight lang="pic16">
CBLOCK 0x00C ; début de la zone variables
somme_pdsfort :1 ; Zone de 1 byte
Ligne 49 :
val4 :1 ; zone de 1 byte 4eme valeur
ENDC ; Fin de la zone
</syntaxhighlight>
</source>
{{solution|contenu=
<sourcesyntaxhighlight lang="pic16">
CBLOCK 0x00C ; début de la zone variables
somme_pdsfort :1 ; Zone de 1 byte
Ligne 77 :
goto boucle
END
</syntaxhighlight>
</source>
}}
 
Ligne 83 :
Utiliser les opérations de décalage pour ajouter un calcul de la moyenne pour l'exercice 2.
{{solution|contenu=
<sourcesyntaxhighlight lang="pic16">
CBLOCK 0x00C ; début de la zone variables
somme_pdsfort :1 ; Zone de 1 byte
Ligne 120 :
goto boucle
END
</syntaxhighlight>
</source>
}}
 
Ligne 128 :
Si l’on sait combien de fois on exécute une boucle on peut utiliser la technique suivante :
{{principe|contenu=
<sourcesyntaxhighlight lang="pic16">
;for (compteur=0;compteur<5;compteur++)
movlw 0x5 ; charger 5 dans w
Ligne 137 :
goto boucle ; si compteur pas 0, on boucle
;****** sortie de la boucle ici ***********
</syntaxhighlight>
</source>
}}
=== Question ===
Réaliser un programme qui vient chercher six fois des valeurs (8 bits) sur le PORTB et les additionne dans une variable "Somme" (8 bits). On vous demande de gérer la somme sur 8 bits seulement sans gérer la retenue.
=== Indication ===
<sourcesyntaxhighlight lang="pic16">
movf PORTB,W ; PORTB -> W
</syntaxhighlight>
</source>
L'instruction ci-dessus lit un [[w:Registre_(informatique)|registre]] qui s’appelle '''PORTB''' pour mettre sa valeur dans l’[[w:Accumulateur_(informatique)|accumulateur]] W.
{{solution|contenu=
<sourcesyntaxhighlight lang="pic16">
CBLOCK 0x00C ; début de la zone variables
compteur :1 ; Zone de 1 byte pour compter les boucles
Ligne 164 :
...
 
</syntaxhighlight>
</source>
}}