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. Publicité
  3. #2
    freepicbasic

    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
    A+, pat

  4. #3
    freepicbasic

    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
    A+, pat

  5. #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.

  6. #5
    freepicbasic

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

    exact !
    mais heureusement tu as corrigé et compris .

    bonne prog !
    A+, pat

  7. A voir en vidéo sur Futura
  8. #6
    freepicbasic

    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
    A+, pat

  9. Publicité

Discussions similaires

  1. PIC assembleur et gestion de mots de 16 bits
    Par Nico8583 dans le forum Électronique
    Réponses: 10
    Dernier message: 07/10/2009, 05h53
  2. Gestion d'un bus Can par microcontroleur
    Par belenos63 dans le forum Électronique
    Réponses: 2
    Dernier message: 17/10/2007, 16h14
  3. Gestion des bus automatisée
    Par zaphyr dans le forum Technologies
    Réponses: 1
    Dernier message: 02/06/2007, 13h53
  4. Programmation assembleur sur PIC
    Par Makim dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2007, 09h38
  5. Gestion bus PCI sous XP
    Par lo.ic dans le forum Matériel - Hardware
    Réponses: 1
    Dernier message: 28/05/2004, 19h08