Question sur la prog pour un pic (temporisation)

Question sur la prog pour un pic (temporisation) - ASM - Programmation

Marsh Posté le 04-02-2006 à 18:28:53    

Bonjour ,
je débute dans le pic (16f84), en ce moment je suis bloquer sur un programme qui doit compter sur afficheur 7 segments.J'ai commencer par 3 chiffres.voila le programme:
list    p=16F84
                list    c=132
PORTB  EQU 6
TRISB   EQU 6
STATUS        EQU 3
temp1   equ     1
temp    equ     1
      ORG     0
             BSF     STATUS,5
      CLRF    TRISB
      BCF     STATUS,5
Temp1  movlw   0x10
     MOVWF temp  
boucle         DECFSZ temp,f
    GOTO boucle    
    RETURN  
Principal MOVLW d'102'
    MOVWF PORTB
    call temp1
    MOVLW d'109'
    MOVWF PORTB
    call    temp1
    MOVLW d'125'
    MOVWF PORTB
            Sleep
    END
je pense que c la temporisation qui doit etre mauvaise.il m'affiche la dernier valeur tout suite ,même en modifiant la valeur de temp.aidez moi please  :cry:  
 
merci d'avance,
aurevoir

Reply

Marsh Posté le 04-02-2006 à 18:28:53   

Reply

Marsh Posté le 19-02-2006 à 10:27:19    

En effet, ta boucle est beaucoup trop courte :D
 
le DECFSZ prend 1 cycle d'horloge
le GOTO prend 2 cycles d'horloge
 
tu fais ta boucle de temporisation 0x10 fois, c'est-à-dire 16 fois, elle prend donc 16x3=48 cycles
 
Si ton PIC tourne à 4 MHz, il me semble qu'il faut 4 oscillations pour un cycle horloge, donc qu'un cycle d'horloge vaut 1/(4 MHz / 4) = 1/1000000 = 1µs (microseconde)
 
il faut donc imbriquer des boucles... du style


    MOVLW 0x30
    MOVWF compteur1
boucle1
    MOVLW 0xFF
    MOVLW compteur2
boucle2
    MOVLW 0xFF
    MOVWF compteur3
boucle3
    DECFSZ compteur3, f
    GOTO boucle3
 
    DECFSZ compteur2, f
    GOTO boucle2
 
    DECFSZ compteur1, f
    GOTO boucle1


ça fait 256x256x48 tours de boucles, en prenant grosso modo 3 cycles d'horloge par tour de boucle (en fait c'est un peu plus, je te laisse faire le calcul exact), à 4MHz ça doit faire une tempo d'à peu près 1 seconde
 
 
par contre je comprends pas le "temp1   equ     1 " :??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed