Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

lütfen yardım

Başlatan taytis, 16 Haziran 2005, 08:13:07

taytis

slm üstadlar , artık başıma ağrılar girdi çok basit olmasına rağmen olmuyor bana yardımcı olursanız sevinirim.

bir svice basılacak ve herhangi bir porttan çıkış verilecek daha sonra kesilecek sonraki ihtimali veya döngüyü bekleyecek ,bende bu olmuyor en azından proteusta düzgün çalışıyor fakat boardun üzerinde aptallaşıyor . sürekli röle açıp kapamaya başlıyor.

aşağıda bir kod verdim ,proteusta düzgün çalışıpta neden boardun üzerinde aptallaşır. pic beslemesi ile giriş uçlarını yani svicleri aynı beslemeden kullanıyorum acaba ondan olabilir mi ?
şimdiden yardımlarınız için teşekkür ederim.

# include "pic.h"
# include "delay.c"


void ilk (void)
{
RA0=1;
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
RA0=0;
PORTA=0b00000000;
}


void iki (void)
{
RA1=1;
DelayMs(250);
DelayMs(250);
RA1=0;
}






main (void)

{
TRISA=0b00000000;
TRISB=0b11111111;
PORTA=0b00000000;
PORTB=0b00000000;




for(;;)
{

    


	
    if (RB0==0)
    {
      ilk();
         if (RB1==0)

    {
      iki();

      while(RB0==0);

    }
    
        if (RB1==1);
        {
PORTA=0b00000000;
PORTB=0b00000000;

        }
    }
    



}
}

refik1

asm halini borda ekle yardım edelim
bu dilden anlamıyorum

Veli B.

Arkadaşlar sorularınız için başlık açarken, sorunu ifade edecek kelimeler kullanırsak ilgili olmayan arkadaşların zamanını almayız.

Bu dili bende bilmiyorum ama for next veya benzeri bir fonksiyonun olması gerektiğini düşünüyorum.10 adet gecikme rutini var.bunlar subrutin olarak yazılıp program içinden çağrılırsa bir sefere mahsus kod yazımı ile daha kolay ve az kodla çalıştırılır diye düşünüyorum.Dediğim gibi yazdılarımı okurken bu dili bilmediğimi göz önüne alın.Belki olmayabilir.

asahin11

While(RB0==0);

sonsuz döngüye giriyor gibi geldi bana.

kamilozkan

bir de şöyle denesene,
anladığım kadarı ile bir tuşa basınca 500ms saniyeyanıp, sönecek; diğerine basınca daha fazla yanıp dönecek, değil mi?

# include "pic.h" 
# include "delay.c" 


void ilk (void) 
{ 
RA0=1; 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
DelayMs(250); 
RA0=0; 

} 


void iki (void) 
{ 
RA1=1; 
DelayMs(250); 
DelayMs(250); 
RA1=0; 
} 






main (void) 

{ 
TRISA=0b00000000; 
TRISB=0b11111111; 
PORTA=0b00000000; 
PORTB=0b00000000; 




for(;;) 
{ 





if (RB0==0) 
 
ilk(); 


if (RB1==0) 
iki(); 




} 

}

 Dilimizde tüy bitti artık.Kod verirken "#" ikonuna basarak kod tagını kullanalım arkadaşlar.

.

ete

Arkadaşlar,

Proteus ta çalışıpda gerçek devresinde çalışmayan devrelerde mutlaka programda kusur aramayın. Proteusda çalıştığına göre gerçek devrede fiziksel bir kusur olmalı bence. Bunların başında da şu meşhur 100nF kondansatör geliyor. Bu bende artık merak haline geldi. Yaptığım kartlarda 100 nf en son bağlıyorum ve önce 100 nf sız devreyi çalıştırıyorum. Pek çok kartta bahsi geçen aptallıklar meydana geliyor. Kondansatörü yerine bağlayınca her şey düzeliyor. Sevgili Bunalmış hocanın bu konuda yazmış olduğu bir yazısı var. O yazıyı okuyun lütfen. Bu kondansatör aslında bir filtre kondansatörü olarak çalışmıyor yerinde. Bu yüzden besleme bacaklarına mümkün olabilecek en yakın mesafeye kesinlikle koyulması gereken bir eleman.

Proteus bazen saçmalıklar yapıyor. Yada bize saçma gibi geliyor ama aslında doğrusunu yapıyor. Bunun sebebide devreyi çalıştırırken bazı varsayımlar alıyor. Örneğin beslemeyi siz bağlamıyorsunuz. Kristal bağlamanız gerekmiyor vs. gibi.  Şİmdiye kadar benimde başıma çok defa geldi. Proteusta çalışıp ana gerçekte çalışmayan devreler. Sonunda hep proteus haklı çıktı. Çok nadir durumlarda ben haklı gibi görünsemde sebebini kesin ortaya koyamadığım durumlar çok oldu.
Her neyse  @ taytis şu 100nf konusunu bir açıklığa kavuştur bakalım yerindemi değilmi. Ondan sonra fikir üretmeye başlayalım.

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