J'ai un PIC18F46K22 et je le programme avec le compilateur XC8. Au final, j'aurai un système comme un pc avec stdinet stdout. Donc, dans la boucle principale, il y aura une fonction qui vérifie s'il y a une nouvelle entrée. S'il y a une entrée, une fonction sera appelée en conséquence. Ainsi, par exemple, lorsque j'entre un A stdin, le PIC exécute une fonction similaire function_Aà celle function_Bqui est appelée lorsque j'entre un B.
Lorsque le PIC est terminé avec la fonction, je veux que la nouvelle entrée soit envoyée à la fonction. Donc, lorsque vous appuyez sur A ouvre l'émetteur RS232, à partir de ce moment, chaque entrée sera envoyée via RS232. Au final, le projet est un éditeur de texte autonome. Ainsi, lorsque vous appuyez sur A pour ouvrir le système de fichiers, à partir de ce moment, vous ne modifiez plus de texte mais vous parcourez une liste de fichiers. Cela signifie qu'appuyer sur Haut et Bas signifie quelque chose de différent que dans l'environnement d'édition de texte.
J'ai beaucoup réfléchi à la façon de programmer cela en C. J'ai pensé cela hier soir et j'aimerais savoir si c'est possible et si oui, comment. Ce que je veux faire c'est:
- La
mainfonction appelle une fonction commefunction_A function_Achange une variable globalefunction_addren pointeur d'adresse de la fonctionin_function_A- À partir de ce moment,
mainappelle la fonctionfunction_addrlorsqu'il y a une nouvelle entrée.
Donc, ce dont j'ai besoin, c'est d'une mainfonction qui vérifie si elle function_addrest nulle. Si c'est le cas, une fonction «normale» devrait être appelée, comme function_A. Si ce n'est pas le cas, la fonction at function_addrdoit être appelée. J'ai également besoin d'un function_Aqui change le function_addren un pointeur in_function_A.
Remarque: lorsque la fonction de système de fichiers doit être fermée, elle is_function_Adoit simplement passer function_addrà 0.
Donc, fondamentalement, ma question est de savoir comment puis-je
- Récupère l'adresse d'une fonction (et la stocke dans une variable)
- Appeler une fonction à une adresse spécifiée