Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

programme pic simple qui ne fonctionne pas



  1. #1
    alainav1

    programme pic simple qui ne fonctionne pas


    ------

    ce programme pourtant trés simple ne fonctionne pas ?
    chaque entrée est cablé avec un pull down de 10K

    le pic utilisé est un 16F819
    le but :
    a chaque appui sur une entrée la sortie associée reste à 1 pendant 100ms ou 500ms (suivant l'eat de portA.6)
    caque mise à 1 'même fugitive , devrait mettre l'entée à 1 la sortie corespondante (pendant 100ms ou 500 ms suivant l'eta de portA.6).
    cependant si aucun poussoir n'est activé le systeme se comporte comme un chenillard .
    au multimetre je me ren compte que les entées se metent au +5v cela malgré le pull down de 10K ?
    l'objectif etait que chaque appui sur le poussoir (qui met l'entrée au +) mette la sortie correspondante à 1( pendant 100ms ou 500ms suivant l'etat de portA.6 )
    comment expliquer ça !
    je ne vois pas de probleme dans le programme ?
    cordialement

    programme ci dessous



    Define CONF_WORD = 0x2f70
    ADCON1 = %00000111 'configuration en i/O

    TRISA = %01111100'1 entrée
    TRISB = %00001111
    OSCCON = %01100100
    OPTION_REG = %10000000'pas de pull up
    PORTB = %00000000
    PORTA = %00000000

    Dim temps As Word
    Symbol sw1 = PORTA.2 'pin 1
    Symbol sw2 = PORTA.3 'pin 2
    Symbol sw3 = PORTA.4 'pin 3
    Symbol sw6 = PORTB.0 'pin 6
    Symbol sw7 = PORTB.1 'pin 7
    Symbol sw8 = PORTB.2 'pin 8
    Symbol sw9 = PORTB.3 'pin 9
    Symbol sortie18 = PORTA.1
    Symbol sortie17 = PORTA.0
    Symbol sortie16 = PORTA.7
    Symbol sortie15 = PORTA.6
    Symbol sortie13 = PORTB.7
    Symbol sortie12 = PORTB.6
    Symbol sortie11 = PORTB.5
    Symbol sortie10 = PORTB.4
    temps = 100
    debut:

    If PORTA.6 = 1 Then
    temps = 100
    Else
    temps = 500
    Endif

    If sw1 = 1 Then
    PORTA = %00000010
    PORTB = %00000000
    'sortie18 = 1
    WaitMs temps

    Else
    'sortie18 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif

    If sw2 = 1 Then
    'sortie17 = 1
    PORTA = %00000001
    PORTB = %00000000
    WaitMs temps
    Else
    'sortie17 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif


    If sw3 = 1 Then

    'sortie16 = 1
    PORTA = %10000000
    PORTB = %00000000
    WaitMs temps
    Else
    'sortie16 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif

    If sw6 = 1 Then
    PORTA = %00000000
    PORTB = %10000000
    'sortie13 = 1
    WaitMs temps
    Else
    'sortie13 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif
    If sw7 = 1 Then
    'sortie12 = 1
    PORTA = %00000000
    PORTB = %01000000
    WaitMs temps
    Else
    'sortie12 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif

    If sw8 = 1 Then
    'sortie11 = 1
    PORTA = %00000000
    PORTB = %00100000
    WaitMs temps
    Else
    'sortie11 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif
    If sw9 = 1 Then
    'sortie10 = 1
    PORTA = %00000000
    PORTB = %00010000
    WaitMs temps
    Else
    'sortie10 = 0
    PORTA = %00000000
    PORTB = %00000000
    Endif
    PORTA = 0
    PORTB = 0
    Goto debut

    -----
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  2. Publicité
  3. #2
    Forhorse

    Re : programme pic simple qui ne fonctionne pas

    Déjà ton programme est difficile à lire. Tu devrais
    - indenter le code
    - faire une petite macro qui remet tout à zero plutôt qu'écrire a chaque fois PORTA=0 et PORTB=0

    Ensuite ce programme est "mono tâche" c'est a dire que si tu as appuyé sur un bouton et qu'une tempo est en cours, tout autre appuis est royalement ignoré. (c'est peut être le but)

    Je vais voir pour simuler le programme...

  4. #3
    Forhorse

    Re : programme pic simple qui ne fonctionne pas

    En faisant le schéma je vois un problème :
    Ton PORTA.6 est utilisé 2 fois : une fois comme entrée de configuration de la durée, et une fois comme "sortie15"
    Pourtant il est configuré uniquement en entrée.

  5. #4
    alainav1

    Re : programme pic simple qui ne fonctionne pas

    bonjour,

    "tout autre appuis est royalement ignoré. "
    c'est bien le but
    et portA.6 est une entrée pour choisir le temps
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    Forhorse

    Re : programme pic simple qui ne fonctionne pas

    regardes mieux ton code
    au début il y a un
    "Symbol sortie15 = PORTA.6"

  9. #6
    Forhorse

    Re : programme pic simple qui ne fonctionne pas

    En tout cas chez moi, en simulation, ce code fonctionne parfaitement !
    (j'ai juste remplacé waitms par delayms pour l'adapter à mon compilateur)

  10. Publicité
  11. #7
    alainav1

    Re : programme pic simple qui ne fonctionne pas

    bonjour,
    c'est surement un pb hard car en simulation ça marche aussi chez moi ?
    cordialement
    alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/11/2010, 16h51
  2. Probleme sim PIC 18F sur petit programme simple
    Par kixxxx dans le forum Électronique
    Réponses: 2
    Dernier message: 04/04/2010, 21h55
  3. Programme ASM simple qui ne marche pas
    Par inoxxam dans le forum Électronique
    Réponses: 9
    Dernier message: 21/03/2010, 11h21
  4. [PIC] - Programme qui tourne en Debug, mais pas en Program
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 18/01/2010, 07h22
  5. Programme avec PIC16F505 ne fonctionne pas
    Par michel5002 dans le forum Électronique
    Réponses: 18
    Dernier message: 02/02/2008, 10h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.