DT KOMUTU NASIL KULLANILIYOR

Başlatan oziant, 23 Ekim 2004, 13:12:57

oziant

SAYIN ARKADAŞLAR

DT KOMUTU NASIL KULLANILIYOR KISA BİR ÖRNEK PROGRAM YAZABİLİRMİSİNİZ

LCD YE  MESAJ GÖNDERİRKEN KULLANMAYI DÜŞÜNÜYORUM
AMA BİR TÜRLÜ İKİNCİ KARAKTERİ OKUMUYOR
MPLAB 5.62 ASM PROPİC 2

baba

table
    addwf  pcl,f
    dt  data0,data1,data2,0x10,5,0,"R",2

;gibi ya da

    dt  "Merhaba",b'00001101'

;gibi değişkenleri (tanımlı ya da tanımsız) kullanabilirsin

lcd

....

....

    return
...
...


movlw  8
movwf count
clrf index
loop
    movf  index,w
    call table
    call  lcd
    incf index,f
    decfsz count,f
    goto loop
..
..


retlw komutu gibi düşün..

burada 'index' yazacının artırıldığından emin olun ki bir sonraki değer yüklensin.

(yazım hatası olabilir.yalnızca örnek olması için yazdım)
ÖĞRENDİKÇE    CAHİLLİĞİM       ARTIYOR.

mcihangir

DT, "DATA TABLE" ifadesinin kısaltmasıdır. veri tablosu oluşturmak için kullanılır.

------------------------------------------------------------------------
..................

LCD_DATA:
   call delay
   movf veri_sayac, w
   call veri_tablosu
   iorlw 0
   bz m_son
   movwf veri
   call shift
   bsf RS    
   bsf E
   NOP
   bcf E  
   incf veri_sayac, f
   goto LCD_DATA
m_son:
   return   


veri_tablosu:
   addwf PCL, 1
   dt "Merhaba DunyA",0
   movf PCL,w
   return

................
-----------------------------------------------------------------

yukarıda shift register ile lcd 'ye yazı yazdırma programının küçük bir parçası var.
veri_tablosu altprogramında bir veri tablosu oluşturulmuş ve burada w'ye yüklenen değer PCL saklayıcısı ile toplanarak veri tablosundan istenen veriye ulaşılıyor ve bu veri tekrar w'ye yükleniyor.

bu altrograma girildiğinde PCL (program sayıcısı düşük baytı), bir sonraki komutun adresini  tutar. "Merhaba DunyA",0 verileri peş peşe program belleğinde sıralı biçimde tutulur. yani atıyorum "M" bir byte olarak 00F0h adresinde ise "e"= 00F1h , "r"=00F2h ..... gibi veriler sıralanır.
bu altprograma girilgiği zaman ilk satırda PCL=00F0h olacaktır ve W ye yüklediğimiz değer ile toplanır. mesela W=3 olsun
00F0h + 3 =00F3h , bu değer PCL içine yüklenerek buradaki (00F3h adresindeki) veriye  ("h")  ulaşılır. bu veri tekrar W içine yüklenerek alt programdan çıkılır.

LCD_DATA altprogramında ise veri_tablosu altprogramı çağrılarak lcd'ye istenen veri gönderilir. veri gönderme işlemi ise şöyle sonlanıyor; veri tablosunun son verisi 0  'dır ("Merhaba DunyA",0), her veri_tablosu çağrılıp veri alındıktan sonra bu verinin 0  yani son eleman olup olmadığı test ediliyor. eğer bu veri sıfır ise "bz m_son" komutu ile altprogramın sonuna dallanıp buradan çıkılıyor.

oziant

sayın baba ve mcihangir
yardımlarınız için teşekkür ederim yalnız mcihangir arkadaşımızın yazdıgı programı çalıştıramadım

bu komutu kullanmadaki asıl amacım mümkün oldugu kadar az satır
kullanmak ve veri düzeltmesini daha kolay yapmaktı.
bu komut sayesinde daha az satıra ihtiyacım olacak
teşekkürler  :D
MPLAB 5.62 ASM PROPİC 2