Вопрос к знатокам Си. Хочу читать и писать напрямую в память по адресу. Как сделать?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
vesna4
19 февраля 2004 г. 16:44
Составить ответ
|||
Конференция
|||
Архив
Ответы
*((unsigned char *)0x8000) = 0x18;
—
Elektronik
(19.02.2004 16:54,
пустое
)
действ часто делают так: volatile unsigned short * Timer0 = (unsigned short *)0xc00; ...
—
xc164
(19.02.2004 17:45,
пустое
)
операторы peek и poke смотри
—
Mikej
(19.02.2004 16:51,
пустое
)
Ответ: нет фиговый метод!
—
igor_q
(19.02.2004 16:52,
пустое
)
зато платформеннонезависимый
—
Mikej
(19.02.2004 16:59,
пустое
)
Ответ:не факт! в однокристалках есть внутреняя память и внешняя потом память может банковаться ... лучше через указатель потом тип данных может быть любым например структурой ...
—
igor_q
(19.02.2004 17:05,
пустое
)
в однокристалках эти операторы надо писать самому - алгоритм зато полностью переносимый получается. Независимо от типа памяти - хоть внешнюю последовательную еепромку вешай, хоть в комканал пихай - при переносе на другую платформу только драйвер(реализацию операторов) переписать
—
Mikej
(19.02.2004 17:13,
пустое
)
Ответ: никогда не пишу таких операторов потому как данные не байт а давольно сложные структуры , делаю кучу выделяю память по sizeof и работаю с нормальными данными как человек а через поке и пик работать не удобно и в коде длинно получается ...
—
igor_q
(19.02.2004 17:22,
пустое
)
а эти операторы и не предназначены для серьезной работы со структурами. Они нужны только для доступа к КОНКРЕТНОМУ адресу.
—
Mikej
(19.02.2004 17:27,
пустое
)
Ответ: дык что мешает написать типа *((BYTE xdata *)0x8100)=0x55;
—
igor_q
(19.02.2004 17:39,
пустое
)
Ответ: Наверное так(+)
—
NickB
(19.02.2004 16:51, 72 байт)
*((byte *)0x10) = b ; w = *((word *)0x20);
—
Знаток
(19.02.2004 16:50,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru