PIC assembleur et gestion de mots de 16 bits
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

PIC assembleur et gestion de mots de 16 bits



  1. #1
    invite427c7eae

    PIC assembleur et gestion de mots de 16 bits


    ------

    Bonjour ! Je suis en train d'étudier l'assembleur sur un PIC avec un ADC.
    Donc j'arrive bien à récupérer les valeurs de la conversion dans ADRESH et ADRESL, mais j'aimerais exploiter le résultat sur 10 bits et pas sur les 8 de ADRESH.
    Est-ce qu'il est possible de créer des mots de 16 bits en assembleur sur un PIC type 12F ou 16F, comme par exemple un "unsigned long" ou un "uns16" en C ?
    Ou existe-t-il un moyen de gérer les 10 bits ?
    Merci par avance

    -----

  2. #2
    invite48613fdf

    Re : PIC assembleur et gestion de mots de 16 bits

    Wow. C'est peut-être la seule chose qui me pose problème avec un PIC et personne ne t'a répondu en 2 ans. C'est peine perdu pour moi.

  3. #3
    invite48613fdf

    Re : PIC assembleur et gestion de mots de 16 bits

    Par exemple, quand je déclare une variable supposément sur deux octets, je ne peux modifier que 8 des 16 bits. etc... Je me demande bien comment on fait.

  4. #4
    sdec25

    Re : PIC assembleur et gestion de mots de 16 bits

    Bonjour,
    En C c'est très simple de créer un mot de + de 8 bits à partir de plusieurs mots de 8 bits. En assembleur 8 bits c'est impossible et ça n'a même pas de sens. Sur un processeur 8 bits on ne peut manipuler que des données de 8 bits.

    Citation Envoyé par Ley111 Voir le message
    quand je déclare une variable supposément sur deux octets, je ne peux modifier que 8 des 16 bits. etc...
    J'ai pas compris. Tu peux expliquer ce que tu veux faire ?
    Dernière modification par sdec25 ; 06/10/2009 à 23h27.

  5. A voir en vidéo sur Futura
  6. #5
    invite50c4cbed

    Re : PIC assembleur et gestion de mots de 16 bits

    bonjour

    en assembleur sur les séries PIC10F à PIC18F on ne peut travailler qu'avec des variables de 8 bits et il faut géré les retenues manuellement

    pour les compilateur C quand on utilise une variable de type long cela ce traduit par plusieurs instructions en assembleur (par exemple minimum 5 instructions pour une audition de deux variables de 16 bits)

    si vous voulez des exemples il y en a plusieurs dans les cours de Bigonoff que n'importe quel moteur de recherche vous fournira

    pour les PIC des gammes supérieures je ne les ais jamais utilisés mais je sais qu'il travaille sur 16 (voir 32) bits mais je ne peut rien vous rire de plus a ce sujet

  7. #6
    invitee05a3fcc

    Re : PIC assembleur et gestion de mots de 16 bits

    Citation Envoyé par sdec25 Voir le message
    En assembleur c'est impossible, sur un processeur 8 bits on ne peut manipuler que des données de 8 bits.
    Alors, comment, avec des µC 4 bits, on faisait des calculatrices qui affichaient jusqu'à 99999999 ?

    Avec un 8 bits, on prend deux cases mémoires (donc 16bits) et pour faire une addition de 16 bits + 16bits, on additionne les 8 bits LSB. Ensuite on additionne les 8 bits MSB (en tenant compte de la retenue des 8 bits LSB)

    Comment fait le compilateur ? il utilise cette procédure assembleur , mais c'est transparent au programmeur (sauf si il regarde le code assembleur généré ..... Ah zut, j'oubliai qu'un pisseur de ligne en "C" ne veut rien savoir de l'assembleur ... dommage !)

  8. #7
    sdec25

    Re : PIC assembleur et gestion de mots de 16 bits

    Alors, comment, avec des µC 4 bits, on faisait des calculatrices qui affichaient jusqu'à 99999999 ?
    Ma calculatrice ne compte que jusqu'à 15.

    Plus sérieusement, un processeur 8 bits ne manipule que des données 8 bits. L'interprétation qu'on fait des données en mémoire est indépendante de ce que fait le processeur. Quand on a un nombre 32 bits le processeur ne voit que des 8 bits, donc oui le processeur ne manipule que du 8 bits et il n'y a pas de unsigned long ou uns16 en assembleur (à moins d'avoir un assembleur évolué qui serait plus proche du C que de l'assembleur).

    PS : je répondais à ça :
    Citation Envoyé par Nico8583 Voir le message
    Est-ce qu'il est possible de créer des mots de 16 bits en assembleur sur un PIC type 12F ou 16F, comme par exemple un "unsigned long" ou un "uns16" en C ?
    Dernière modification par sdec25 ; 06/10/2009 à 23h53.

  9. #8
    invite092cb13c

    Re : PIC assembleur et gestion de mots de 16 bits

    Citation Envoyé par w4w4r7b Voir le message
    bonjour

    en assembleur sur les séries PIC10F à PIC18F on ne peut travailler qu'avec des variables de 8 bits et il faut géré les retenues manuellement
    Bonjour
    On peut utiliser des routines toutes faites pour les calculs sur 16 bits, il y a celles de ce site: http://micropic.free.fr/pic6.html qui sont simples à utiliser, en tout cas plus simple que celles de Microchip.
    Gilles

  10. #9
    invite50c4cbed

    Re : PIC assembleur et gestion de mots de 16 bits

    merci pour ce site que je ne connaiser pas

  11. #10
    invite48613fdf

    Re : PIC assembleur et gestion de mots de 16 bits

    Merci pour tous les liens, c'est génial!

    Mais concrètement, disons que j'ai un PIC10, 12, 16, 18, qu'importe. Et que là, j'ai une variable 2-byte que je veux mettre sur les PORTC et PORTD pour avoir une sortie 16 bits.

    Appelons la variable "BigVariable". Concrètement, comment on la place sur 2 ports? Par 8 "rotate right" sur une copie de la variable? Je ne sais pas si je suis clair...

    Ou ai-je complètement sorti de mon imaginaire l'idée que puisse exister une seule variable 2-byte tenant en une entité déclarée (BigVariable equ 0x0C), sur un PIC 8 bits?

    Si ça existe, comment les déclarer?

    Merci!

  12. #11
    invite50c4cbed

    Re : PIC assembleur et gestion de mots de 16 bits

    je suppose qu'au début du code qui suit les 8 bit de poids fort de BigVariable sont dans VARH (il yron sur le port D), les 8 bit de poids faible de BigVariable sont dans VARL (il yron sur le port C) et qu'on est en BANK 0

    Code:
    	movf VARH, w	; on charge les 8 bits de poids fort dans w
    	movwf PORTD	; on les envois sur le port D
    	movf VARL, w	; on charge les 8 bits de poids faible dans w
    	movwf PORTC	; on les envois sur le port C

Discussions similaires

  1. Assembleur ( PIC ) : optimiser la gestion du bus Serial
    Par Toufinet dans le forum Électronique
    Réponses: 5
    Dernier message: 16/10/2007, 19h29
  2. truc en langage assembleur PIC
    Par invite412b515c dans le forum Électronique
    Réponses: 0
    Dernier message: 04/06/2007, 21h05
  3. Programmation assembleur sur PIC
    Par inviteebefde8d dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2007, 10h38
  4. Macro avec mplab en assembleur pour pic
    Par invite7ff929b6 dans le forum Électronique
    Réponses: 0
    Dernier message: 17/03/2007, 15h38
  5. algorithme pour decoder 4 bits en 16 flags en assembleur
    Par invite7ff929b6 dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 16/05/2006, 19h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...