IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[PIC 16F628] Division entière


Sujet :

Autres architectures Assembleur

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Bermudes

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [PIC 16F628] Division entière
    Bonjour à tous !

    Je dois effectuer une division entière sur un microcontrôleur PIC16F628 (8 bits). Ma première idée fût de faire une division en utilisant la soustraction. J'ai donc fait une boucle et il faut que j'analyse le fonctionnement de la mémoire STATUS. Mais je ne trouve pas d'information en ce qui concerne les valeurs qui s'y affichent (en hexadécimal, deux bits). Ce qui me serait très utile, puisque pour sortir de la boucle, j'utilise BTFSC. Je me demande donc, sur quel bit (de 0 à 7), je dois tester la condition et pourquoi. Si quelqu'un sait m'aider ?

    Ici, j'ai pris 20 diviser par 5, juste pour tester.

    D'avance merci

    Nom : Division_entiere.jpg
Affichages : 1062
Taille : 88,5 Ko

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,

    Le fabricant doit proposer la doc sur son site ...

    ... donc fait une petit effort.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Bermudes

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par droggo Voir le message
    Bonjour,

    Le fabricant doit proposer la doc sur son site ...

    ... donc fait une petit effort.
    Bonjour !

    Après quelques petites recherches, j'ai vu qu'il était possible de tester le bit du carry qui passe à zéro dès que la soustraction repart dans l'autre sens. Au final, ma boucle fait un tour en trop. Comment pourrais-je faire pour avoir une division entière qui fonctionne ?

    Nom : Division_entiere_2.jpg
Affichages : 840
Taille : 102,4 Ko

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    J'ai jamais fait de pic , mais si j'ai bien compris , si le résultat se trouve à l'adresse 22 , alors tu fait toujours une incrémentation de 1.
    Si on se trouve dans un cas du genre 0/20 , ben ton résultat donnera 1 du coup ?

    Ares j'ai deja fait une division software , mais jamais fait un truc pareil (tu imagine que ça prendrait trop de temps de calcul de faire une boucle comme ça 255 fois ).
    Il existe une autre méthode assez rapide qui en plus permet de déplier la boucle , c'est de tester chaque bit et de faire la soustraction nécessaire
    Donc sur 8 bits, tu fais seulement 8 soustraction max (et sur 16 bits 16 soustractions etc etc )

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Bermudes

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    J'ai jamais fait de pic , mais si j'ai bien compris , si le résultat se trouve à l'adresse 22 , alors tu fait toujours une incrémentation de 1.
    Si on se trouve dans un cas du genre 0/20 , ben ton résultat donnera 1 du coup ?

    Ares j'ai deja fait une division software , mais jamais fait un truc pareil (tu imagine que ça prendrait trop de temps de calcul de faire une boucle comme ça 255 fois ).
    Il existe une autre méthode assez rapide qui en plus permet de déplier la boucle , c'est de tester chaque bit et de faire la soustraction nécessaire
    Donc sur 8 bits, tu fais seulement 8 soustraction max (et sur 16 bits 16 soustractions etc etc )
    Bonjour,

    En fait, le prof nous a demandé de faire une chose pour laquelle le PIC16F628 n'est pas vraiment conçu. Il n'est pas conçue pour faire ça et j'ai donc juste rajouté une soustraction après la fin de la boucle. En bref, ça n'a aucun sens et c'est la-dessus que je butais simplement.

    Merci pour ta réponse !

    Belle journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déclaration bit sur pic 16f628
    Par tibo7 dans le forum C
    Réponses: 1
    Dernier message: 08/05/2007, 20h48
  2. division de "double" par "0"
    Par ickis dans le forum C
    Réponses: 14
    Dernier message: 31/08/2003, 19h09
  3. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32
  4. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo