Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: ido2323 - 20 Ekim 2014, 20:59:22

Başlık: Ynt: Geciktirici
Gönderen: ido2323 - 20 Ekim 2014, 20:59:22
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.
Başlık: Ynt: Geciktirici
Gönderen: Kabil ATICI - 20 Ekim 2014, 21:14:33
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/ (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.
Başlık: Ynt: Geciktirici
Gönderen: Tagli - 21 Ekim 2014, 09:20:15
Doğru, bunları elle yazmaya hiç gerek yok. Burada (http://www.piclist.com/techref/piclist/codegen/delay.htm) 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.
Başlık: Ynt: Geciktirici
Gönderen: ido2323 - 21 Ekim 2014, 14:47:27
tagli güzel link teşekkürler ama doğru söylüyorsunuz timer kullansak gerek kalmaz.