Mam PIC18F46K22 i programuję go za pomocą kompilatora XC8. Na koniec będę mieć system podobny do komputera z stdini stdout. Tak więc w głównej pętli pojawi się funkcja sprawdzająca, czy jest nowe wejście. Jeśli jest wejście, funkcja zostanie odpowiednio wywołana. Na przykład, kiedy wprowadzę A stdin, PIC uruchomi funkcję podobną function_Ado tej, function_Bktóra jest wywoływana, gdy wprowadzę B.
Kiedy PIC jest wykonywany z funkcją, chcę, aby nowe wejście zostało wysłane do funkcji. Tak więc po naciśnięciu A otwiera się nadajnik RS232, od tego momentu każde wejście będzie wysyłane przez RS232. Ostatecznie projekt jest samodzielnym edytorem tekstu. Kiedy więc naciśniesz A, otwiera system plików, od tej chwili nie edytujesz już tekstu, ale przeglądasz listę plików. Oznacza to, że naciśnięcie przycisku w górę lub w dół oznacza coś innego niż w środowisku do edycji tekstu.
Dużo zastanawiałem się, jak zaprogramować to w C. Myślałem o tym wczoraj i chciałbym wiedzieć, czy to możliwe, a jeśli tak, to w jaki sposób. Chcę zrobić:
mainFunkcja wywołuje funkcję jakfunction_Afunction_Azmienia zmienną globalnąfunction_addrna wskaźnik adresu funkcjiin_function_A- Od tego momentu
mainwywołuje funkcję wfunction_addrmomencie pojawienia się nowego wejścia.
Potrzebuję więc mainfunkcji sprawdzającej, czy function_addrwynosi zero. Jeśli tak, należy wywołać funkcję „normalną”, np function_A. Jeśli nie jest, function_addrnależy wywołać funkcję at . Potrzebuję również, function_Aktóry zmienia function_addrwskaźnik na in_function_A.
Uwaga: kiedy funkcja systemu plików powinna być zamknięta, is_function_Apowinna zmienić się function_addrna 0.
Więc w zasadzie moje pytanie brzmi: jak mogę
- Uzyskaj adres funkcji (i zapisz go w zmiennej)
- Wywołaj funkcję pod określonym adresem