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

FSR et banque
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#1 Message par JMarc » lun. 30 janv. 2017 22:49

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

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

:sifflotte: merci d'avance

FSR et banque
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » mar. 31 janv. 2017 03:19

Bonjour JMarc, et bonjour à tous,

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

FSR et banque
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#3 Message par JMarc » mar. 31 janv. 2017 08:23

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

je ne remettais pas la banque0 pour l'adressage direct :mur:

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

aller, je continu mon périple Merci ! Merci !

FSR et banque
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#4 Message par JMarc » mar. 31 janv. 2017 20:39

Bonsoir Temps-x

C'est uniquement l'adresse de bufout que je veut mettre dans FSR et non son contenu, c'est pour cela le movlw idea !

FSR et banque
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » mer. 1 févr. 2017 02:28

Bonsoir JMarc

C'est uniquement l'adresse de bufout que je veut mettre dans FSR et non son contenu, c'est pour cela le movlw


Ok dans ce cas

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


Retourner vers « Langage ASM »

Qui est en ligne

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