Se connecter

Informatique

Programmation

Sujet : Microcontrôleur PIC18F - Problème sur la levée du Flag Négatif.
1
Lunazgegs
Niveau 8
13 novembre 2023 à 12:12:31

Bonjour à tous,

Depuis quelques jours maintenant, je suis en train d'essayer d'implémenter la fonction division au sein de mon PIC18F4550.
Le microcontrôleur 8bits à de bases toutes ces instructions: http://technology.niagarac.on.ca/staff/mboldin/18F_Instruction_Set/
Globalement, je ne peux faire que des additions et des soustractions, des multiplications des comparaisons et des shifts.

Afin d'implémenter la division - qui me servira à afficher des nombres sur 4 afficheurs 7-segments - je soustrais le dénominateur au numérateur, autant de fois qu'il est nécessaire (avec une boucle) afin que ce nombre devienne négatif. La fonction stock en mémoire le résultat de la division ainsi que le modulo.

Cependant je rencontre un problème lors de l'implémentation de cette fonction. Elle fonctionne parfaitement bien avec un numérateur inférieur ou égal à 137 (0x89). Cependant, à partir de 138 (0x8A), je quitte ma fonction directement après le premier calcul (par exemple pour la première itération 138 - 10 => 128) en me levant le flag négatif.

Par ailleurs en écrivant ce topic, je me rends compte que cette valeur de 128 peut-être liée au bit signé de poids fort..

Plusieurs questions donc:
- Avez-vous une piste à explorer pour la division par 10 ?
- S'il s'agit bien du problème de complément à deux, y a t'il une solution sur PIC18F pour " l'ignorer "?

Pour les curieux, voici la documentation du PIC18F:
https://ww1.microchip.com/downloads/en/DeviceDoc/39564c.pdf

Le flag négatif est levé par le registre STATUS (page 54).

En vous remerciant par avance pour votre aide.

Arthfael
Niveau 15
13 novembre 2023 à 21:18:13

Plutôt que de faire while (numérateur > 0), fait while (numérateur > dénominateur) pour ta boucle.
Comme ça, plus la peine de te soucier du flag négatif https://image.noelshack.com/fichiers/2022/38/5/1663951771-indespite.png

1
Sujet : Microcontrôleur PIC18F - Problème sur la levée du Flag Négatif.
   Retour haut de page
Consulter la version web de cette page