probléme eeprom 16F628
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

probléme eeprom 16F628



  1. #1
    etronics

    Bonjour

    et bien voila j' ai voulu tester la programmation de l' eeprom du 16F628 et j' ai fait ce petit programme ( si joint plus bas ) mais il ne fonctionne qu' as moitier , j' arrive bien à lire la valeur contenu à l' adresse 02 mais impossible de changer cette valeur ??
    le schèma est des plus simple , oscillateur rc interne , RB0 sortie vers une led via une résistance et le - , et un bouton poussoir sur RA0 avec résistance en pull up sur le + ....

    LIST p=16F628 ; Définition de processeur
    #include <p16F628.inc> ; fichier include

    __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

    ;***************************** ***************
    ; ASSIGNATIONS SYSTEME *
    ;***************************** ****************

    ; REGISTRE OPTION_REG (configuration)
    ; -----------------------------------
    OPTIONVAL EQU B'00000000'


    ; REGISTRE INTCON (contrôle interruptions standard)
    ; -------------------------------------------------
    INTCONVAL EQU B'00000000'

    ; REGISTRE PIE1 (contrôle interruptions périphériques)
    ; ----------------------------------------------------
    PIE1VAL EQU B'00000000'

    ; REGISTRE CMCON (COMPARATEURS)
    ; ------------------------------------
    CMCONVAL EQU B'00000111'

    ; DIRECTION DES PORTS I/O
    ; -----------------------

    DIRPORTA EQU B'00000001' ; Direction PORTA (1=entrée)
    DIRPORTB EQU B'00000000' ; Direction PORTB

    ;***************************** ******************
    ; MACRO *
    ;***************************** ******************

    ; Changement de banques
    ; ----------------------

    BANK0 macro ; passer en banque0
    bcf STATUS,RP0
    bcf STATUS,RP1
    endm

    BANK1 macro ; passer en banque1
    bsf STATUS,RP0
    bcf STATUS,RP1
    endm

    BANK2 macro ; passer en banque2
    bcf STATUS,RP0
    bsf STATUS,RP1
    endm

    BANK3 macro ; passer en banque3
    bsf STATUS,RP0
    bsf STATUS,RP1
    endm



    ; opérations en mémoire eeprom
    ; -----------------------------

    REEPROM macro adeeprom ; lire eeprom (adresse dans adeeprom & résultat en w)
    movlw adeeprom ; charger adresse eeprom (passage de la valeur en litteral)
    clrwdt ; reset watchdog
    BANK1 ; passer en banque1
    movwf EEADR ; pointer sur adresse eeprom
    bsf EECON1,RD ; ordre de lecture
    movf EEDATA,w ; charger valeur lue
    BANK0 ; passer en banque0
    endm


    WEEPROM macro addwrite ; la donnée se trouve dans W
    LOCAL loop
    BANK1 ; passer en banque1
    movwf EEDATA ; placer data dans registre
    movlw addwrite ; charger adresse d'écriture (passage de la valeur en litteral)
    movwf EEADR ; placer dans registre
    bsf EECON1 , WREN ; autoriser accès écriture
    bcf INTCON , GIE ; interdire interruptions
    movlw 0x55 ; charger 0x55
    movwf EECON2 ; envoyer commande
    movlw 0xAA ; charger 0xAA
    movwf EECON2 ; envoyer commande
    bsf EECON1 , WR ; lancer cycle d'écriture
    bsf INTCON , GIE ; réautoriser interruptions
    loop
    btfsc EECON1 , WR ; tester si écriture terminée
    goto loop ; non, attendre
    bcf EECON1 , WREN ; verrouiller prochaine écriture
    BANK0 ; passer en banque0
    endm

    ;***************************** *********
    ; PROGRAMME PRINCIPAL *
    ;***************************** **********

    START
    REEPROM 0x02 ; lire emplacement eeprom 0x02

    movwf VIT ; placer dans VIT

    DEBUT btfsc PORTA, 0 ; Test de l'état de SW1 reglage
    goto BOUCLE ; si ouvert aller boucle
    goto REGLAGE ; si appuie aller vers reglage

    BOUCLE movlw b'00000001' ; allume led sur RB0
    movwf PORTB
    movf VIT,w ; tempo en fonction de VIT
    call Delay
    movlw b'00000000' ; eteind led sur RB0
    movwf PORTB
    movf VIT,w ; tempo en fonction de VIT
    call Delay
    goto DEBUT ; retour DEBUT

    REGLAGE movlw 0x0a
    WEEPROM 0x02 ; écrire à l'adresse 0x02

    movlw 0x05 ; tempo de 500ms
    call Delay
    goto DEBUT


    ;***************************** ***************************
    ; DECLARATIONS DE LA ZONE EEPROM *
    ;***************************** ***************************
    org 0x2100 ; adresse début zone eeprom
    DE 0x00
    DE 0x00
    DE 0x01


    END



    merci pour vos lumiéres

    @+++ dan

    -----

  2. #2
    etronics

    Salut

    dommage la mise en forme du texte ....mais bon , ce programme doit faire clignotter une leds avec un fréquence de 01 soit 100 ms puis si l' ont appuie sur sw1 ( RA0 ) ont charge 0a dans l' eeprom et la frequence sera de 1s ...

    @+++ dan

  3. #3
    etronics

    Salut

    j' ai mis le fichier asm complet et le schèma sur htt://etronics.free.fr/images/forum/eeprom.zip

    @+++ dan

  4. #4
    etronics

    Citation Envoyé par etronics
    Salut

    j' ai mis le fichier asm complet et le schèma sur

    http://etronics.free.fr/images/forum/eeprom.zip

    @+++ dan

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

    Salut

    je me suis remis sur mon programme et j' ai comparé avec d' autres version de base m16f94.asm et en fait mes erreurs était dans la redaction des valeurs , il faut en fait mettre d'xx' pour les valeur decimal et h'xx' pour hexa , et donc maintenant le programme fonctionne ..

    @+++ dan

Discussions similaires

  1. problème de chargement de programme 16f628
    Par invitec0da5e32 dans le forum Électronique
    Réponses: 1
    Dernier message: 19/09/2007, 00h38
  2. probleme lecture mémoire EEPROM M952256
    Par invite0f39f32f dans le forum Électronique
    Réponses: 1
    Dernier message: 23/07/2007, 15h17
  3. Problème avec 16F628
    Par maho dans le forum Électronique
    Réponses: 5
    Dernier message: 04/03/2005, 12h02
  4. 16f628 et LVP
    Par maho dans le forum Électronique
    Réponses: 7
    Dernier message: 02/02/2005, 05h58
  5. pic 16F628
    Par invitea78e17c9 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/03/2004, 21h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.