Arkadaşlar, problemim if-then arasında kalan işlemin koşul bozulur bozulmaz sonlanması.
IF PORTA.1 = 1 THEN HIGH PORTB.1 PAUSE 2000 LOW PORTB.1 END IF
PORTA.1'de bir switch war, PORTB.1'de de motor var. Ben PORTA.1=1 olduğunda motorun 2 sn süreyle çalışmasını istiyorum ama motor çalışır çalışmaz düzenekteki PORTA.1=0 oluyor ve bekleme yapmadan işlem sona eriyor. Çok yöntem denedim ama olmadı. Fikri olan var mı? Ali
Basic bilmiyorum ama sorunun kaynağını yalnış yerde aradığın belli. IF yordamı içinde herhangi bir yerde koşulun bozulup bozulmamasını gözleyen bir makenizma olacağını hiç zannetmiyorum. Koşul bir defa sağlanır ve sonrası koşul rutinini ilgilendirmez.
PAUSE ile ilgili bir problem var olsa gerek. Mesela kristal hızını bildiren bişeyler vardır mutlaka, problem ordadır. Orda bir problem yoksa, o zaman sana bu gösterdiğin rutinde bir arıza varmış izlenimi veren bambaşka bir hata var.
Basic bilmiyorum ama sorunun kaynağını yalnış yerde aradığın belli. IF yordamı içinde herhangi bir yerde koşulun bozulup bozulmamasını gözleyen bir makenizma olacağını hiç zannetmiyorum. Koşul bir defa sağlanır ve sonrası koşul rutinini ilgilendirmez.
PAUSE ile ilgili bir problem var olsa gerek. Mesela kristal hızını bildiren bişeyler vardır mutlaka, problem ordadır. Orda bir problem yoksa, o zaman sana bu gösterdiğin rutinde bir arıza varmış izlenimi veren bambaşka bir hata var.
Aslında çok haklısın, koşul bir kez gerçekleşince end if'e kadar işlemi yapması lazım ama ilginçtir, yapmıyor. Denemek için araya başka komutlar da ekledim başka beklemeler de koydum. Switc'i elimle tutunca program normal çalışıyor ama elimi çekince swicth 1 olur olmaz program kesiliyor. Hem de nerede olursa olsun. Kristal hızını program kendisi ayarlıyor ve denedim, pause 1000 yazdığımda 1 sn bekliyor. Ali
Yani motor çalışır çalışmaz anahtar sıfır oluyor di mi şöyle olabilir ya toggle komutunu kullanabilirsiniz ya da b: if.. then goto a endıf end a: hıgh portb.1 pause 2000 low portb.1 goto b end
Yani motor çalışır çalışmaz anahtar sıfır oluyor di mi şöyle olabilir ya toggle komutunu kullanabilirsiniz ya da b: if.. then goto a endıf end a: hıgh portb.1 pause 2000 low portb.1 goto b end
Bilmiyorum ya program içinde interrupt servisleriyle ile ilgili bişeyler karışmış olmalı. Rb0 dış kesme ucu boştaysa ve yazılımda bir şekilde tetiklenmeyi bekliyorsa, motor çalıştığı an bu boşta kalmış ucun etkilenme olasılığı yüksek. Bu doğruysa o zaman rb0 ucunu 4.7k dirençle toprağa veya vcc'ye bağlamayı dene.
Arkadaşlar hepinizden özür diliyorum, zira switch ve rölelerden biri bozuk gibi duruyor. Onları yarın yenisini alıp değiştireceğim. Sanki röle ilk tetikte iletiyor ama iletimde kalamıyor. Bunları değiştirdikten sonra tekrar yazacağım. Bu kadar kısa sürede bu kadar cevap beklemiyordum, hepinize teşekkür ederim. Ali
IF PORTA.1 = 1 THEN
HIGH PORTB.1
PAUSE 2000
LOW PORTB.1
END IF
PORTA.1'de bir switch war, PORTB.1'de de motor var. Ben PORTA.1=1 olduğunda motorun 2 sn süreyle çalışmasını istiyorum ama motor çalışır çalışmaz düzenekteki PORTA.1=0 oluyor ve bekleme yapmadan işlem sona eriyor. Çok yöntem denedim ama olmadı. Fikri olan var mı?
Ali