benim amacım bir devre yapıp programını yazmak ve bir ledde yüriyen ışık uygulaması yapmak.ışıklar yukarı aşağı yukarı aşağı şekilde olcak.içinde 2 tane buton 8 tane led olcak.2 buton olmasının sebebi bi buton ışıklar arası geçiş süresini azaltcak diğeri ise arttırcak.aşağıda bunun devresi var:(http://img593.imageshack.us/img593/3995/adszdb.png)
ve onun için yazdığım program ise bu ve çalışmıyor sorun nedir acaba yardımcı olur munuz?
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(a)
int1 x;
int1 y;
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_a(0b00000001);
set_tris_b(0x00);
basla:
x=input(pin_a0);
output_bit(pin_b0,x);
delay_ms(100);
x=input(pin_a0);
output_bit(pin_b1,x);
delay_ms(200);
x=input(pin_a0);
output_bit(pin_b2,x);
delay_ms(300);
x=input(pin_a0);
output_bit(pin_b3,x);
delay_ms(400);
x=input(pin_a0);
output_bit(pin_b4,x);
delay_ms(500);
x=input(pin_a0);
output_bit(pin_b5,x);
delay_ms(600);
x=input(pin_a0);
output_bit(pin_b6,x);
delay_ms(700);
x=input(pin_a0);
output_bit(pin_b7,x);
goto basla;
}
else
{
break;
}
basla2:
y=input(pin_a1);
output_bit(pin_b0,y);
delay_ms(700);
y=input(pin_a1);
output_bit(pin_b1,y);
delay_ms(600);
y=input(pin_a1);
output_bit(pin_b2,y);
delay_ms(500);
y=input(pin_a1);
output_bit(pin_b3,y);
delay_ms(400);
y=input(pin_a1);
output_high(pin_b4,y);
delay_ms(300);
y=input(pin_a1);
output_bit(pin_b5,y);
delay_ms(200);
y=input(pin_a1);
output_bit(pin_b6,y);
delay_ms(100);
y=input(pin_a1);
output_bit(pin_b7,y);
goto basla2;
}
else
{
break;
}
}
Daha önce yaptığım bu örneği bir incele. delay 20 ve 50 ms olan yerlere değişken yap ve o değişkenin değerini artır up/down butonları ile
///////// KARASIMSEK ////////////////
////// Led dipsw (SW): On ////////////////
////// J13 :Pull-up ////////////////
////// Diger butun switch ve jumperlar :Off ////////////////
////// Kullanilan butonlar :A0,B0,C0,D0 ////////////////
////////////////////////////////////////////////////////////////////////////////
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
int8 i,k,m;
void slightrght(){
i,m=1;
for (i=1;i<=7;++i)
{delay_ms(20);
output_bit(k,1);
delay_ms(50);
output_bit(k,0); ++k;
}
}
void slightlft(){
i,m=1;
for (i=1;i<=7;++i)
{delay_ms(20);
output_bit(k,1);
delay_ms(50);
output_bit(k,0); --k;
}
}
///////////////////////////////////////////////////////////////////////////////
void main() {
disable_interrupts(GLOBAL); // all interrupts OFF
//-----------------------------------------------------
set_tris_a(0); set_tris_b(0); set_tris_c(0); set_tris_d(0);
output_a(0x00); output_b(0x00); output_c(0x00);output_d(0x00);
k=48;
while(TRUE) {
slightrght ();
slightlft ();
}
}