Problème avec mon programme basic pour 16f84

Bonjour,
je débute dans la programation du 16f84 en basic. J'ai écrit un petit programme pour m'entrainer qui permet d'allumer une led pendant une seconde puis de l'éteindre et d'en allumé une autre et ensuite les deux à la fois et tout ça en boucle.
Mais mon programme ne fonctionne pas car j'ai les 2 led qui s'allument en meme temps puis s'éteignent en boucle.
J'ai branché une led sur le rb0 et l'autre sur le rb1.
Si quelqu'un pouvait me dire ce qui ne va pas ça serait vraiment très gentil.
Merci d'avance.
Voilà mon programme:

main:
TRISB = 0
PORTB.0 = %11111111
delay_ms(1000)
PORTB.0 = %00000000
delay_ms(1000)
PORTB.1 = %11111111
delay_ms(1000)
PORTB.1 = %00000000
delay_ms(1000)
PORTB.0 = %11111111
PORTB.1 = %11111111
delay_ms(1000)
PORTB.0 = %00000000
PORTB.1 = %00000000
delay_ms(1000)
goto main
end.

6 réponses

  1. Bonsoir

    Je ne connais pas le basic 16F84 mais je trouve bizarre de donner les valeurs %00000000 et %11111111 à une sortie à 1 seul bit. Ce ne sarait pas putôt %0 et %1 ?
    1. et bien dans les exemples de programems que j'ai, ils y a un programme qui fairt clignoter une seul led et c'est bien comme ça que c'est fait.
      1. Tu es sûr ? Je suis très, très étonné. As-tu essayé ce que je propose et où as-tu trouvé ton exemple ?
        1. Mon exemple est livré avec le logiciel MikroBasic le logiciel avec lequel je programme.
          Voilà le programme que j'ai pris comme exemple:

          program Led_blinking

          main:
          TRISB = 0 ' configure pins of portb as output
          PORTB = %11111111 ' turn ON diodes on portb
          delay_ms(1000) ' wait for 1 second
          PORTB = %00000000 ' turn OFF diodes on portb
          delay_ms(1000) ' wait for 1 second
          goto main ' endless loop
          end.

          Je l'ai testé et il marche nickel. Mais je ne comprend pas pourquoi chez moi ça ne marche pas :s
          1. et bien dans les exemples de programems que j'ai, ils y a un programme qui fairt clignoter une seul led et c'est bien comme ça que c'est fait.
            Je me doutais bien que ce n'était pas vrai.

            Dans ton exemple, il est écrit PORTB=%11111111, pas PORTB.0 ni PORTB.1

            PORTB désigne le port complet (8 bits) alors que PORTB.0 et PORTB.1 désignent des sorties individuelles
            1. Ah ok je comprend, donc je vais essayer aujourd'hui en mettant PORTB.1 = 0. Je te dirais si ça fonctionne ou pas.