j ai un feu tricolere à base de pic16F84. c est un feu tricolere de 6 leds;3led sera commande par la porteA et 3led sur la porteA.je veux faire leur temporisation de led roug 5s et led vert 3s et led orange 2S ;je suis debutante en pic16F84
-----
j ai un feu tricolere à base de pic16F84. c est un feu tricolere de 6 leds;3led sera commande par la porteA et 3led sur la porteA.je veux faire leur temporisation de led roug 5s et led vert 3s et led orange 2S ;je suis debutante en pic16F84
Va voir bigonoff, en le tapant sur google.
C'est super bien expliqué.
je sais mais j ai pas bien compris le timer
Bah pour faire une tempo en pic, je pense qu'il suffit juste de faire des boucle d'instruction.
Une instruction dure 1µs je croit, après ya plus qu'à calculer présicément combien y te faut d'instruction en bouclant tout ca
j ai fait cette initialisation au programme
org 00h
goto debut
org 05h
debut
clrf portA initialisation des portes
clrf portB
bsf statut,RP0 accès bank 1
movlw B'11111000'
movwf trisA
movlw B'00000111'
movwf trisB
bcf statut;RP0 accès bank0
clrf portA
CLRF potB extintion des led
d après que j ai compris des cours
je sais faire le tempo seulement le charger dans le compteur combien de boucles pour avoir mon tempo en seconde ou ms
As-tu assemblé ce bout de code ?j ai fait cette initialisation au programme
org 00h
goto debut
org 05h
debut
clrf portA initialisation des portes
clrf portB
bsf statut,RP0 accès bank 1
movlw B'11111000'
movwf trisA
movlw B'00000111'
movwf trisB
bcf statut;RP0 accès bank0
clrf portA
CLRF potB extintion des led
d après que j ai compris des cours
Je pense que tu auras des erreurs.
comment je charge le timer prescalar .je veux etteint les leds et s allumer dans mon programme
je veux allumer la led roug1de portA ; led vert de portB
j ai fait dans mon programme:
movlw 02h
movwf portA
movlw 08h
movwf portB
Si tu veux des réponses claires, pose des questions claires, j'ai (et je ne dois pas être le seul) du mal à comprendre ce que tu veux.
"
je veux allumer la led roug1de portA ; led vert de portB
j ai fait dans mon programme:
movlw 02h
movwf portA
movlw 08h
movwf portB
"
C'est quoi le rapport entre roug1 (PORTA,1) et portA ?
pourquoi movlw 02h ?
Explique un peu plus et dans un français correct.
Merci.
Bonjour,
oui moi aussi j'ai du mal a comprendre les questions...
c'est de l'asm ca non?
je ne connais que le C, je ne pourrais donc pas aider.
Ce que je peux dire, c'est seulement pour eclaircir la "question".
On voit le code de la meme maniere? :
- initialisation des entrée/sorties, des registres (c'est la qu'on configure le timer, et dans le temps de cycle).
- boucle infinie => On allume une led et on etteind les autre. Pause de X seconde (si on a créé une fonction pause1ms() on l'appel 1000fois de suite pour faire 1s. etc
Pour ce qui est de la fonction pause1ms() c'est là que doit etre le probleme: mais bon là je resonne en C alors ca va pas..
du moins le principe c'est ca.
Bonne continuation
Ne pas confondre le "," et les ";" qui servent aux commentaires.Code:org 00h goto debut org 05h debut clrf portA ; initialisation des portes clrf portB bsf statut,RP0 ; accès bank 1 movlw B'11111000' movwf trisA movlw B'00000111' movwf trisB bcf statut,RP0 ;accès bank0 clrf portA CLRF potrB ; extintion des led
Ou sont connectées Les LEDs ?
bit 0 = 1
bit 1 = 2
bit 2 = 4
bit 3 = 8
ici tu allume une led sur le bit 1Code:movlw 02h movwf portA movlw 08h movwf portB
pendand 2 µs
puis tu allume une Led sur le bit 3
Code:ForEver movlw 02h movwf portA call MyTempo ; 1sec call MyTempo ; 1sec call MyTempo ; 1sec movlw 08h movwf portB call MyTempo ; 1sec goto ForEver ; ; utilisé 20h compteur L et 21H compteur H ; 22H comme compteur 1/10 de seconde. ; comme compteur de tempo ; Le 020H fait 512 µs ; on met 195 dans 021H pour faire ~100 000 soit 1/10 de sec ; on met 10 dans 022H pour faire 1 seconde MyTempo movlw 0 movwf 020h movlw 195 movwf 021h movlw 10 movwf 022h loop512us decfsz 020H,f decfsz 021H,f decfsz 022H,f return end
Déjà testé ça !
et le modifier pour bien se familiariser avec.
Afin de bien maitriser !
Après on peut commencer des essais avec le timer.
3 couleurs !
Code:ForEver movlw 02h movwf portA call MyTempo ; 1sec call MyTempo ; 1sec call MyTempo ; 1sec movlw 08h movwf portB call MyTempo ; 1sec goto ForEver movlw 04h movwf portA call MyTempo ; 1sec call MyTempo ; 1sec call MyTempo ; 1sec goto ForEver
merci tu es le seul qui ma compris,j ai mal explique;j avais un probleme comment utiliser le timer
Le problème n'est pas résolu , il faut utiliser le timer maintenant.
C'est juste un point de départ.
mais j ai pas demander la solution;j ai demander quelqu un me guide
j ai probleme dans le comprèhention de timer
Il faut lire le coursBigOnOff.
Le timer utilise les interruptions.
Juste pour aider la liste des chosea à faire.
Initialiser OPTION_REG (lire la doc, bank 1)
Effacer le T0IF (intcon) par sécurité , facultatif...
Mettre en route les interruptions dans INTCON
GIE et T0IE
Creer une routine d'interruption
1) sauver les registres
2) effacer le flag TOIF
3) Mon prog...
4) Restorer les registres
5)IRET
Faire Attention a la longueur de "Mon prog" si une seconde int arrive avant la fin du IRET, l'int est plantée, puisque le clear T0IF ne peut plus se faire...
merci beaucoup je vais lire cours de bignoff;et toi tu me guide ;je sais pas de solution
merci gèrard ;je vais le lire autre fois si je ne comprend pas une chose tu me le comprend
commence à écrire un bout de prog ,
tu le post sur ce forum ,
on corrigera .
http://f5ad.free.fr/16F84/Interruptions.html
http://fribotte.free.fr/bdtech/cours..._cours12a.html
salut freepibasic voici un bout de programme
list pic=16f84
# iclude (pic16F84.inc)
_configuration _cp_off,_wdt_off,_pwrte_on,_hs _osc
equivalences de registr
esportA equ 0x0005
portB equ 0x0006
trisA equ 0x0085
trisB equ 0x0086
statut equ 0x0003
constantes
durrèeRoug equ 05h ;5s
durèeVert equ 03h ;3s
durèeorang equ 02h ;2s
les registres memoires
compt equ 0Ch
compt1 equ 0dh
compt2 equ 0Eh
initialisation
org 00h
goto debut
org 05h
debut
clrf portB
clrf portA
bsf statut,RP0 ;selection de bank1
movlw B'11111000'
movwf trisA
movlw B'00000111'
movwf trisB
bcf statut,RP0 ;accès à bank 0
clrf portA
clrf portB ;extintion des leds
bit0=1 de portA portB bit0=1
bit1=2 bit1=2
bit2=4 bit2=4
bit3=8 bit3=8
on allum le feu roug de (portA,1) et feu vert du (portB,3)
movlw 02h ;allum feu roug
movwf portA
call mytempo1 ;3s
movlw 08h
movwf portB
call mytempo2 ; 2s
goto forever
on allume le feu roug de (portA,1) et feu orang (portB,2)
lili: movlw 02h ;allum feu roug
movwf portA
call mytempo1
movlw 04h
movwf portB ;allume feu orange
call mytemp3 ;2s
goto lili
dsl pour derrangement et merci pour tout
la suite
my tempo1
movlw 0x0032 ;chargement de compt de 50
movwf compt2
T1
movlw 0x00c8
movwf compt1
T2
movlw 0x00A5
movwf compt ; chargement par 165
T3
decfsz compt,1
goto T3
decfsz compt1,1
goto T2
descfz compt2,1
goto T1
return
end
dsl freebasic pour ces question est ce que j utilise le timer après le programme sur post peace2010 je sais je te derrange si oui je ferai moi tout seul
vraiment j ai besoin de votre aide ;tu peux me guider je me demande rien d autre merci pour tout
Bouclé sur T3 sinon on sort jamais de la boucle !
Code:my tempo1 movlw 0x0032 ;chargement de compt de 50 movwf compt2 T1 movlw 0x00c8 movwf compt1 T2 movlw 0x00A5 movwf compt ; chargement par 165 T3 decfsz compt,1 goto T3 decfsz compt1,1 goto T3 descfz compt2,1 goto T3 return