begin process at 2012 05 28 22:50:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

[µcontrolleur Microchip] - Stoquage de données series dans une variable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[µcontrolleur Microchip] - Stoquage de données series dans une variable

mercredi 14 janvier 2009 à 19:58:38 | [µcontrolleur Microchip] - Stoquage de données series dans une variable

ClacMer2

Bonjour,
Voila mon problème, je suis actuellement en train de me pencher sur la liaison rs232, liaison série, et les données y sont envoyées à l'envers, (d'abord le MSB pour finir sur le LSB), je désirerais, sur mon pic, enregistrer un octet entrant dans une variable, mais dans l'ordre (MSB;x;x;x;x;x;x;LSB).
J'urtilise le compilateur CC5x,
Et je ne connais la façon, même si les donnée arrivent dans l'ordre de les stoquée dans un buffer (c'est comme ça qu'on dis? ).

J'avais comme idée :

definir x =8
lire le 1er bit reçu
le mettre dans l'octet de destination au x bit
décrementer x
lire le 2nd bit reçu
le mettre dans l'octet de destination au x bit
Etc...


Si vous pouviez m'éclairer je vous en serais infiniment reconnaisant.
Merci d'avance

jeudi 15 janvier 2009 à 00:43:23 | Re : [µcontrolleur Microchip] - Stoquage de données series dans une variable

uaip

Salut,
Tu dis : "et les données y sont envoyées à l'envers, (d'abord le MSB pour finir sur le LSB)"
Je pense que c'est une erreur d'étourderie de ta part mais c'est le LSB qui est d'abord envoyé.

Si j'ai bien compris, imaginons l'octet entrant comme tel : (LSB) 0100 0100 (MSB)
Et toi tu veux l'enregistrer comme ceci : (MSB) 0010 0010 (LSB).
Prenons un char (type figé, je crois), c'est 1 octet, donc 8 bits.
Ensuite on fait une boucle (x8) pour chaque bit de l'octet, puis on lui applique des masques.
J'explique vite fait l'algorithme et je poste le code C :
- on initialise un octet-résultat à zéro.
- on boucle 8 fois, avec un compteur de 7 à 0 :
- - si un ET logique entre le bit le plus faible et 1 retourne 1, on ajoute la valeur décimale correspondante dans l'octet-résultat à zéro
- - on décale l'octet d'un cran vers la droite

Personnellement je trouve ça très logique, donc je détaille peu, j'ai testé et ça fonctionne sur plusieurs exemples. Si tu veux d'avantages d'explication, n'hésite pas.
Voici le code C. J'ai fait un programme complet, prends uniquement ce qui t'intéresse.
Je précise que ma fonction exposant(); (bien qu'il existe déjà une fonction pow(); dans le header math.h) permet justement de ne pas inclure ce header simplement pour cette fonction.

#include <stdio.h>
int exposant(int nbr,int expo) {
    int result=nbr;
    for(int i=0;i < (expo-1);i++) result*=nbr;
    return result;
}
int main() {
    /* Simulation de donnée entrante */
    char data=0x44;
    /* Donnée à stocker */
    char result=0;
    /* Inversion */
    int a,retenue;
    for(a=7;a >= 0;a--) {
        if (data&1) result+=exposant(2,a);
        data>>=1;
    }
    /* Affichage sur la sortie standard */
    printf("%c\n",result);
    return 0;
}


Bonne continuation.


Cordialement, uaip.
jeudi 15 janvier 2009 à 00:46:55 | Re : [µcontrolleur Microchip] - Stoquage de données series dans une variable

uaip

Oups... tu risques d'avoir une erreur de compilation si tu es en C.
Remplaces
for(int i=0;i < (expo-1);i++) result*=nbr;
par
int i;
for(i=0;i < (expo-1);i++) result*=nbr;

Cordialement, uaip.


Cette discussion est classée dans : variable, données, octet, controlleur, microchip


Répondre à ce message

Sujets en rapport avec ce message

transfert de données avec un micro contrôleur PIC [ par Tooshort23 ] Bonjour,je me demande comment stocker des bits dans un octet qui arrivent en série ...Il s'agit d'une lecture de carte à puce.Les bits sont transmis u Problème de "tampon" [ par speeddo ] Bonjour,je stock dans une variable de type Variant des données venant d'un autre logiciel. Ces données sont mis dans la dite variable grace à une fonc Extraction de données dans un char[260] [ par seb2086 ] Bonjour,char variable[260] = "C:\Mes docs\Dossier\Objet.X" ;Voila en fait je voudrais récupérer dans une autre variable seulement Objet.X.En gros il f Conversion de types de données... [ par nullspace ] J'ai jamais réussis à trouver une bonne solution pour convertir un type de variable dans une autre variable ayant un autre type.Par exemple...si j'ai entier stocké sur un octet [ par Guegue85 ] Hello,Dans quoi peut-on stocker un entier contenu dans un octet ? Je voudrais lire les données d'un fichier WAVE codé en 8 bits (les informations sont utiliser un vector sous codeWarrior version 6.0 [ par KoSan ] Bonjour,Je dois développer une application en C++ sous CodeWarrior,version 6.0, pour un système embarqué.Il s'agit de récupérer des données, octet par Lecture d'un fichier pour mettre les données dans un tableau [ par cyberkate ] Bonjour !Je développe une application en mode console en C++.Voici le thème : je veux gérer des clients qui réalisent plusieurs abonnements à un magaz [C] Variable Long dans une boucle for [ par nitrique ] Bonjour @ tous,J'ai une fonction qui me renvoie un long (une quantité).Et j'aimerais faire une boucle sur le résultat de cette fonction, seulement, si Pb de déclaration...; [ par speeddo ] Bonjour, J'ai un petit problème! En effet je sais comment on peut définir une variable en tant qu'objet en VB ma "interpreteur"? [ par Blackhorn ] Bonjour, je voudrais en faite sortir des informations d"un fichier, et les "interprété" mais je me demande comment on peut  mettre dans une variable (


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales