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

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

я предсатвляю так решение задачи [+]

Отправлено MegaJohn 27 июля 2009, г. 13:09
В ответ на: Ответ: может вернемся к структуре с указателем на порты, swich здесь не очень подходит отправлено пользователем Харизмат 27 июля 2009, г. 12:45



typedef enum { wait_rising, wait_falling, ready } Tdat_state;

typedef struct
{
u8 volatile *in_reg0;
u8 pin0;
u8 volatile *in_reg1;
u8 pin1;
Tdat_state state;
u16 time;
} Tgpio_cfg;

#define NUM_DAT 20

Tgpio_cfg dat[ NUM_DAT ];

dat[ 0 ].in_reg0 = PINA;
dat[ 0 ].pin0 = (1 << PA3);
dat[ 0 ].in_reg1 = PINB;
dat[ 0 ].pin1 = (1 << PB6);
dat[ 0 ].state = wait_rising;

void timer_1ms_func( void )
{
for( u8 i = 0; i < NUM_DAT; i++ )
{
switch( dat[ i ].state )
{
case wait_rising:
if( dat[ i ].in_reg0 & dat[ i ].bit0 )
{
dat[ i ].time = 0;
dat[ i ].state = wait_falling;
}
break;

case wait_falling:
dat[ i ].time++;
if( dat[ i ].in_reg1 & dat[ i ].bit1 )
{
dat[ i ].state = ready;
}
break;
}
}
}



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

Ответы


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

Сообщение:

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

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

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

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