Ho un PIC18F46K22 e lo programma con il compilatore XC8. Alla fine, avrò un sistema come un pc con stdine stdout. Quindi nel loop principale ci sarà una funzione che sta verificando se ci sono nuovi input. Se c'è input, una funzione verrà chiamata di conseguenza. Quindi, ad esempio, quando inserisco una A stdin, il PIC eseguirà una funzione simile function_Ainvece della function_Bquale viene chiamata quando inserisco una B.
Quando il PIC ha terminato la funzione, voglio che il nuovo input venga inviato alla funzione. Quindi quando si preme A si apre il trasmettitore RS232, da quel momento ogni ingresso verrà inviato su RS232. Alla fine il progetto è un editor di testo autonomo. Quindi quando si preme A si apre il file system, da quel momento non si modifica più il testo ma si guarda attraverso un elenco di file. Ciò significa che premendo Su e Giù si intende qualcosa di diverso rispetto all'ambiente di modifica del testo.
Ho riflettuto molto su come programmare questo in C. L'ho pensato ieri sera e vorrei sapere se è possibile e se sì, come. Quello che voglio fare è:
- La
mainfunzione chiama una funzione comefunction_A function_Acambia una variabile globalefunction_addrnel puntatore di indirizzo della funzionein_function_A- Da quel momento,
mainchiama la funzionefunction_addrquando c'è un nuovo input.
Quindi quello di cui ho bisogno è una mainfunzione che controlla se function_addrè zero. Se lo è, una funzione 'normale' dovrebbe essere chiamata, come function_A. In caso contrario, è function_addrnecessario chiamare la funzione at . Ho anche bisogno di un function_Ache cambi function_addrin un puntatore a in_function_A.
Nota: quando la funzione del filesystem dovrebbe essere chiusa, is_function_Adovrebbe passare function_addra 0.
Quindi in sostanza la mia domanda è come posso
- Ottieni l'indirizzo di una funzione (e memorizzalo in una variabile)
- Chiama una funzione a un indirizzo specificato