I have a PIC18F46K22 and program it with the XC8 compiler. In the end, I'll have a system like a pc with
stdout. So in the main loop there will be a function which is checking if there is new input. If there's input, a function will be called accordingly. So for example when I input an A on
stdin, the PIC will run a function like
function_A instead of
function_B which is called when I input a B.
When the PIC is done with the function, I want that the new input is sent to the function. So when pressing A opens the RS232 transmitter, from that moment every input will be sent over RS232. In the end the project is a stand-alone text editor. So when pressing A opens the file system, from that moment you aren't text editing anymore but looking through a list of files. That means that pressing Up and Down means something different than in the text-editing environment.
I've done a lot thinking on how to program this in C. I thought this up last night and would like to know if it's possible and if so, how. What I want to do is:
mainfunction calls a function like
function_Achanges a global variable
function_addrto the address pointer of function
- From that moment,
maincalls the function at
function_addrwhen there is new input.
So what I'd need is a
main function which checks if
function_addr is zero. If it is, a 'normal' function should be called, like
function_A. If it isn't, the function at
function_addr should be called. I also need a
function_A which changes the
function_addr to a pointer to
Note: when the filesystem function should be closed,
is_function_A should just change
function_addr to 0.
So basically my question is how can I
- Get the address of a function (and store it in a variable)
- Call a function at a specified address