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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#1 Message par JMarc » ven. 2 sept. 2016 19:35

Bonjour

soyez tres indulgent, je débute Merci !

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
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » sam. 3 sept. 2016 01:56

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+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#3 Message par JMarc » dim. 4 sept. 2016 07:46

Bonjour temps-x

Ah pour faire de la peine aux gens humour!!

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 :mur:

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 Merci !

Jean-Marc

debut avec le debuguer
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » dim. 4 sept. 2016 08:05

Vous ne parlez pas de la même chose,
JMarc parle de MPLABX 3.35 et Temps-x de MPLAB (sans X) 8.92
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

debut avec le debuguer
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » dim. 4 sept. 2016 13:42

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

MPLAB IDE v8.92 - About.jpg


Et voici je que j’obtiens

MPLAB IDE v8.92 - version.jpg


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

MPLAB IDE v8.92 - View.jpg


Après sur cette fenêtre qui s’appelle Watch, tu clics sur Add symbol puis tu cherches le non de ta variable,

MPLAB IDE v8.92 - Watch.jpg


:bravo: 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.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#6 Message par Guest » lun. 5 sept. 2016 15:20

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
SourisREG.png

-Par la fenêtre depuis le menu Window->PIC Memory Views->SFSs
FenReg.png

-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
FenVar.png

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
Global.png
La variable i et une globale donc sera visible
-Avec le pointeur de la souris
SourisVAR.png

-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
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#7 Message par Guest » lun. 5 sept. 2016 15:49

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+

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#8 Message par JMarc » lun. 5 sept. 2016 20:45

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 exit

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#9 Message par Guest » mar. 6 sept. 2016 07:02

Bonjour

Ne fonctionne pas sous 16F84 . j'ai passé le meme code sous 16F876 voici le résultat, pour par exemple cmpt1
Capture .png

c'est une capture écran pas tres joli limité par les fichiers joints dommage :wink:

Et ici le code
cligno.txt


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
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#10 Message par Jérémy » mar. 6 sept. 2016 07:26

Bonjour à tous
maï a écrit :Source du message c'est une capture écran pas tres joli limité par les fichiers joints dommage :wink:


 ! Message de modération :
Hello Maï,
Ce ne sont pas les fichiers joints qui ont limités ta capture, mais la taille de ton image qui ne fait que 800x428 .
Forcement elle apparaitra petite et peu lisible! :sifflotte:

Merci également de mettre les codes entre balises, que tout le monde puisse le voir facilement, et aussi pour ne pas surcharger le serveur du forum.
Les fichiers joints sont à privilégiés pour les dossiers, et /ou les énormes codes(>60000 caractéres).
Le forum gratuit pour vous et ne possède pas un stockage énorme !

Merci à vous de votre compréhension


Voici une capture de mon écran quasiment en taille réelle sans aucun redimensionnement. 260Ko pour 1645x975 , bien loin de la limitation.
Merci !

Sans titre.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 51 invités