[^^!2] Tempo et PIC 16F628A [Résolu]

Signaler
Messages postés
11
Date d'inscription
samedi 25 avril 2009
Statut
Membre
Dernière intervention
16 octobre 2010
-
Fpaul54
Messages postés
3
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
30 décembre 2009
-
Bonjour,
je cherche a faire une tempo de +- 0,5 sec. Comment dois-je faire?
J'ai fait ceci avec le cours de bigonoff mais çà marche po.

;*********************************************************************
; DECLARATIONS DE VARIABLES *
;*********************************************************************
CBLOCK 0x00C ; début de la zone variables
cmpt1 : 1 ; compteur de boucles 1
cmpt2 : 1 ; compteur de boucles 2
cmpt3 : 1 ; compteur de boucles 3
ENDC ; Fin de la zone

;*********************************************************************
; TEMPORISATION *
;*********************************************************************

tempo
movlw 2 ; pour 2 boucles
movwf cmpt3 ; initialiser compteur3
boucle3
clrf cmpt2 ; PB effacer compteur2
boucle2
clrf cmpt1 ; effacer compteur1
boucle1
nop ; perdre 1 cycle *256 *256 *2
decfsz cmpt1,f ; décrémenter compteur1
goto boucle1 ; si pas 0, boucler
decfsz cmpt2 , f ;PB si 0, décrémenter compteur 2 goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
decfsz cmpt3 , f ; si 0, décrémenter compteur 3
goto boucle3 ; si cmpt3 pas 0, recommencer boucle2
return ; retour de la sous-routine
end


En rouge, ce sont les breakpoints donné a la compilation.
A voir également:

2 réponses

Messages postés
11
Date d'inscription
samedi 25 avril 2009
Statut
Membre
Dernière intervention
16 octobre 2010

apparement, je dois être a un niveau supérieur au vôtre vu que je n'ai po de réponse.
Messages postés
3
Date d'inscription
mardi 28 octobre 2003
Statut
Membre
Dernière intervention
30 décembre 2009

PaulFjujo

voila un sensemble de SP delai

;delais4M.inc pour Fquartz=4Mhz
;last update: 28 mars 2003
;count1 count2 count3 en bank0 pour delay routines
;delay_RS special pour routine d'attente bit 4800 Bauds
;delay : 5(count3-1)+1282(count2-1)+327684(count1-1)+6
;delay_25us delay_100us delay_200us
;delay_1ms delay2_5ms delay_10ms delay_100ms delay_500ms
;delay_1s delay_10s
;---------------------
;special pour routine d'attente bit 4800 Bauds
delay_RS
MOVLW .67 ; .67 pour 4800 bauds
MOVWF count1 ; 1000000/4800=208µS
DECFSZ count1,F ; 1 cycle si pas de saut
GOTO $-1 ; 2cycles
Return ; 67* 3*1=201µS
;------------------------

delay_25us movlw 0x01
movwf count1
movlw 0x01
movwf count2
movlw 0x05
movwf count3
goto delay1

delay_100us movlw 0x01
movwf count1
movlw 0x01
movwf count2
movlw 20
movwf count3
goto delay1

delay_200us movlw 0x01
movwf count1
movlw 0x01
movwf count2
movlw 40
movwf count3
goto delay1

delay_1ms movlw 0x01
movwf count1
movlw 0x01
movwf count2
movlw 200
movwf count3
goto delay1

delay_2_5ms movlw 0x01
movwf count1
movlw 0x02
movwf count2
movlw 243
movwf count3
goto delay1


delay_10ms movlw 0x01
movwf count1
movlw 8
movwf count2
movlw 205
movwf count3
goto delay1

delay_100ms movlw 0x01
movwf count1
movlw 79
movwf count2
movlw 0x01
movwf count3
goto delay1

delay_500ms movlw 2
movwf count1
movlw 135
movwf count2
movlw 106
movwf count3
goto delay1

delay_1s movlw 4
movwf count1
movlw 14
movwf count2
movlw 56
movwf count3
goto delay1

delay_2_5s movlw 8
movwf count1
movlw 161
movwf count2
movlw 218
movwf count3
goto delay1

delay_10s movlw 31
movwf count1
movlw 133
movwf count2
movlw 51
movwf count3
goto delay1

delay1 decfsz count3,f
goto $-1
decfsz count2,f
goto $-3
decfsz count1,f
goto $-5
return