Haberler:

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

Ana Menü

Ynt: Geciktirici

Başlatan ido2323, 20 Ekim 2014, 20:59:22

ido2323

iyi günler aşşağıdaki kod 4 mhz de yarım saniyelik gecikme sağlıyor ancak 20 mhzlik osilatörde ise bunu yapmak için 3. bir  döngü lazım(Bknz 2. kod) aşşağıdaki kod bunu yapıyor ama 9 sn bekliyor 1 sn beklemesi için nasıl yazmalıyım. Teşekkürler

GECIKME
   movlw h'ff'
   MOVWF sayac1

DONGU11
   movlw h'ff'
   MOVWF sayac2

DONGU12
   DECFSZ sayac2,F ;sayac2'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" komutuna atla
   GOTO DONGU12
   DECFSZ sayac1,F ;sayac1'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" döngüden ç?k
   GOTO DONGU11
RETURN


bu kod 20 mhz de 9 sn lik gecikme yapıyor.

GECIKME
   movlw h'ff'
   MOVWF sayac1

   movlw h'ff'
   MOVWF sayac2

DONGU11
   movlw h'ff'
   MOVWF sayac3


DONGU12
   DECFSZ sayac3,F ;sayac2'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" komutuna atla
   GOTO DONGU12
   DECFSZ sayac2,F ;sayac1'nin de?erini 1 azalt s?f?r olursa "DECFSZ sayac1,F" döngüden ç?k
   GOTO DONGU11
   DECFSZ sayac1,F
   GOTO DONGU11

RETURN


mesaj birleştirme:: 20 Ekim 2014, 21:12:37

ahh unutun gitsin 3 tane

call GECIKME
call GECIKME
call GECIKME

olay tamamdır.

Kabil ATICI

#1
pic16 serisi işlemci kullanıyorsanız,20MHz saat frekansını 5.000.000 çevrim 1 saniye yapar.

buna göre
;Variables: TMP2, TMP1, TMP0
;Delay 5000001 cycles
        MOVLW 0x50  ;80 DEC
        MOVWF TMP2
        MOVLW 0x7E  ;126 DEC
        MOVWF TMP1
        MOVLW 0xA4  ;164 DEC
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9
;End of Delay

işini görebilir.

bu tür işler için
https://320volt.com/pic-delay-asm-gecikme-kod-uretici-program/
gecikme hesaplayıcı diye bir program var, istediğin gibi kodu oluşturabilirsin.
Birim olarak çevrim istenmektedir, bu pic16f ve pic18f serilerinde saat frekansı/4  şeklindedir.
kendi programına istediğin gibi uyarlarsın.
ambar7

Tagli

Doğru, bunları elle yazmaya hiç gerek yok. Burada da benzer bir programın online versiyonu var. ASM ile kod yazdığım dönemlerde hep bunu kullanıyordum.

Bir diğer yaklaşım da gecikmeleri timer ile yapmak. O zaman bu tür kodların hiçbirine gerek kalmaz.
Gökçe Tağlıoğlu

ido2323

tagli güzel link teşekkürler ama doğru söylüyorsunuz timer kullansak gerek kalmaz.