Süre problemi

Başlatan muyat, 06 Aralık 2014, 08:53:31

muyat

Aşagıdaki gibi basit bir programım var.Programda şöyle bir sorunum var.
Program anm etiketine atladıktan sonra ANM'yi 53 kez tekrar yapmasını istedim.hıgh leddden sonra pause 45 ve low ledden sonra yine paause 45 koydum.Toplamda pause 90 yapıyor.90x53=4700 yani 4, saniye sonra ledin ANM etiketini terkedip tamamen sönmesi gerekirken program yaklaşık 9-10 saniye sürüyor.9-10 saniye boyunca led yanıp yanıp sönüyor ve en sonunda sönüyor.Bunun nedeni ne olabilir?Ve nasıl çözücem?


@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON &_MCLRE_OFF & _BODEN_OFF & _CP_ON
define OSC 4
DEFINE OSCCAL_1K 1
CMCON = 7
ANSEL = 0
trisio = %00100000
GPIO=0
SYMBOL LED= GPIO.1
SYMBOL ROLE= GPIO.0
SYMBOL OPTO=GPIO.5
i var byte
GPIO=0
pause 200

BASLA:
low role
IF OPTO=0 THEN ANM
GOTO BASLA
ANM:
HIGH ROLE
for i=1 to 53
HIGH LED
pause 45
low led
pause 45
next i
GOTO BASLA
END

ete

Zaten toplam süre 4770 ms tutuyorki bu yaklaşık 5 sn demektir. Komut gecikmeleri ile bu süre 9sn yi bulabilir çünki, high led diye bir komut kullandığın zamanişlemci şunu yapar,
Output led
Led=1
Gördüğün gibi zaten çıkış olan led pini önce çıkış yapılır sonra o çıkışa 1 verilir.
High led yerine , led=1 şeklinde komut kullanırsan komutun uygulanma süresi kısalacaktır.
Aynı şey low led komutu içinde geçerli. Onun yerinede led=0 yazmalısın.
Elbette bu değişiklikten sonrada süre yine 6-7 ms dolayında olabilir. 4 sn olsun istiyorsan pause 45 yerine 38 gibi bir değer verebilirsiniz.

Ete

muyat

Sorunu hallettim hocam.
Pic girişi bi flip flop devresine baglıydı.Flip flop kesildiginde bu yazılımdaki ledde sönecek diye düşünürken program tam flip flop kapandıgında son  bi kez daha etikete atladıgı için program bir kez daha tekrar ediliyormuş.Yani yazılımda sorun yok.Teşekkürler

Powered by EzPortal