programmation en C pic 16F877
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

programmation en C pic 16F877



  1. #1
    inviteb5e29967

    programmation en C pic 16F877


    ------

    Bonjour,

    je suis en train de faire un programme en C pour 16F877 qui utilise le CAN.Comme vous le savez le can sort un résultat sur 10 bits c'est pourquoi je fais la chose suivante(ADFM=1 donc justification à droite):

    int i,a,b;
    int16 off,out;
    // et plus loin
    a=ADRESH;
    a=a<<8;
    b=ADRESL;
    out=ADRESH;
    out=a+b;
    //comme ça j'ai le résultat sur 16 bits
    //ensuite:
    PORTB=out; //LSW
    PORTD=out>>8; //MSW


    Pourquoi je n'arrive pas à récupèrer ADRESL et ADRESH?
    Je sais le programme est un peu bête car je pourrais sortir directement ADRESH et ADRESL mais le but de mon programme est de soustraire une valeur au résultat de la conversion avant de sortie sur les port B et D.
    Mais avant cela je veux m'assurer que je peux déjà récupèrer la conversion sans aller plus loin.
    Quelqu'un pourrait-il me dire comment faire pour résoudre ce problème?
    Cordialement

    -----

  2. #2
    invitef86a6203

    Re : programmation en C pic 16F877

    OU EST l'initialisation, de ADCON0 , ANSEL.
    et la gestion GO/Done

  3. #3
    inviteb5e29967

    Re : programmation en C pic 16F877

    Voilà le programme en entier histoire d'y voir plus clair:
    #pragma chip PIC16F877A
    int i,a,b;
    int16 off,out;
    void init(void);


    void main ()
    {
    init();
    while(1){

    ADCON0.2= 1; //remise à 1 de ADCON0.2 pour car passe à 0 après conversion sinon on relance pas la conversion
    while(ADCON0.2==1){ //Attente pour l'acquisition du résultat
    nop();
    }
    a=ADRESH;
    a=a<<8;
    b=ADRESL;
    out=ADRESH;
    out=a+b;
    PORTB=out; //LSB
    PORTD=out>>8;//MSW


    }
    }

    void init(void){
    //initialisation:
    TRISA=0xFF;
    TRISB=0x00;
    TRISC=0x01;
    TRISD=0x00;
    ADCON0=0b10000101;
    ADCON1=0b10000000;
    off=0x0000;
    out=0x0000;
    //a=0;
    PORTB=0x00;
    PORTD=0x00;
    //fin initialisation
    }

Discussions similaires

  1. servo et pic 16f877
    Par invitecb40bc0e dans le forum Électronique
    Réponses: 7
    Dernier message: 11/10/2009, 09h42
  2. CAN intégré au PIC 16F877
    Par invite80303b0e dans le forum Électronique
    Réponses: 4
    Dernier message: 05/04/2007, 13h30
  3. Réponses: 0
    Dernier message: 18/03/2007, 16h43
  4. Pic 16f877 Pic basic pro conseil
    Par invite4ff7103d dans le forum Électronique
    Réponses: 10
    Dernier message: 04/01/2007, 18h26
  5. Bootloader PIC 16F877
    Par invite890ff058 dans le forum Électronique
    Réponses: 7
    Dernier message: 30/12/2005, 22h30
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...