Spécifier les PORTs de sortie (Mikroc) [Débutant]
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Spécifier les PORTs de sortie (Mikroc) [Débutant]



  1. #1
    narakphysics

    Spécifier les PORTs de sortie (Mikroc) [Débutant]


    ------

    Bonjour à tous
    Pour afficher un nombre sur un LCD, j'ai utilisé un décodeur, ce dernier a 4 entrés. Donc pour envoyer ces 4 bits j'ai spécifié tous le PORTA comme sortie du PIC16F84A. En effet, j'ai déclaré une variable et à chaque fois j'incrémente et j'affecte au PORTA; Donc le PORTA.B4 est non utilisé!!
    Ma question est : Est ce qu'on peut spécifier juste les 4 première bits du portA comme des sorties en une seule instruction??
    Merci d'avance

    -----

  2. #2
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Bien sur c'est le cas normalement on peut configurer chaque pin en sortie ou bien en entrée

    donc pour vous c'est simple donner des 0 pour les quatre premiers bit et 1 pour le cinquième

    ça donne sous mikroc

    TRISA=0x10;

  3. #3
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Re.
    merci de votre réponse
    Citation Envoyé par IHCAAMEL Voir le message
    Bien sur c'est le cas normalement on peut configurer chaque pin en sortie ou bien en entrée

    donc pour vous c'est simple donner des 0 pour les quatre premiers bit et 1 pour le cinquième

    ça donne sous mikroc

    TRISA=0x10;
    Dans mon cas, aussi le cinquième doit être configuré comme sortie!

  4. #4
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Citation Envoyé par narakphysics Voir le message
    Re.
    merci de votre réponse

    Dans mon cas, aussi le cinquième doit être configuré comme sortie!
    Donc tu lui affecte aussi un 0

    TRISA=0;

    donc ça vous donne tout le PORTA en sortie

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

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Re.
    Merci encore une fois de votre réponse
    je crois que vous n'avez pas compris ma question.
    j'ai déclaré une varibal de type int:
    Code:
    int var=0;
    à chaque fois j'incrémente cette variable:
    Code:
    var++;
    Ensuite j'affecte var au PORTA:
    Code:
    PORTA=var;
    entre ces lignes je modifie aussi l'état du RA4, supposons que j'ai maintient RA4 à 1! or si j'écris:
    Code:
    PORTA=var;
    le valeur de RA4 sera 0 pas 1!
    la solution que je propose c'est d'envoyer les 4 bits juste au premiers pins (RA0,RA1,RA2 et RA3).
    Est ce qu'il y a une instruction permettant de faire telle fonction??

  7. #6
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Citation Envoyé par narakphysics Voir le message
    Re.
    Merci encore une fois de votre réponse
    je crois que vous n'avez pas compris ma question.
    j'ai déclaré une varibal de type int:
    Code:
    int var=0;
    à chaque fois j'incrémente cette variable:
    Code:
    var++;
    Ensuite j'affecte var au PORTA:
    Code:
    PORTA=var;
    entre ces lignes je modifie aussi l'état du RA4, supposons que j'ai maintient RA4 à 1! or si j'écris:
    Code:
    PORTA=var;
    le valeur de RA4 sera 0 pas 1!
    la solution que je propose c'est d'envoyer les 4 bits juste au premiers pins (RA0,RA1,RA2 et RA3).
    Est ce qu'il y a une instruction permettant de faire telle fonction??
    Je suis vraiment dsl j'essai de vous comprendre

    vous avez supposé un maintien de RA4 à 1 ok c bon

    donc si j'ai bien compris vous voulez agir simplement sur les quatre premiers bits ?

    si oui pourquoi ne pas incrémenter directement le PORTA ? de tel façon bloquer l’incrémentation dés qu'on aura possibilité de changer l’état de RA4

    il y a aussi la possibilité d'utiliser une fonction logique OR ou bien AND ça dépend du forçage est ce à 0 ou bien à 1 ?

    donc pour résumer si vous avez le temps pour détailler votre but et de bien décrire votre cahier de charge il se peut qu'on trouve la solution rapidement.

  8. #7
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Citation Envoyé par narakphysics Voir le message
    Bonjour à tous
    Pour afficher un nombre sur un LCD, j'ai utilisé un décodeur, ce dernier a 4 entrés. Donc pour envoyer ces 4 bits j'ai spécifié tous le PORTA comme sortie du PIC16F84A. En effet, j'ai déclaré une variable et à chaque fois j'incrémente et j'affecte au PORTA; Donc le PORTA.B4 est non utilisé!!
    Ma question est : Est ce qu'on peut spécifier juste les 4 première bits du portA comme des sorties en une seule instruction??
    Merci d'avance

    Je reviens ici c'est vous voulez afficher un nombre sur un afficheur LCD je ne vois pas l'utilité de ce que vous avez décris !

    le code et tout simplement :

    Lcd_Init();
    Lcd_Out(1, 2, "Nombre à afficher");
    1 pour la ligne
    2 pour la colonne

    c'est un exemple

  9. #8
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Re.
    Vous avez raison
    j'ai commis une erreur, pas LCD mais afficheur à 7 segment c'est pourquoi j'utilise un décodeur
    Désolé encore une fois

  10. #9
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    L’essentiel le problème est résolu ou pas encore ?

  11. #10
    inviteafa9cf6f

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Est ce que vous êtes obligé à travailler avec un afficheur 7 segment sans décodeur ? car il existe sous ISIS des afficheurs 7 segment avec décodeur intégré ils possède seulement 4 broche et pour vous se sera idéal .

  12. #11
    invite03481543

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Bonsoir,

    tout cela me semble bien confus de part et d'autre dans cette discussion...

    Si vous utilisez un µC nul besoin de décodeur de je ne sais quoi pour commander un afficheur 7 segments.

    Pour gérer un afficheur 7 segments il suffit de créer le code inhérent à chaque chiffre (ou lettre) selon si vous êtes en cathode commune ou anode commune, puis envoyer la bonne séquence d'alimentation à chaque segment concerné pour faire apparaitre le symbole désiré.

  13. #12
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Merci HULK de votre réponse
    Citation Envoyé par HULK28 Voir le message
    Bonsoir,

    tout cela me semble bien confus de part et d'autre dans cette discussion...

    Si vous utilisez un µC nul besoin de décodeur de je ne sais quoi pour commander un afficheur 7 segments.

    Pour gérer un afficheur 7 segments il suffit de créer le code inhérent à chaque chiffre (ou lettre) selon si vous êtes en cathode commune ou anode commune, puis envoyer la bonne séquence d'alimentation à chaque segment concerné pour faire apparaitre le symbole désiré.
    je suis tout à fait d'accord avec vous.
    Mais ma question peut être général!
    je reformule , est ce qu'il y a un moyen (en mikroC) pour affecter une variable (codé sur 8 bits ) au PORTA( pas tout les pins mais juste les 4 premiers (RA0,RA1,RA2 et RA3) ) , sachant que le RA4 aussi est configuré comme sortie??
    PS: j'utilise le PIC 16F84A
    merci
    Dernière modification par narakphysics ; 16/09/2012 à 23h15.

  14. #13
    invite03481543

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    RA4 est une sortie de type drain ouvert, donc il faut une résistance de pull-up pour avoir un niveau 0 en sortie à l'état bas et un 1 (Vcc) à l'état haut.
    Le choix du portA n'est pas le mieux indiqué pour une commande d'afficheur, même si ça peut fonctionner, en général on le réserve pour les ANA (ADC).

    Pour répondre à ta question: bien sur, en MikroC comme avec tout compilateur C.
    Il faut faire un masque sur les bits qui ne serviront pas:

    Si tu veux masquer RA7~RA4 et donc n'avoir d'utile que RA3~RA0 il te suffit d'écrire:
    Code:
    Utile_portA= PORTA & 0b00001111;
    Les sorties RA7~RA4 seront toujours à 0 avec ce type de masque, seules les sorties RA3~RA0 seront inchangées.
    Exemple:

    Code:
    PORTA = 0b01101101;
    Utile_portA= PORTA & 0b00001111;
    résultat => Utile_portA = 0b00001101;

    Pour conclure, pour masquer les 4 bits de poids fort de ton port il suffit de faire un & entre le port en question et la valeur 0x0F (soit 0b00001111 en binaire):

    Code:
    Utile_portA= PORTA & 0x0F;
    @+
    Dernière modification par HULK28 ; 17/09/2012 à 22h51.

  15. #14
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Re.
    Merci de votre réponse
    Citation Envoyé par HULK28 Voir le message
    RA4 est une sortie de type drain ouvert, donc il faut une résistance de pull-up pour avoir un niveau 0 en sortie à l'état bas et un 1 (Vcc) à l'état haut.
    Le choix du portA n'est pas le mieux indiqué pour une commande d'afficheur, même si ça peut fonctionner, en général on le réserve pour les ANA (ADC).

    Pour répondre à ta question: bien sur, en MikroC comme avec tout compilateur C.
    Il faut faire un masque sur les bits qui ne serviront pas:

    Si tu veux masquer RA7~RA4 et donc n'avoir d'utile que RA3~RA0 il te suffit d'écrire:
    Code:
    Utile_portA= PORTA & 0b00001111;
    Les sorties RA7~RA4 seront toujours à 0 avec ce type de masque, seules les sorties RA3~RA0 seront inchangées.
    Exemple:

    Code:
    PORTA = 0b01101101;
    Utile_portA= PORTA & 0b00001111;
    résultat => Utile_portA = 0b00001101;

    Pour conclure, pour masquer les 4 bits de poids fort de ton port il suffit de faire un & entre le port en question et la valeur 0x0F (soit 0b00001111 en binaire):

    Code:
    Utile_portA= PORTA & 0x0F;
    @+
    J'ai bien compris ,
    Dans votre exemple, on modifie l'état des sorties RA7~RA4!
    j'ai pensé à une méthode mais je sais pas est ce qu'elle est juste ou non!!:
    supposons que mavar est la variable contenant le nombre à afficher et etat_RA4 est une variable booléenne qui prend soit 0 soit 1 et indique l'état de RA4( dés que je met 1 au RA4, je doit mettre aussi etat_RA4 à 1...) .
    donc avant d'affecter mavar au porta, on va tester la variable etat_RA4: si 1 alors on va mettre 1 au RA4 (porta.B4=1) si non on le laisse car la vitesse d'exécution est énorme (le temps pour exécuter une instruction est 1µs si on utilise un quartz de 4 MHz).
    est ce juste??

  16. #15
    invite03481543

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    On ne les modifie pas on les masque, c'est une grosse différence

  17. #16
    invite03481543

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Sinon j'ai pas bien compris ta question , il est tard on verra demain

  18. #17
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Re.
    Citation Envoyé par HULK28 Voir le message
    Sinon j'ai pas bien compris ta question
    le rôle de chaque sortie dans mon programme:
    RA0~RA3: vers un décodeur BCD puis un seule afficheur à 7-segement (1 digit);
    RA4: vers un buzzer ( joue le rôle d'une alarme)
    supposons que: RA4=1! et mavar est une variable contenant le nombre à afficher (entre 0 et 9).
    si je fais cette opération: PORTA=mavar alors RA4 sera 0 et ça pose un problème !!!non???
    d'où l'idée est d'affecter mavar juste au 4 premiers bits!
    j'espère que ma réponse est claire
    A+

  19. #18
    invite03481543

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Il te suffit de compléter mavar avec le bit 4 correspondant à l'état de l'alarme donc de la commande du buzzer:

    1ere étape tu formates mavar avec RA3~RA0 -> codage du BCD de 0 à 9.
    2eme étape tu ajoutes à mavar l'info alarme.

    mavar = 0b00001001; // par exemple on veut envoyer un 9
    info_alarme = info_alarme << 4; // (info_variable vaut 0 ou 1) -> on décale de 4 vers la gauche.
    PORTA = mavar | info_alarme; // on fait un OU avec les 2 variables

    Dans PORTA tu as maintenant tes 2 informations réunies.
    @+
    Dernière modification par HULK28 ; 18/09/2012 à 10h31.

  20. #19
    narakphysics

    Re : Spécifier les PORTs de sortie (Mikroc) [Débutant]

    Merci HULK de votre réponse

Discussions similaires

  1. lister les ports com
    Par invitef2164085 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 24/03/2012, 21h07
  2. PIC: Adresse des Ports .... pour un débutant
    Par jt06 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/10/2007, 18h18
  3. Specifier des conditions initiales sur PSPice
    Par invite76a66599 dans le forum Électronique
    Réponses: 6
    Dernier message: 17/05/2007, 21h35
  4. Question Puissances ports de Sortie PIC
    Par invitecb425c94 dans le forum Électronique
    Réponses: 3
    Dernier message: 09/12/2005, 22h24
  5. Doubler les ports RS232
    Par invite3769d93a dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 13/03/2005, 09h57
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...