arkadaşlar öncelikle ilgilendiğiniz için teşekkürler.ak47if dediğin şeyi devreden çıkaramam çünkü step motor sadece 1 tur döner ve sonra durur eğer çıkarırsam. naki kardeş doğru anlamışın ama ben 2pice seri iletişim kurdurmak istiyorum o yüzden diğer picten diğer pice döngü içinde nasıl buton kontrolü yapabiliriz onu soruyorum.yani döngü içinde program işlerken butona basınca diğer döngüye atlicak anlatabilmişimdir umarım.normal tek picte bunu rahatça yapılıyor ama alıcı vericili bir devre olduğu için yapamadım bi türlü.yazdığım programın tamamını gönderdim
ALICI programı:
int al,i=0,hiz=100;
const int duz[]={0x11,0x33,0x22,0x66,0x44,0xCC,0x88,0x99}; // Step motor yarım adım dönüş adımları
const int sag[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
const int sol[]={0x10,0x30,0x20,0x60,0x40,0xC0,0x80,0x90};
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab
// TODO: USER CODE!!
while(1){
al=getch(); //vericiden gönderilen bilgi alınıyor
if (al==10) //eğer alınan bilgi 10 ise
{
for(i=0;i<8;i++)
{
output_b(sag); // Step motor 1 adım ileri
delay_ms(hiz); // Adımlar arası bekleme süresi
if (i==7) i=-1; // i değişkeni 7 olunca i değeri -1 olsun
}
}
if (al==22)
{
for(i=0;i<8;i++)
{
output_b(sol); // Step motor 1 adım ileri
delay_ms(hiz); // Adımlar arası bekleme süresi
if (i==7) i=-1; // i değişkeni 7 olunca i değeri -1 olsun
}
}
if (al==33)
{
for(i=0;i<8;i++)
{
output_b(duz); // Step motor 1 adım ileri
delay_ms(hiz); // Adımlar arası bekleme süresi
if (i==7) i=-1; // i değişkeni 7 olunca i değeri -1 olsun
}
}
if(al=44)
{
for(i=7;i>=-1;i--)
{
if (i==-1) i=7; // i değişkeni -1 ise i değeri 7 olsun
output_b(duz); // Step motora 1 adım geri
delay_ms(hiz); // Adımlar arası bekleme süresi
}
}
}
}
VERİCİ programı:
int ver;
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab
// TODO: USER CODE!!
basla:
if(input(pin_b0))
{ ver=10;
while(input(pin_b0));
goto gonder;
}
if(input(pin_b1))
{
ver=22;
while(input(pin_b1));
goto gonder;
}
if(input(pin_b2))
{
ver=33;
while(input(pin_b2));
goto gonder;
}
if(input(pin_b3))
{
ver=44;
while(input(pin_b3));
goto gonder;
}
goto basla;
gonder:
putc(ver); //alıcıya ver değişkeni içindeki bilgi gönderiliyor
goto basla;
}