PIC 16F Flash paměti psaní chybu ... SOS

S

sivakumarmhn

Guest
Ahoj!

I am using pic16f873a pro malý projekt acess kontrolu.Ids každé osoby mají být uloženy ve flash paměti pic.Ale já mám problém s mým kódem, paměti, jakmile aktualizace není přepsán, pokud je funkce nazvaná znovu se stejnou adresu ..by mi někdo navrhnout jiný kód

můj kód vypadá takto:

void flash_write (int adresa, char data)
(

unsigned char offset;
unsigned char buffer [4] = (0,0,0,0), / / vytvoří 4 slovo bloku dat
int dest_addr = adresa;
char i = 0;offset = (unsigned char) (adresa & 0x03);
dest_addr & = 0xfffc; / / inicializovat dest_addr bodu na první adresu v bloku 4 slovo
EEADR = (unsigned char) (dest_addr & 0xFF); / / Proud na slovo od místa určení
EEADRH = (unsigned char) ((dest_addr>> 8) & 0xFF);
for (i = 0; i <= BLOCK_LAST_BYTE; i )
(

Wren = 0;
EEPGD = 1; / / přečíst a zachránit celý blok
RD = 1;
asm ( "NOP");
asm ( "NOP");
buffer = (EEDATA);
RD = 0;
EEADR ;

)

/ / DelayMs (20);
EEADR = (unsigned char) (dest_addr & 0xFF); / / Proud na slovo od místa určení
EEADRH = (unsigned char) ((dest_addr>> 8) & 0xFF);
buffer [offset] = data;for (i = 0; i <= BLOCK_LAST_BYTE; i )
(

EEDATA = buffer ;
EEDATH = 0;
EEPGD = 1;
Wren = 1;
/ / GIE =;
EECON2 = 0x55;
EECON2 = 0xAA;
WR = 1;
asm ( "NOP");
asm ( "NOP");
asm ( "NOP");
Wren = 0;
WR = 0;
/ / GIE =
EEADR ;)

while (WRERR == 1) (;)
while (EEIF == 1) (;))

 
Používáte-li systém Hi-Tech překladač, podívejte se do include file 'pic.h'
Najdete protoypes funkcí a maker pro čtení a zápis FLASH a EEPROM, které můžete volat.
Myslím, že budete muset vymazat flash Před zápisem na to?

 

Welcome to EDABoard.com

Sponsor

Back
Top