670 012
questions
1 486 114
réponses
1 459 554
membres
M'inscrire Me connecter
Inscription gratuite !

Feux tricolors avec pic 16f877

Question anonyme le 19/03/2010 à 15h05
Dernière réponse le 16/02/2011 à 22h31
[ ! ]
Bonjour a tous, je dois faire un projet de licence en genie electrique , c'est la gestion de feux tricolors avec micro controleur (16f877), en gros c'est une intérsection qui contient 4 feux tricolors ( qui marche 2 à 2 ) + 2 feux bicolore pour les piétons je dois programmer tout ça en assembleur ( MPLAB ) et j'ai du mal car c'est tout nouveau pour moi :-( si quelqu'un peut m'aider, en m'indiquant juste des liens ou je pourais apprendre des le debut , ou carrement ou je peux trouver ce programme :-p merci bien
Répondre
2 réponses pour « 
feux tricolors avec pic 16f877
 »
Réponse de ye7ia
Le 26/03/2010 é 15h52
[ ! ]
RB7-RB6-RB5-RB4-RB3-RB2-RB1-RB0 R2-O2-V2-R1-O1-V1-RP1/VP2-VP1/RP2 list p=16f84A #include p16f84A.inc __config H'3FF9' ;------------ Définition des constantes --------------- #define inter0 0 ; bouton marche #define inter1 1 ; bouton clignotement orange ;------------ Définition des registres temporaires --------------- retard1 EQU 0x0C ; le registre temporaire retard1 se trouve à l' adresse 0C retard2 EQU 0x0F ; le registre temporaire retard2 se trouve à l' adresse 0F retard3 EQU 0x10 ; le registre temporaire retard3 se trouve à l' adresse 10 ;------------ Init des ports A et B --------------- ORG 0 bsf STATUS,5 ; on met à 1 le 5eme bit du registre status pour accéder ; à la 2eme page mémoire ( pour trisa et trisb ) MOVLW 0x00 ; on met 00 dans le registre W MOVWF TRISB ; on met 00 dans le port B il est programmé en sortie MOVLW 0x1F ; on met 1F dans le registre W MOVWF TRISA ; on met 1F dans le port A il est programmé en entrée bcf STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder ; à la 1eme page mémoire ;------------ Init des feux ROUGE1 et ROUGE2 --------------- MOVLW B'00001001' ; on met 0C dans le registre W ( Rouge1 et Rouge2 ) MOVWF PORTB ; on met W sur le port B ( led ) ;-------------------- Programme principal ---------------------- debut ; MOVLW 0x00 ; on met 0C dans le registre W ( Rouge1 et Rouge2 ) ; MOVWF PORTB ; on met W sur le port B ( led ) ; btfss PORTA,inter0 ; interrupteur 0 ( marche ) appuyé ? si oui on continu sinon ;va à debut ; goto debut btfsc PORTA,inter0 ; interrupteur 1 ( clignotant ) appuyé ? si oui on ;va à clignote goto clignote ; MOVLW B'00001001' ; on met 0C dans le registre W ( Rouge1 et Rouge2 ) ; MOVWF PORTB ; on met W sur le port B ( led ) ;--------------- Chargement de la temporisation --------------------- ; CALL tempo ; on appel la temporisation 1 ( longue ) MOVLW 0x86 ; on met 0C dans le registre W ( Vert1 et Rouge2 ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo ; on appel la temporisation 1 ( longue ) MOVLW 0x8A ; on met 0A dans le registre W ( Orange1 et Rouge2 ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo2 ; on appel la temporisation courte MOVLW 0x31 ; on met 0C dans le registre W ( Rouge1 et Rouge2 ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo ; on appel la temporisation courte MOVLW 0x51 ; on met 24 dans le registre W ( Rouge1 et Vert2 ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo2 ; on appel la temporisation longue GOTO debut ; retour au début du programme ;------------ Programme de temporisation longue --------------- tempo MOVLW 0xFF ; on met ff dans le registre W MOVWF retard1 ; on met W dans le registre retard1 MOVWF retard2 ; on met W dans le registre retard2 MOVLW 0x12 ; on met 12 dans le registre W MOVWF retard3 ; on met W dans le registre retard3 attente DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si GOTO attente ; le registre retard1 = 0 sinon retour à attente movlw 0xFF ; on recharge retard1 movwf retard1 DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si GOTO attente ; le registre retard2 = 0 sinon retour à attente movlw 0xFF ; on recharge retard2 movwf retard2 DECFSZ retard3,F ; on décrémente retard3 et on saute la prochaine instruction si GOTO attente ; le registre retard3 = 0 sinon retour à attente RETURN ; retour au programme principal après l 'instruction CALL ;------------ Programme de temporisation courte --------------- tempo2 MOVLW 0xFF ; on met ff dans le registre W MOVWF retard1 ; on met W dans le registre retard1 MOVWF retard2 ; on met W dans le registre retard2 MOVLW 0x07 ; on met 7 dans le registre W MOVWF retard3 ; on met W dans le registre retard3 attente2 DECFSZ retard1,F ; on décrémente retard1 et on saute la prochaine instruction si GOTO attente2 ; le registre retard1 = 0 sinon retour à attente2 movlw 0xFF ; on recharge retard1 movwf retard1 DECFSZ retard2,F ; on décrémente retard2 et on saute la prochaine instruction si GOTO attente2 ; le registre retard2 = 0 sinon retour à attente2 movlw 0xFF ; on recharge retard2 movwf retard2 DECFSZ retard3,F ; on décrémente retard3 et on saute la prochaine instruction si GOTO attente2 ; le registre retard3 = 0 sinon retour à attente2 RETURN clignote MOVLW 0x48 ; on met 12 dans le registre W ( Orange1 et Orange2 ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo2 ; on appel la temporisation courte MOVLW B'00000000' ; on met 00 dans le registre W ( aucune led ) MOVWF PORTB ; on met W sur le port B ( led ) CALL tempo2 ; on appel la temporisation courte goto debut END
Référence(s) :
Moi même ;-)
Répondre
Réponse anonyme
Le 16/02/2011 é 22h31
[ ! ]
Bonne programmation mais éviter les commentaires Pour la temporisation il y a une méthodes facile que celle là (Boucles imbriqués)
Référence(s) :
Moi même Maître de l'ATC
Répondre
Publiez votre réponse
Règles de bonne conduite :
  • Du respect et de la politesse envers les autres
  • Un style rédactionnel clair, une orthographe soignée
  • Le langage SMS n'est pas autorisé
  • Une réponse construite, détaillée et argumentée
  • Pas de propos insultant, diffamatoire, ni xénophobe
  • Pas de publicité, de spam, ni de contenu illicite
  • Pas d'information personnelle divulguée
  • Pas d'échange d'email, ni de coordonnées personnelles
Réponses sur le thème « 
feux tricolors avec pic 16f877
 »
Etes-vous un expert ?
Répondez à l'une de ces questions !
Posez votre question maintenant !
Publiez votre question et obtenez des réponses d'experts bénévoles et de centaines d'internautes, gratuitement.
Titre de votre question :
Votre question en détails :
T23.595