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
FSR et banque
Bonjour
je ne comprend pas comment pointer sur une variable qui se trouve en banque3
Avec débug, Je met un point d'arrêt sur movlf bufout, je fait f6 pour avancer d'un pas, j'ai 90 dans w (normal car l'adresse est 190 donc banque 3), f6 et encore f6, je transfère bien l'adresse 90 dans FSR mais indf m'indique 0, encore f6 et la j'ai bien la valeur qui se trouve à l'adresse 190 dans w, c'est un bug mplab ou bien je fait de travers ? Car Indf est toujours a 0
la variable bufout se trouve au debut de la banque 3 soit 190 comme adresse
mais quand je charge l'adresse dans FSR, j'ai 90, normal ca j'ai compris mais alors comment lire dans l'adresse 190 ?
j'ai pourtant bien changer de banque avec IRP qui est pour l'adressage indirect.
j'ai aussi essayé avec movlw LOW bufout
merci d'avance
je ne comprend pas comment pointer sur une variable qui se trouve en banque3
Avec débug, Je met un point d'arrêt sur movlf bufout, je fait f6 pour avancer d'un pas, j'ai 90 dans w (normal car l'adresse est 190 donc banque 3), f6 et encore f6, je transfère bien l'adresse 90 dans FSR mais indf m'indique 0, encore f6 et la j'ai bien la valeur qui se trouve à l'adresse 190 dans w, c'est un bug mplab ou bien je fait de travers ? Car Indf est toujours a 0
Code : Tout sélectionner
BANKSEL bufout
movlw bufout
bsf STATUS,IRP
movwf FSR
movf INDF,w
la variable bufout se trouve au debut de la banque 3 soit 190 comme adresse
mais quand je charge l'adresse dans FSR, j'ai 90, normal ca j'ai compris mais alors comment lire dans l'adresse 190 ?
j'ai pourtant bien changer de banque avec IRP qui est pour l'adressage indirect.
j'ai aussi essayé avec movlw LOW bufout
merci d'avance
FSR et banque
Bonjour JMarc, et bonjour à tous,
Houla ..., c'est quoi ce bufout, quel est ce registre ... ?
movlw bufout <---- c'est pas un nombre
Voici comment tu dois l'écrire avec cette fonction movlw :
movlw D'156' <--- pour décimal
movlw B'10101010' <--- pour binaire
movlw H'FF' <--- pour hexadécimal
Voici comment tu dois l'écrire dans ton programme :
movfw bufout <------copie bufout dans W
movwf FSR <------transfére bufout dans FSR
Avec quel pic que tu travailles ?, généralement FSR et INDF se trouves dans toutes les banques,
donc pas besoin de changer de banque.
Il faut travailler avec le Datasheet de ton PIC, sinon tu n'avanceras pas, car, que ça soit dans n'importe quel
langage, les registres prenne différente non, en fonction du PIC.
Faire un exposé sur une version de pic, ça ne sert à rien, car le pic suivant peut très bien avoir un registre
d'un autre non, faisant la même chose, c'est pour cela qu'il faut travailler avec le Datasheet .
D'autre par, dans mplab , beaucoup de registre ne son pas visible, même W est parfois invisible.
Voici pour écrire et lire dans la ram :
Comme j'ai pas trop de temps ce soir, et vue l'heure, j'ai rédigé rapidement
A+
Houla ..., c'est quoi ce bufout, quel est ce registre ... ?
movlw bufout <---- c'est pas un nombre
Voici comment tu dois l'écrire avec cette fonction movlw :
movlw D'156' <--- pour décimal
movlw B'10101010' <--- pour binaire
movlw H'FF' <--- pour hexadécimal
Voici comment tu dois l'écrire dans ton programme :
movfw bufout <------copie bufout dans W
movwf FSR <------transfére bufout dans FSR
Avec quel pic que tu travailles ?, généralement FSR et INDF se trouves dans toutes les banques,
donc pas besoin de changer de banque.
Il faut travailler avec le Datasheet de ton PIC, sinon tu n'avanceras pas, car, que ça soit dans n'importe quel
langage, les registres prenne différente non, en fonction du PIC.
Faire un exposé sur une version de pic, ça ne sert à rien, car le pic suivant peut très bien avoir un registre
d'un autre non, faisant la même chose, c'est pour cela qu'il faut travailler avec le Datasheet .
D'autre par, dans mplab , beaucoup de registre ne son pas visible, même W est parfois invisible.
Voici pour écrire et lire dans la ram :
Code : Tout sélectionner
memorisation_ram
movlw 0x30 ; initialisation pointeur 0x30 (attention à tes variables)
movwf FSR ; adressage indirect
movf toto,W ; variable qui va être mémoriser dans la Ram
movwf INDF
incf FSR,F ; pointer sur suivant
movf coco,W ; variable qui va être mémoriser dans la Ram
movwf INDF
incf FSR,F ; pointer sur suivant et ainsi de suite ....
;**********************************************************************************************
lire_ram
movlw 0x30 ; pointer sur 0x30
movwf FSR ;
movf INDF,W ; lecture de la ram placer dans W
movwf toto ; transfére W dans toto
incf FSR,F ; prochaine lecture dans la ram
movf INDF,W ; lecture de la ram placer dans W
movwf coco ; transfére W dans coco
incf FSR,F ; prochaine lecture dans la ram et ainsi de suite .....
Comme j'ai pas trop de temps ce soir, et vue l'heure, j'ai rédigé rapidement
A+
FSR et banque
Temps-x a écrit :Bonjour JMarc, et bonjour à tous,
Avec quel pic que tu travailles ?, généralement FSR et INDF se trouves dans toutes les banques,
donc pas besoin de changer de banque.
Bonjour Temps-x
Désolé, c'est un 16F877 mais j'ai trouvé ce matin, ca fonctionne
je ne remettais pas la banque0 pour l'adressage direct
donc il me faut passer en banque3 pour l'adressage direct car je copie l'adresse de bufout dans le pointeur indirect (FSR) puis je repasse en banque0 pour l'adressage direct et je laisse FSR sur banque 2 et 3
Code : Tout sélectionner
BANKSEL bufout
bsf STATUS,IRP
movlw bufout+1
movwf FSR
movf INDF,w
BANKSEL 0
CALL LCD_SEND_CHAR
incf FSR
movf INDF,w
CALL LCD_SEND_CHAR
ce qui m'a mis en defaut c'est que debug m'annonce INDF toujours a 0 mais ca fonctionne
aller, je continu mon périple
FSR et banque
FSR et banque
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 46 invités