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

Initialisation de variables
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » mer. 7 févr. 2018 16:58

Bonjour à tous,
je bute sur un petit problème dont la solution doit certainement être simple pour vous. Au moment de l'initialisation des compteurs cmpt1 charge bien la valeur 5 mais pas cmpt2 qui prend la valeur 1.
Pas moyen de trouver le pourquoi.

Code : Tout sélectionner

;**********************************************************************
;                                                                     *
;    
NOM:                                             
;    
Date:                                        
;    
Auteur:                                    
;                                                                     *
;**********************************************************************



    LIST      
p=16F876A            Définition de processeur
    
#include <p16F876A.inc>        ; fichier include
    
radix dec                      on travaille en décimal par défaut

    __CONFIG   _CP_OFF 
_DEBUG_OFF _CPD_OFF _LVP_OFF _BODEN_OFF _PWRTE_OFF _WDT_OFF _XT_OSC 


OPTIONVAL    EQU    
B'00000000'
ADCON1VAL    EQU    B'00000110' PORTA en mode digital

; --------------------------------------------------------------------------------------------


;*********************************************************************

    
CBLOCK 0x00C                   
        cmpt1 
compteur état haut
        cmpt2 
compteur état bas
        cmpt3 
compteur de temps note
        cmpt4 
compteur de temps note
        Reg_1
        Reg_2
        Reg_3
    ENDC                                             

;**********************************************************************

    
org     0x000                 Adresse de départ après reset
init
    bsf        STATUS
,RP0            banque 1
    movlw   ADCON1VAL            
PORTA en mode digital/analogique
    movwf   ADCON1                
écriture dans contrôle A/D
    movlw   OPTIONVAL            
charger masque
    movwf   OPTION_REG            
initialiser registre option
    movlw    
b'00000111'            A0A1A2 en entrée pour poussoirs
    movwf    TRISA
    clrf    TRISB                
Bit PORTB.0 en sortie 
    bcf        STATUS
,RP0            ;  banque 0
    clrf    PORTB                
sorties portB à 0
    movlw    5
    movwf    cmpt1                
init compteurs
    movwf     cmpt2
    
;*********************************************************************
;                      
PROGRAMME PRINCIPAL                           *
;*********************************************************************

main

    END             

Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

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

#2 Message par Gérard » mer. 7 févr. 2018 17:06

Essaye avec ça :

Code : Tout sélectionner


        movlw    5
        movwf    cmpt1                
; init compteurs
        movlw    5    
        movwf    cmpt2

En attendant d'autres idées.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Initialisation de variables
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#3 Message par satinas » mer. 7 févr. 2018 17:22

Bonjour à tous,
regarde le datasheet du 16F876A. Au chapitre "Memory Organization", la mémoire est décrite. Les registres du pic vont des adresses 0x00 à 0x1F, et la ram utilisable pour les variables (General Purpose Register) démarrent donc à l'adresse 0x20.
En implantant tes 2 variables en 0x0C et 0x0D, tu as en fait écrit dans les registres PIR1 et PIR2. Hors les bits 1,2,5,7 de PIR2 sont réservés et forcés à 0 (voir datasheet). En écrivant 5 0b00000101, tu te retrouves donc avec 1 0b00000001.
Le début de la ram utilisable varie avec le type de pic.

Initialisation de variables
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#4 Message par F6FCO » mer. 7 févr. 2018 18:47

Mais évidemment !!! Merci à tous les deux.
Gérard j'avais bien essayé avant de poser ma question.
Satinas, le pire c'est que je le savais, j'ai déjà fait quelques essais sur le 876, mais là le nez bloqué sur l'erreur je ne voyais pas l'évidence :evil:
Le Datasheet, toujours le datasheet.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Initialisation de variables
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » sam. 10 févr. 2018 21:42

Bonsoir,

Gérard a écrit :
Source du message Essaye avec ça :

Code : Tout sélectionner

movlw 5
movwf cmpt1 ; init compteurs
movlw 5
movwf cmpt2


humour!! ==> :bravo: :bravo: :bravo: Gérard se mets à l'assembleur ==> :+1:


exit dehors!!

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Initialisation de variables
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#6 Message par JMarc » dim. 11 févr. 2018 08:32

Bonjour tout le monde


F6FCO a écrit :Mais évidemment !!! Merci à tous les deux.
Gérard j'avais bien essayé avant de poser ma question.
Satinas, le pire c'est que je le savais, j'ai déjà fait quelques essais sur le 876, mais là le nez bloqué sur l'erreur je ne voyais pas l'évidence :evil:
Le Datasheet, toujours le datasheet.



