Re: AT89C51RD2 & Proteus & XDATA
Я давно обнаружил проблему с обращением к внутренней памяти, именуемой XDATA через регистры косвенной адресации R0 и R1. Но я не мог понять причину. Обошел проблему используя регистр DPTR. Сегодня снова столкнулся с этой проблемой и понял причину. Оказывается MCS8051.DLL, при обращении к внутренней памяти через @R0(@R1), добавляет старший байт к адресу из порта P2. Такого быть не должно. В железе такого нет. Может какое то свойство модели устраняет этот баг? Прилагаю проект (версия 8.6 SP2). В нем записываем XRAM c 0 по 0ffh. Но, поскольку в P2 записана единица, попадаем в 100h-1ffh (показано на скриншоте).
__________________
То, что мы знаем,- ограничено, а что не знаем - бесконечно.
|