У меня есть PIC18F46K22 и я программирую его с помощью компилятора XC8. В конце концов, у меня будет система вроде ПК с stdin
и stdout
. Таким образом, в главном цикле будет функция, которая проверяет, есть ли новый ввод. Если есть ввод, функция будет вызываться соответственно. Так, например , когда я ввод Л на stdin
, ПИК будет работать как функцию function_A
вместо того , function_B
который вызывается , когда я ввод в B.
Когда PIC сделан с функцией, я хочу, чтобы новый вход был отправлен в функцию. Таким образом, при нажатии A открывается передатчик RS232, с этого момента каждый вход будет отправляться через RS232. В итоге проект представляет собой самостоятельный текстовый редактор. Таким образом, при нажатии A открывается файловая система, с этого момента вы больше не редактируете текст, а просматриваете список файлов. Это означает, что нажатие клавиш «Вверх» и «Вниз» означает нечто иное, чем в среде редактирования текста.
Я много думал о том, как запрограммировать это на C. Я думал об этом вчера вечером и хотел бы знать, возможно ли это, и если да, то как. Что я хочу сделать, это:
main
Функция вызывает функцию какfunction_A
function_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.
Так что в основном мой вопрос, как я могу
- Получить адрес функции (и сохранить его в переменной)
- Вызов функции по указанному адресу