Accueil > Forum > > > > Probleme de programmation d'un PIC 16F84
Probleme de programmation d'un PIC 16F84
lundi 21 juin 2010 à 18:16:50 |
Probleme de programmation d'un PIC 16F84

aeonxzero
|
Bonjour à tous, eh bien voila: je suis actuelement en train de construire un robot en suivant le livre "Petits Robots Mobiles" de Frédéric Giamarchi. Mon problème vient d'un script en assembleur (language que je ne maitrise pas encore) écrit dans ce livre. Ce script sert à programmer un PIC 16F84 .
Je précise que j'ai déja réussi à debbuger une dizaine de fois le programme pour d'autre problèmes mais celui-ci m'est insoluble.
Pour information j'utilise MPLAB IDE v6.61
Je dipose ci-dessous les 3 scripts (répartit dans 3 fichiers différent): macro.inc ; Config.inc et Prog_1.asm
;Config.inc
#define Del_V PORTA,0
#define Del_J PORTA,1
#define Del_R PORTA,3
#define CAN_P PORTB,0
#define Poussoir PORTA,2
#define Vit_Dr PORTB,3
#define Vit_Ga PORTB,6
#define Sens_Dr PORTB,4
#define Sens_Ga PORTB,5
#define Entree_A PORTB,7
#define Entree_B PORTB,2
#define Moteur_Dr_Av bcf Sens_Dr
#define Moteur_Dr_Ar bsf Sens_Dr
#define Moteur_Ga_Av bcf Sens_Ga
#define Moteur_Ga_Ar bsf Sens_Ga
#define Del_Verte_On bsf Del_V
#define Del_Verte_Off bcf Del_V
#define Del_Jaune_On bsf Del_J
#define Del_Jaune_Off bcf Del_J
#define Del_Rouge_On bsf Del_R
#define Del_Rouge_Off bcf Del_R
#define Moteur_Dr_On bsf Vit_Dr
#define Moteur_Dr_Off bcf Vit_Dr
#define Moteur_Ga_On bsf Vit_Ga
#define Moteur_Ga_Off bcf Vit_Ga
_250ms EQU 0
seconde EQU 1
can_ EQU 2
cblock 0x0E
Compt_100us
Compt_25ms
Compt_250ms
Etat
Etat_100us
MLI_compteur
MLI_rapport_Dr
MLI_rapport_Ga
CAN_Compt
CAN_Compt_Test
TOIF
endc
;macro.inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
w_temp EQU 0x0C
status_temp EQU 0x0D
BANK0 macro
bsf STATUS,RP0
endm
BANK1 macro
bsf STATUS,RP0
endm
Sauve_Reg macro
movwf w_temp
movf STATUS,w
movwf status_temp
endm
Restaure_Reg macro
movf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
endm
;Prog_1.asm
errorlevel -302
list p=16f84
include <p16f84.inc>
include <macro.inc>
include <Config.inc>
list
ORG 0x000
goto DEBUT
ORG 0x004
Sauve_Reg
movlw .255 - .44
movwf TMR0
movlw 0x08
addwf MLI_compteur,F
btfsc STATUS,Z
addwf MLI_compteur,F
movf MLI_compteur,W
addwf MLI_rapport_Dr,W
btfsc STATUS,C
Moteur_Dr_On
btfss STATUS,C
Moteur_Dr_Off
movf MLI_compteur,W
addwf MLI_rapport_Ga,W
btfsc STATUS,C
Moteur_Ga_On
btfss STATUS,C
Moteur_Ga_Off
incf Compt_100us,F
btfss STATUS,Z
goto Compt_Fin
movlw .4
movwf Compt_100us
incf Compt_25ms,F
btfss STATUS,Z
goto Compt_Fin
movlw .246
movwf Compt_25ms
bsf Etat,_250ms
incf Compt_250ms,F
btfsc Compt_250ms,2
bsf Etat,seconde
Compt_Fin
incf CAN_Compt,F
Fin_Int
bcf INTCON,TOIF
Restaure_Reg
Retfie
DEBUT
call INIT
movlw 0x10
movwf MLI_rapport_Dr
movlw 0x10
Lorsque je compile le tout, j'obtiens l'erreur suivante:
"error 116: Address label duplicated or different in the second pass" et on me précise: "Sens_Ga_Av" et "Sens_Dr_Av". (techniquement c'est sur 2 lignes différentes car l'IDE considére 2 erreurs).
Je suis allé voir l'aide de l'IDE mais cela ne m'a pas plus avançé.
Si quelqu'un peut m'aider ou sait résoudre cet insoluble probleme, il me serait d'une aide vraiment très précieuse. Toutes les réponses sont les bienvenue.
Merci d'avance.
|
|
mardi 22 juin 2010 à 00:50:59 |
Re : Probleme de programmation d'un PIC 16F84
|
mardi 22 juin 2010 à 12:14:45 |
Re : Probleme de programmation d'un PIC 16F84

