pic16F84 - Page 2
Répondre à la discussion
Page 2 sur 3 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 90

pic16F84



  1. #31
    invitef86a6203

    Re : pic16F84


    ------

    Je pensais que le feux No2 sur B était sur bit 0, bit1, bit2 ?
    NON ?
    Code:
    bsf statut,RP0 ;selection de bank1
    movlw B'11111000'
    movwf trisA
    movlw B'11111000'
    movwf trisB

    -----

  2. #32
    invitef86a6203

    Re : pic16F84

    bit0=1 de portA portB bit0=1
    bit1=2 bit1=2
    bit2=4 bit2=4
    bit3=8 bit3=8
    utilisé du code !
    Code:
    bsf portA,0 ; bit0=1 
    bsf portB,0 ; bit0=1
    bsf PORTA,1 ; bit1=2 
    bsf PORTB,1 ; bit1=2
    bsf PORTA,2 ; bit2=4 
    bsf PORTB,2 ; bit2=4
    ; ???? bit3=8 bit3=8 ???
    Si la logique est 1 allumé on allume tout
    au début on fait un clrf porta et clrf portb pour éteindre.
    On allume tout ! Pourquoi ?

    L'instruction bsf ou bcf set ou reset un bit
    Le chiffre derriere indique ce bit
    Il ne s'agit pas d'un poid comme avec un AND , OR ou MOVF !

    Pour le 4 iem bit je comprend pas on a que 3 leds !
    En plus les TrisA et TrisB sont en sortie sur 3 !!!

    La LED selon sa connection a la masse ou au + , s'allume avec un 1 ou un 0, donc déterminer le sens allumer ou éteind avec 0 et 1 !
    A éclaircir tous ça !

  3. #33
    inviteaa98cb7b

    Re : pic16F84

    oui tu as raison alors j ai fait 1 pour allumer et 0 pour etteind j ai fait pour bit0=1
    bit1=2
    bit2=4
    car je donner ma solution à mon prof il m as dit il y as six possibilite
    allum feux roug1et feu vert2 et on etteint les autres
    allum feu roug1 et orang2 "
    allum feuroug 1 et feu feu roug2
    allum feu vert1 et feu feu roug2
    allume orang1 et feu roug2
    allume feu roug1et feu rouge2

    si je met
    bsf portA,0 ;feu rouge1
    bsf portb,2 ;feu vert2
    bcf portA,1
    bcf portA,2
    bcf portB,0
    bcf portB,1
    call my tempo
    mais j allum le feu rouge pour 5s et feu vert pour 3s
    alors comment je fait une seul call tempo
    ou bien je fait
    bsf portA,0
    call my temp ;5s
    bsf portB,2
    call my tempo
    car comme ça le feu rouge sur le bit0=1
    il allum seulement pour 1us et moi j ai besoin de 5s;

  4. #34
    umfred

    Re : pic16F84

    comme tu as tous les états possibles de ton système, et les temps d'allumage de chaque feu, il faut que tu calcule les temps entre chacun des états.

    par exemple pour les 3 états suivant:
    -feux rouge1 et feu vert2 allumé
    -feux rouge1 et orange2 allumé
    -feux rouge1 et feux rouge2 allumé

    et que tu sais que le feu vert 2 doit duré 3s, le orange 2, 1secondes

    Tu peux faire:
    Code:
    bsf feux_rouge1
    bsf feux_vert2
    call tempo_3s ;tempo de 3s correspondant à la durée du feux vert2 (ici tu peux aussi appeler 3 fois tempo_1s à la place ;))
    bcf feux_vert2
    bsf faux_orange2
    call tempo_1s ; tempo de 1s correspondant à la durée du feux orange2
    ...

  5. #35
    inviteaa98cb7b

    Re : pic16F84

    merci pour tout mais le feu rouge dure pour 5s et feu vert 3s
    bsf feu roug1
    call my temp;5s
    bsf feu vert2
    call my tempo;3s

    ou je fait ;
    bsf feuroug1
    bsf feuvert2
    call my tempo;5s
    j apprend seulement le temps feu rouge car il est long

    freepibasic il y a 4 possibilite ou six de possibilite
    pour allumage des leds
    allum feux roug1et feu vert2 et on etteint les autres
    allum feu roug1 et orang2 "et on etteids les autres
    allum feuroug 1 et feu feu roug2 et on etteids les autres
    allum feu vert1 et feu feu roug2;on etteids les autres
    allume orang1 et feu roug2;on etteids les autres
    allume feu roug1et feu rouge2;etteids les autres

  6. #36
    invitef86a6203

    Re : pic16F84

    Je pense qu'il est préférable de raisonner en évènements et non pas en états.

    tu devrais faire une liste correspondant aux évènements
    comme ceci;

    feu Rouge 1 ON
    feu Vert 2 ON
    3s
    feu vert 2 OFF
    feu orange 2 ON
    2s
    feu Rouge 1 OFF
    feu orange 2 OFF
    feu Vert 1 ON
    feu Rouge 2 ON
    3s
    etc...

    le complèter, puis transformer en code

  7. #37
    invitef86a6203

    Re : pic16F84

    routine de tempo en secondes

    MOVLW secondes
    CALL mytempoSec



    Code:
    ; temps de base 3µs (compt)
    ; x 256 = 768 (compt1)
    ; x 256 = 196 608 (compt2)
    ; si compt3 = 5   ~1 seconde
    ;    5 x 196 608 = 983040µs  ~ 1 seconde
    
    ; commentaire;
    ;     Notre routine ne pourra pas dépasser 51 secondes
    ;     puisque sa base de temps est de 5  256/5 =~ 51
    ; car nous utiliserons le même octet x 5
    
    ; W comptient le nombre de seconde
    mytempoSec
    
    ; nous devons multiplier par 5 le chiffre des secondes
    ; contenu dans W
    ; pour avoir notre compteur
    clrf compt3 ; efface le compteur
    movwf compt1; sauve temporairement le chiffre  à multiplier (les secondes)
    movlw 5	    ; valeur de base pour 1 seconde
    
    Mult5
    addwf compt3,f
    decfsz compt1
    goto Mult5
    
    clrf compt1 ; chargement par 256  (0-1=255)
    clrf compt2 ; chargement par 256
    clrf compt  ; chargement par 256
    
    
    ; boucle de 3µS avec quartz 4MHZ
    T3
    decfsz compt,1
    goto T3
    decfsz compt1,1 ; x 256
    goto T3
    descfz compt2,1 ; x 65536
    goto T3
    descfz compt3,1 ; secondes x 983040µs  
    goto T3
    
    return

  8. #38
    inviteaa98cb7b

    Re : pic16F84

    pour quoi le feu roug allumer et feu vert allumer on utilise le tempo de vert qui egale 3s ou lieu le feu roug 5s

  9. #39
    invitef86a6203

    Re : pic16F84

    il y a un chevauchement
    le rouge reste 5 sec pendant que le vert reste 3 sec puis 2 sec à l'orange.
    Donc raisonner en événements !
    pendant les 5 secondes il y a 2 événements.
    Le temps rouge sera 3s vert + 2s orange.

    en résumé;
    Il n'y a pas de tempo 5 secondes

  10. #40
    inviteaa98cb7b

    Re : pic16F84

    alors pour faire tempo de nuit pour des heures je change la valeur de base

  11. #41
    invitef86a6203

    Re : pic16F84

    alors pour faire tempo de nuit pour des heures je change la valeur de base
    pas clair , explique mieux !

    Je vois pas trop des heures à la place de secondes...

  12. #42
    umfred

    Re : pic16F84

    Avant de vouloir changer les temps, as-tu bien compris le chevauchement des états et quelles tempos utiliser à chaque fois ?

    Si tu as encore des doutes, traces sur une feuille les 6 chronogrammes des feux tricolores l'un en dessous de l'autre en utilisant, par exemple, 1 carreau pour une seconde. Ensuite pour avoir les tempos à utiliser, regarde le temps qui sépare 2 changements d'état successif de n'importe quel feu.

  13. #43
    inviteaa98cb7b

    Re : pic16F84

    le tempo de la nuit pour le feu orange1 et orang2
    quand RB4=1
    on a dis bsf portA,1
    v bsf portB,1
    call tempo nuit
    et j ai pas compris bien quand il passe le chevechement

  14. #44
    umfred

    Re : pic16F84

    ce que tu appelle tempo de nuit correspond en fait au clignotement de 2 feux oranges?
    donc si les 2 doivent clignoter en même temps il faut faire:
    Code:
    ; déja éteindre tous les feux rouge et vert bcf rouge1 bcf rouge2 bcf vert1 bcf vert2
    boucle_nuit
    ; ensuite allumer les feux orange bsf orange1 bsf orange2 ; ensuite la tempo pendant laquelle les feux sont allumé call tempo_orange_ON_nuit ;tempo de x secondes ; éteindre les feux oranges bcf orange1 bcf orange2 call tempo_orange_OFF_nuit; tempo de y secondes (on peut envisager un temps d'extinction différent de celui d'allumage) goto boucle_nuit ; bien sûr il faudrait tester si on est repasser en cycle de jour
    PS: essai d'éviter les faute d'orthographes en prenant ton temps pour écrire, ça rendra tes posts plus lisible

  15. #45
    invitef86a6203

    Re : pic16F84

    pour le chevauchement voir le dessin l'orange arrive alors que le rouge ne change pas.

    pour le clignotement de l'orange quelle est le temps du clignotement ?

    mettre une étiquette au dessus de clrd compt1 en mettant la valeur dans compt3 comme "clignote" par exemple.
    Code:
    movlw 2  ; 2/5em de seconde
    movwf compt3
    call clignote
    Code:
    ...
    clignote
    clrf compt1 ; chargement par 256  (0-1=255)
    clrf compt2 ; chargement par 256
    clrf compt  ; chargement par 256
    ....
    etc...
    ....
    Images attachées Images attachées  

  16. #46
    invitef86a6203

    Re : pic16F84

    Avec le code de umfred
    J'ai prévu 2/5 de seconde pour le clignotement , des secondes me paraissent beaucoup....

    Code:
    ....
    call tempo_orange_ON_nuit ;tempo de x secondes
    ....
    La procedure

    Code:
    tempo_orange_ON_nuit
    movlw 2  ; 2/5em de seconde
    movwf compt3
    call clignote
    return

  17. #47
    invitef86a6203

    Re : pic16F84

    Ces 2 lignes ;
    Code:
    call clignote
    return
    Peuvent être remplacés par une seule !
    Code:
    goto clignote

  18. #48
    inviteaa98cb7b

    Re : pic16F84

    merci pour tout et le tempo de clignotement je fait 2us à base 4MHz

  19. #49
    inviteaa98cb7b

    Re : pic16F84

    si le feu roug1 et feu roug2 sont allumer alors je peux pas faire tempo 5s

  20. #50
    umfred

    Re : pic16F84

    je n'ai pas compris ta question mais si tu regardes la pièce jointe (freepicbasic merci pour ton image ) peut-être comprendra tu mieux:

    Tu verra que pendant les 5 s de feux rouge n°1, il y a pendant 3s le feu vert n°2 suivi de 2s de feu orange n°2, donc pour faire cela, il suffit d'allumer au début le feu rouge n°1 et le feu vert n°2 , d'attendre 3s pour ensuite éteindre le feu vert n°2 et allumer le feu orange n°2 sans toucher au feu rouge n°1 car son état n'a pas bouger. Ensuite on attend 2s avant de poursuivre la séquence .
    On aura donc le feu rouge n°1 allumé pendant 3s+2s=5s.

    J'espère que ca t'éclaircira un peu les choses.
    Nom : FEUR_2.GIF
