ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
8 мая
24245 Топик полностью
Беня (22.03.2005 13:01, просмотров: 1) ответил Беня на Все правильно! Следует
Немного о компиляторе ИАР для AVR Во многих компиляторах указатели являются 3-байтовыми (например, для 51-х процессоров). Два младших байта используются для адреса, а старший байт - для типа памяти (куда этот адрес указывает). Например, если старший байт равен 0, то это указатель на память в области ОЗУ, если 1, то значит указатель на память в области ПЗУ. Но код получается громоздким - при работе с указателями (например, при чтении байта по указателю) вначале анализируется куда же мы доступаемся, а в зависимости от результата анализа производится доступ с помощью тех или иных опереторов и регистров. Для AVR если объявить указатель типа char * ptr ; то ptr будет ссылаться на память в области ОЗУ. А вот если Вы хотите доступиться к данным в ПЗУ, то надо совершенно другой тип указателя char __flash * ptr ; т. е. он указывает на область памяти программ __flash. Это два разных типа указателя и компилятор для них создает разный код.