16f628 ile Led Sürme (CCS C ile yapılmıştır)

hosiminh

Üye
Katılım
16 Ara 2009
Mesajlar
18
Puanları
1
Yaş
39
Elimde böyle bir devre var. Daha doğrusu tasarladık hex kodlarını da yazdık fakat PİC16f628 kullanıyorum ve dahili osilatörden kullanıyorum. Öyle bir tepki veriyor ki pic gülmekten ölürsünüz masa sallansa içindeki başka bir eyleme geçiyor. Normalde pic16f628 5v veya 4,5v arası ayaklardan gerilim verdiğimde çalışması gerekirken 2.4 volt gerilim geldiğinde o ayağa o zaman da aynı işlemi yapıyor anlayacağınız inanılmaz kötü ve kararsız bir durumda devrem. Bunun nedenleri neler olabilir bana yardımcı olabilecek arkadaşlara çok minnettar olurum ccs c kodlarını da paylaşayım en azında başkaları da benzer projeyi yapmak isteyebilir. Yardımlarınızı bekliyorum çok teşekkürler şimdiden...

#include <16f628.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOPUT,NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#use fast_io(a)
#fuses INTRC_IO
////////
void main ()
{
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);

set_tris_a(0xFF);
set_tris_b(0x00);

for(;
{
if((!input(pin_a0))&&(!input(pin_a1))&&(!input(pin_a2))&&(!input(pin_a3)))
{
output_high(pin_b0);
}

while ((input(pin_a0)))
{
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}

while((input(pin_a1))||(input(pin_a2))||(input(pin_a3)))
{
output_high(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}
}
}

while ((input(pin_a1)))
{
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}

while((input(pin_a0))||(input(pin_a2))||(input(pin_a3)))
{
output_high(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}
}
}

while ((input(pin_a2)))
{
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}

while((input(pin_a1))||(input(pin_a0))||(input(pin_a3)))
{
output_high(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}
}
}

while ((input(pin_a3)))
{
output_high(pin_b0);
delay_ms(1000);
output_low(pin_b0);
delay_ms(1000);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);
}

while((input(pin_a1))||(input(pin_a2))||(input(pin_a0)))
{
output_high(pin_b0);
delay_ms(250);
output_low(pin_b0);
delay_ms(250);

while((!input(pin_a4)))
{
output_high(pin_b2);
output_low(pin_b0);
}

if((input(pin_a4)))
{
output_low(pin_b2);

}
}
}

}
}
//////
 

Diğer bir mesajınızdakine benzer bir sorun, 2.4 volt kararsız bölgenin sınırında, kararsızlık olması da normal.

www.kontrolkalemi.com/forum/konu/pic16f628-in-ayaklarındaki-gürültüyü-nasıl-kesebilirim.51822/
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…