PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Adressierung des freien RAM-Speichers bei uC



Import-Script
14.01.2002, 14:11
Hallo, <BR> <BR>wie werden die in den Atmel-uC&#39;s zur Verfuegung stehenden RAM-Speicher &#40;128 bzw. 256 byte&#41; adressiert? &#40;0x00h - 0x7Fh&#41; ??? <BR> <BR>Ist der Bereich direkt &#34;unter&#34; den SFR angeordnet?

Import-Script
14.01.2002, 14:30
Hi <BR> <BR>der Adressbereich &#34;unter&#34; den SFR&#39;s ist direkt ansprechbar. Allerdings befinden sich dort noch die 4 Registerb&auml;nke von 0x00 bis 0x1F und ein Bitadressierbarer Bereich mit 128Bit&#39;s von 0x20 bis 0x2F. Weitere 128Byte liegen bei den meisten MCS51ern &#34;neben&#34; den SFR&#39;s und k&ouml;nnen nur indirekt &uuml;ber @R0 und @R1 angesprochen werden. Beim Start zeigt der SP &uuml;brigens noch auf 0x07. Deshalb sollte dieser direkt nach dem Start auf 0x7F oder noch h&ouml;her gestellt werden. Dazu mu&szlig; aber das RAM &#34;neben&#34; des SFR&#39;s auch wirklich vorhanden sein. <BR> <BR>Matthias

Import-Script
14.01.2002, 14:51
Matthias: <BR> <BR>Danke fuer die prompte Antwort. Muss aber doch nochmal nachfragen: <BR> <BR>Wenn ich einen at89c2051 habe mit 128 Byte RAM, sind damit dann die Bereiche &#34;unter&#34; den SFR&#39;s gemeint und ich habe davon nur 80 Byte frei zur Verfuegung &#40;0x30h-0x7fh&#41;??? <BR> <BR>Oder sind damit die 128 Byte &#34;neben&#34; den SFR&#39;s gemeint, die nur indirekt ansprechbar sind? <BR> <BR>Thomas

Import-Script
14.01.2002, 18:08
Hi <BR> <BR>wenn da steht 128Byte dann sind die 128Byte unter den SFR&#39;s gemeint. Und von denen hast du 120 &#40;0x08-0x7F&#41; zur freien Verf&uuml;gung wenn du weder Stack &#40;also keine calls und pushs&#41; noch andere Registerb&auml;nke als Bank0 und keine Bitvariablen benutzt. Brauchst du Stack und Bitvariablen dann wirds entsprechend weniger. Wenn der SP bei 0x07 bleibt stehen dir die Registerb&auml;nke 1-3 auch nicht zur Verf&uuml;gung und wenn du den Stack zu intensiv nutzt &uuml;berschreibt er auch den Adressraum nach den Registerb&auml;nken. Hier ist also Vorsicht angebracht. Zugreifen kannst du allerdings auf alle Bytes von 0x00 bis 0x7F ganz normal per Adresse. <BR> <BR>Matthias