salut
je veux faire clignoter une led toute les 1Seconde pour test mon pic16F873.
je ne maitrise pas trop le pic
j'ai compulé mon code mais il ne marche pas. j'aurai bien aimé vos conseils et vos suggestions.
voici mon code.
merci d'avance.
;***************************** ****************************** ***********
; DECLARATIONS DE VARIABLES *
;***************************** ****************************** ***********
CBLOCK 0x00C
compteur_allume_led :1 ; compteur allume led
compteur_éteindre_led :1 ; cmpteur eteindre led
ENDC
;***************************** ****************************** ***********
;***************************** ****************************** ***********
RESET_VECTOR CODE 0x000 ; processor reset vector
goto start ; go to beginning of program
;***************************** ****************************** ***************************
; Programme Principal
;***************************** ****************************** ***************************
MAIN CODE
;initialisation des ports
;************************
bcf STATUS, RP0 ; selectionner la bankO
bcf STATUS, RP1
clrf PORTA ; efface le PORTA
bsf STATUS,RP0 ;selectionner la bank1
movlw 0x06 ; PORTA = digital input/output
movwf ADCON1
movlw b'00000000' ; RA0.....>RA7 en sortie
movwf TRISA
;bcf PORTA,0 ; éteindre_led à la patte RA0
;bsf PORTA,0 ; Allume_led à la patte RA0
;fin du programme main
start
call temporisation
bsf PORTA,1
goto boucle_led
goto start
boucle_led:
btfss PORTA,1 ;led alummée
goto allume_led ; nous allons allumer la led
goto éteindre_led ; nous allons éteindre la led
allume_led:
bsf PORTA,1
call temporisation ; allumer la led pendant 1 seconde
goto boucle_led
éteindre_led:
bcf PORTA,1
call temporisation ;éteindre la led pendant 1 seconde
goto boucle_led
temporisation:
clrf compteur_allume_led ;éffacer compteur_allume_led
boucle2:
clrf compteur_éteindre_led ;éffacer compteur_éteindre_led
boucle1:
nop ;perdre 1 cycle
decfsz compteur_éteindre_led,f ;décrémenter compteur etéint led
goto boucle1 ;si pas 0, je boucle
decfsz compteur_allume_led , f ; si 0, décrémenter compteur 2
goto boucle2 ;si compteur_allume_led pas 0,
;recommencer boucle1
return ;retour au progr prin à la fin
;d'une sous routine
; initialisation des variables
; initialisation des ports d'E/S
; clrf PORTB
; remaining code goes here
END ; directive fin de programme
-----