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.
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.
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.
tagli güzel link teşekkürler ama doğru söylüyorsunuz timer kullansak gerek kalmaz.