ıf koşulu sağlansada sağlanmasada program devam

Başlatan victor, 14 Mart 2005, 13:12:38

victor

arkadaşlar merhaba
herkezlere kolay gelsin.
aşağıda bir program yazılı

PROGRAMDA
porta giriş
portb çıkış olarak KULLANILIYOR
;*********************************
portb = %00000000
BASLA:
IF PORTA.0 = 1 THEN GOSUB ALTPRG
IF PORTA.0 = 0 THEN PORTB=%11111111
GOTO BASLA
END
ALTPRG:
PORTB = %00000001
PAUSE 100
PORTB = %00000010
PAUSE 100
PORTB = %00000100
PAUSE 100
PORTB = %00001000
PAUSE 100
PORTB = %00010000
PAUSE 100
PORTB = %00100000
PAUSE 100
PORTB = %01000000
PAUSE 100
PORTB = %10000000
PAUSE 100
RETURN
END
;***************************


BU PRGORAMDA 2.İNCİ IF KOMUTUNDAKİ ALTRUTİNİ ÇAĞIRMA YERİNE
"PORTB = %00000000"
YAZILDIĞINDA PROGRAM DOĞRU ÇALIŞMAKTA

FAKAT BU HALİYLE DOĞRU ÇALIŞMAMAKTA
OLAN OLAY İSE ŞU
IF KOŞULU DOĞRU OLSADA OLMASADA
ALTPROGRAMIN ÇALIŞIYOR OLMASI

ACABA PROGRAMIMIN NERESİNDE HATAM VAR ?
YARDIMCI OLURSANIZ SEVİNİRİM...
BU OLAYI SİMÜLATÖRDE DEĞİL
PİC'İN KENDİSİNDE DENİYORUM...

YAPMAK  İSTEDİĞİM İSE
PORTA.0'a +5VOLT VERİLDİĞİNDE ALT PROGRAM ÇALIŞACAK
PORTA.0'a GERİLİM OLMADIĞINDA İSE PORTB'NİN BÜTÜN PİNLERİNE BAĞLI
OLAN LEDLER YANACAK

iyi çalışmalar

ete

Kullandığın PIC'in cinsini de belirtirmisin?.
Ayrıca programın tamamını verirsen daha iyi olur. Bu hali ile eksik komutlar var.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ete

@Victor,

Muhtemelen bir iki şeyi eksik yazdın.
Aşağıda doğru kodu gönderiyorum. Dene bakalım.

I var byte
TrisA=255
TrisB=0
portb = %00000000 
BASLA: 
IF PORTA.0 = 1 THEN GOSUB ALTPRG 
PORTB=%11111111 
GOTO BASLA 
END 
ALTPRG: 
for I=0 to 7
PortB=DCD I
PAUSE 500
NEXT I
RETURN

END

Açıklama yapmak gerekirse;
- Her şeyden önce portların giriş çıkış yapılması ile ilgili TrisA ve TrisB registerlerini ayarlamayı unutmamak gerekiyor.

- Birinci if komutundan sonra tekrar bir if kullanman gerekmiyor. Çünki bu satıra gelindiğinde zaten PortA.0 pininin low yani sıfır olması gerekiyor. Başka alternatif olmadığına göre burada tekrar bir if kullanmak gerekmez.

YAptırmak istediğin işe bakarak DCD komutunu kullanmak daha uygun olur. A= DCD 1  der isek A sayısının 1. bitini High yapmış oluruz diğer bitler sıfırda kalır. DOlayısıyla bir I değişkeni alıp bunu bir for next döngüsüne sokar isek (0-7 arasında) tek komut ve tek gecikme ile istediğin iş hallolmuş olur. Ben süreyi biraz uzun tuttum isis de olayı göreyim diye istersen sen kısaltabilirsin.

Kolay Gelsin
ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

victor

KULLANDIĞIM PİC
16F84A

ÖNERİLERİNİZİ DENEYECEĞİM
İLGİ İÇİN TEŞEKKÜRLER

ftsahin

@victor :
Pic'in giriş ucunu (PortA.0) 10K dirençle toprağa bağladın mı ? Bunu yapmadıysan havadan gelen sinyallerle bile giriş 1 olabiliyor.Simülasyonda böyle birşey olaz ama gerçekte olabilir.
Kolay gelsin.

victor

ben porta.0 'a direkt olarak +5V verebilecek
buton ve / veya sensör bağladım
direkt olarak
tabiki 10k direnç ile birlikte
+5V girmekte

havadaki bu etkilerden
etkileneceğini hiç düşünmemiştim
ama dediğinizde haklı olabilirsiniz

kolay gelsin hepinize

mukoali

daha önce benimde buna benzer bişeyler başıma gelmişti
ben tris değerlerini 2 lik sistemde yazınca düzelmişti sebebini de hala anlamış değilim

taxxin2002

ÖNCELİKLE PORTA.0 IN UCUNU 1 DİRENÇ ÜZERİNDEN (ÖRN 10K)0 V A ÇEKTİNMİ PİC İN PİN LERİNİ KESİNLİKLE BİŞTA BIRAKMA İKİNCİ OLARAK TA KULLANDIGIN PİC CİNSİ EGER ANALOG İNPUTLARA SAHİP BİR PİC KULLANIYORSAN PORTA.0 ANALOG INPUTLARDAN İLKİDİR VE PROGRAMA BAŞLAMADAN ÖNCE DİGİTALE ÇEVİRMEN GEREKİR BUNU YAPMADIYSAN YİNE SONUÇ ALAMAYABİLİRSİN KOLAYGELSİN İYİ ÇALIŞMALAR

ete

@Taxxin2002,

Her şeyden önce mesajlarını kesinlikle büyük harf yazma. Forumun bir çok yerinde bu işin kızarak ve bağırarak konuşma anlamına geldiği defalarca belirtildi. Lütfen kaidelere uyunuz.
Diğer bir konu da mesajlarını bütününü okumadan cevap yazmayın.
Victor arkadaş demiş ki kullandığım işlemci 16F84A ve sen diyorsunki;
"Kullandığın Pic cinsi eğer analog inputlara sahip bir pic kullanıyorsan PortA.0 analog inputların ilkidir......"  şimdi verdiğin bu cevap işlemci ile çelişmiyormu?. Halbuki mesajlara iyi baksa idin bu kısmını yazmayacaktın.

Umarım biraz daha dikkatli olursun.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

taxxin2002

pardon ete arkadaşım ben bu forumlarda yeniyim böyle bir kural oldugunu bilmiyordum picbasicte küçük harflerde problem yaşadaıgım için
genelde klavyem büyuk harf modunda kusura bakma