我有一个PIC18F46K22并使用 XC8 编译器对其进行编程。最后,我将拥有一个类似于 pc 的系统,stdin
并且stdout
. 所以在主循环中会有一个函数检查是否有新的输入。如果有输入,则会相应地调用一个函数。因此,例如,当我输入 A on 时stdin
,PIC 将运行一个函数,function_A
而不是function_B
在我输入 B 时调用该函数。
当 PIC 完成函数后,我希望将新输入发送到函数。因此,当按下 A 打开 RS232 发射器时,从那一刻起,每个输入都将通过 RS232 发送。最后,该项目是一个独立的文本编辑器。因此,当按 A 打开文件系统时,从那一刻起,您不再是文本编辑,而是查看文件列表。这意味着按下 Up 和 Down 意味着与文本编辑环境中的不同。
我已经做了很多关于如何在 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。
所以基本上我的问题是我怎么能
- 获取函数的地址(并将其存储在变量中)
- 在指定地址调用函数