Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Меня интересовала только базовая память. До 128 байт. И, повторю, Keil-51 компилил правильно, х...{+}(+)
Отправлено
Novichok (109.232.106.36) 12 июля 2010, г. 15:53
В ответ на:
8051 серьезный дядя. У него что, внешней шины для подключения RAM не предусмотрено? Или вы где-то увидели намек на крошечную модель памяти? Кроме того, у указателей-51 часто длина заведомо больше чем указываемая область потому что там теги области указываемой памяти pdata, xdata, idata, data. Но не в этом дело. Нормальный компилятор как Иар должен дать еррор на такую вопиющую. Error[Pe144]: a value of type "unsigned char *" cannot be used to initialize an entity of type "unsigned int" отправлено
VasilyS 12 июля 2010, г. 15:35
Текст заголовка сообщения полностью: Меня интересовала только базовая память. До 128 байт. И, повторю, Keil-51 компилил правильно, хотя и слабо ругался.
вот кусок реальной программы
idata unsigned char pointer;
data unsigned int kalibrovR, kalibrovI;
...
pointer=(unsigned char *)&kalibrovR+1;
readwriteeeprom( 2, pointer, 2, 0, 0);
pointer=(unsigned char *)&kalibrovI+1;
readwriteeeprom( 4, pointer, 2, 0, 0);
...
readwriteeeprom - ассемблерные процедуры связи с 24LC08B.
И с небольшой руганью Keil-51 все правильно компилил. Теперь то понятно, что бы он не ругался надо было вот так делать
pointer=(unsigned char)(unsigned char *)&kalibrovI+1; Но ведь работало!
Составить ответ | Вернуться на конференцию
Ответы