Probleme de programmation en assembleur

loulou -  
 loulou -
Bonjour,
voila mon programme que j ai realiser et compiler lors de la compilation tout ce passe bien il me dit que la compilation est un succes maintenant lorsque j envoi ce programme dans le pics et que je le mets sur ma plaque de test rien ne se passe donc si vous pouviez m aider ca serait super sympas merci (j utilise mplab) le but de se programme etant d allumer une led et d attendre que j appui sur le bouton pour allumer la deuxieme et ainsi de suite pic 16f84

LIST p=16F84 ; Définition de processeur
#include <p16F84.inc> ; Définitions des constantes

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

;*********************************************************************
; DEFINE *
;*********************************************************************

#DEFINE LED1 PORTB,0 ; LED de sortie 1
#DEFINE LED2 PORTB,1 ; LED de sortie 2
#DEFINE LED3 PORTB,2 ; LED de sortie 3
#DEFINE LED4 PORTB,3 ; LED de sortie 4
#DEFINE LED5 PORTB,4 ; LED de sortie 5
#DEFINE LED6 PORTB,5 ; LED de sortie 6
#DEFINE LED7 PORTB,6 ; LED de sortie 7
#DEFINE LED8 PORTB,7 ; LED de sortie 8
#DEFINE BP1 PORTA,3 ; BOUTON POUSSOIR EN ENTREE SUR PORT RA3
#DEFINE test
#DEFINE test1
#DEFINE test2
#DEFINE test3
#DEFINE test4
#DEFINE test5
#DEFINE test6
#DEFINE teste

;*********************************************************************
; INITIALISATIONS *
;*********************************************************************

init
clrf PORTA ; Sorties portA à 0
clrf PORTB ; Sorties portB à 0
clrf EEADR ; permet de diminuer la consommation
movlw H'F8'
movwf TRISA ; Bit PORTA.0 en sortie (exemple)
movlw H'00' ; charger le masque
movwf TRISB ; appliquer le masque

return ; sauter programme principal

;***********************************
;* tempo *
;***********************************
tempo
movlw b'11111111' ; Charge W avec 255
movwf BOU1 ; Charge BOUCLE1 avec W

BOU1 movwf BOU2 ; Charge BOUCLE2 avec W. C'est le début de la 1ère boucle
BOU2 decfsz BOU2,1 ; Décrémente BOUCLE2 (enlève 1) et exécute l'instruction suivante tant que
; BOUCLE2 n'est pas égale à 0. C'est le début de la 2nde boucle
goto BOU2 ; Retourne à BOU2. C'est le second niveau de boucle

decfsz BOU1,1 ; Décrémente BOUCLE1 (enlève 1) et exécute l'instruction suivante tant que
; BOUCLE2 n'est pas égale à 0.
goto BOU1 ; Retourne à BOU1. C'est le premier niveau de boucle

return ; Retourne au programme principal

end ; indique la fin du programme

;*********************************************************************
; sous routine led *
;*********************************************************************
LED1ON
bsf LED1 ; allumer LED1
call tempo
goto ret ; retour au programme principal

LED2ON
bsf LED2 ; allumer LED2
call tempo ; appeler la sous routine pour une attente
return test1 ; retour au programme principal

LED3ON
bsf LED3 ; allumer LED3
call tempo ; appeler la sous routine pour une attente
return test2 ; retour au programme principal

LED4ON
bsf LED4 ; allumer LED4
call tempo ; appeler la sous routine pour une attente
return test3 ; retour au programme principal
LED5ON
bsf LED5 ; allumer LED5
call tempo ; appeler la sous routine pour une attente
return test4 ; retour au programme principal
LED6ON
bsf LED6 ; allumer LED6
call tempo ; appeler la sous routine pour une attente
return test5 ; retour au programme principal
LED7ON
bsf LED7 ; allumer LED7
call tempo ; appeler la sous routine pour une attente
return test6 ; retour au programme principal
LED8ON
bsf LED8 ; allumer LED8
call tempo ; appeler la sous routine pour une attente
GOTO ret8 ; retour au programme principal

;*********************************************************************
; PROGRAMME PRINCIPAL *
;*********************************************************************

debut
btfsc BP1 ; tester bp1
goto re
return teste ; aller a la sous routine de test du bouton poussoir
re
call LED1ON ; led1 allumée
return test ; aller a la sous routine de test du bouton poussoir
ret

call LED2ON ; led2 allumée
return test1 ; aller a la sous routine de test du bouton poussoir
ret2

call LED3ON ; led3 allumée
return test2 ; aller a la sous routine de test du bouton poussoir
ret3

call LED4ON ; led4 allumée
return test3 ; aller a la sous routine de test du bouton poussoir
ret4

call LED5ON ; led5 allumée
return test4 ; aller a la sous routine de test du bouton poussoir
ret5

call LED6ON ; led6 allumée
return test5 ; aller a la sous routine de test du bouton poussoir
ret6

call LED7ON ; led7 allumée
return test6 ; aller a la sous routine de test du bouton poussoir
ret7

call LED8ON ; led8 allumée

ret8

goto start ; boucler

END ; directive fin de programme

********************************************************************************
* *
* sous routine test bouton *
* *
********************************************************************************


teste
btfsc BP1
return re
goto teste

test
btfsc BP1
return ret
goto test
test1
btfsc BP1
return ret2
goto test1
test2

btfsc BP1
return ret3
goto test2
test3
btfsc BP1
return ret4
goto test3
test4
btfsc BP1
return ret5
goto test4
test5
btfsc BP1
return ret6
goto test5
test6
btfsc BP1
return ret7
goto test6
A voir également:

2 réponses

Nabla's Messages postés 20731 Statut Contributeur 3 194
 
je te dirai de le simuler avec mplab, en mode pas a pas.. je sais plus comment on fait par contre ... ;)
0
loulou
 
merci de m avoir repondu j ai essaye de simuler le seul probleme c que mon simulateur ne fonctionne pas
0
Nabla's Messages postés 20731 Statut Contributeur 3 194
 
essayes deja de trouver comment fair efonctionner le simulateur... ceci dit, je me rapelle il y a 3 ans j avais réussi a le faire tourner, mais il y a 2 semainesm j ai pas trouvé ...

es ce que tu es sur que ton pic est bien programmé ?? as tu activé la verification d ecriture ?
as tu une platine de test avec debugger ?
0
loulou
 
merci aussi pour ta reponsemais visiblement j ai un probleme avec mplab puisque tout ce qui concerne le simulateur est grisé je ne peut meme pas faire un run ou autre c bizarre sinon pour mon pic en faite j utilise mplab pour taper mon programme et ensuite je le compile et une fois compiler j envoi le .HEX avec ic-prog jusque la ca marchais maintenant avec ce programme ba je le compile tres bien et apres je l envoi avec ic prog qui me dit que la verification est bonne mais apres il se passe rien
0