Сместить вектора прерывания в программе не проблема На вкладке С51 есть галочка "Interrupt vector at adress" напротив нее поле где ввести адрес смещения для векторов прерывания. Далее необходимо переопределить таблицу прерываний в стартапе. Если загрузчик в младших адресах, то разместить команды перехода обработки прерываний на новые адреса по принципу org 0x3 // прерывание INT0 LJMP $+Offset // переход на новый адрес обработки прерывания и т.д. для всех векторов Далее в стандартном стартапе приложения расположенного в старшей области памяти при необходимости изменить директиву начального адреса программы (если не менять то загружаться будет приложение, если изменить , то сперва заработает загрузчик) ORG 0 -> заменит на ORG Offset
Если приложение в младших адресах, а загрузчик в старших, то достаточно переопределить только один вектор с которым работает загрузчик и следить что бы приложение не вылезло за границу отведенной памяти.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|