PIC 16f84 - MikroBasic - Utilisation d'un bouton!
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

PIC 16f84 - MikroBasic - Utilisation d'un bouton!



  1. #1
    invite35d9f5d5

    Question PIC 16f84 - MikroBasic - Utilisation d'un bouton!


    ------

    Bonjour à tous, je suis nouveau sur le site Futura-Science. J'ai déjà pas mal d'expérience avec le BASIC Stamp de Parallax et j'ai récemment (vendredi dernier) commencé à expérimenter avec les PICs. Je suis sous MikroBASIC et je m'arrache actuellement les cheveux en essayant de comprendre la syntaxe de toute les commandes, bien que j'aille quelques référence de Microchip et MikroE sur mon bureau.

    En grattant des infos ici et là, j'ai réussi à comprendre la plupart des commandes de base et à programmer un simple chaser avec des LEDs.
    La prochaine étape, un bouton qui déclenche le chaser!

    Mes nombreuses tentatives se sont résumées à cela: ''Eh m**** ça marche pas &*#$@!'', au grand déplaisir des parents.

    Bref, voilà mon code, qui est un peu bizarre suite à mes nombreuse tentatives.

    main:

    trisa = 1
    trisb = 0

    while porta = %11110
    portb = %00010001
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %10001000
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %00010001
    wend

    goto main

    end.
    C'est un ''double chaser'' (deux chaser synchro et inversé) avec des DELs sur tout le port B. Je tente désespérément de réussir à faire activer le chaser que lorsque le bouton est activé sur la broche A.0 (active-low). Le PIC est un 16f84A.

    -----

  2. #2
    invitee5da1686

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    salut

    essay sa

    Code:
    main:
    
    trisa = 1
    trisb = 0
    
    if porta.0 = 0 then
    portb = %00010001
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %10001000
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %00010001
    else
    portb = 0 
    endif
    
    goto main
    
    end.

    if veut dire si, donc si porta.0(.0 veut dire le bit 0 de porta) = 0 then(veut dire alor )

    ex:
    if porta.0 = 0 then
    ici si la condition est vraie(porta.0 = 0)
    ici si la condition est vraie(porta.0 = 0)
    ici si la condition est vraie(porta.0 = 0)
    ...
    ...
    else (sinon)(porta.0 est different de 0)
    ici si la condition est fausse(porta.0 = 1)
    ici si la condition est fausse(porta.0 = 1)
    ici si la condition est fausse(porta.0 = 1)
    ...
    ...
    endif (fin du test de condition)

  3. #3
    invite35d9f5d5

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    Perso, je voulais pas utiliser une commande If..Then parce que je voulais que la boucle du chaser s'arrête aussitôt que j'arrête d'appuyer sur le bouton.

    J'ai donc utilisé une boucle While...Wend, croyant que tout allait s'arranger, mais non, le même résultat qu'un If...

    Sinon, j'ai réussi à le faire fonctionner. Quelques erreurs de prog stupides ici et là et une broche décalée sur mon protoboard (Bouton branché entre 5V et 5V, pas fameux...) était le problème.

    Sinon merci Morpheus.

    N'empêche que quelqu'un connait-il une solution afin d'interrompre la boucle aussitôt que le bouton n'est plus appuyé?

    Voici mon code fonctionnel:

    const main_delay = 100

    '########### DÉBUT DU PROGRAMME ############

    '***INITIALISATION***
    initialization:

    trisa.0 = 1
    trisb = 0

    '***LOOP PRINCIPALE***
    main:

    portb = 0

    while porta.0 = 0
    portb = %00010001
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %10001000
    delay_ms (main_delay)
    portb = %01000100
    delay_ms (main_delay)
    portb = %00100010
    delay_ms (main_delay)
    portb = %00010001
    wend

    goto main

    end.

    '############# FIN DU PROGRAMME #############
    Merci!

  4. #4
    invitee5da1686

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    Code:
    const main_delay = 100
    
    const Bouton = porta.0
    const Appuye = 0
    const Relache = 1
    
    dim index as byte
    dim sens as bit
    
    '########### DÉBUT DU PROGRAMME ############
    
    '***INITIALISATION***
    initialization:
    
    trisa.0 = 1
    trisb = 0
    
    portb = %10001000
    sens = 1
    
    '***LOOP PRINCIPALE***
    main:
    
    
    while Bouton = Appuye
    
       if  sens = 1 then
         portb = portb >>1
         if portb = %00010001 then sens = 0
       else
         portb = portb <<1
         if portb = %10001000 then sens = 1
       endif
      
    delay_ms (main_delay)
    wend
    
    goto main
    
    end.
    
    '############# FIN DU PROGRAMME #############
    voila de quoi te faire reflechir ^^

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

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    Cool! J'ai pas trop le temps de regarder ça ce soir (ici il est minuit!), mais je m'attendait à une solution comme ça... Après tout c'est une suite logique!
    En tout cas merci beaucoup Morpheus pour cet exemple, je vois bien des commandes que je ne connaissait pas la syntaxe et que je vais pouvoir apprendre sans avoir à googler pendant 30 minutes...

  7. #6
    invitee5da1686

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    aussi si tu veut pouvoir comprendre ce que tu fait et progresser dans le bon sens
    je te conseil de lire les cours de Bigonoff en francais, gratuit, et superbes

    http://www.abcelectronique.com/bigon....php?par=545ec

    tu vera que c'est pas du basic mais de l'assembleur MAIS c'est ce qui te permetra de comprendre comment marche la puce et d'avoir un controle total de celle ci

    tu vera que tu poura pas t'empecher de vouloir lire les autre cours ^^

  8. #7
    invite35d9f5d5

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    Ah!! de l'assembleur! Honnêtement, la complexité du language fait que je me tiens un peu loin pour l'instant. Et en plus il faut connaitre l'architecture du proco pour programmer un tant soit peu.

    Et ça tombe bien, mon prof de prog m'a justement parlé aujourd'hui du site de Bigonoff! Bon, après tout faut le faire, non?

    Oh, et aussi, j'aimerais juste dire que t'a oublié les Endif (End if pour MikroB) pour les If nestés (comment dire ça en français?) dans ton programme. Ça m'a pris un bon 30 minutes pour m'en rendre compte. C'est pas directement compatible avec mon MikroB, mais c'est aisément ''convertissable''. Il fonctionne mieux que mon ancien programme et consomme moitié moins de mémoire! Eh oui, tu m'as fait réfléchir... C'est là un peu le ''fun'' de la prog, non?

  9. #8
    invitee5da1686

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    en fait moi j'utilise proton IDE pour la prog en basic ,quelques truc sont pareils mais pas tous donc quand je te file un ex sa peut etre a addapter.

    ben moi il accepte aussi bien endif que end if

    mais bon lassembleur c'est quand meme indispensable quand tu programme un cpu. c'est un peut comme apprendre a conduire sans savoir commen marche la voiture,le moteur ,l'embrayage ...

    donc pour lundi prochain tu m'apprend par coeur la partie 1 du cour de bignonoff ^^ sinon 2 heure de colle (d'assembleur)

  10. #9
    invite35d9f5d5

    Re : PIC 16f84 - MikroBasic - Utilisation d'un bouton!

    Donne moi en pas trop! J'ai un doc de robotique en retard à remettre pour mercredi prochain, trois pannes théoriques + analyse d'un ampli à uC ainsi qu'un oral de 10 minutes sur la construction des IC utilisés en audio pour lundi prochain... La prog c'est surtout dans mes temps libres!

    Mais promis, je fait le cour de Bigonoff dès que je peux!

    En tout cas merci de ton aide! Je ne pensais pas que je pourrais trouver de tels forums...

Discussions similaires

  1. Mikrobasic et 16f84
    Par invitec25c7d0a dans le forum Électronique
    Réponses: 2
    Dernier message: 12/06/2009, 10h02
  2. pic 16f84 2led i bouton 1 moteur
    Par invitefc1671e3 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/05/2007, 09h34
  3. Tension d'un PIC 16F84
    Par invite20cf775f dans le forum Électronique
    Réponses: 3
    Dernier message: 21/02/2007, 22h09
  4. Port d'E/S d'un pic 16F84
    Par WhiteBird dans le forum Électronique
    Réponses: 8
    Dernier message: 03/01/2006, 10h18
  5. Programation d'un pic 16F84
    Par dans le forum Électronique
    Réponses: 3
    Dernier message: 07/03/2003, 19h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...