Assembleur ( PIC ) : optimiser la gestion du bus Serial
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Assembleur ( PIC ) : optimiser la gestion du bus Serial



  1. #1
    Toufinet

    Assembleur ( PIC ) : optimiser la gestion du bus Serial


    ------

    Bonjour à tous,

    Voilà, je suis en train de créer en software la gestion du bus série.
    Je dois envoyer une suite de 32 bits.
    Pour ce, j'ai créé 4 variables comme suit :
    CBLOCK 0x20
    serial_data : 4
    ENDC

    Et c'est là que je cherche à optimiser mon code.
    La solution la plus intuitive est de faire comme suit :
    BTFSC serial_data, 0
    BSF SDat
    BSF SClk
    BCF SClk
    BCF SDat
    BTFSC serial_data, 1
    BSF SDat
    BSF SClk
    BCF SClk
    BCF SDat
    BTFSC serial_data, 2
    BSF SDat
    BSF SClk
    BCF SClk
    [...]
    BTFSC serial_data+1, 0
    BSF SDat
    BSF SClk
    BCF SClk
    BCF SDat
    BTFSC serial_data+1, 1
    BSF SDat
    BSF SClk
    BCF SClk

    etc ...

    Auriez-vous une solution utilisant une autre variable, de manière à faire ce qu'on aurait fait en C par exemple
    for(i=0;i<4;i++) {
    for(j=0; j<8; j++) {
    BTFSC serial_data+i, j
    ...
    }
    }

    Merci

    -----

  2. #2
    invitef86a6203

    Re : Assembleur ( PIC ) : optimiser la gestion du bus Serial

    Code:
    Movlw 8
    movwf Mycounter
    My loop
      BTFSC serial_data, 0
      BSF SDat
      BSF SClk
      BCF SClk
      BCF SDat
      rrf serial_data,f
      decfsz MyCounter
    goto myloop

  3. #3
    invitef86a6203

    Re : Assembleur ( PIC ) : optimiser la gestion du bus Serial

    Code:
    Movlw serial_data ; adresse de serial_data
    movwf FSR
    
    movlw 4 ; 4 caractères
    movwf MyCharCounter 
    
    Movlw 8
    movwf Mycounter
    My loop
        BTFSC INDF, 0
        BSF SDat
        BSF SClk
        BCF SClk
        BCF SDat
        rrf INDF,f
        decfsz MyCounter
      goto myloop
    
     incf FSR,f ; caractète suivant
     decfsz MyCharCounter
    goto myloop

  4. #4
    Toufinet

    Re : Assembleur ( PIC ) : optimiser la gestion du bus Serial

    Très astucieux, merci beaucoup !

    PS : tu as oublié de remettre "MyCounter" à 8 après incrémentation du FSR .. je dis ça pour ceux qui en auront besoin peut-être.

  5. A voir en vidéo sur Futura
  6. #5
    invitef86a6203

    Re : Assembleur ( PIC ) : optimiser la gestion du bus Serial

    exact !
    mais heureusement tu as corrigé et compris .

    bonne prog !

  7. #6
    invitef86a6203

    Re : Assembleur ( PIC ) : optimiser la gestion du bus Serial

    corrigé !

    Code:
    Movlw serial_data ; adresse de serial_data
    movwf FSR
    
    movlw 4 ; 4 caractères
    movwf MyCharCounter 
    
    MyloopChar
      Movlw 8
      movwf Mycounter
      Myloop
        BTFSC INDF, 0
        BSF SDat
        BSF SClk
        BCF SClk
        BCF SDat
        rrf INDF,f
        decfsz MyCounter
      goto myloop
    
     incf FSR,f ; caractète suivant
     decfsz MyCharCounter
    goto MyloopChar

Discussions similaires

  1. PIC assembleur et gestion de mots de 16 bits
    Par invite427c7eae dans le forum Électronique
    Réponses: 10
    Dernier message: 07/10/2009, 06h53
  2. Gestion d'un bus Can par microcontroleur
    Par invite69ae94cb dans le forum Électronique
    Réponses: 2
    Dernier message: 17/10/2007, 17h14
  3. Gestion des bus automatisée
    Par invite4c0fca20 dans le forum Technologies
    Réponses: 1
    Dernier message: 02/06/2007, 14h53
  4. Programmation assembleur sur PIC
    Par inviteebefde8d dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2007, 10h38
  5. Gestion bus PCI sous XP
    Par invited28d76b4 dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 28/05/2004, 20h08
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...