Bir PIC18F46K22’ye sahibim ve XC8 derleyicisiyle programladım. Sonunda, stdin
ve ile bir pc gibi bir sisteme sahip olacağım stdout
. Böylece ana döngüde yeni giriş olup olmadığını kontrol eden bir fonksiyon olacaktır. Girdi varsa, buna göre bir işlev çağrılır. Mesela bir A girişi yaptığımda stdin
, PIC bir B girdiğimde function_A
bunun yerine function_B
çağrılan gibi bir işlevi çalıştıracaktır .
PIC işlevi ile yapıldığında, yeni girişin işleve gönderilmesini istiyorum. Böylece A düğmesine basıldığında RS232 vericisi açılır, o andan itibaren her giriş RS232 üzerinden gönderilir. Sonunda proje tek başına bir metin editörüdür. Böylece, A düğmesine basıldığında dosya sistemi açılır, o andan itibaren artık metin düzenlemesi yapmıyorsunuz ancak dosya listesine bakıyorsunuz. Bu, Yukarı ve Aşağı tuşlarına basmanın, metin düzenleme ortamından farklı bir şey anlamına gelir.
Bunu C dilinde nasıl programlayacağımı çok düşündüm. Dün gece bunu düşündüm ve mümkün olup olmadığını ve eğer öyleyse nasıl olduğunu bilmek istiyorum. Yapmak istediğim şey:
main
Fonksiyon gibi bir işlevi çağırırfunction_A
function_A
global değişkenifunction_addr
fonksiyonun adres işaretçisine değiştiririn_function_A
- O andan itibaren, yeni giriş olduğunda
main
işlevi çağırırfunction_addr
.
Yani ihtiyacım main
olan function_addr
şey sıfır olup olmadığını kontrol eden bir fonksiyon . Eğer öyleyse, 'normal' bir işlev çağrılmalıdır function_A
. Değilse, işlevinin function_addr
çağrılması gerekir. Ayrıca bir ihtiyaç function_A
değiştirir function_addr
için bir işaretçi in_function_A
.
Not: dosya sistemi işlevi kapatıldığında, is_function_A
sadece function_addr
0 olarak değiştirilmelidir .
Yani temelde sorum şu: nasıl yapabilirim
- Bir işlevin adresini al (ve değişkende sakla)
- Belirtilen adreste bir işlev çağırın