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
Initialisation de variables
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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.
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' ; A0, A1, A2 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
Initialisation de variables
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Essaye avec ça :
En attendant d'autres idées.
Code : Tout sélectionner
movlw 5
movwf cmpt1 ; init compteurs
movlw 5
movwf cmpt2
En attendant d'autres idées.
Initialisation de variables
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.
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
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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
Le Datasheet, toujours le datasheet.
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
Le Datasheet, toujours le datasheet.
Initialisation de variables
Bonsoir,
Gérard se mets à l'assembleur
A+
Gérard a écrit :
Source du message Essaye avec ça :
Code : Tout sélectionner
movlw 5
movwf cmpt1 ; init compteurs
movlw 5
movwf cmpt2
Gérard se mets à l'assembleur
A+
Initialisation de variables
Bonjour tout le monde
Le simulateur de mplabx est bien pour trouver ce genre d’erreur
C’est mon outil préféré
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
Le Datasheet, toujours le datasheet.
Le simulateur de mplabx est bien pour trouver ce genre d’erreur
C’est mon outil préféré
Initialisation de variables
- Gérard
Expert- Messages : 1661
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
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.
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.
Initialisation de variables
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
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 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 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.
Initialisation de variables
Bonsoir Gérard, F6FCO, et tout le orum,
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.
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.
JMarc est comme toi, il prend plaisir à coder, et je suis aussi du même avis.
Bon il faut que j’écrive quelque ligne de code, sinon je vais me faire fâché par Gérard
A+
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.
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 et je me régale.
JMarc est comme toi, il prend plaisir à coder, et je suis aussi du même avis.
Bon il faut que j’écrive quelque ligne de code, sinon je vais me faire fâché par Gérard
A+
Initialisation de variables
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.
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 : Aucun utilisateur enregistré et 143 invités