Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT89S52 RAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
yturw
AT89S52 по сравнению с AT89S51 имеет увеличенный вдвое объём ОЗУ. AT89S52 работает с адресами (20h-7fh) всё шикарно вопросов нет,
а вот каким образом получить доступ к дополнительным 128 байтам памяти?

Вот всё что в даташите про RAM написано:
6.2 Data Memory
The AT89S52 implements 256 bytes of on-chip RAM. The upper 128 bytes occupy a parallel
address space to the Special Function Registers. This means that the upper 128 bytes have the
same addresses as the SFR space but are physically separate from SFR space.
When an instruction accesses an internal location above address 7FH, the address mode used
in the instruction specifies whether the CPU accesses the upper 128 bytes of RAM or the SFR
space. Instructions which use direct addressing access the SFR space.
For example, the following direct addressing instruction accesses the SFR at location 0A0H
(which is P2).
MOV 0A0H, #data
Instructions that use indirect addressing accessthe upper 128 bytes of RAM. For example, the
following indirect addressing instruction, where R0 contains 0A0H, accesses the data byte at
address 0A0H, rather than P2 (whose address is 0A0H).
MOV @R0, #data
Note that stack operations are examples of indirect addressing, so the upper 128 bytes of data
RAM are available as stack space.
Палыч
Цитата(yturw @ Sep 16 2012, 14:28) *
каким образом получить доступ к дополнительным 128 байтам памяти?

Трудности с переводом? Там ясно написано: используя косвенную адресацию.
По этой причине в верхней половине ОЗУ удобно размещать стек, буфера, массивы - всё то, к элементам которого обращение осуществляется через указатель.
yturw
Цитата
Трудности с переводом?

И да и нет, вобщем спасибо за внесённую ясность.
Что такое стек представляю, а каким образом разместить его в верхней половине? Ассемблер TASM.
Палыч
Цитата(yturw @ Sep 16 2012, 18:53) *
каким образом разместить его в верхней половине?

Указателю стека SP присвоить значение адреса ОЗУ из верхней половины. Т.е. в регистр специальных функций SP поместить значение с единицей в старшем разряде.
yturw
Теперь всё ясно. Благодарю за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.