Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с объявлением большого массива
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
sergey sva
Нужен массив unsigned char [1024]; Если объявляю такой массив выходит ошибка
LSD.C(319): error C249: 'DATA': SEGMENT TOO LARGE
Устанавливаю в опциях memory model Large ошибки нет , но после загрузки программы в контроллер
он не работает, убираю объявление этой переменной (unsigned char [1024]; ) все работает, что за мистика
не пойму?
Палыч
Контроллеры 51-ой серии имеют на борту 256 байт ОЗУ. Некоторые, имеют еще несколько килобайт памяти, которая подменяет собой "внешнюю", но её обычно необходимо включать, взводя в коком-то регистре бит (зависит от контроллера). Кроме того, необходимо указать транслятору, что массив расположен не в DATA, а в XDATA (т.е. во "внешней" памяти, адресация к которой через DPTR).
sergey sva
Цитата(Палыч @ Nov 12 2007, 18:27) *
Контроллеры 51-ой серии имеют на борту 256 байт ОЗУ. Некоторые, имеют еще несколько килобайт памяти, которая подменяет собой "внешнюю", но её обычно необходимо включать, взводя в коком-то регистре бит (зависит от контроллера). Кроме того, необходимо указать транслятору, что массив расположен не в DATA, а в XDATA (т.е. во "внешней" памяти, адресация к которой через DPTR).


У меня at89c51ed2 в нем, в доке написано 1792 bytes. я сейчас только начинаю работать с этим контроллером поэтому еще нет большого опыта работы с ним. Если можно подскажите как настроить?
Палыч
Похоже, что "по умолчанию" память подключена, но размером 768 байт. К проекту следует подключить файл "Startup.a51"(входит в комплект поставки), в нем после метки STARTUP1 следует занести в AUXR значение 10h(двоичное 00010000). Следует выбрать модель памяти "Large" и при объявлении массива приписать спецификатор "xdata".
sergey sva
Цитата(Палыч @ Nov 12 2007, 20:13) *
Похоже, что "по умолчанию" память подключена, но размером 768 байт. К проекту следует подключить файл "Startup.a51"(входит в комплект поставки), в нем после метки STARTUP1 следует занести в AUXR значение 10h(двоичное 00010000). Следует выбрать модель памяти "Large" и при объявлении массива приписать спецификатор "xdata".



В кейле есть еще страница стартап, по видему настройки, в них нужно что изменять?
Pat
Цитата(sergey sva @ Nov 12 2007, 20:08) *
В кейле есть еще страница стартап, по видему настройки, в них нужно что изменять?


Говорят же вот так объявите
xdata unsigned char xxxx[1024];
sergey sva
Цитата(Палыч @ Nov 12 2007, 20:13) *
Похоже, что "по умолчанию" память подключена, но размером 768 байт. К проекту следует подключить файл "Startup.a51"(входит в комплект поставки), в нем после метки STARTUP1 следует занести в AUXR значение 10h(двоичное 00010000). Следует выбрать модель памяти "Large" и при объявлении массива приписать спецификатор "xdata".

Благодарю , почти разобрался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.