<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<font face="Times New Roman">Dobrý večer,<br>
<br>
poprvé se snažím něco dělat v 8051 (Silabs) s pointrem a asi jsem
to chybně zapsal, nevím co s tím. Program jsem krokoval, díval
jsem se co to dělá v asm a vypadá to že se přepíše návratová
adresa, na konci funkce to skáče na adresu 0000.<br>
<br>
U tohoto procesoru C8051F531 je posledních 512 bajtů code paměti
přístupných jako XDATA (</font><font face="Times New Roman"><font
face="Times New Roman">jako EEPROM pro konstanty) </font>a má
to být přístupné přes pointer. Může mi někdo poradit co tam dělám
špatně? <br>
<br>
</font><font face="Times New Roman"><font face="Times New Roman"><font
face="Times New Roman">void Ctenikonst(void)<br>
{<br>
byte i;<br>
<br>
int xdata *data Pread=0x1F00; // initialize FLASH write
pointer od 1F00<br>
// tady
se správně do R6, R7 vložila adresa 1F00<br>
i=1;<br>
do <br>
{<br>
Kortepl[i]=*(Pread+i); // tady překladač dělá
nějakou hrůzu, vypsal jsem si to a je to na celou stránku
<br>
// moc
to nechápu a je tam i MUL AB. Tak jestli to místo pointeru
nepochopilo <br>
// jako
násobení. Taky to zmrší návratovou adresu a skáče to na 0000.
Má to <br>
//
zapsat do Kortepl[i] obsah z té adresy 1F00+i <br>
i++; <br>
} <br>
while(i-4);<br>
}<br>
</font></font> <br>
</font>
</body>
</html>