Pic Asm Zaman Geçikmesi

hkn_blt

Üye
Katılım
31 Ağu 2009
Mesajlar
1,162
Puanları
31
arkadaşlar size pic asm dilinde nasıl zaman geçikmesi yapıldını anlatmaya çalışayım.

asm de tek döngü ile max 756usn geçikme yapabiliyoruz.
çift döngü ile max 197ms geçikme yapabiliyoruz.

bunu örnekle gösterirsek:çift döngülü üzerinden nasıl hesaplandığını anlatayım...

GECIKME

MOVLW H'FF' ;BU KOMUT 1 ÇEVRİM
MOVWF SAYAC1 ;BU KOMUTTA 1 ÇEVRİM

DONGU1
MOVLW H'FF' ;1X256 ÇEVRİM (255 H'FF' SAYISINA KARSILIK GELİYOR)
MOVWF SAYAC2 ;1X256 ÇEVRİM

DONGU2
DECFSZ SAYAC2,F ;1X256X256 ÇEVRİM (SAYAC1 VE SAYAC2 İÇERİĞİ 255 OLDUGUNDAN )

GOTO DONGU2 ;2X255X255 (GOTO 2 ÇEVRİM OLDUGUNDAN 2 İLE ÇARPTIK)

DECFSZ SAYAC1,F :1X255
GOTO DONGU1 ;2X255
RETURN: 2 ÇEVRİM

--------------------------------
TOPLAMDA:196608 ÇEVRİM EDER 4MHZ KRİSTAL KULLANIRSAN BU YAKLAŞIK 197ms TEKABUL EDER.BU DURUMDA ANLAMAK ZOR BENDE İLK BAŞTA ANLAMADA ZORLUK ÇEKTİM KISAYOLUNU VEREYİM ŞİMDİ;

arkadaşlar şimdi sayac1'e attığımız sayıya M,sayac2'ye attığımız sayıya N diyelim bu durumda formulize edersek

çevrim sayısı=3xMxN olur.Max sayac1 ve sayac2 ye 255 atabildiğimizden toplamda max 197ms geçikme sağlar bize bu döngü.
Ama bize daha çok zaman gerekiyor 1sn 2sn ....10sn gibi bu durumda bir sayaç daha belirleriz onuda döngüye sokarız.Şöyle diyim şimdi 2 döngü ile max. 197ms elde ediyoruz peki 1sn elde etmek istesek sayac3 hangi degeri alır dersek:

sayac3=1sn/197ms=5 degerini alır.

ewet 3 döngü ile ise max 50sn elde edebiliriz niyemi çünkü sayac3 e max 255 yükleyebiliriz ohalde:

sayac3=255=x/197ms dersek burdan x geçikme süresi kabul edersek

x=50sn çıkar buda hayli hayli işimizi görür.4.döngüye gerek yok
şimdi 1 sn geçikme yapan altprogram yazarsak



GECIKME

MOVLW H'05'
MOVWF SAYAC1

DON1

MOVLW H'FF'
MOVWF SAYAC2

DON2

MOVLW H'FF'
MOVWF SAYAC3

DON3

DECFSZ SAYAC3,F
GOTO DON3
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN


umarım faydalı olur.....
 
Son düzenleme:
kardeşim emeğine sağlık gayet faydalı oldu . ama bi sorum olacak


GECIKME

MOVLW H'FF' ;BU KOMUT 1 ÇEVRİM
MOVWF SAYAC1 ;BU KOMUTTA 1 ÇEVRİM

bu alanda çarpım işlemi yapmamışsın ama döngülerin içinde çarpım işlemi yapılmış bunun sebebi var mı?

bir de
GOTO DONGU2 ;2X255X255 komutunda FF sayısını 255 alırken MOVWF ve MOVLW lerde 1x256 şeklinde almışsın bunun sebebi nedir ?

ŞİMDİDEN TEŞEKKÜRLER
 
3xMxN 3*255*255 = 195075 eder. neder M ve N sayılaranı 256 olarak aldın?
 
anlatım için elinize sağlık
fakat uzun süreli döngülerde program akışı gecikme kısmında takılı kalmaz mı? o esnada çevre birimlerinde değişimler olur ya da olması gerekir ise ?
bence en güzeli multi-task türünde program yazmak ve gecikmeler için interput kullanmak en ideali
 

Forum istatistikleri

Konular
129,191
Mesajlar
924,093
Kullanıcılar
451,554
Son üye
elektrikci7716

Yeni konular

Geri
Üst