Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

programme assembleur



  1. #1
    DID2000

    programme assembleur


    ------

    boujour
    je réalise un programme assembleur pour le pic 16F84 d'une carte gold.
    Je réalise un programme permettant simplement de faire clignoter une led.
    Mais lors de mes essais sur plaquette lab, la led ne clignote pas, elle reste éteinte.
    Pouvez vous me dire si vous voyez une erreur dans mon programme.
    Pour info, j'utilise un circuit RC pour réaliser l'oscillation sur la patte RB6.
    Ma led est branchée entre mon unique patte de sortie disponible,RB7, et la masse.
    MCLR est relié au +.



    voici mon programme:
    ;***************************** ****************************** ***************
    ; testled1.asm
    ;
    ;***************************** ****************************** ***************

    liST P=16F84;f=inhx8m

    _CP_OFF equ H'3FFF' ; Code protect hors service
    _PWRTE_ON equ H'3FFF' ; Power on timer en service
    _Wdt_OFF equ H'3FFB' ; Watch dog timer hors service
    _XT_OSC equ H'3FFD' ; Crystal oscillator (quartz)
    __CONFIG _CP_OFF & _PWRTE_ON & _Wdt_OFF & _XT_OSC
    ; Combinaison des paramètres

    ;-----------------------------------------------------------------------
    ; Directives de configuration
    ;-----------------------------------------------------------------------

    count1 equ 0C ; Le premier compteur
    count2 equ 0D ; Le second
    portb equ 06 ; Registre de port B
    porta equ 05 ; Registre du port A
    status equ 03 ; Le registre status
    rp0 equ 05 ; Le bit 5 == sélection page de mémoire
    trisb equ 86H ; Reg. de réglage en entrée ou sortie
    ; du port B

    ;-----------------------------------------------------------------------
    ; Programme
    ;-----------------------------------------------------------------------

    org 0 ; origine
    clrf portb ; met toutes les sorties du port B à zéro
    bsf status,rp0 ; sél. page mémoire 1 pour accès à trisb
    clrf trisb ; reset trisb, port B est défini en sortie
    bcf status,rp0 ; sélection page mémoire 0

    ;-----------------------------------------------------------------------
    ; Code modifiable pour essais successifs
    ;-----------------------------------------------------------------------
    start
    bsf portb,7 ; Fixe à 1 le bit 7 du port B -> 5V sur broche 7
    call wait_sec ; Tempo LED allumée
    bcf portb,7 ; Fixe à 0 le bit 7 du port B -> 0V sur broche 7
    call wait_sec ; Tempo LED éteinte
    goto start

    ;-----------------------------------------------------------------------
    ; Sous programmes de temporisation
    ;-----------------------------------------------------------------------
    wait_min ; tempo 1 min
    call wait_sec_30
    call wait_sec_30
    return
    wait_sec_30 ; tempo 30 sec
    call wait_sec_10
    call wait_sec_10
    call wait_sec_10
    return
    wait_sec_10 ; tempo 10 sec
    call wait_sec_5
    call wait_sec_5
    return
    wait_sec_5 ; tempo 5 sec
    call wait_sec
    call wait_sec
    call wait_sec
    call wait_sec
    call wait_sec
    return
    wait_sec ; tempo 1 sec
    call wait1
    call wait1
    return
    wait1 ; 4 tempos élémentaires
    call wait0
    call wait0
    call wait0
    call wait0
    return
    wait0 ; Boucles réalisant une tempo élémentaire
    movlw .200 ; Charge count1 avec valeur décimale 200
    movwf count1
    d1 movlw .200 ; Charge count2 avec valeur décimale 200
    movwf count2
    d2 decfsz count2,1 ; décremente et saute ligne suiv. si zero
    goto d2 ; si différent de zero
    decfsz count1,1 ; décremente count1 si count2 == zero
    goto d1 ; boucle interne si count2 <> zero
    return

    end


    Merci d'avance pour vos réponses

    -----

  2. #2
    JPL
    Responsable des forums

    Re : programme assembleur

    Pour la suite je te suggère fortement de poster le programme en pièce attachée au message.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    umfred

    Re : programme assembleur

    Si tu regarde mieux ton programme tu as toi même trouvé la réponse
    Citation Envoyé par DID2000
    Pour info, j'utilise un circuit RC pour réaliser l'oscillation sur la patte RB6.
    Citation Envoyé par DID2000
    _XT_OSC equ H'3FFD' ; Crystal oscillator (quartz)

    Il faut utiliser la valeur qui correspond au RC_OSC (oscillateur RC) soit H'3FFF'.

    De plus, ton circuit oscillant servant d'horloge doit être sur OSC1 comme indiqué dans la datasheet du composant (PIC16F84 en page 23).

Discussions similaires

  1. help!!un programme C en assembleur (PIC16F877)
    Par solid_sneak06 dans le forum Électronique
    Réponses: 13
    Dernier message: 22/02/2010, 01h13
  2. programme en assembleur
    Par electroinfo dans le forum Électronique
    Réponses: 1
    Dernier message: 06/08/2007, 12h22
  3. compiler un programme assembleur avec le DOS
    Par pracede2005 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 05/09/2006, 11h47
  4. Assembleur
    Par vae- dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 18/02/2006, 13h21
  5. Programme en assembleur pour une modulation FSK
    Par Bretzel dans le forum Électronique
    Réponses: 0
    Dernier message: 02/02/2006, 09h00
Découvrez nos comparatifs produits sur l'informatique et les technologies.