boujour
je réalise un programme assembleur pour le pic 16F84 d'une carte gold.
Je réalise un programme permettant simplement de faire clignoter une led.
Mais lors de mes essais sur plaquette lab, la led ne clignote pas, elle reste éteinte.
Pouvez vous me dire si vous voyez une erreur dans mon programme.
Pour info, j'utilise un circuit RC pour réaliser l'oscillation sur la patte RB6.
Ma led est branchée entre mon unique patte de sortie disponible,RB7, et la masse.
MCLR est relié au +.
voici mon programme:
;***************************** ****************************** ***************
; testled1.asm
;
;***************************** ****************************** ***************
liST P=16F84;f=inhx8m
_CP_OFF equ H'3FFF' ; Code protect hors service
_PWRTE_ON equ H'3FFF' ; Power on timer en service
_Wdt_OFF equ H'3FFB' ; Watch dog timer hors service
_XT_OSC equ H'3FFD' ; Crystal oscillator (quartz)
__CONFIG _CP_OFF & _PWRTE_ON & _Wdt_OFF & _XT_OSC
; Combinaison des paramètres
;-----------------------------------------------------------------------
; Directives de configuration
;-----------------------------------------------------------------------
count1 equ 0C ; Le premier compteur
count2 equ 0D ; Le second
portb equ 06 ; Registre de port B
porta equ 05 ; Registre du port A
status equ 03 ; Le registre status
rp0 equ 05 ; Le bit 5 == sélection page de mémoire
trisb equ 86H ; Reg. de réglage en entrée ou sortie
; du port B
;-----------------------------------------------------------------------
; Programme
;-----------------------------------------------------------------------
org 0 ; origine
clrf portb ; met toutes les sorties du port B à zéro
bsf status,rp0 ; sél. page mémoire 1 pour accès à trisb
clrf trisb ; reset trisb, port B est défini en sortie
bcf status,rp0 ; sélection page mémoire 0
;-----------------------------------------------------------------------
; Code modifiable pour essais successifs
;-----------------------------------------------------------------------
start
bsf portb,7 ; Fixe à 1 le bit 7 du port B -> 5V sur broche 7
call wait_sec ; Tempo LED allumée
bcf portb,7 ; Fixe à 0 le bit 7 du port B -> 0V sur broche 7
call wait_sec ; Tempo LED éteinte
goto start
;-----------------------------------------------------------------------
; Sous programmes de temporisation
;-----------------------------------------------------------------------
wait_min ; tempo 1 min
call wait_sec_30
call wait_sec_30
return
wait_sec_30 ; tempo 30 sec
call wait_sec_10
call wait_sec_10
call wait_sec_10
return
wait_sec_10 ; tempo 10 sec
call wait_sec_5
call wait_sec_5
return
wait_sec_5 ; tempo 5 sec
call wait_sec
call wait_sec
call wait_sec
call wait_sec
call wait_sec
return
wait_sec ; tempo 1 sec
call wait1
call wait1
return
wait1 ; 4 tempos élémentaires
call wait0
call wait0
call wait0
call wait0
return
wait0 ; Boucles réalisant une tempo élémentaire
movlw .200 ; Charge count1 avec valeur décimale 200
movwf count1
d1 movlw .200 ; Charge count2 avec valeur décimale 200
movwf count2
d2 decfsz count2,1 ; décremente et saute ligne suiv. si zero
goto d2 ; si différent de zero
decfsz count1,1 ; décremente count1 si count2 == zero
goto d1 ; boucle interne si count2 <> zero
return
end
Merci d'avance pour vos réponses
-----