Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: MÜHENDİS ADAM - 13 Kasım 2015, 00:59:05

Başlık: Atmel studio assembly dilinde hc-sr04 sensörü çalıştırma
Gönderen: MÜHENDİS ADAM - 13 Kasım 2015, 00:59:05
Arkadaşlar ben hc-sr04 sensörünün 15 cm yi algılayıp portbdeki ledlerinin yakmasını istiyorum ama çalışmıyor yardımcı olurmusunuz?


.include "tn2313def.inc"
.def gecici=r16
.def sayac1=r17
.def sayac=r18
.def sure=r20
.def uzaklik=r19

.cseg
.org 0
rjmp reset
     reset: 
          ldi gecici,0b11111111
         out ddrb,gecici

         ldi gecici,0b10111111
         out ddrd,gecici

   basla:
         ldi gecici,0b00000000
        out tccr0a,gecici
        ldi gecici,0b00000010
        out tccr0b,gecici
        ldi gecici,0
        out tcnt0,gecici

       
       
    devam:
        sbi pind,5
        rcall gecikme
        cbi pind,5
    devam1:
         ldi gecici,0
        out tcnt0,gecici
        sbic pind,6
        rjmp devam1
        ldi sure,tcnt0
        ldi uzaklik,tcnt0/58
        cpi uzaklik,15
        breq yukle
        rjmp devam
   yukle:
          ldi gecici,0xff
         out portb,gecici
         rjmp devam

   gecikme:
          ldi sayac1,90
   gec1:
          ldi sayac,220
   gec2:
          dec sayac
         brne gec2
         dec sayac1
         brne gec1
         ret
Başlık: Ynt: Atmel studio assembly dilinde hc-sr04 sensörü çalıştırma
Gönderen: Kabil ATICI - 13 Kasım 2015, 21:59:49
sbi ve cbi  pin kontrol komutları bildiğim (çıkış lojik kontrol komutları) kadarı ile, bunları portd, porta, portb,... ile kontrol edebilirsin...

  ldi sure,tcnt0
        ldi uzaklik,tcnt0/58 ile kullanılmıyor.... in komutuna bakın....
asm 'de aynı satırda birden fazla iş yapmaz... matematik işlemlerine bakın.

iyi bir çözünürlük için timer1 kullan.
Başlık: Ynt: Atmel studio assembly dilinde hc-sr04 sensörü çalıştırma
Gönderen: MÜHENDİS ADAM - 13 Kasım 2015, 22:56:21
sbi(set bit ı/o register) tanımlanan port bitini set etmek için kullnılıyor trig e 10us lojik 1 sonra sıfır yapmak için kullandım bu komutları

diğeride matematik işlemi için dediğin olaya baktım(daha önceden de biliyordum)

Sembol : /
Açıklama : Bu operatör soldaki değerin sağdaki değere bölümünün tamsayı cinsinden
sonucunu döndürür.
Örnek : ldi r30,label/2 ;r30 registerine label/2 sonucunu yükler

bir de burada pind5 trig pind6 echo ucudur
Başlık: Ynt: Atmel studio assembly dilinde hc-sr04 sensörü çalıştırma
Gönderen: Kabil ATICI - 14 Kasım 2015, 20:56:11
http://www.atmel.com/images/doc2543.pdf (http://www.atmel.com/images/doc2543.pdf)
bir göz at... portd bölümü sayfa 58,
asm komut seti sayfa 213'de yer almaktadır...

asm komutlarında ciddi bir değişiklik yoksa;
bacağı çıkış olarak kontrol için pind değil, portd şeklinde kullanılıyor. Pind olayı ancak giriş olarak kullanıldığında çalışıyor..

bu arada 15x58 =??
tcnt0 1 baytlık (8 bitlik) bir registerdir. senin ölçümün sonucu 2 baytlık bir sayı..

tcnt0 bir registeri temsil ediyor...
ldi komutu sabit sayıyı bir registere yüklemek için kullanılıyor... label olarak tanımlanan sabit bir sayı ise sizin o satır işe yarar...

madem programınızın doğru olduğunu söylüyorsunuz, size kolay gelsin...

Başlık: Ynt: Atmel studio assembly dilinde hc-sr04 sensörü çalıştırma
Gönderen: MÜHENDİS ADAM - 14 Kasım 2015, 21:26:00
programım doğru olsa zaten çalışırdı hatamı öğrenmek için yazdım buraya dedikleriniz uyguladım yine olmadı belkide kodum yanlıştır zaten yeniyim bu konuda.