Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

LOCAL ?

Başlatan supermakarna, 24 Nisan 2006, 20:48:25

supermakarna

Arkadaşlar aşagıdaki program LCD'ye cümle yazmak için
"deneme" LCD de yazılacak kısım "6" harf sayısı.
Kalın olan harfler etiket

1.Soru : Burdaki LOCAL komutu ne işe yaramaktadır.
2.Soru : high terimi programın hiç bir yerinde tanımlanmamış nasıl olurda
movlw high SS yazılabilirki?

Bu macro için BÜLENT SIVGIN arkadaşıma teşekkür etmeyi bir borç bilirim.
;======Ana kısım==================
IMLEC_POZ D'65'
CUMLE_YAZ "deneme",6
;===========Macro==================
CUMLE_YAZ       MACRO ST,ST1
           LOCAL SS,SS1
           CLRF TEMP3
SS1           MOVLW high SS
                         MOVWF PCLATH
           CALL SS
           CLRF PCLATH
           CALL KARAKTER_YAZ1
           INCF TEMP3
           MOVF TEMP3,0
           XORLW ST1
           BTFSS STATUS,Z
           GOTO SS1
           GOTO $+3+ST1
SS                   MOVF TEMP3,0
           addwf PCL
           dt ST
           ENDM

bsivgin

bu makroyu yazmak için bi ara bayağı uğraşmıştım.. :D
LOCAL komutu diğer dillerde olduğu gibi tanımlanan değişkenlerin sadece kullanıldığı yerde etkili olması.. Yan bu örnekte local etiket olarak kullanılan SS ve SS1 etiketleri makro dışında tekrar kullanılabilir ve birbirini etkilemez. Bir çok makro yazmıştım bir ara kullandığım etiketleri tekrar kullanmış olabilirim diye böyle bir yol izlemiştim. Yani kısaca SS ve SS1 etiketlerini programının içinde tekrar kullanmayacaksan local tanımlamasına gerek yok..
2.sorunun cevabı;
high direktifi çok ince bir ayrıntıdır. Bu makroyu program hafızasının neresine koyarsan koy çalışır. Çünkü dikkat edersen burda addwf PCL komutu var ve bu page ayarlaması gerektiren bir durum. Bunuda high direktifini kullanarak hallettim. Bu direktif çağırdığın etiketin yüksek baytını alıp PCLATH'a atar. Yani otomatik sayfa ayarlaması yapar.

Saygılarımla
Bülent ŞIVGIN
www.diyot.com

supermakarna

Teşekkürler hocam

hocam 2.sorunun cevabını anlayamadım biraz daha açarsan sevinirim

ayrıca bu programda bir köşesine sadece page0 da çalışır demişin bende başka pagelerde kullanmaya çalışmak için programın içine girdim. Sen şimdi her pagede kullanabilirsin diyince iyice çelişkiye düştüm.

"movlw high SS" bu komuttan hiç bişey anlayamadım
anladığım pagasel komutu gibi bişeymi acaba
anlatıklarına göre ben pagasel kullansam sorun olmaz heralde

Ayrıca şu page konusunda bi açıklık getirirsen sevinirim

supermakarna

Bülent hocam macrolar konusunda biraz aşmışsın.
Anladığım kadarıyla neredeyse asm'yi C'ye çevirmişindir heralde