Глюк компилятора IAR MSP430. Но подозреваю что мой ;-)
Переделываю чужой проект, чтобы клавиши отрабатывались по нажатию, а не отжатию.
Исходно программа "бегает по кругу" в начале обрабатывает состояние клавиш затем принимает решение.
По классической схеме, счетчик нажатия считает до "определенного числа" и останавливается.
Если задетектировано отпускание клавиши и счетчик равен "определенному числу" то взводится признак нажатия на 1 круг программы - импульсный сигнал у HDL.
Переделал программу под одну клавишу, чтобы срабатывало по нажатию.
Протестил, решил переписать на функцию сделать рефакторинг ;-)
Функция работает с указателями
void key_manipulation( bool key_status, // true - активное/нажатое состояние
unsigned char *count_key, // счетчик времени нажатия
unsigned char *key_always_pressed, // флаг выдачи сигнала
unsigned char *key_pressed // импульсный сигнал )
{
..
}
При отжатой клавише все правильно, указатель в R13 и указывает на правильную переменную.

А при нажатой клавише, отладчик указателя не находит, соответсвенно ни указателя и значения нет

Странно как-то. Вызов функции то всегда одинаков:
key_manipulation(!(P1IN & KEY_DOWN), &count_key_down, &key_down_always_pressed, &key_down_pressed);