[^^!2] Tempo et PIC 16F628A

Résolu
nono7380 Messages postés 11 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 16 octobre 2010 - 7 nov. 2009 à 18:53
Fpaul54 Messages postés 3 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 30 décembre 2009 - 30 déc. 2009 à 18:47
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.

2 réponses

nono7380 Messages postés 11 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 16 octobre 2010
10 nov. 2009 à 16:20
apparement, je dois être a un niveau supérieur au vôtre vu que je n'ai po de réponse.
3
Fpaul54 Messages postés 3 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 30 décembre 2009
30 déc. 2009 à 18:47
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
3
Rejoignez-nous