Toggle komutu sorunu

Başlatan tolga.onder, 01 Haziran 2007, 14:50:57

tolga.onder

Merhaba,
aşağıdaki kodu proteusda simule etmek istiyorum. Fakat led sönmüyor.
proteusun versiyonu :6.2 sp5 problem nerde acaba. toggle komutu yerine portb.2=0 yazdığım zaman yaıp sönme oluyor ama toggle ile bunu başarmadım. Yardımcı olacak arkadailara şimdiden teşekkür ederim.
trisb=0
portb=0

basla:
       portb.2=1
              pause  1000
toggle  portb.2  
              pause 1000
goto basla
end

muser53

komut çalışıyor
isis de hata yapıyor olabilir sin
yazdığın programı isis 6.9 sp5 denedim. 16f84A kullandım.

e3

trisb=0 
portb=0 

basla: 
portb.2=0 
pause 1000 
toggle portb.2 
pause 1000 
goto basla 
end


Önce ledi yakıyorsun ardından 1 saniye bekleyip, ledi söndür-tekrar yak yapıyorsun ve tekrar 1 saniye bekliyorsun.Her halükarda led sönmüyor olabilir.Bu nedenle önce Portb.2'yi 1 yapma direk Toggle kullanarak programı bir de öyle dene.Kolay gelsin.İyi günler.
.eem.

tolga.onder

muser53 6.9 da benim kodumu sorunsuz çalıştırdınız demek ?
potection sizin verdiğiniz kodla denedim istediğim oldu ama mantığını anlayamadım.

tolga.onder

şimdi birşey farkettim.


benim verdiğim kodu pic tarafına ledin anadunu bağlarsan çalışmıyor ama pic tarafına katodunu bağlarsan çalışıyor. Mantığını anlayamadım.

e3

Ben Protonla yazıyorum ama BasicPro'ya pek farkı yok.
Alıntı yapılan: "Proton"Syntax

TOGGLE Port.Bit

Overview

Sets a pin to output mode and reverses the output state of the pin, changing 0 to 1 and 1 to 0.

Senin kodlarına gelince ;
trisb=0
portb=0

basla:
portb.2=1  ; Portu "1" yaptın.
pause 1000
toggle portb.2  ; Bu komut bir önceki konumu önce tersler sonra eski konumuna geri döner.Yani sen Portb.2'yi "1" yapmıştın, ardında tekrar sıfırlayıp tekrar 1 yaptın.Yani ledin çok kısa bir süre söndü ancak sen göremedin.

pause 1000
goto basla
end

Benim yazdığım gibi yaparsan Led'in ilk önce zaten yanmıyordu ardından tekrar yanıp tekrar söndürdün.Böylece Led'i yakıp söndürmüş oldun.Kolay gelsin.
.eem.

cuneytsezmis1

trisb=0
portb=0

basla:
pause 1000
toggle portb.2
goto basla


birde böyle deneyin.(not geçen başıma geldi komutta portb.2=1 yazıyorum olmuyor. high portb.2 yazıyorum oluyor.)

vale9

Alıntı Yapbirde böyle deneyin.(not geçen başıma geldi komutta portb.2=1 yazıyorum olmuyor. high portb.2 yazıyorum oluyor.)

PORTB.2=1 demek; PORTB registerinin 2. bitini 1 yapmak demek. Eğer bu pin çıkış olarak tanımlıysa çıkışı high yapar, ama eğer değilse yapmaz. Daha önce benim de başıma gelmişti. Bu tür problemler için HIGH PORTB.2 demek en doğru çözüm çünkü;

"HIGH Pin

Make the specified Pin high. Pin is automatically made an output. Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0)."

Ayrıca tolga.onder, senin yazdığın ilk kodlar benim isis'te de çalışıyor. Led'in yönünün doğru olduğuna eminmisin sen? Bu çok şeyi değiştirir. Ters bağlarsan kullandığın pic'in pin yapısına göre sonuç alırsın. Mesela internal pull-up'ı olan bir pin ile olmayan bir pin farklı çalışır. Sen en güzeli Led'in yönünü olması gerektiği gibi bağla.

Saygılar.
Hayat 1'ler ve 0'lardan ibarettir.