Affichages : 72
Taille : 3,2 Ko

  21. #51
    inviteaa98cb7b

    Re : pic16F84

    alors on 4 evenement dans la sèquence
    allum feu roug1 et feu vert2
    allum feu roug1et feu orang2
    allume feu roug2 et feu ver1
    allume feu roug2 et feu orang1
    alors pour le clignote de tempo nuit de led orange sera durè de 2s c est 2microt seconde à quartz 4MHZ

  22. #52
    umfred

    Re : pic16F84

    Je pense que tu as compris le truc, maintenant écris ton code et montre le nous pour qu'on le corrige si besoin.

    Question subsidiaire (piège ? ): comment détermines-tu si on est en fonctionnement de jour (séquence de feu vert-orange-rouge) et fonctionnement de nuit (orange clignotant) ?

  23. #53
    inviteaa98cb7b

    Re : pic16F84

    temp_nuit sera durè pour des heures si je calcule tempo nuit
    alors je pense je vais faire un compteur de combien sequence faudra il pour passe une 12h de sequences(orang;roug;vert) et je test si il dura 12h alors je passe à tempo nuit

  24. #54
    invitef86a6203

    Re : pic16F84

    Si l'on veut une horloge précise dans le programme, il faudra passer par le Timer...

    Je pensais qu'il y avait un bouton pour passer en mode nuit !

  25. #55
    inviteaa98cb7b

    Re : pic16F84

    oui il y as bouton poussoir
    si je veux faire tempo_nuit je fait laboucle 2microt seconde à base de quartez de led orang; mais le timer est dificile pour faire

  26. #56
    inviteaa98cb7b

    Re : pic16F84

    oui #define BP portB,4
    et je feit
    btfss portB,4
    goto etiquet
    etiquet:la sequence de tempo_nuit
    si non je vais à la sequence(vert,roug,orang)

  27. #57
    umfred

    Re : pic16F84

    N'oublie qu'à chaque fois que tu as fini une séquence, il faut revenir au test du bouton.

    A mon avis, il faut un bouton à 2 positions fixes plutôt qu'un simple poussoir

    Est-ce que le code que tu as écrit fonctionne comme tu le souhaite maintenant ? Si non, post le, qu'on essai ed voir ce qui va pas

  28. #58
    inviteaa98cb7b

    Re : pic16F84

    j ai fait le programmation à base de pic pour mon proget feu tricolère bà base de pic16F84 j ai fait des tableau dans mon organigramme comment je traduit ça dans mon programme comme
    T resoit tab[i]
    A resoit tab[i+1]
    B resoit tab[i+2]
    portA resoit A
    portB resoit B
    incremente i
    comment je traduit ça en language assembleur de pic16f84

  29. #59
    invitef86a6203

    Re : pic16F84

    Utiliser le registre indirect pour pointer le tableau.
    puis incrémenter le pointeur FSR afin d'avoir l'octet suivant.

    Code:
    ; adresse de tab[0]
    movlw tab[0]; ici le movlw permet de lire l'adresse
                ;  et non pas son contenu
    
    ; mettre dans le pointeur de registre indirect
    movwf FSR
    
    ; lire i
    movf i,w
    
    ; pointer sur tab[i]
    addwf FSR,f
    
    ;T reçoit tab[i]
    movf INDF,w ; charger le contenu 
    movwf T
    
    ; incremente FSR pour faire i+1
    incf FSR,f
    
    ;A reçoit tab[i+1]
    movf INDF,w ; charger le contenu 
    movwf A
    
    ; incremente FSR pour faire i+2
    incf FSR,f
    
    ;B reçoit tab[i+2]
    movf INDF,w ; charger le contenu 
    movwf T
    
    ;portA reçoit A
    movf A,w
    movwf PORTA
    
    ;portB reçoit B
    movf B,w
    movwf PORTB
    
    ;incremente i
    incf i,f
    Noter que l'incrémentation à la fin de i est suspect.
    Peut être fallait il faire "i = i + 3"

  30. #60
    inviteaa98cb7b

    Re : pic16F84

    salut freepicbasic ,
    voici mon organigramme de mon proget de feux tricolère ;

    ;debut

    ;congiguration et initialisation

    T3_ cp=5;
    i=0
    T1
    si rb0=1
    goto sequence de nuit
    ;sequence de nuit
    i1=0;
    i1=2;
    rs-T reçoit tab0[i1]
    A reçoit tab[i1+1]
    B reçoit tab[i1+2]
    portA reçoit A
    portB reçoit B
    tempo(T)
    incremente i
    dec cpt
    si cpt=0 ;no
    goto rs
    cpt =5
    i=0
    goto T1
    ;equenquence de jour

    T reçoit tab[i]
    A reçoit tab[i+1]
    B reçoit tab[i+2]
    portA reçoit A
    portB reçoit B
    tempo (T)
    incr i
    dec cpt
    si cpt=0;
    goto T3
    goto T1

Page 2 sur 3 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. montage pic16f84
    Par invitefc5e676f dans le forum Électronique
    Réponses: 1
    Dernier message: 17/11/2008, 23h05
  2. pic16F84
    Par invite4769246c dans le forum Électronique
    Réponses: 64
    Dernier message: 07/05/2007, 23h26
  3. Eeprom du PIC16F84
    Par invitea821b3a8 dans le forum Électronique
    Réponses: 8
    Dernier message: 30/11/2006, 20h45
  4. Pic16f84-04/p
    Par inviteeab0141b dans le forum Électronique
    Réponses: 2
    Dernier message: 30/09/2006, 20h50
  5. a propos du PIC16F84
    Par inviteb57a35f9 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/03/2006, 16h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...