Ich habe einen PIC18F46K22 und programmiere ihn mit dem XC8-Compiler. Am Ende habe ich ein System wie ein PC mit stdin
und stdout
. In der Hauptschleife gibt es also eine Funktion, die prüft, ob neue Eingaben vorliegen. Bei Eingabe wird eine Funktion entsprechend aufgerufen. So zum Beispiel , wenn ich Eingang eines A auf stdin
, läuft der PIC eine Funktion wie function_A
statt function_B
dem aufgerufen wird , wenn ich Eingabe eines B.
Wenn der PIC mit der Funktion fertig ist, möchte ich, dass die neue Eingabe an die Funktion gesendet wird. Wenn Sie also A drücken, wird der RS232-Sender geöffnet. Ab diesem Moment wird jeder Eingang über RS232 gesendet. Am Ende ist das Projekt ein eigenständiger Texteditor. Wenn Sie also A drücken, wird das Dateisystem geöffnet. Von diesem Moment an sind Sie nicht mehr an der Textbearbeitung beteiligt, sondern durchsuchen eine Liste von Dateien. Das bedeutet, dass das Drücken von Nach oben und Nach unten etwas anderes bedeutet als in der Textbearbeitungsumgebung.
Ich habe viel darüber nachgedacht, wie ich das in C programmieren soll. Ich habe mir das letzte Nacht ausgedacht und würde gerne wissen, ob es möglich ist und wenn ja, wie. Was ich machen möchte ist:
- Die
main
Funktion ruft eine Funktion wiefunction_A
function_A
Ändert eine globale Variablefunction_addr
in den Adresszeiger der Funktionin_function_A
main
Ruft die Funktion von diesem Moment an auf,function_addr
wenn neue Eingaben vorliegen.
Ich brauche also eine main
Funktion, die prüft, ob function_addr
Null ist. Wenn ja, sollte eine 'normale' Funktion aufgerufen werden function_A
. Ist dies nicht der function_addr
Fall , muss die Funktion at aufgerufen werden. Ich brauche auch einen, function_A
der den function_addr
in einen Zeiger ändert in_function_A
.
Hinweis: Wenn die Dateisystemfunktion geschlossen werden is_function_A
soll , sollte nur function_addr
auf 0 geändert werden .
Im Grunde ist meine Frage, wie ich kann
- Ruft die Adresse einer Funktion ab (und speichert sie in einer Variablen)
- Rufen Sie eine Funktion an einer angegebenen Adresse auf