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

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

Не знаю, какие нестандартные спецификаторы существуют, но выйти из положения можно так >>

Отправлено Юрий_СВ (213.5.199.158) 16 апреля 2011, г. 04:48
В ответ на: как вызывать функцию по адресу? отправлено колян безпарольный 16 апреля 2011, г. 01:05

#include <avr/io.h>

typedef void (* fn)(void);
fn fn_1, fn_2;

int main(void)
{
fn_1=0x2346;
fn_2=0x5757;

EIND=2;
fn_1();
EIND=0;
fn_2();

while (1);
}

================================================
WinAVR формирует такой код:

int main(void)
{
fn_1=0x22346;
12a: e6 e4 ldi r30, 0x46 ; 70
12c: f3 e2 ldi r31, 0x23 ; 35
12e: f0 93 03 02 sts 0x0203, r31
132: e0 93 02 02 sts 0x0202, r30
fn_2=0x5757;
136: 87 e5 ldi r24, 0x57 ; 87
138: 97 e5 ldi r25, 0x57 ; 87
13a: 90 93 01 02 sts 0x0201, r25
13e: 80 93 00 02 sts 0x0200, r24

EIND=2;
142: 82 e0 ldi r24, 0x02 ; 2
144: 8c bf out 0x3c, r24 ; 60
fn_1();
146: 19 95 eicall
EIND=0;
148: 1c be out 0x3c, r1 ; 60
fn_2();
14a: e0 91 00 02 lds r30, 0x0200
14e: f0 91 01 02 lds r31, 0x0201
152: 19 95 eicall
154: ff cf rjmp .-2 ; 0x154 <main+0x2a>

00000156 <_exit>:
156: f8 94 cli

00000158 <__stop_program>:
158: ff cf rjmp .-2 ; 0x158 <__stop_program>


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

Ответы


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

Сообщение:

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

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

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

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