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

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

В дыму и чаду рождаются программы-чудовища. Но если подумать, то как идея может и пригодиться >>

Отправлено VasilyS (80.92.96.25) 07 августа 2010, г. 08:50



// Вызов flash-массива как функции из IAR Си.
unsigned char (*foo)(void);
// Шаблоны команд AVR, чтобы в массиве можно было писать на "Асме".
#define asm_NOP 0x0000
#define asm_RET 0x9508
// Регистры AVR для команды MOV.
#define _R0_ (0)
#define _R1_ (1)
#define _R2_ (2)
#define _R3_ (3)
#define _R16_ (16)
#define _R31_ (31)
#define asm_MOV( dst, src) (0x2c00|((dst)<<4)|((src)&0x0f) | \
(((src)&0x10)?(0x0200):(0)) )
// Функция-массив.
__flash unsigned int shell[]= {
asm_MOV( _R2_, _R31_ ),
asm_NOP,
asm_MOV( _R16_, _R0_ ),
asm_RET
};
void main( void ){
// Вызов. Сдвиг адреса вправо - для IAR
foo = (unsigned char(*)(void))(((unsigned int)shell) >> 1);
printf( "%02x\n",foo());
}


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

Ответы


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

Сообщение:

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

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

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

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