\prog:Pict676e|Ecrit (10 ms) relit l'EEPROM d'un 16F676 et compare ; LedOn si ok ; .Proc 16F870 .Ref 16F676 .Macro Bank0 Clr Status:#RP0 .endmacro .Macro Bank1 Set Status:#RP0 .endmacro \var;Ports| \b;PortA bS1 = 0 DirA = 2'00000 \var; | .Loc DebVar Data: .16 1 Adr = 0 Motif = 16'53 \prog;Programme| .Loc 0 Start: Call Init Move #Adr,W Bank1 Move W,EEAdr Bank0 Move #Motif,W Move W,Data Bank1 Move W,EEData Bank0 Call EeWrite Call EERead Xor Data,W Move #0,W Skip,EQ ; allume si = Move #-1,W Move W,PortA Jump APC \prog;XeeP676R.asi|030731 Ecriture en EEprom 16F676/675 \rout:WrEeprom| Ecriture 1 byte dans l'EEPROM \in;EEADR-bank1 adresse 6 bits EEDATA-bank1 data 8 bit \mod;W EeWrite: Bank1 Set EeCon1:#WrEn ; mise à 1 de write Enable Move #16'55,W Move W,EeCon2 Move #16'AA,W ; écritures préliminaires de sécurité Move W,EeCon2 Set EeCon1:#WR w$: TestSkip,BC EeCon1:#WR ; Test si la écriture est términé Jump w$ Clr EeCon1:#WrEn Bank0 Ret \rout:EERead| Lecture 1 byte depuis l'EEPROM \in:EEAdr Adrese 0..63 \out; W et EEDATA-bank1 Data lu \mod: - EERead: Bank1 Set EeCon1:#RD ; mode lecture Move EeData,W Bank0 Ret Init: Clr PortA Move #16'07,W ; Déconnecte les comparateurs Move W,CmCon Set Status:#RP0 Clr AnSel ; Déconnecte le A/D Call 16'3FF Move W,OscCal ; Corrige la fréquence Clr Status:#RP0 Move #16'0,W ; out Move W,TrisA Move #16'0,W Move W,TrisC ; out Ret .Align 16'8 .16 "P","i","c","t","6","7","6","e"," " .Fill.16 FinProg+1-APC,-1 .Loc 16'2007 .16 16'3F94 ; Configuration .End