Problème avec mon programme basic pour 16f84

Fermé
plastik - 12 déc. 2007 à 21:11
 plastik - 13 déc. 2007 à 07:30
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.
A voir également:

6 réponses

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 ?
0
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.
0
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 ?
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
Ah ok je comprend, donc je vais essayer aujourd'hui en mettant PORTB.1 = 0. Je te dirais si ça fonctionne ou pas.
0