Haberler:

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

Ana Menü

Asm ile Tablo

Başlatan ahmetinrodisi, 14 Ekim 2005, 00:07:32

memed52

tablo_counter_reg : sizin tablodan arka arkaya çagirmak isteğiniz değerleri alır
   örnek:   balya için 0 ....4 de kadar.
   Kendi programınız nasılsa ona göre mantık bu uyarlarsanız çalışır.

   movlw   .5
   movwf   pclath
   movfw   tablo_counter_reg
   call   balya
   .
   .
   .
   movlw   .5
   movwf   pclath
   movfw   tablo_counter_reg
   call   sayı
   .
   .
   .
   .

   movlw   .5
   movwf   pclath
   movfw   tablo_counter_reg
   call    numara
   .
   .
   .

   .
   .
   .
   movlw   .5
   movwf   pclath
   movfw   tablo_counter_reg
   call   kapak


   org 500h
balya    addwf   pcl,f
   Dt    'B','A','L','Y','A'

sayi   addwf   pcl,f
   Dt    'S','A','Y','I','S','I','='

numara    addwf   pcl,f
   Dt    '0','1','2','3','4','5','6','7','8','9'

virgul    addwf   pcl,f
   Dt    ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '

Kirmizi    addwf   pcl,f
   Dt    'K','I','R','M','I','Z','I',',','A','L','A','R','M','!',' ',

durdur    addwf   pcl,f
   Dt   'H','E','M','E','N','M','A','K','I','N','E','Y','I',' ','D','U','R','D','U','R','!'

kapak    addwf   pcl,f
   Dt    'A','R','K','A',' ','K','A','P','A','K',' ','A','C','I','L','D','I','!','B','A','L','Y','A',' ','B','O','S','A','L','T','I','L','I','Y','O','R','!'

   balyayı,

   retlw   "B"
   retlw   "A"
   retlw   "L"
   retlw   "Y"
   retlw   "A"
   
   ve diğerlerini bu şekildede yazabilirsiniz hangi tarzda yazmak kolayınıza geliyorsa.

   iyi Calışmalar...

ahmetinrodisi

Teşekürle Memed. kusura bakma aklım durdu birz, biryeri anlayamadım.


movlw .5
movwf pclath
movfw tablo_counter_reg  

Acaba movlw .5 neyi belirtiyor?Tablomun kaç karakter olduğunu mu?Yoksa butun kullanımlarda hep .5 mi yazacam?Bi açıklarsan çok sevinecem.teşekürler...

memed52

movlw .5

org 500 h ile belirtigimiz tabloların  başlangıç adresinin pclath degeri
eger tabloyu örneğin 600h ye yerleştirseydik movlw  .6 olacaktı.

siz eğer programın herhangi bir yerindebn tablo cağırıyorsanız tablonuzun bulunduğu adresi dogru belitmeniz lazım.

Pclath a eğer yukardaki örnek gibi doğru değeri tabloyu cağırmadan yüklemez iseniz, pcl 0-255 arası bir değer alacak ve tabloyu cagırdıgınız program segmentinin içinde bir yere gidip devam edecektir.

Kolay gelsin...

memed52

Bu tablo işinin içinden yine çıkamazsanız, Lcd iye karakterleri tablo çağırmadan tek tek gönderin.

Örnek :
   movlw   "B"
   call   send_char_lcd

   movlw   "A"
   call   send_char_lcd

   movlw   "L"
   call   send_char_lcd

   movlw   "Y"
   call   send_char_lcd

   movlw   "A"
   call   send_char_lcd
               .
               .




Send_char_lcd      ; sizin lcd routiniz neyse,
   .
   .
   .
   :
   Return

transistor

arkadaşlar bu konunun açılması çok iyi oldu. benimde bu konu üzerinde şuan takıldığım bir konu var. 877nin 1.kanalından aldığım sıcaklığa göre tablo kullanıp işlem yapmak istiyorum.
örneğin: 1. kanaldan ölçülen sıcaklık -30 -20 arası iken tablodan 70 değerini -19 -15 arası iken 65, -14-10 iken 60, -9 -5 iken 50 sıcaklık 0 iken 45 vede sıcaklık +1 +15 arası 40 değerlerini tablo kullanarak almak istiyorum fakat bir türlü başarılı olamadım.
yardımcı olursanız sevinirim.
Herşey Vatan İçin.

ahmetinrodisi

Deniyorum Memed.Olacak gibi.Bazı şeyler düzelmeye başladı.Tek, tek yapmak istemiyorum.Çünkü bugün bu sorundan kaçtım yarın başka bir programda yine karşıma çıkacak.Transistor sakin kaybolma buralardan.Çünkü geçenlerde bende SHT 75 sıcaklım+nem sensörü aldım.Bu işi bitirdikten sonra bende programın O kısmını yazmaya geçecem.Yani sana ihtiyacım olabilir:)Çok sağolun tekrar ve sizlerede programlarınızda başarılar dilerim...

memed52

1. kanal diye bahsetiğiniz ADC modülünün  biri ise 8 bitlik veya 10 bitlik değer okuyorsunuzudur. Anlaşılan pek hassas ölçüm istenmiyor. Budurumda adc yi 8 bit modunda çalıştırın. Hatta yeterli olursa 8 bitlik değeri bir veya iki defa sağa kaydırın tablonuz küçülecektir.
 adresl değeri 0>adresl>255 şeklinde olacak.
Örnegin:

adresL   Derece
-------------
 0 --> -30
38    -20
64   -15
85    -10
127 -->     0
          
-------------------------------
tablo_derece
   addwf   pcl,f
   retlw   .70   ;0 adc den okunan dec değer
   retlw   .70   ;1
   retlw   .70   ;2
   retlw   .70
   retlw   .70
   retlw   .70
   .
   .

   retlw   .70   ;37 adc den okunan dec değer
   retlw   .65   ;38
   retlw   .65
   .
   .
   retlw   .60   ;80

kolay gelsin

bigbey

Peki bir dip not sana;
kullandığın işleci 16f877A mı?
eğer derleme işleminde bunu 16f877 olarak seçersen hataya uğrarsın
16F877 sayfalar 4 adet
16f877A is sayfa sayısı 2 adet
bu bilgileri değerlendirmeye almanı tavsiye ediyorum.
TA6R

ahmetinrodisi

Tablo işini nihayet başardım arkadaşlar.Butun tablolar switclere bastığımda doğru olarak okunuyor.Hepsi sizin sayenizde oldu.Yoksa böyle bir hatanın sebebini asla öğrenemeyecektim.Tekrar hepinize çok çok teşekürler.Kıbrıs'a yolu düşen olursa hiç çekinmesin , ben burdayım,mutlaka arayın:)

memed52

Geçmiş olsun.  :D