Mazur (21.09.2013 23:57, просмотров: 91) ответил Bill на Я это имел в виду
Извините, можно на моем примере?
struct tab_key_curr_next_func
{
u08 key_cod;
u08 state;
u08 next_state;
void (*p_t_StateFunc) (void);
} tab_key_curr_next_func;
struct tab_key_curr_next_func __flash table_handlers_keys [] =
{
{KEY_ESC_COD, PROC_MENU_2, PROC_MENU_2, led_1_switch},
{KEY_ENTER_COD, PROC_MENU_2, PROC_MENU_2, led_2_switch},
{KEY_UP_COD, PROC_MENU_2, PROC_MENU_2, led_3_switch},
{KEY_DOWN_COD, PROC_MENU_2, PROC_MENU_2, led_4_switch},
{KEY_PLUS_COD, PROC_MENU_2, PROC_MENU_2, led_5_switch},
{KEY_MINUS_COD, PROC_MENU_2, PROC_MENU_2, led_6_switch},
{0xFF},
};
void check_keys_buf (void)
{
if ((proc_menu_flags & (1<<PROC_MENU_RUN_FLG)) && (keys_buf != 0xFF))
{
void (*p_t_StateFunc) (void);
p_t_StateFunc = NULL;
struct tab_key_curr_next_func __flash *ptr = table_handlers_keys;
for (ptr = table_handlers_keys; ptr -> key_cod != 0xFF; ptr++)
{
if (ptr -> key_cod == keys_buf && ptr -> state == _proc_menu )
{
keys_buf = 0xFF;
_proc_menu = ptr -> state;
p_t_StateFunc = ptr -> p_t_StateFunc;
break;
}
}
if ((p_t_StateFunc)) (*p_t_StateFunc) ();
}
}