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

Besoin aide 16f877 (timer)



  1. #1
    maxime.drouin

    Besoin aide 16f877 (timer)


    ------

    Bonjour,
    je suis présentement entrain de faire un projet à l'aide d'un pic 16f877 et je programme le tout en picbasic sous microcode studio plus. Mon projet est un système d'alarme. Par contre, j'ai un problème au niveau d'un timer. En fait, j'ai développer une interface qui permet à l'utilisateur de choisir le temps en secondes qui sécoule pour entrer un mot de passe avant que l'alarme se déclenche. Sauf que mon timer est présentement fait avec une sous routine du type :

    For numb = 5 TO 1 STEP -1 ' Pour la variable numb = 5 à 1 décrémente de 1
    LCDOut $fe,$c5, #numb ' Affiche la décrémentation
    LCDOut $fe,$c7, "SECONDE" ' Affiche SECONDE sur la ligne du bas de l'afficheur LCD
    PAUSE 1000 ' Pause de 1 seconde
    if numb = 1 then main5 ' Si la variable numb = 1 alors ca va à main5
    next

    Par contre, je veux afficher ce temps qui défile dans la meme interface qui demande à l'usager d'entrer son mot de passe sauf que je n'arrive pas à entrer aucun chiffre pour le mot de passe car le programme est bloquer au compteur. En fait, je voudrais avoir mon défilement de temps et pouvoir inscrire mon mot de passe ainsi que la vérification. J'ai esseyer plusieurs truc mais je n'y arrive pas. Il y aurais peut etre une solution qui serait de mettre un timer mais je n'ai jamais travaillé avec cela donc je ne sais pas si cela ferais lafaire et je ne sais pas comment sa fonctionne.

    Quelqu'un pourrait m'aider ? Quelqu'un aurait une solution ?

    -----

  2. Publicité
  3. #2
    maxime.drouin

    Re : Besoin aide 16f877 (timer)

    Alors personne ne pourrait me fournir une piste svp ? ou m'aider ?

  4. #3
    maxime.drouin

    Re : Besoin aide 16f877 (timer)

    Sur le forum j'ai trouvé une personne avec le meme type de probleme solution que moi
    http://forums.futura-sciences.com/thread116022.html
    Par contre, je ne suis pas trop sur de bien comprendre ce code. J'ai testé sous microcode studio plus (pic basic) sauf qu'il met plein d'erreur de synthaxe non reconnue. Quelqu'un aurait quelque cose pour du picbasic ou un lien ?

  5. #4
    maxime.drouin

    Re : Besoin aide 16f877 (timer)

    Sur le forum j'ai trouvé une personne avec le meme type de probleme solution que moi
    http://forums.futura-sciences.com/thread116022.html
    Par contre, je ne suis pas trop sur de bien comprendre ce code. J'ai testé sous microcode studio plus (pic basic) sauf qu'il met plein d'erreur de synthaxe non reconnue. Quelqu'un aurait quelque cose pour du picbasic ou un lien ?

    Voici le code pour mon clavier. En fait, il me faudrait un compteur de x à 0 (x est une variable). Exmeple : 20 seconde à 0 seconde.
    Par contre, je voudrais faire afficher ce compteur sur mon afficheur lcd tout en gardant les fonctionnalités du programme. C'est à dire pouvoir appuyer sur les boutons de mon clavier et inscrire des étoiles... (systeme alarme)

    Voila si j'utilise la sous routine avec le code présenté lors de mon premier poste le temps défiles sauf que le clavier ne répond plus et n'affiche pas de valeur du mon lcd (valeur = *)

    main4:
    IF portb.0 = 1 then main5 ' Si le portb.0 = 1 alors ca va à main 5
    GoSub KeyScan ' Va à sous routine keysan
    IF KEY = 128 Then MAIN4 ' Si key = 128 alors ca va à main4
    aff = key ' Met la variable aff à la même valeur que key
    GoSub KeyScan
    While key <> 128
    GoSub keyscan
    Wend

    if aff = 0 then write z,0 ' Si aff = 0 alors écrit dans le registre z (variable) le nombre 0
    if aff = 1 then write z,1 ' Si aff = 1 alors écrit dans le registre z (variable) le nombre 1
    if aff = 2 then write z,2 ' Si aff = 2 alors écrit dans le registre z (variable) le nombre 2
    if aff = 3 then write z,3 ' Si aff = 3 alors écrit dans le registre z (variable) le nombre 3
    if aff = 4 then write z,4 ' Si aff = 4 alors écrit dans le registre z (variable) le nombre 4
    if aff = 5 then write z,5 ' Si aff = 5 alors écrit dans le registre z (variable) le nombre 5
    if aff = 6 then write z,6 ' Si aff = 6 alors écrit dans le registre z (variable) le nombre 6
    if aff = 7 then write z,7 ' Si aff = 7 alors écrit dans le registre z (variable) le nombre 7
    if aff = 8 then write z,8 ' Si aff = 8 alors écrit dans le registre z (variable) le nombre 8
    if aff = 9 then write z,9 ' Si aff = 9 alors écrit dans le registre z (variable) le nombre 9
    z=z+1 ' Écrémente la variable de 1 lorsqu'une touche du clavier est appuyé
    if z=1 then etoile1 ' Si z = 1 alors ca va à etoile1
    if z=2 then etoile2 ' Si z = 2 alors ca va à etoile2
    if z=3 then etoile3 ' Si z = 3 alors ca va à etoile3
    if z=4 then etoile4 ' Si z = 4 alors ca va à etoile4
    GoSub KeyScan
    GoTo Main4

    etoile1:
    LCDOut $fe,$c6, "*" ' Affiche une * à c6 de l'afficheur LCD
    pause 100 ' Pause de 100 milisecondes
    goto main4 ' Va à main4

    etoile2:
    LCDOut $fe,$c7, "*" ' Affiche une * à c7 de l'afficheur LCD
    pause 100 ' Pause de 100 milisecondes
    goto main4 ' Va à main4

    etoile3:
    LCDOut $fe,$c8, "*" ' Affiche une * à c8 de l'afficheur LCD
    pause 100 ' Pause de 100 milisecondes
    goto main4 ' Va à main4

    etoile4:
    LCDOut $fe,$c9, "*" ' Affiche une * à c9 de l'afficheur LCD
    pause 100 ' Pause de 100 milisecondes
    goto test32 ' Va à test32

    test32:
    LCDOut $fe, 1 ' Efface ce qui est affcihé
    LCDOut $fe,$82, "CONFIRME CODE" ' Marque confirme code dans l'afficheur
    goto confirmation ' Va à confirmation

    ...... tronqué


    Keyscan:
    Debounce=1
    Key=0
    PORTC=%0111
    GoSub Scancol
    IF K_Flag=1 Then GoTo Map
    PORTC=%1011
    GoSub Scancol
    IF K_Flag=1 Then GoTo Map
    PORTC=%1101
    GoSub Scancol
    IF K_Flag=1 Then GoTo Map
    PORTC=%1110
    GoSub Scancol
    IF K_Flag=1 Then GoTo Map
    D_Flag=0
    Debounce=0

    GoTo Exit
    Map: IF D_Flag=1 Then Exit
    D_Flag=1
    Debounce=0
    Exit:
    LookUp Key,[0,0,0,0,8,9,0,0,4,5,6,7,0,1,2, 3,128],Key '

    Return

    Scancol:
    K_Flag=1
    IF PORTC.4=0 Then S_Exit
    Key=Key+1
    IF PORTC.5=0 Then S_Exit
    Key=Key+1
    IF PORTC.6=0 Then S_Exit
    Key=Key+1
    IF PORTC.7=0 Then S_Exit
    Key=Key+1
    K_Flag=0
    S_Exit: Return

    End

  6. A voir en vidéo sur Futura

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/05/2009, 02h47
  2. Aide fabriquation chargeur accu. MiMH par timer
    Par marineris dans le forum Électronique
    Réponses: 0
    Dernier message: 17/08/2006, 12h38
  3. besoin d' aide
    Par sandy34 dans le forum Chimie
    Réponses: 3
    Dernier message: 22/06/2006, 23h19
  4. besoin d aide
    Par dju.ly dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 28/12/2005, 18h18
  5. j ai besoin d aide
    Par abdel94 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 16/10/2005, 16h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.