pause komutu ile max. nekadar gecikme sağlana bilir

Başlatan Evren KILIÇ, 02 Eylül 2009, 12:45:24

Evren KILIÇ

mrb   arkadaşlar PAUSE 1000  komutu ile bir saniyelik bir gecikme sağlaya biliyoruz ,bu gecikme maksimum kaç saniye olabilir sınırı varmıdır eger var ise bu sınırın üzerine nasıl çıkabiliriz ben saat bazında gecikme yapmak istiyorum
[email]evren1623@hotmail.com[/email]

M_B

Ne kadar istersen olur.
Ornek olarak
PAUSE 1000
PAUSE 1000
......
...


Veya For next dongusu ile de yapabilirsin.
Yalnız PAUSE komutuyla yapılan zamanlayıcı hassas olmaz
Hassas olması cın işlemcinin Timer ları ile yapılması lazım
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Evren KILIÇ

çok hassas değil ama 2 saatlik bir gecikmeyi yapmak için 7200 defa pause 1000 mi yazmam gerekecek yani
bir de pause xxxxxx max. sayı ne olabilir
[email]evren1623@hotmail.com[/email]

dijital74

@M_B arkadaşın da dediği gibi for-next döngüsüyle yapılabilir.


for i 1 to 7200
pause 1000
next i

OG

bir pause komutu word değerinde işlem yapabilir, yani 65535 e kadardır.

pause 65535 = 65535 ms

pause 65536 = 1 ms
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Evren KILIÇ

mrb   arkadaşlar iş yerinde çalışan bir arkadaş var böbrek hastası geceleri evde diyaliz mak. bağlanıyor ve 2 saatte bir cihazın fonksiyonunu değiştirmesi gerekiyormuş bazen uyuyup kaldığını ve diyalizin sağlıklı olmadığını söyledi ve kendisini 2 saate bir ikaz vererek uyandıracak birşey olup olmadığını sordu bir şey demedim ama kendi kendime pıc ile yapılabilir diye düşündüm şimdi aşağıdaki gibi bir kod yazdım ama sustur butonuna bastığım halde portb.0 low olmuyor daha dogrusu for -next nedeniyle algılama uzun sürüyor bu sorunu nasıl çözebilirim bir de devre enerjilendikten sonra enerjisi kesilene kadar bu şekilde devamlı çalışması gerekiyor

TRISA=%111111   'GİRİŞ
TRISB=%00000000  'ÇIKIŞ
I VAR BYTE

PORTA=0
PORTB=0


BASLA:
for i=1 to 7200           '2 saat ekle
pause 1000
HIGH PORTB.0           'buzer i çalıştır

IF PORTA.0=1 THEN  'sustur a basıldı ise
LOW PORTB.0           'buzer i durdur
NEXT I

ENDIF
GOTO BASLA
[email]evren1623@hotmail.com[/email]

wsxwsx


tyildizak

"i" yi byte olarak deklare etmişsin. Byte, 7200 değerini alabilir mi? "Word" olmalıydı.

Evren KILIÇ

henüz deneme yapıyordum deger 7200 değildi ama onun farkında da değildim acemilik böyle işte
[email]evren1623@hotmail.com[/email]

Evren KILIÇ

Alıntı yapılan: "wsxwsx"ENDIF 'i Next I den önce yaz
aşagıdaki gibi denedim ama olmadı sustur a bastıgımda yine susmadı gecikme çok fazla bu şekilde olmayacak galiba bu

TRISA=%111111 'GİRİŞ
TRISB=%00000000 'ÇIKIŞ
I VAR BYTE

PORTA=0
PORTB=0


BASLA:
for i=1 to 5                                        '7200 '2 saat ekle
pause 1000
HIGH PORTB.0 'buzer i çalıştır

IF PORTA.0=1 THEN 'sustur a basıldı ise
LOW PORTB.0 'buzer i durdur
ENDIF
NEXT I


GOTO BASLA
[email]evren1623@hotmail.com[/email]

ErsinErce

I VAR WORD
'___________________________
PORTA = 0
PORTB = 0
TRISA = 63
TRISB = 0 
I     = 0
'___________________________
BASLA:

IF PORTA.0 = 1 THEN
    LOW PORTB.0
ENDIF

I = I + 1

IF I > 36000 THEN
    HIGH PORTB.0
    I = 0
ENDIF

PAUSE 200

GOTO BASLA
'___________________________


Bu program işinizi rahatlıkla görür. Hassas bir zamanlama için timerlar kullanılarak birşeyler yapılabilir ama isterseniz pause 200 komutuyla oynayarak (tahminim 220) birkaç saniye fark ile net sonucu yakalarsınız. Kolay gelsin.

Evren KILIÇ

[email]evren1623@hotmail.com[/email]