Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

1/32 OFF. Для тех, кто не любит, но вынужден оставлять исходники(+)

Отправлено Quasy 18 сентября 2007 г. 12:57



Просто IAR-примерчики для дальнейшего их развития. Ничего личного.
Блюстителям нравственноти - не читать :)
Применять только в стремных ситуациях.
Когда уже проект написан и отлажен, можно внести "рюшечки", затрудняющие дальнейшее развитие его без Вас.
// Переход программы на массив _flash-данных.
////////////////////////////////////////////
// Хаотически расположенные коды асм-функций, полезных,
// бесполезных, и откровенно вредных.
// Инициализация периферии, например...
// По дате компиляции вызываются правильно.
// Неправильная дата - улёт.
// А какая она, правильная, знает только афтор.
const unsigned int __farflash area_fun[] =
{
0x0000, // nop fun1
0x0000, // nop
0x9508, // ret
0x0000, // nop fun2
0x0000, // nop
0x9508, // ret
0x0000, // nop fun3
0x0000, // nop
0x9508, // ret
0x940c, // jmp 0x1234 fun4
0x091a,
0x9508 // ret
}; // и так дохера элементарных кодов, включая функции-ловушки.
unsigned int * ptrf = (unsigned int *)area_fun;
////////////////////
__C_task main( void )
{
((void (*)())(((unsigned int)((unsigned int *)area_fun) >> 1)))();

// Переход программы на массив _flash-данных.
// Переход в зависимости от даты компиляции!!!
{
unsigned char n = __DATE__[0];
n += __DATE__[1];
//......
n += __DATE__[5];//выёживаюсь,чтобы получить нужный индекс массива
n=6;//для определенности вызываю fun3
((void (*)())(((unsigned int)((unsigned int *)(area_fun+n)) >> 1)))();

n=3;//для определенности вызываю fun2
((void (*)())(((unsigned int)((unsigned int *)(area_fun+n)) >> 1)))();

n=9; // ловушечка fun4
((void (*)())(((unsigned int)((unsigned int *)(area_fun+n)) >> 1)))();
}

}//main



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru