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

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

можно

Отправлено koyodza 04 июня 2009, г. 16:26
В ответ на: Да бля, для портов адрес внутри команды передаеться. Хрен выкрутишься... отправлено пользователем MARS 04 июня 2009, г. 16:13

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

near void SetClk1(void);
near void SetClk2(void);
near void ClrClk1(void);
near void SetDataAll(void);
near void SetCS1(void);
и т.д. Затем описываем структуру с набором указателей на нужные функции:

typedef void (*FUNCTIONPTR)(void);

typedef struct
{
FUNCTIONPTR* pSetClk;
FUNCTIONPTR* pClrClk;
...
}
MYSTRUCT;

чтобы оно быстрее потом работало, размер структуры лучше выровнять до степени 2 (4, 8, 16, 32 ... байта, просто добиваем полями Reserved, память жалеть не надо)

создаем массив этих структур:
static const __flash MYSTRUCT JmpMap[] =
{
{&SetClk1, &ClrClk1, &SetDataAll, ...},
{&SetClk2, &ClrClk2, &SetDataAll, ...},
{...}
};

перечислением описываем наши "девайсы":
enum
{
DEV_1 = 0,
DEV_2,
DEV_3 ...
}

Потом в функцию, которая формирует последовательность ногодрыга, передаешь индекс массива DEV_1, DEV_2 и т.д.


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

Ответы


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

Сообщение:

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

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

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

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