Saat ileri gidiyor.

Başlatan DRK, 08 Mart 2006, 18:44:05

DRK

16F628A ve 4511 kullanarak yaptığım led displayli saatin ileri gitmesini önleyemiyorum.Sinyali dışarıdan verdiğimde biraz iyileşme oldu fakat sorun tamamen çözülmedi.Saniye nin arttırıldığı ve CIKIS satırlarından sonra gecikme yaparak bunu engellemeye çalıştım fakat olmadı.Hata koddan mı yoksa kullandığım donanımdan mı kaynaklanıyor bunu bilmek istiyorum.Yardımcı olabilecek arkadaşlara şimdiden teşekkürler.
@ DEVICE pic16F628, WDT_on 
@ DEVICE pic16F628, PWRT_ON 
@ DEVICE pic16F628, PROTECT_OFF 
@ DEVICE pic16F628, MCLR_OFF 
@ DEVICE pic16F628, XT_OSC 
'****************************************************************
TRISA=%00111
TRISB=0
'****************************************************************

OPTION_REG=%10000101  	 
INTCON=%10100000  	
TMR0=0
CMCON=7    
ON INTERRUPT GoTo KESME    

PORTB=0
PORTA=%11000
SAAT VAR BYTE
DAKIKA VAR BYTE
SANIYE var BYTE
SAYAC VAR BYTE
SAAT_i VAR BYTE 
SAAT_s VAR BYTE 
DAKIKA_i VAR BYTE
DAKIKA_s VAR BYTE
SCM VAR BYTE
ticks var byte 

symbol  SEC   =PORTA.0 'MOD TUŞU, BU TUŞ HANE BLİRLEYECEK

pause 100
CLEAR


BASLA:   

SAAT_i = SAAT DIG 0
SAAT_s = SAAT DIG 1
DAKIKA_i = DAKIKA DIG 0
DAKIKA_s = DAKIKA DIG 1
GOSUB EKRAN


ATLA:
IF (SEC = 0) THEN
INTCON = 0
SAYAC = 0
SCM = SCM+1
IF (SCM = 3) THEN
SCM = 0
INTCON = %10100000
TMR0=0
SANIYE=0
ENDIF
ENDIF
GOSUB AYAR
GOTO ATLA

AYAR:
WHILE SEC=0 
WEND
MINUTE:
IF (SCM = 1) THEN
toggle PORTA.3 
IF PORTA.1 = 0 THEN
DAKIKA = DAKIKA+1
PAUSE 200
ENDIF
IF PORTA.2 = 0 THEN
DAKIKA = DAKIKA-1
PAUSE 200
ENDIF
ENDIF
HOUR:
IF (SCM = 2) THEN
TOGGLE PORTA.4
IF PORTA.1 = 0 THEN
saat = SAAT+1
PAUSE 200
ENDIF
IF PORTA.2 = 0 THEN
SAAT = SAAT-1
PAUSE 200
ENDIF
ENDIF
GOSUB BASLA


EKRAN:
PORTB=240 | SAAT_i
LOW PORTB.4
PAUSE 1
HIGH PORTB.4
PAUSE 1

PORTB=240 | SAAT_s
LOW PORTB.5
PAUSE 1
HIGH PORTB.5
PAUSE 1


PORTB=240 | DAKIKA_i
LOW PORTB.7
PAUSE 1
HIGH PORTB.7
PAUSE 1

PORTB=240 | DAKIKA_s
LOW PORTB.6
PAUSE 1
HIGH PORTB.6
PAUSE 1
RETURN


Disable 
KESME 
ticks = ticks + 1 
If ticks < 61 Then CIKIS 
ticks = 0 
saniye = saniye + 1 
If saniye >= 60 Then 
saniye = 0 
dakika = dakika + 1 
If dakika >= 60 Then 
dakika = 0 
saat = saat + 1 
If saat >= 24 Then 
saat = 0 
Endif 
Endif 
Endif 
'------------------------------------------------------------------------------- 
CIKIS
INTCON.2 = 0 
Resume 
end
         
END

http://rapidshare.de/files/15005774/SAAT.rar.html
ÇALIŞMAK VE BAŞARMAK ZORUNDAYIZ...

Erol YILMAZ

bu konu daha önce çok defa tartışıldı ama en basitinden problemi tespit edebileceğin bir yöntemden bahsedeyim.

Frekansmetrenin olduğunu varsayarak,    aynı devre üzerinde yapabileceğin en hızlı karedalga çıkışını yap. Mesela 160 kHz oldu.
Onu frekansmetre ile ölç. Yani pinden çıkan sinyalin frekansını.

Eğer o istediğin değerde değil ise anla ki OSC frekansın doğru değil.
OSC nin şaseye bağlanan kondansatorlerinden birini ayarlı yaparak TRIM yapabilirsin.

Kolay gelsin

CaFFeiNe

ekrana yazdırma vs gibi yerlerde pause komutları kullanmışsın normaldir kullan tabiki ama picbasic te donanımsal kesme özelliği yok yani kullandığın komutların işi bitmeden kesmeye giremiyorsun bu sebepten bazı kesmeleri kaçırıyor olabilirsin ve saatinde şaşar
tavsiyem programını proton+ a uyarla ve donanım kesmesi kullan

on hardware interrupt goto... gibi bişiydi