Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : 16F84 asm aide pour modifier une routine de RB7 à RB3 [ Archives / Les PIC ] (pasrico)

samedi 2 avril 2005 à 12:06:32 | 16F84 asm aide pour modifier une routine de RB7 à RB3

pasrico

    bonjour

    pic 16F84A + 24C16

   voila j'ai cette routine qui marche tres bien mais je veux la modifier pour passer sur le portb,03  (RB3) mais comme je debute et que j'ai pas tres bien compris tous les mecanismes de cette routine   surtout les : XORWF   PORTB  , W
                                            XORWF   PORTB  , f
  est ce qu'il ne faut pas aussi modifier le   " RLF     EEDATA    , f"

  si vous pouviez me la modifier sur cet exemple avec un petit commentaire, ca serait sympa
  ps: j'ai bien essayer des modifs mais ca a pas marcher, donc merci

 

---------------------------------------------------------------------
  envoi en  PORTB     , 07
---------------------------------------------------------------------
Label_0015 
            MOVWF   EEDATA   ; sauve w dans EEDATA
            COMF    EEDATA    , f           ; complement file
            MOVLW   0x80                     ; page 1 , adressage indirect (variable 0x80)
            MOVWF   0x1C                     ;  parite  1C= data Crc
            MOVLW   0x08                      ;  charge 08 (8 bits)
            MOVWF   0x0C                     ; dans compteur (variable C)
            BCF     PORTB     , 07              ; met à zero le bit 7 du port B = mise en sortie

            BSF     STATUS    , RP0           ; bank 1   (BSF)
            MOVLW   0x4F                        ; 4F= 0100 1111   pin 7,5,4 à 0 = sortie   
                                                              ; (pins 5 et 4 eeprom 24c16)
            MOVWF   TRISB                     ; data direction port B
            BCF     STATUS    , RP0           ; bank 0   (BCF)

            MOVLW   0xA8
            CALL    Label_0004                  ; timer 0
---------------------------------------------------------------------------
;  envoi une bit   et boucle 8 fois (8 bits = 1 byte)
Label_0006  
            MOVF    EEDATA    , W                 ; eeprom data
            ANDLW   0x80                           ; page 1 , adressage indirect (variable 0x80)
            XORWF   0x1C      , f                 ; calcul la parite  1C= data Crc
            XORWF   PORTB     , W           ; change la ligne I/0 en fonction du bit 7 de EEdata
            XORWF   PORTB     , f
            MOVLW   0xA8
            CALL    Label_0005                    ; add new valeur au timer
            RLF     EEDATA    , f                   ; eeprom data
            DECFSZ  0x0C      , f                 ; decremente le compteur de bits
                                                               ; (variable C), saut si = zero
            GOTO    Label_0006                  ; boucle

            MOVF    0x1C      , W
            XORWF   PORTB     , W
            XORWF   PORTB     , f
            MOVLW   0xA8
            CALL    Label_0005                     ; add new valeur au timer

            BSF     STATUS    , RP0              ; bank 1   (BSF)
            MOVLW   0xCF                           ; CF = 11001111   remet pin 7 à 1 = entree
            MOVWF   TRISB                         ; data direction port B
            BCF     STATUS    , RP0              ; bank 0   (BCF)

            MOVLW   0x02
            ADDWF   0x0F      , f
            CALL    Label_0007                     ; decremente le timer
            RETURN


vendredi 15 avril 2005 à 20:52:18 | Re : 16F84 asm aide pour modifier une routine de RB7 à RB3

jacques5

Réponse acceptée !

Bonjour Pasrico.

Je ne comprends pas très bien ta question. Tu désires utiliser la broche B3 au lieu de B7?

Jacques


vendredi 15 avril 2005 à 21:55:29 | Re : 16F84 asm aide pour modifier une routine de RB7 à RB3

pasrico

pour jacques 5
  bonjour
oui c'est exactement ca, je desire transposer la routine qui est pour le B7 en routine pour le B3 ( car reelement par la suite dans mon programme je voudrais communiquer suivant besoin sur l'un ou l'autre port, call envoi_B7 ou call envoi_B3 , en gros).
  j'ai fais des essais , mais je maitrise pas trop et donc ca marche pas.
          merci de m'avoir repondu
                                 lulu

samedi 16 avril 2005 à 09:52:06 | Re : 16F84 asm aide pour modifier une routine de RB7 à RB3

jacques5

Pour répondre concernant l'instruction XORWF c'est une instruction qui effectue un OU exclusif bit à bit entre un registre et le contenu de W. Pour rappel un OU exclusif voit la sortie à 1 si une des deux entrée est à 1 (l'autre à 0). Par contre la sortie sera à 0 si les deux entrées sont à 1 ou à 0. On peut avec cette intruction inverser un bit particulier d'un registre.
Existe aussi XORLW qui effectue la même opération entre un littéral et le registre W.

 A    B    sortie
 0     0       0
 0     1       1
 1     0       1
 1     1       0

Bon je ne sais pas vraiment si c'est une solution mais à essayer ceci.

---------------------------------------------------------------------
  envoi en  PORTB     , 07
---------------------------------------------------------------------
Label_0015
            MOVWF   EEDATA     ; sauve w dans EEDATA
            COMF    EEDATA    , f        ; complement file
            MOVLW   0x80                 ; page 1 , adressage indirect (variable 0x80)
            MOVWF   0x1C                 ;  parite  1C= data Crc
            MOVLW   0x08                 ;  charge 08 (8 bits)
            MOVWF   0x0C                 ; dans compteur (variable C)
        → ; BCF     PORTB     , 07      ; met à zero le bit 7 du port B = mise en sortie
           BCF     PORTB      , 03        ; METTRE A 0 LE BIT N° 3******************
            BSF     STATUS    , RP0      ; bank 1   (BSF)
            MOVLW   0x4F                 ; 4F= 0100 1111   pin 7,5,4 à 0 = sortie  
                                         ; (pins 5 et 4 eeprom 24c16)
            MOVWF   TRISB                ; data direction port B
            BCF     STATUS    , RP0      ; bank 0   (BCF)

            MOVLW   0xA8
            CALL    Label_0004                  ; timer 0
---------------------------------------------------------------------------
;  envoi une bit   et boucle 8 fois (8 bits = 1 byte)
Label_0006 
            MOVF    EEDATA    , W        ; eeprom data
       →  ; ANDLW   0x80                ; page 1 , adressage indirect (variable 0x80); andlw0x08
           ANDLW   0x08                  ; ICI METTRE A 1 LE BIT 3 AU LIEU DU BIT 7****
            XORWF   0x1C      , f        ; calcul la parite  1C= data Crc
            XORWF   PORTB     , W        ; change la ligne I/0 en fonction du bit 7 de EEdata
            XORWF   PORTB     , f
            MOVLW   0xA8
            CALL    Label_0005           ; add new valeur au timer
            RLF     EEDATA    , f        ; eeprom data
            DECFSZ  0x0C      , f        ; decremente le compteur de bits
                                         ; (variable C), saut si = zero
            GOTO    Label_0006           ; boucle

            MOVF    0x1C      , W
            XORWF   PORTB     , W
            XORWF   PORTB     , f
            MOVLW   0xA8
            CALL    Label_0005           ; add new valeur au timer

            BSF     STATUS    , RP0      ; bank 1   (BSF)
            MOVLW   0xCF                 ; CF = 11001111   remet pin 7 à 1 = entree
            MOVWF   TRISB                ; data direction port B
            BCF     STATUS    , RP0      ; bank 0   (BCF)

            MOVLW   0x02
            ADDWF   0x0F      , f
            CALL    Label_0007           ; decremente le timer
            RETURN




Cette discussion est classé dans : label, movlw, portb, xorwf, eedata


Répondre à ce message

Sujets en rapport avec ce message

PIC 16F84 & LCD piti probleme :) [ par diwee ] bonjour, j'ai essayé de programmer un pic 16f84 en mode 4-bit pour qu'il affiche un message s sur l'ecran mais en vain. Quand je branche il y a une li Liaison RS232 Pic 18F2620 vers PC [ par fun_olivier ] Bonjour je dois faire un programme qui permet de relier un Pic 128F2620 avec un Pc via une liaison USART . Le Pic envoi un caractere, puis reçoit une texte en memoire dans pic [ par yalein ] Bonjour a tous, je suis débutant dans la programmation en assembleur et la je coince sur un probleme. J'utilise un pic 16f877 avec un afficheur et je condition if en asm [ par Lastar ] Salut à tous, étant débutant en asm, je voudrai savoir comment on met en place une condition if. J'ai essayé de mon coté mais sa marche pas!! Ce que j pic16f84 serin [ par h82kev ] bjr à tousvoilà mon problèmej'utilise un pic16f84 pour un banc de test pour modemlorsque j'appui sur un bouton poussoir (pin 7), je veux envoyer un ca Besoin d'aide pour corriger des exos pour débuter sur pic16F630 [ par MTHOMAS ] J'ai fait les exos suivants pour m'entrainer à un exam. Je n'ai pas de corrigé, et je ne peux pas verifier sur le pic16F630. Si quelqu'un peut me cons


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.