Bonsoir, je tente en ce moment de me mettre à la programmation de PIC16F877, je désire réaliser une conversion analogique numérique mais en premier, je code une fonction qui doit récupérer le résultat de la conversion et le stocker dans une variable appelée valeurDecimale. Voici le code que je tente d'exécuter en simulation :
Ce code est compilé sans problème, mais lorsque je simule, valeurDecimale est égale à 255. Je me doute que c'est parce que la variable n'est codée que sur 8 bits, or le résultat de la conversion est codé sur 10 bits, je modifie alors le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int calculResultat(void) { ADRESH=0b00000011; ADRESL=0b11111111; //Lignes ajoutées pour la simulation uns8 valeurDecimale=0; valeurDecimale=ADRESL; valeurDecimale+=(ADRESH<<8); return valeurDecimale; }
Mais là, MPLAB refuse ce code et m'affiche "Local RAM block is splitted, rambank 0 (I was not possible to allocate local RAM space in a continuous block. This can be due to variables located at specific locations)".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int calculResultat(void) { ADRESH=0b00000011; ADRESL=0b11111111; uns16 valeurDecimale=0; valeurDecimale=ADRESL; valeurDecimale+=(ADRESH<<8); return valeurDecimale; }
Si je comprends bien, ça signifie que le PIC16F877 ne peut pas stocker des entiers supérieurs à 255 , dans ce cas comment faire pour récupérer le résultat de la conversion, qq1 aurait-il une idée svp ?
Merci par avance
Partager