gecikme ayarı

Başlatan sermokhan, 14 Mart 2008, 20:33:49

sermokhan

diyelimki gecikme kodu

GECIKME
	MOVLW	H'FF'
	MOVWF	SAYAC1
DONGU1
	MOVLW	H'FF'
	MOVWF	SAYAC2
DONGU2	
	DECFSZ	SAYAC2,F
	GOTO	DONGU2
	DECFSZ	SAYAC1,F
	GOTO	DONGU1
	RETURN
olsun.
Program içerisinde  


        CALL GECIKME
         CALL GECIKME
         CALL GECIKME 
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
         CALL GECIKME
yerine bukadar gecikmeyi daha kısa nasıl yaptırabilirim

SpeedyX

Başka sayaç ile 12 defa çağırabilirsin ama ozaman zaman farkı oluşacaktır, onuda gecikme rutininin içinden FF den düşerek kompanse etmeye çalışabilirsin.

movlw .12
movwf yenisayac
call gecikme
decfsz yenisayac,f
goto $-2
....

sermokhan

bunu uyguladığım zaman takılma yapıyor

ÖRNEK:

BSF PORTB,0
MOVLW.12
MOVWF SAYAC
CALL GECIKME
DECFSZ SAYAC,F
goto $-2 
BSF PORTB,1


1.led yanıyor takılı kalıyor 2.ye geçmiyor

SpeedyX

goto $-2 yerine bir etiket ismi vererek denediniz mi?

sermokhan

bu şekilde yaptım olmadı
  MOVLW 	.12
	MOVWF 	SAYAC3
BASLA	
	CALL 	GECIKME
	DECFSZ 	SAYAC3,F
	GOTO 	BASLA
	BSF 	PORTB,1

XX_CİHAN_XX

sayac3 ü gecikme nin içinde kullanmadığına eminmisin?
Progrmını mplabda simule ederek nerde kitlendiğini çok rahat anlarsın.Ancak başka bir hata yapmadıysan bir sorun olmaması gerek.
Bu arada Wdt kapalı değil mi?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.