Salut
Il me rend dingue ce prof, chaque il me répète que ce n’est pas bon, demain
Il va tuer, si je me suis trompé.
Il faut écrire 40 octets dans une eeprom externe, mais les données sont
Contenu dans un fichier temporaire.
Merci
Soit vous envoyez l’adresse de départ suivie par un maximum de 64 octets, qui seront
écris séquentiellement dans la mémoire.
lecture/écriture
ecrire_ADDR equ b'10100000' ; addresse
lire_ADDR equ b'10100001' ; addresse
addresse 0x5AA5
lecdata:40 ; contient les donnees a ecrire soit 40 octets
Ecrie_Page
bcf STATUS,RP1 ; passer banque 1
bcf STATUS,RP0 ; passer banque 0
movlw .40 ; on met 40 dans le registre W
movwf octet_compt ; on met 40 dans le compteur
call BSTART ; lancer le start-condition
bcf STATUS,RP0 ; passer banque 0
movlw ecrire_ADDR ; on met B'10100000' dans le registre W
movwf emet_buffer ; on met B'10100000'dans le buffer
call envoie ; envoie
bcf STATUS,RP0 ; passer banque 0
movlw 0x5A ; on met 0x5A dans le registre W (0x5AA5)
movwf emet_buffer ; on met 0x5A dans le buffer
call envoie ; envoie
bcf STATUS,RP0 ; passer banque 0
movlw 0xA5 ; on met 0xA5 dans le registre W
movwf emet_buffer ; on met 0xA5 dans le buffer
call envoie ; envoie
bcf STATUS,RP0 ; passer banque 0
envoie_octet ; boucle 40 octets
MOVLW lecdata ; contient les donnees a ecrire
MOVWF FSR ; FSR pointe maintenant sur l'adresse
CLRF INDF ; on efface l'adresse pointée par FSR
INCF FSR ; FSR pointe maintenant sur l'adresse suivante
movf octet_compt,W ; on met octet_compt dans W
movwf emet_buffer ; on met W dans le buffer
call envoie ; envoie
bcf STATUS,RP0 ; passer banque 0
decfsz octet_compt,F ; décrémenter compteur d'octets
goto envoie_octet ; pas dernier, suivant
call BSTOP ; fin transaction
call octet ; dernier, on recommence
-----