Voici mon programme, certe très simple:
LIST p=16F877A ; Définition de processeur
#include <p16F877A.inc> ; fichier include
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
CBLOCK 0x20
addwrite:1
ENDC
REEPROM macro ; lire eeprom(adresse & résultat en w)
clrwdt ; reset watchdog
bcf STATUS,RP0 ; passer en banque2
bsf STATUS,RP1
movwf EEADR ; pointer sur adresse eeprom
bsf STATUS,RP0 ; passer en banque3
bcf EECON1,EEPGD ; pointer sur eeprom
bsf EECON1,RD ; ordre de lecture
bcf STATUS,RP0 ; passer en banque2
movf EEDATA,w ; charger valeur lue
bcf STATUS,RP1 ; passer en banque0
endm
WEEPROM macro addwrite ; la donnée se trouve dans W
LOCAL loop
bcf STATUS,RP0 ; passer en banque2
bsf STATUS,RP1
movwf EEDATA ; placer data dans registre
movlw addwrite ; charger adresse d'écriture
movwf EEADR ; placer dans registre
bsf STATUS,RP0 ; passer en banque3
bcf EECON1 , EEPGD ; pointer sur mémoire data
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
clrwdt ; effacer watchdog
btfsc EECON1 , WR ; tester si écriture terminée
goto loop ; non, attendre
bcf EECON1 , WREN ; verrouiller prochaine écriture
bcf STATUS , RP0 ; passer en banque0
bcf STATUS , RP1
endm
goto start
start
movlw 0x02
WEEPROM 0x01
fin
goto fin
END
Ce programme est censé ecrire 02 a l'adresse 1201 dans l'EEPROM. Les macros viennent du cours de Bigonoff, mais j'ai cherché partout il n'explique pas le passage d'argument a une macro.
Ce que fait le programme, on s'en fout, je veux juste comprendre comment utilisé la macro "ecriture", si quequ'un a l'aimabilité de m'expliquer.
Merci a tous pour votre aide.
-----