aeonxzero
|
salut;
Si j'ai bien compris tu pense qu'il faut que je déclare Sens_Ga_Av et Sens_Dr_Av.
Je ne vois pas comment Sens_Ga_Av et Sens_Dr_Av sont apparu comme probleme dans la compilation; je pensait que cela était lié aux lignes:
#define Moteur_Dr_Av bcf Sens_Dr
et
#define Moteur_Ga_Av bcf Sens_Ga
Le probleme c'est que je ne vois pas comment faire (comme je suis débutant).
Je vais tester:
#define Sens_Ga_Av
#define Sens_Dr_Av
Mais je ne sais pas si cela va débloquer mon probleme.
Je te tiens au courant.
Merci encore pour ta réponse.
|
|
mardi 22 juin 2010 à 18:21:31 |
Re : Probleme de programmation d'un PIC 16F84

aeonxzero
|
Oups, erreur de copier-coller; dans le script que je vous ai fournit il manque une partie, la voici ci-dessous (j'ai repris à partir de "DEBUT" dans Prog_1.asm):
DEBUT
call INIT
movlw 0x10
movwf MLI_rapport_Dr
movlw 0x10
movwf MLI_rapport_Ga
clrf CAN_Compt_Test
Bouc_depart
Del_Verte_Off
Del_Jaune_On
call Tempo_250ms
Del_Jaune_Off
Del_Rouge_On
call Tempo_250ms
Del_Rouge_Off
Del_Verte_On
call Tempo_250ms
btfsc Poussoir
goto Bouc_depart
PROG
call CAN
movf CAN_Compt_Test,W
movwf MLI_rapport_Dr
movwf MLI_rapport_Ga
btfss Entree_A
goto Test_2
btfss Entree_B
goto Test_3
Test_1
Sens_Dr_Av
Sens_Ga_Av
goto Test_Fin
Test_2
btfss Entree_B
goto Test_3
Sens_Dr_Ar
Sens_Ga_Av
goto Test_Fin
Test_3
Sens_Dr_Av
Sens_Ga_Ar
btfss Entree_A
call Tempo_250ms
call Tempo_250ms
call Tempo_250ms
call Tempo_250ms
Test_Fin
goto PROG
INIT
BANK1
movlw b'00000100'
movwf TRISA
movlw b'10000110'
movwf TRISB
movwf b'10000000'
movwf OPTION_REG
BANKO
movlw INTCON
clrf TMR0
clrf PORTA
clrf PORTB
return
Tempo_250ms
btfss Etat,_250ms
goto Tempo_250ms
bcf Etat,_250ms
return
Tempo_200us
btfss Etat_100us,1
goto Tempo_200us
Tempo_200us_1
btfss Compt_100us,1
goto Tempo_200us_1
return
CAN
btfss Etat,seconde
goto CAN_Fin
bcf Etat,seconde
bcf INTCON,GIE
BANK1
movlw b'10000110'
movlw TRISB
BANK0
bsf INTCON,GIE
bsf CAN_P
call Tempo_200us
bcf INTCON,GIE
BANK1
movlw b'10000111'
movwf TRISB
BANK0
bsf INTCON,GIE
clrf CAN_Compt
CAN_Mesure
btfsc CAN_P
goto CAN_Mesure
movf CAN_Compt,W
andlw 0xF8
movwf CAN_Compt_Test
CAN_Fin
return
end
Désolé pour l'erreur...je ne sais pas comment j'ai fait une bétise pareil...
Au fait je viens de tester une nouvelle compilation en ajoutant au fichier Config.inc les 2 lignes que j'avais supposé utiles. Résultat: le programme à été compilé correctement (sans aucune erreurs). A part une bonne centaine de "warning" (que je suppose normal mais ce n'est qu'une supposition) rien à signaler.
En ce qui concerne le déroulement normal du programme; j'attend de transférer ce dernier dans le PIC.
Ma question est la suivante: pourquoi ai-je dû ajouter ces 2 lignes alors que
"Sens_Ga_Ar" et "Sens_Dr_Ar" fonctionne apparement très bien; comme vous pouvez le voir, il n'y a écrit nulle part:
#define Sens_Dr_Ar
#define Sens_Ga_Ar
Si quelqu'un peut m'éclairer, son explication me serait vraiment utile pour mieux comprendre ce programme.
Merci d'avance pour l'attention que vous pourrez porter à ce programme.
|
|
mercredi 23 juin 2010 à 05:49:43 |
Re : Probleme de programmation d'un PIC 16F84
|
mercredi 23 juin 2010 à 05:53:42 |
Re : Probleme de programmation d'un PIC 16F84
|
vendredi 25 juin 2010 à 11:58:44 |
Re : Probleme de programmation d'un PIC 16F84

aeonxzero
|
Donc tu suppose que je dois remplacer chaque apparition du mot "Sens..." par "Moteur...".
je vais tester.
Par contre, je peut t'affirmer (cette fois-ci) que le code que j'ai fourni est complet.
Merci pour ta réponse
|
|
mercredi 4 août 2010 à 22:35:07 |
Re : Probleme de programmation d'un PIC 16F84

aeonxzero
|
Désolé pour ce bon mois de retard mais j'ai du m'absenter de mon lieu d'expérimentation.
Je viens juste de tester l'hypothèse que patatalo m'avait proposé: remplacer chaque apparition de Sens_Machin par Moteur_Machin dans le fichier Prog_1.asm
Aucun probleme pour la compilation ni pour le transfert mais une fois sur le robot, rien ne se passe. Je vais donc étudier de nouveau les interconnexions entre les différentes cartes du robot afin de voir s'il n'y à pas un autre probleme de ce coté là.
Je me suis aussi mis à apprendre l'assembleur grace aux tutoriux du site de Bigonoff que je trouve très bien fait et fort interessant.
J'aurai juste besoin de savoir si du point de vue fonctionnel, le programme est "logique", c'est à dire que lorsqu'il y a detection le robot fait faire marche arriere à l'une de ses roue puis continue son cycle de fonctionnement jusqu'a sa prochaine détection.
Merci d'avance pour vos réponses
|
|
Cette discussion est classée dans : del, define, dr, compt, ga
Répondre à ce message
Sujets en rapport avec ce message
affichage lcd et calculatrice [ par lefrans ]
bojour a tous voila mon probleme je doit tj faire cette calculatrice et je suis bloqué, je narrive pas a afficher plusieur chiffre ala suite sur mon l
Pb de compilation ressource [ par AlexMAN ]
BruNews, ca fait une heure ke je texte ton bat, ca me compile bien mon exe, il est fonctionnel mais ne m'affiche pas ma dialog box ! Voila le code de
probleme avec TASM [ par nernit ]
lorsque je compile mo code : .NOLIST #define end.end #define END.end #define equ.equ #define EQU.equ #include "ti83asm.inc" #include "tokens.inc" .LIS
Flags dans le registre INTCON [ par tahiti_bob ]
Bonjour,J'ai trouvé sur cette page une excellente routine de communication RS232 entre un PIC et un PC.http://www.electronic-engineering.ch
%define [ par anonyme_man_in_this_world ]
salut !! le compilateur de Visual C++ genere une erreur lorsque j'essaie d'utiliser la directive %define . ça sera simpa si on m'aide à resoud
PIC 18F2550 [ par PIC18F ]
Bonjour,Je suis débutant en programmation des PICS. Actuellement je programme un PIC 18F2550 en assembleur. Je dois gérer la communication entre une c
problème de simulation [ par bibou1234 ]
Bonjour, Je dois réaliser un programme qui compare 2 valeurs, la première valeur provient d'une tension qui varie de 0V à 5V, et la deuxième valeur es
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|