Tengo un PIC18F46K22 y lo programo con el compilador XC8. Al final, tendré un sistema como una PC con stdin
y stdout
. Entonces, en el bucle principal, habrá una función que verificará si hay una nueva entrada. Si hay entrada, se llamará a una función en consecuencia. Así, por ejemplo cuando una A en la entrada stdin
, el PIC se ejecutará una función como function_A
lugar de function_B
lo que se llama cuando una entrada de B.
Cuando el PIC termina con la función, quiero que la nueva entrada se envíe a la función. Entonces, al presionar A se abre el transmisor RS232, desde ese momento cada entrada se enviará a través de RS232. Al final, el proyecto es un editor de texto independiente. Entonces, al presionar A se abre el sistema de archivos, desde ese momento ya no está editando texto, sino mirando a través de una lista de archivos. Eso significa que presionar Arriba y Abajo significa algo diferente que en el entorno de edición de texto.
He pensado mucho sobre cómo programar esto en C. Lo pensé anoche y me gustaría saber si es posible y, de ser así, cómo. Lo que quiero hacer es:
- La
main
función llama a una función comofunction_A
function_A
cambia una variable globalfunction_addr
al puntero de dirección de la funciónin_function_A
- A partir de ese momento,
main
llama a la funciónfunction_addr
cuando hay una nueva entrada.
Entonces, lo que necesitaría es una main
función que verifique si function_addr
es cero. Si es así, se debe llamar a una función 'normal', como function_A
. Si no es así, se function_addr
debe llamar a la función at . También necesito un function_A
que cambie el function_addr
puntero a in_function_A
.
Nota: cuando la función del sistema de archivos debe cerrarse, is_function_A
solo debe cambiar function_addr
a 0.
Básicamente, mi pregunta es cómo puedo
- Obtener la dirección de una función (y almacenarla en una variable)
- Llamar a una función a una dirección especificada