Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Peut-on separement gerer les bits en MikroC?
Modérateur : Jérémy
Peut-on separement gerer les bits en MikroC?
Salut
Je un débutant passionné de microcontrôleur PIC et je souhaite réaliser un compteur et un décompteur modulo 99 avec un PIC16F84A. J'utilise deux décodeurs sur les portb, B0 à B3 pour le compteur et port B4 à B7 pour le décompteur. Ma question est de savoir comment faire pour separer les ports b de 4bits à 4bits. pour le multiplexage là il n'y a pas de problème je me débrouille un peu bien.
Patmus
Je un débutant passionné de microcontrôleur PIC et je souhaite réaliser un compteur et un décompteur modulo 99 avec un PIC16F84A. J'utilise deux décodeurs sur les portb, B0 à B3 pour le compteur et port B4 à B7 pour le décompteur. Ma question est de savoir comment faire pour separer les ports b de 4bits à 4bits. pour le multiplexage là il n'y a pas de problème je me débrouille un peu bien.
Patmus
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Peut-on separement gerer les bits en MikroC?
Bonjour patmus et bienvenue sur FantasPic,
Je ne suis pas sur d'avoir très bien compris ta problématique mais je vais tenter une réponse .
Je pense qu'il faut que tu utilises "un masque de bits". C'est à dire qu'il faut cacher les bits que tu ne veux pas tenir comptes.
Le but est d'extraire les données qui t'intéresse. Les mettres dans une variable temporaire pour les exploiter "seuls".
Si tu veux je peux expliciter un peu plus !
Je ne suis pas sur d'avoir très bien compris ta problématique mais je vais tenter une réponse .
Je pense qu'il faut que tu utilises "un masque de bits". C'est à dire qu'il faut cacher les bits que tu ne veux pas tenir comptes.
Le but est d'extraire les données qui t'intéresse. Les mettres dans une variable temporaire pour les exploiter "seuls".
Si tu veux je peux expliciter un peu plus !
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Peut-on separement gerer les bits en MikroC?
Salut Jeremie,
Pour éclairer ma question, c'est juste savoir comment gérer les bits par ordre de 4 c'est-à-dire faire le comptage de 0 à 9 avec RB0 - RB3 et le décomptage de 9 à 0 avec RB4 - RB7.
Pour ce que vous avez dit d'isoler les bits comment ça se fait?
Patrick
Pour éclairer ma question, c'est juste savoir comment gérer les bits par ordre de 4 c'est-à-dire faire le comptage de 0 à 9 avec RB0 - RB3 et le décomptage de 9 à 0 avec RB4 - RB7.
Pour ce que vous avez dit d'isoler les bits comment ça se fait?
Patrick
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Peut-on separement gerer les bits en MikroC?
Re,
Je tiens au "Y" de mon prénom !!!
Pour les bits de poids faibles ( ceux qui sont à droite) . il faut masquer les 4 bits de gauche. On fait une petite opération booléenne.
Ton chiffre "ET" "00001111" = ton chiffre à exploiter.
En faisant ainsi les 4 bits de poids fort sont mis à zéro(donc ignorés) et il ne reste que les 4 chiffres de poids faibles.
Pour sortir les bits de poids forts , on effectue un décalage à droite de 4 cases. ainsi les bits de poids forts se retrouve en bit de poids faibles avec que des zéros en poids fort .
Par exemple : ABCDEFGH si je fais un décalage à droite de 4 cases j'obtiens : 0000ABCD et donc mon chiffre à exploiter.
Je ne sais pas si c'est très clair mon explication lol . A s tu un début de programme? je pourrais utiliser des exemples plus concrets!
Je tiens au "Y" de mon prénom !!!
Pour les bits de poids faibles ( ceux qui sont à droite) . il faut masquer les 4 bits de gauche. On fait une petite opération booléenne.
Ton chiffre "ET" "00001111" = ton chiffre à exploiter.
En faisant ainsi les 4 bits de poids fort sont mis à zéro(donc ignorés) et il ne reste que les 4 chiffres de poids faibles.
Pour sortir les bits de poids forts , on effectue un décalage à droite de 4 cases. ainsi les bits de poids forts se retrouve en bit de poids faibles avec que des zéros en poids fort .
Par exemple : ABCDEFGH si je fais un décalage à droite de 4 cases j'obtiens : 0000ABCD et donc mon chiffre à exploiter.
Je ne sais pas si c'est très clair mon explication lol . A s tu un début de programme? je pourrais utiliser des exemples plus concrets!
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Peut-on separement gerer les bits en MikroC?
Jérémy a écrit :Re,
Je tiens au "Y" de mon prénom !!!
...
Attention Pat, tu vas fâcher le Boss...
Ceci dit, bienvenu à toi, c'est cool et sympa ici, tu verras.
Je vais te proposer une solution.
Soit 3 octets, D (celui qui contient la valeur de 0 à 9 des dizaines), U (celui qui contient la valeur de 0 à 9 des unités) et FINAL (celui que tu enverras au port RB)
Avec les valeurs de 0 à 9 dans U et D tu vas faire la chose suivante :
- 4 décalages vers la gauche de D (tu auras une valeurs de 0 à 9 dans la partie gauche de l'octet et quatre 0 à droite)
- tu fais un AND entre U et D, valeur que tu attribueras à FINAL
- tu envoies FINAL sur RB
C'est le principe, je ne connais pas bien le C, mon truc (non Temps-x, ce n'est pas l'ASM ) c'est le Basic.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.
Peut-on separement gerer les bits en MikroC?
Bonjour patmus, Jérémy, Gérard, et tout le forum,
Soit le bienvenue sur le forum, et j'espère que tu y passeras des bons moment comme nous.
Ben moi je pratique ASM, le C pour moi c'est incompréhensible.
La premier chose c'est de lire tout le PORTB et le stocker dans une variable pour traitement,
Mais je peux pas continuer à t'aider si tu n'a pas de schéma, et la datasheet de tes décodeurs,
Ne pas confondre encodeur avec décodeurs, c'est pas la même chose.
cyril13110 à un concurrent.....
Gérard pratique couramment les deux langages ASM, Basic, c'est un Pro....
A+
Soit le bienvenue sur le forum, et j'espère que tu y passeras des bons moment comme nous.
Ben moi je pratique ASM, le C pour moi c'est incompréhensible.
La premier chose c'est de lire tout le PORTB et le stocker dans une variable pour traitement,
Mais je peux pas continuer à t'aider si tu n'a pas de schéma, et la datasheet de tes décodeurs,
Ne pas confondre encodeur avec décodeurs, c'est pas la même chose.
Jérémy a écrit :Source du message Je tiens au "Y" de mon prénom !!!
cyril13110 à un concurrent.....
Gérard a écrit :Source du message mon truc (non Temps-x, ce n'est pas l'ASM ) c'est le Basic.
Gérard pratique couramment les deux langages ASM, Basic, c'est un Pro....
A+
Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire.
Peut-on separement gerer les bits en MikroC?
bonjour,
En effet,
la solution masque et decalage me semble la solution la plus appropriée
(PORTD en exemple ..au lieu de PORTB )
affiche 36 03 06
ne pas oublier qu'on a acces aussi aux bits individuellement
PORTB.B0
PORTB.B1
...etc ...
En effet,
la solution masque et decalage me semble la solution la plus appropriée
(PORTD en exemple ..au lieu de PORTB )
Code : Tout sélectionner
//en lecture
PORTD=0x36;
// lecture PORTS
c1=PORTD;
ByteToHex(c1,CRam1);
//isolation b7..b4
UART1_Write_Text(CRam1);UART1_Write(TAB);
c1=PORTD>>4;
ByteToHex(c1,CRam1);
UART1_Write_Text(CRam1);UART1_Write(TAB);
// isolation B3..b0
c1=PORTD & 0x0F;
ByteToHex(c1,CRam1);
UART1_Write_Text(CRam1);
CRLF1();
affiche 36 03 06
ne pas oublier qu'on a acces aussi aux bits individuellement
PORTB.B0
PORTB.B1
...etc ...
Aide toi, le ciel ou FantasPic t'aidera
Peut-on separement gerer les bits en MikroC?
Je tiens à veiller sur l’écriture de votre nom avec un Y. Jeremy
mon problème est que pendant que les quatre premier bits font le comptage les quatre autres font le décomptage
mon problème est que pendant que les quatre premier bits font le comptage les quatre autres font le décomptage
Peut-on separement gerer les bits en MikroC?
patmus a écrit :Je tiens à veiller sur l’écriture de votre nom avec un Y. Jeremy
mon problème est que pendant que les quatre premier bits font le comptage les quatre autres font le décomptage
Ce que j'ai écrit en #5 reste valable pour du comptage et du décomptage.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.
-
- Administrateur du site
- Messages : 2723
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Peut-on separement gerer les bits en MikroC?
patmus a écrit :Source du message mon problème est que pendant que les quatre premier bits font le comptage les quatre autres font le décomptage
Pour la partie compteur ( bit de poids faibles) pas de problème tu comptes normalement de 2^0 à 2^3
Pour la partie dé-compteur au lieu de décompter de 1 en 1 tu peux décompter de 2^4 à 2^7
C'est en faisant des erreurs, que l'on apprend le mieux !!!
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 85 invités