ABCelectronique : portail d'information dans le domaine de l'électronique
Recherche sur le site
Circuits et composants Guide d'achat Emplois Resources externe Forum de discussion Annonces Divers
Connexion | Datasheet | Equiv.
Nouv. | Cat. | Boitiers | Broches
Audio-Vidéo | Téléphonie
Informatique
Offres | Ajout
CVs | Ajout
Cours | Montages | Logiciels
Sociétés | Livres | Ajout lien
Electronique | Informatique
Dépannage | Hors Elec.
Liste annonces
Ajouter annonce
Actualités | Barre d'outils
Connecteurs | Contact
  Home » Diverses rubriques » Archive forum sujets  
 
     
   Acces eeprom sur 16F876  
Bonjour à tous, je voudrai ecrire et lire quelques données dans l'eeprom
interne d'un pic 16f876, malgré de nombreux essais avec le datasheet
constructeur j'ai quelques soucis .Voici un bout de code, je me suis fait 2
macros avec passage de parametre. Pourriez-vous me dire si vous voyer une
erreur, ou si vous avez déjà un bout de code tout prêt qui fonctionne. Merci
beaucoup pour votre aide

org 0x2100 ; adresse début zone eeprom
DE 0x32 ; valeur de recharge du compteur

;*********************************************************************
; MACRO pour l'eeprom
*
;*********************************************************************
; l'adresse eeprom à lire 'est passée en paramètre

READEE macro adeeprom ; macro avec paramètre
bsf STATUS , RP1
bcf STATUS , RP0 ; on passe en bank2
movlw adeeprom ; charger adresse eeprom
movwf EEADR ; adresse à lire dans registre EEADR
bsf STATUS , RP0 ; passer en bank3
bcf EECON1 , EEPGD
bsf EECON1 , RD ; lancer la lecture EEPROM
bsf EECON1 , EEPGD
bcf STATUS , RP0 ; repasser en bank2
movf EEDATA , W ; charger valeur lue dans W
bcf STATUS , RP1 ; passer en bank0
endm ; fin de la macro

WRITEE macro addwrite ; la donnée se trouve dans W
bsf STATUS , RP1
bcf STATUS , RP0 ; on passe en bank2
btfsc EECON1 , WR ; teste si l'ecriture précédente est terminée
goto $-1
movwf EEDATA ; placer data dans registre
movlw addwrite ; charger adresse d'écriture
movwf EEADR ; placer adresse dans registre
bsf STATUS , RP0 ; passer en bank3
bcf EECON1 , EEPGD ; memoire data
bsf EECON1 , WREN ; autoriser accès écriture
bcf INTCON , GIE ; arrete les interruptions
movlw 0x55 ; charger 0x55
movwf EECON2 ; envoyer commande
movlw 0xAA ; charger 0xAA
movwf EECON2 ; envoyer commande
bsf EECON1 , WR ; lancer cycle d'écriture
bcf EECON1 , WREN ; verrouiller prochaine écriture
bsf INTCON , GIE ; réautoriser interruptions
bcf STATUS , RP1
bcf STATUS , RP0 ; repasser en banque0
bcf EECON1 , EEPGD ; memoire programme
endm
;-----------------------------------------------------------
;fin des macros pour l'eeprom
;-----------------------------------------------------------






Numéro de l'article: 73991   |  De: Jojo   |  Date: 2002-04-19 13:13:21
   Re: Acces eeprom sur 16F876  
En voila qui fonctionne générer par le PicBasic
http://perso.wanadoo.fr/pat.deaubonne/pic/
http://perso.wanadoo.fr/pat.deaubonne/DOWNLOAD/CoursPicbasic/

exemple de prog basic
================================================
device 16f876
Dim a,b
b=1
a = ReadEeprom( 1 ) ' lit une valeur déja sauver à l'adresse
1 --------
a = a +1 ' incrémente la valeur
WriteEEprom( A,b ) ' sauver cette valeur à l'adresse 1 --------
==================================================

les fonctions read et Write pour le 876

;-------- WriteEEprom( A,b ) ' sauver cette valeur à l'adresse
1 --------
bnk0
movf ATMP,W
bsf STATUS,RP1 ; bank 2
movwf EEDATA
bcf STATUS,RP1 ; bank 0
movf BTMP,W
bsf STATUS,RP1 ; bank 2
movwf EEADR
bsf STATUS,RP0 ; bank 3
bsf STATUS, RP0
bcf EECON1,EEPGD
bsf EECON1,WREN
bcf INTCON,GIE
movlw 55H
movwf EECON2
movlw 0AAH
movwf EECON2
bsf EECON1,WR
_wee1:
btfsc EECON1,WR
goto _wee1
bcf INTCON,EEIF
bcf EECON1,WREN
bnk0
bsf INTCON,GIE
;-------- a = ReadEeprom( 1 ) ' lit une valeur déja sauver à l'adresse
1 --------
movlw 1
; bank2
bcf STATUS, RP0
bsf STATUS, RP1
movwf EEADR
; bank3
bsf STATUS, RP0
bcf EECON1,EEPGD
bsf EECON1,RD
bcf STATUS,RP0
movf EEDATA,w
; bank0
bcf STATUS, RP0
bcf STATUS, RP1
movwf ATMP



pat




2
Merci




Numéro de l'article: 74059   |  De: pat.deaubonne   |  Date: 2002-04-20 08:52:22