assembler III



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Bound" <Info_at_nospam_nsc.pl>
Subject: assembler III
Date: Fri, 30 Nov 2001 16:57:25 +0100


Witam...
Otrzymalem odpowiedz ... ale nadal nie wiem jak to zrobic ........., wiec
pytanie do pana Andrzeja

w moim ukladzie pamiec flash jest bezposrednio podlaczona do 89c52 (a0-a15)
natomiast a16 a17 a18 (dla 29c040)
pobierane sa z p1 , dzieki za przeslanie fragmentu kodu w C ale nie bardzo
go rozumiem .. moze powiem Ci co wiem o
pamiciach flash ...

dla 29c010 jesli chodzi o programowanie pamiec podzielona jest na 1024
sektory po 128 bajtow
adresy sektorow podaje sie do a7-a15 a adresy bajtow w sektorach do a0-a6
wiec wydaje mi sie ze jesli bede chcial zaprogramowac np. 1 sektor pamieci
wychodze ze wzoru
0x80*sektor (1sektor=0x80, drugi 0x100...nastepny 0x180 itd)
petla programujaca juz poszczegolne bajty byla by taka:

sektor =1 (od 1 do 1024)
sektor = sektor*0x80
teraz petla
for adres= 0 to 127
inp sektor+adres , wartoscdozapisu (inp to pakie poke :)) )
next (zwieksz
wartosc adres o 1)

nie rozumiem dzialania tych lini:
#define FLASH ((char *)(0x010000)) ( co oznacz to 0x010000 (0x10) ???
tego tez nie rozumiem :

do
{ i=FLASH[adres]&0x40; czy &=and ? dlaczego z 0x40 ?
j=FLASH[adres]&0x40;
} while(i^j);

i co robi ten warunek ?