Le simulateur de mplabx est bien pour trouver ce genre d’erreur :sifflotte:
C’est mon outil préféré

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

#7 Message par Gérard » dim. 11 févr. 2018 20:22

Temps-x, je suis au regret de te dire qu'il n'y a aucun espoir qu'un jour je me mette à l'asm PIC.
Il y a une vingtaine d'années, j'ai fait de l'asm Intel (8051), puis du Motorala (68705) et de du ST62 avant du m'intéresser au PIC. Je trouve que cet asm est le plus indigeste de tous.
Lors de mes cours du soir au CNAM, j'ai fait du C++ et je n'ai pas accroché du tout.
Le Basic me va très bien, j'avais essayé en free Proton+ puis j'ai acheté le compilateur. Depuis j'ai aussi acheté MikroBasic.
Bonne fin de WE à tous ... Même à ceux qui font de l'asm. humour!!
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Initialisation de variables
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#8 Message par F6FCO » lun. 12 févr. 2018 13:45

Gérard a écrit :Temps-x, je suis au regret de te dire qu'il n'y a aucun espoir qu'un jour je me mette à l'asm PIC.
!


Comme quoi même en ayant les mêmes centres d’intérêts on n'est pas tous câblés pareils :wink: j'ai fais beaucoup d'assembleur, çà remonte à loin dans les années 80: d'abord sur le Z80 (ZX81), ensuite sur le 6502 (Oric Atmos), encore ensuite sur le 68000 (atari520), un tout petit peu sur le 386 sur mon premier PC, et je me régalais. Pas évident à l'époque ou il n'y avait pas encore internet, on achetait un bouquin à la FNAC, c'est tout ce qu'on avait comme infos et on se débrouillait avec.
Et puis je me suis mis au Visual-Basic sur Atari d'abord et puis sur PC, je suis resté longtemps dessus, je ne me plaisais pas trop mais çà permettait de faire de beaux programmes avec des jolies fenêtres windows et tout et tout, du C ensuite, çà allait mieux mais toujours pas çà. Du pseudo C avec l'arduino, pareil.

Et là je viens de retrouver mon plaisir de coder en cherchant la petite bête :-D et je me régale.
Bien sur si je dois faire un programme évolué, par exemple avec calculs trigo pour la gestion d'un robot, c'est sur que je repasserai sur l'arduino avec son langage plus adapté, ou bien je m'essaierai au C PIC.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Initialisation de variables
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » mar. 13 févr. 2018 01:47

Bonsoir Gérard, F6FCO, et tout le orum,

Gérard a écrit :
Source du message j'ai fait du C++ et je n'ai pas accroché du tout.


Idem, je suis allergique au C++, pour les Pic je ne changerais pas, je resterais en ASM, pas d'autre langage pour moi de prévu.

F6FCO a écrit :Source du message

on n'est pas tous câblés pareils :wink:


Et ouais, et heureusement sinon il y aurait plus d'évolution, moi j'ai commencé par du QuickBasic sous Dos avec les 386,
486, Pentium.

Après le Tasm , et le fameux Debug sous dos.

Sous Windows J'ai essayé Visual-Basic, j'ai laissé tombé, car il manqué toujours des fichier une fois le programme compilé, une horreur.

Maintenant je pratique du RapidQ créé en 2000 par William Yu, qui fonctionne pour tous les Windows, na pas évolué depuis.

Mais qui est disponible pour Microsoft Windows, GNU/Linux, Solaris et HP-UX, que du bonheur

Bien sur coté microcontrôleur, j'utilise MPASM, rien d'autre.

F6FCO a écrit :
Source du message je viens de retrouver mon plaisir de coder en cherchant la petite bête :-D et je me régale.


JMarc est comme toi, il prend plaisir à coder, et je suis aussi du même avis. :wink:

humour!! Bon il faut que j’écrive quelque ligne de code, sinon je vais me faire fâché par Gérard

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Initialisation de variables
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#10 Message par pspic » mar. 13 févr. 2018 08:23

Bonjour,
Mon parcours en tant que passe temps (microcontrôleur - PC) depuis 1980 :
ZX81 en basic et Asm + carte micro Z80
TRS80_3 toujours en Basic + ASM
Passage au PC en basic + Scalp en basic
PC sous Windows + Delphi 1 à 7 en Pascal + PIC en Mikrobasic et ASM.
Comme Delphi est très onéreux, je conseille Lazarus qui est gratuit et l'équivalent de Delphi.
J'ai essayé le C et l'Arduino sans grande conviction.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Roger et 45 invités