Перейти к содержанию
    

AT89S52 RAM

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

каким образом получить доступ к дополнительным 128 байтам памяти?

Трудности с переводом? Там ясно написано: используя косвенную адресацию.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Трудности с переводом?

И да и нет, вобщем спасибо за внесённую ясность.

Что такое стек представляю, а каким образом разместить его в верхней половине? Ассемблер TASM.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

каким образом разместить его в верхней половине?

Указателю стека SP присвоить значение адреса ОЗУ из верхней половины. Т.е. в регистр специальных функций SP поместить значение с единицей в старшем разряде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...