Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
debut avec le debuguer
Bonjour
soyez tres indulgent, je débute
Pour être sur que nous parlons du même programme comme suggérer par Maï, voici la source qui me sert d'exemple.
J'ai repris ce cours sur le débuguer mplabx ide 3.35.
avec F7, le programme déroule pas a pas, je peut voir les différents registres tout cela j'ai compris. je met des points d'arret, c'est ok.
Mais je n'arrive pas a afficher une variable (cmpt1), ni voir le portA autrement que par son registre
Comment simuler une entrée (bouton poussoir sur le port B par exemple)
Merci par avance, Jean-Marc
soyez tres indulgent, je débute
Pour être sur que nous parlons du même programme comme suggérer par Maï, voici la source qui me sert d'exemple.
J'ai repris ce cours sur le débuguer mplabx ide 3.35.
avec F7, le programme déroule pas a pas, je peut voir les différents registres tout cela j'ai compris. je met des points d'arret, c'est ok.
Mais je n'arrive pas a afficher une variable (cmpt1), ni voir le portA autrement que par son registre
Comment simuler une entrée (bouton poussoir sur le port B par exemple)
Merci par avance, Jean-Marc
Code : Tout sélectionner
;**********************************************************************
; PROGRAMME DE CLIGNOTEMENT D'UNE LED CONNECTEE SUR LE PORTA.2 *
; D'UNE PIC16F84. PROGRAMME D'ENTRAINEMENT AU FONCTIONNEMENT *
; DES PICS. *
; *
;**********************************************************************
; *
; NOM: LED-CLI *
; Date: 09/02/2001 *
; Version: 1.0 *
; Circuit: Platine d'essais *
; Auteur: Bigonoff *
; *
;**********************************************************************
; *
; Fichier requis: P16F84.inc *
; *
;**********************************************************************
; *
; Notes: Ce petit programme permet de faire clignoter une LED *
; sur le port A.2 à une fréquence de 1Hz *
; Ce programme fait partie de la leçon 6 des cours *
; *
;**********************************************************************
LIST p=16F84 ; Définition de processeur
#include <p16F84.inc> ; Définitions de variables
radix dec ; on travaille en décimal par défaut
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
; la programmation. Les définitions sont dans le fichier include.
; Voici les valeurs et leurs définitions :
; _CP_ON Code protection ON : impossible de relire
; _CP_OFF Code protection OFF
; _PWRTE_ON Timer reset sur power on en service
; _PWRTE_OFF Timer reset hors-service
; _WDT_ON Watch-dog en service
; _WDT_OFF Watch-dog hors service
; _LP_OSC Oscillateur quartz basse vitesse
; _XT_OSC Oscillateur quartz moyenne vitesse
; _HS_OSC Oscillateur quartz grande vitesse
; _RC_OSC Oscillateur à réseau RC
;*********************************************************************
; ASSIGNATIONS *
;*********************************************************************
OPTIONVAL EQU H'0008' ; Valeur registre option
; Résistance pull-up ON
; Pas de préscaler
;*********************************************************************
; DEFINE *
;*********************************************************************
#DEFINE LED PORTA,2 ; Led rouge
#DEFINE BOUTON PORTB,2 ; bouton-poussoir
;*********************************************************************
; MACRO *
;*********************************************************************
LEDON macro
bsf LED
endm
LEDOFF macro
bcf LED
endm
;*********************************************************************
; 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
;**********************************************************************
; DEMARRAGE SUR RESET *
;**********************************************************************
org 0x000 ; Adresse de départ après reset
goto init ; Adresse 0: initialiser
;*********************************************************************
; INITIALISATIONS *
;*********************************************************************
init
clrf PORTA ; Sorties portA à 0
clrf PORTB ; sorties portB à 0
bsf STATUS,RP0 ; sélectionner banque 1
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
; Effacer RAM
; ------------
movlw 0x0c ; initialisation pointeur
movwf FSR ; pointeur d'adressage indirec
init1
clrf INDF ; effacer ram
incf FSR,f ; pointer sur suivant
btfss FSR,6 ; tester si fin zone atteinte (>=40)
goto init1 ; non, boucler
btfss FSR,4 ; tester si fin zone atteinte (>=50)
goto init1 ; non, boucler
2007
; initialisations spécifiques
; ---------------------------
bcf LED ; LED en sortie (banque1)
bcf STATUS,RP0 ; repasser banque 0
goto start ; sauter au programme principal
;*********************************************************************
; SOUS-ROUTINE DE TEMPORISATION *
;*********************************************************************
;---------------------------------------------------------------------
; Cette sous-routine introduit un retard de 500.000 µs.
; Elle ne reçoit aucun paramètre et n'en retourne aucun
;---------------------------------------------------------------------
tempo
movlw 2 ; pour 2 boucles
movwf cmpt3 ; initialiser compteur3
boucle3
clrf cmpt2 ; effacer compteur2
boucle2
clrf cmpt1 ; effacer compteur1
boucle1
nop ; perdre 1 cycle
decfsz cmpt1,f ; décrémenter compteur1
goto boucle1 ; si pas 0, boucler
decfsz cmpt2,f ; 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
;*********************************************************************
; PROGRAMME PRINCIPAL *
;*********************************************************************
start
bsf LED ; allumer la LED : on aurait pu écrire
; LEDON (voir les macros)
call tempo ; appeler la tempo de 0.5s
bcf LED ; éteindre LED (LEDOFF)
call tempo ; appeler la tempor de 0.5s
goto start ; boucler
END ; directive fin de programme
debut avec le debuguer
Bonsoir JMarc
On travaille pas avec des vieilles version, car les microcontrôleurs on évolué, et si on veut faire une capture d'écran pour te faire
comprendre, on doit avoir les mêmes versions.
Si tu veux de l'aide, pas de problème, tu vas en avoir, toute le section ASM seras la pour te soutenir, et te faire comprendre
ce que tu comprends pas.
Tu téléchargeras la dernière version de MPLAB IDE v8.92 : http://www.microchip.com/development-to ... ds-archive
Tu l'installes, et si tu es d'accord on continu.... qu'en penses tu ?
Quel est ton système d'exploitation ?
A+
On travaille pas avec des vieilles version, car les microcontrôleurs on évolué, et si on veut faire une capture d'écran pour te faire
comprendre, on doit avoir les mêmes versions.
Si tu veux de l'aide, pas de problème, tu vas en avoir, toute le section ASM seras la pour te soutenir, et te faire comprendre
ce que tu comprends pas.
Tu téléchargeras la dernière version de MPLAB IDE v8.92 : http://www.microchip.com/development-to ... ds-archive
Tu l'installes, et si tu es d'accord on continu.... qu'en penses tu ?
Quel est ton système d'exploitation ?
A+
debut avec le debuguer
Bonjour temps-x
Ah pour faire de la peine aux gens
Non sérieusement, moi qui croyait avec la dernière mise a jour car j'ai pris cette version dans l'onglet chargement du site microchip, je suis étonné qu'il faut aller dans l'onglet historique pour avoir les dernières mises à jour
Mon système d'exploitation est un Pc portable avec Windows 10.
J'ai trouvé pour afficher l'état des ports, je vois l'indicateur clignoté comme si c'était ma led sur un vrai montage, j'ai réussi aussi a ajouté une entrée que je peut modifié avec ma souris. Je vais donc maintenant insérer du code pour commander une seconde led suivant l'état de cette entrée.
Merci pour cette remarque, j'installe la dernière mise a jour et je vous tiens au courant
Jean-Marc
Ah pour faire de la peine aux gens
Non sérieusement, moi qui croyait avec la dernière mise a jour car j'ai pris cette version dans l'onglet chargement du site microchip, je suis étonné qu'il faut aller dans l'onglet historique pour avoir les dernières mises à jour
Mon système d'exploitation est un Pc portable avec Windows 10.
J'ai trouvé pour afficher l'état des ports, je vois l'indicateur clignoté comme si c'était ma led sur un vrai montage, j'ai réussi aussi a ajouté une entrée que je peut modifié avec ma souris. Je vais donc maintenant insérer du code pour commander une seconde led suivant l'état de cette entrée.
Merci pour cette remarque, j'installe la dernière mise a jour et je vous tiens au courant
Jean-Marc
debut avec le debuguer
debut avec le debuguer
Bonjour tous le monde,
Bonjour JMarc
Effectivement Gérard à raison sur une chose, c'est quand parle pas de la même version, je m'explique tu travailles sous Windows 10,
moi je travaille sous Windows XP, ce qui fait quand ne peut avoir les même version, à cause du système d’exploitation.
Voici sur quoi, il faut que je clic pour avoir ma version
Et voici je que j’obtiens
Donc, il était normal de faire une différence, pour tous ceux qui suive
Pour afficher les variables, tu clics sur Watch une fenêtre va apparaitre
Après sur cette fenêtre qui s’appelle Watch, tu clics sur Add symbol puis tu cherches le non de ta variable,
d'avoir trouvé tout seul, pour simuler une entrée, donc félicitation, pour ta persévérance.
A+
Bonjour JMarc
Effectivement Gérard à raison sur une chose, c'est quand parle pas de la même version, je m'explique tu travailles sous Windows 10,
moi je travaille sous Windows XP, ce qui fait quand ne peut avoir les même version, à cause du système d’exploitation.
Voici sur quoi, il faut que je clic pour avoir ma version
Et voici je que j’obtiens
Donc, il était normal de faire une différence, pour tous ceux qui suive
Mais je n'arrive pas a afficher une variable (cmpt1)
Pour afficher les variables, tu clics sur Watch une fenêtre va apparaitre
Après sur cette fenêtre qui s’appelle Watch, tu clics sur Add symbol puis tu cherches le non de ta variable,
d'avoir trouvé tout seul, pour simuler une entrée, donc félicitation, pour ta persévérance.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
debut avec le debuguer
Bonjour Jmarc
Donc nous commençons par la visualisation des registres et des variables, avant de continuer il faut savoir que l'interface et plutôt orienté langage C et nous allons le voir avec les variables.
Pour voir le contenu des registres et variables, il y a trois possibilités ,et une condition qui est la plus importante, c'est qu'il faut compiler le source sous debug je sais c'est ballot mais…
Les registres sont visibles sous les 3 possibilités les variables c'est un peu plus compliqué , prenons:
Les Registres donc après compilation sont visibles avec :
-La souris suffit de mettre le pointeur sur le nom du registre
-Par la fenêtre depuis le menu Window->PIC Memory Views->SFSs
-Par la fenêtre depuis le menu Debugging->Watches->Entrer new watch-> sélectionner registres dans la liste puis ok
Les Variables sont visibles avec :
-Par la fenêtre depuis le menu Window->PIC Memory Views->File Registres
et c'est tout ! oui si vous ne déclaré pas vos variables en globale.Tes variables cmpt ne sont pas des gobales donc c'est tout.
Alors comment déclarer des variables en globale et bien comme ici La variable i et une globale donc sera visible
-Avec le pointeur de la souris
-Par la fenêtre depuis le Menu Debugging->Watches->Entrer new watch-> sélectionner Global dans la liste puis ok
si plus d'info a ta disposition
A+
PS: bien Ton code
Donc nous commençons par la visualisation des registres et des variables, avant de continuer il faut savoir que l'interface et plutôt orienté langage C et nous allons le voir avec les variables.
Pour voir le contenu des registres et variables, il y a trois possibilités ,et une condition qui est la plus importante, c'est qu'il faut compiler le source sous debug je sais c'est ballot mais…
Les registres sont visibles sous les 3 possibilités les variables c'est un peu plus compliqué , prenons:
Les Registres donc après compilation sont visibles avec :
-La souris suffit de mettre le pointeur sur le nom du registre
-Par la fenêtre depuis le menu Window->PIC Memory Views->SFSs
-Par la fenêtre depuis le menu Debugging->Watches->Entrer new watch-> sélectionner registres dans la liste puis ok
Les Variables sont visibles avec :
-Par la fenêtre depuis le menu Window->PIC Memory Views->File Registres
et c'est tout ! oui si vous ne déclaré pas vos variables en globale.Tes variables cmpt ne sont pas des gobales donc c'est tout.
Alors comment déclarer des variables en globale et bien comme ici La variable i et une globale donc sera visible
-Avec le pointeur de la souris
-Par la fenêtre depuis le Menu Debugging->Watches->Entrer new watch-> sélectionner Global dans la liste puis ok
si plus d'info a ta disposition
A+
PS: bien Ton code
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
debut avec le debuguer
Je reprend ici pour ne pas surcharger le post du haut.
On peut passer toutes ses variables en global, le problème, c'est que tu n'as plus de contrôle sur le positionnement de tes variables en RAM c'est le compil qui les place ou bon lui semble, parfois sans grande logique. C'est pourquoi perso j'aime bien savoir ou son mes variables et le place sur des articulation bien précise,par exemple pour optimiser mon code.
j'utilise des globales, pour transmettre des infos dans mes lib objet ou, si mes lib objet ont besoin de variables ,comme ici ,la variable i qui est une variable pour une tempo de la lib du LCD.
allez
A+
On peut passer toutes ses variables en global, le problème, c'est que tu n'as plus de contrôle sur le positionnement de tes variables en RAM c'est le compil qui les place ou bon lui semble, parfois sans grande logique. C'est pourquoi perso j'aime bien savoir ou son mes variables et le place sur des articulation bien précise,par exemple pour optimiser mon code.
j'utilise des globales, pour transmettre des infos dans mes lib objet ou, si mes lib objet ont besoin de variables ,comme ici ,la variable i qui est une variable pour une tempo de la lib du LCD.
allez
A+
debut avec le debuguer
Bonsoir à tous
Merci temp-x et Maî
Pour le code, ce n'est pas le mien. J'ai pris celui la pour avoir une base de discutions.
Je compile avec debug. Dans le menu début => new watch mais pas de cmpt1
J'ai rajouté dans le code les lignes
GLOBAL cmpt1
Juste après déclaration de variables mais lors de l'assemblage avec debug = échec
J'ai rajouté UDATA puis cmpt1 res 1 mais toujours pas bon
J'ai supprimé cmpt1 : 1 dans déclaration de variable, toujours échec
Mais c'est pas grave, j'arrive à voir dans file register les valeurs de mes variables.
Je continue a m'entraîner
Je comprend vite mais il faut me l'expliquer longtemps
Merci temp-x et Maî
Pour le code, ce n'est pas le mien. J'ai pris celui la pour avoir une base de discutions.
Je compile avec debug. Dans le menu début => new watch mais pas de cmpt1
J'ai rajouté dans le code les lignes
GLOBAL cmpt1
Juste après déclaration de variables mais lors de l'assemblage avec debug = échec
J'ai rajouté UDATA puis cmpt1 res 1 mais toujours pas bon
J'ai supprimé cmpt1 : 1 dans déclaration de variable, toujours échec
Mais c'est pas grave, j'arrive à voir dans file register les valeurs de mes variables.
Je continue a m'entraîner
Je comprend vite mais il faut me l'expliquer longtemps
debut avec le debuguer
Bonjour
Ne fonctionne pas sous 16F84 . j'ai passé le meme code sous 16F876 voici le résultat, pour par exemple cmpt1
c'est une capture écran pas tres joli limité par les fichiers joints dommage
Et ici le code
Si problème pas de soucis a ta disposition
A+
Ne fonctionne pas sous 16F84 . j'ai passé le meme code sous 16F876 voici le résultat, pour par exemple cmpt1
c'est une capture écran pas tres joli limité par les fichiers joints dommage
Et ici le code
Si problème pas de soucis a ta disposition
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
debut avec le debuguer
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous
Voici une capture de mon écran quasiment en taille réelle sans aucun redimensionnement. 260Ko pour 1645x975 , bien loin de la limitation.
maï a écrit :Source du message c'est une capture écran pas tres joli limité par les fichiers joints dommage
Voici une capture de mon écran quasiment en taille réelle sans aucun redimensionnement. 260Ko pour 1645x975 , bien loin de la limitation.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités