begin process at 2010 03 10 23:46:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Les PIC

 > 

16F84 asm aide pour modifier une routine de RB7 à RB3


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

16F84 asm aide pour modifier une routine de RB7 à RB3

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ée 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 programmation UART pour pic 16f84A probleme aidez moi [ par looloo78 ] bonjour,j'ai créer ce programme en m'inspirant d'autre programme, le but étant de lire les 8 bits des portB0-7 et de les envoyer par le portA1 suivant comment utiliser un call à l'aide d'un préfixe [ par jeddaye ] bonjour, j'utilise actuellement mplab pour programmer mon 16f88et je me demandais si il etait possible de faire un call avec un préfixe, ceci afin de Problème avec mon programme en source assembleur pour mon projet de BTS [ par UltimateXion ] Bonjours à tous, je réalise actuellement mon projet de BTS Système électronique et j'ai comme qui dirai un souci au niveau de mon programme en source Problème de programation d'un PIC16F877a avec un LCD 2*16 en mode 8 Bits [ par UltimateXion ] Bonjours à tous, je réalise actuellement mon projet de BTS Système électronique et j'ai comme qui dirai un souci au niveau de mon programme en source Problème de timing [ par Haox85 ] Bonjour tout le monde,Depuis mon dernier post où je demandais de l'aide pour afficher sur des 7 segments j'ai un peu avancé tant bien que mal...Si mon PB PIC18F2525 [ par Haox85 ] Bonsoir tout le monde... Comme vous pouvez le constater, je n'ai toujours pas réussi a faire ma programmation de PIC... Bon mon programme fonctionne [Assembleur inline C++] Récupérer l'offset d'un label [ par ShivX ] Bonjour a tous, J'ai un léger problème avec l'assembleur inline dans un programme en C++, n'étant pas un expert en asm j'espère que vous pourrez m'éc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales