Eu tenho um PIC18F46K22 e programo -o com o compilador XC8. No final, terei um sistema como um PC com stdine stdout. Portanto, no loop principal, haverá uma função que está verificando se há novas entradas. Se houver entrada, uma função será chamada de acordo. Por exemplo, quando eu insiro um A stdinativado, o PIC executará uma função como em function_Avez da function_Bqual é chamada quando insiro um B.
Quando o PIC for concluído com a função, desejo que a nova entrada seja enviada para a função. Portanto, ao pressionar A, o transmissor RS232 é aberto, a partir desse momento todas as entradas serão enviadas pelo RS232. No final, o projeto é um editor de texto independente. Portanto, ao pressionar A, o sistema de arquivos é aberto. A partir desse momento, você não está mais editando textos, mas procurando uma lista de arquivos. Isso significa que pressionar Cima e Baixo significa algo diferente do ambiente de edição de texto.
Pensei muito em como programar isso em C. Pensei nisso ontem à noite e gostaria de saber se é possível e, em caso afirmativo, como. O que eu quero fazer é:
- A
mainfunção chama uma função comofunction_A function_Aaltera uma variável globalfunction_addrpara o ponteiro de endereço da funçãoin_function_A- A partir desse momento,
mainchama a funçãofunction_addrquando houver uma nova entrada.
Então, o que eu precisaria é de uma mainfunção que verifique se function_addré zero. Se for, uma função 'normal' deve ser chamada, como function_A. Caso contrário, a função at function_addrdeve ser chamada. Eu também preciso de um function_Aque muda function_addrpara um ponteiro para in_function_A.
Nota: quando a função do sistema de arquivos deve ser fechada, is_function_Abasta mudar function_addrpara 0.
Então, basicamente, minha pergunta é como posso
- Obter o endereço de uma função (e armazená-lo em uma variável)
- Chamar uma função em um endereço especificado