Minulla on PIC18F46K22 ja ohjelmoin sen XC8-kääntäjällä. Loppujen lopuksi minulla on järjestelmä, kuten tietokone, jossa on stdin
ja stdout
. Joten pääpiirissä on toiminto, joka tarkistaa, onko uutta tuloa. Jos syötettä on, funktio kutsutaan vastaavasti. Joten esimerkiksi kun syötän A-koodin stdin
-kohtaan, PIC suorittaa toiminnon, kuten function_A
, sijasta function_B
, jota kutsutaan syötettäessä B.
Kun PIC on tehty toiminnolla, haluan, että uusi tulo lähetetään funktiolle. Joten kun A-näppäimen painaminen avaa RS232-lähettimen, siitä hetkestä lähtien jokainen tulo lähetetään RS232: n kautta. Loppujen lopuksi projekti on erillinen tekstieditori. Joten kun painetaan A-näppäintä, tiedostojärjestelmä avautuu, siitä hetkestä lähtien et enää muokkaa tekstiä, mutta etsit tiedostoluetteloa. Tämä tarkoittaa, että Ylös- ja Alas-näppäinten painaminen tarkoittaa jotain erilaista kuin tekstinmuokkausympäristössä.
Olen miettinyt paljon, kuinka ohjelmoida tämä C. tietää, onko se mahdollista ja jos on, miten. Haluan tehdä seuraavaa:
-
main
-funktio kutsuu funktiota kutenfunction_A
-
function_A
muuttaa globaalin muuttujanfunction_addr
funktionin_function_A
- osoitinnumerosta lähtien
main
kutsuu funktio kohdassafunction_addr
, kun uutta syötettä on.
Tarvitsen siis main
-funktion, joka tarkistaa, onko function_addr
nolla. Jos näin on, tulisi kutsua 'normaali' toiminto, kuten function_A
. Jos se ei ole, tulisi kutsua funktio osoitteessa function_addr
. Tarvitsen myös function_A
-ominaisuuden, joka vaihtaa function_addr
-osoittimen osoittimeksi in_function_A
.
Huomaa: kun tiedostojärjestelmätoiminto pitäisi sulkea, is_function_A
pitäisi vain muuttaa function_addr
arvoksi 0.
Joten kysymykseni on, kuinka voin
- Hanki funktion osoite (ja tallenna se muuttujaan)
- Kutsu funktio määritettyyn osoitteeseen