У мене є PIC18F46K22 і програмую його за допомогою компілятора XC8. Зрештою, у мене буде така система, як ПК із stdin
та stdout
. Отже, в основному циклі буде функція, яка перевіряє, чи є новий вхід. Якщо є вхід, функція буде викликана відповідно. Так, наприклад, коли я ввожу A на stdin
, PIC буде виконувати функцію, на зразок якої 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 . Мені також потрібен a, function_A
який змінює function_addr
вказівник на in_function_A
.
Примітка: коли функцію файлової системи слід закрити, is_function_A
слід просто змінити значення function_addr
на 0.
Тому в основному моє питання - як я можу
- Отримати адресу функції (і зберегти її у змінній)
- Викличте функцію за вказаною адресою