У меня есть PIC18F46K22 и я программирую его с помощью компилятора XC8. В конце концов, у меня будет система вроде ПК с stdinи stdout. Таким образом, в главном цикле будет функция, которая проверяет, есть ли новый ввод. Если есть ввод, функция будет вызываться соответственно. Так, например , когда я ввод Л на stdin, ПИК будет работать как функцию function_Aвместо того , function_Bкоторый вызывается , когда я ввод в B.
Когда PIC сделан с функцией, я хочу, чтобы новый вход был отправлен в функцию. Таким образом, при нажатии A открывается передатчик RS232, с этого момента каждый вход будет отправляться через RS232. В итоге проект представляет собой самостоятельный текстовый редактор. Таким образом, при нажатии A открывается файловая система, с этого момента вы больше не редактируете текст, а просматриваете список файлов. Это означает, что нажатие клавиш «Вверх» и «Вниз» означает нечто иное, чем в среде редактирования текста.
Я много думал о том, как запрограммировать это на C. Я думал об этом вчера вечером и хотел бы знать, возможно ли это, и если да, то как. Что я хочу сделать, это:
mainФункция вызывает функцию какfunction_Afunction_Aизменяет глобальную переменнуюfunction_addrна адресный указатель функцииin_function_A- С этого момента
mainвызывается функцияfunction_addrпри появлении нового ввода.
Так что мне нужна mainфункция, которая проверяет, function_addrравен ли ноль. Если это так, должна вызываться «нормальная» функция, например function_A. Если это не так, function_addrдолжна вызываться функция at . Мне также нужно, function_Aкоторый меняет function_addrуказатель на in_function_A.
Примечание: когда функция файловой системы должна быть закрыта, is_function_Aследует просто изменить function_addrна 0.
Так что в основном мой вопрос, как я могу
- Получить адрес функции (и сохранить его в переменной)
- Вызов функции по указанному адресу