dokuzgen
Üye
- Katılım
- 12 Ocak 2012
- Mesajlar
- 2
- Puanları
- 1
kolay gelsin arkadaşlar son çare olarak konu açmak zorunda kaldım kusuruma bakmayın,
16F877A ile step motor kontrol etmeye çalışıyorum mikroc kullanıyorum sorunum şu;
adım aralarına delay ms ile değişken tanımladım, for döngüsü içinde sonsuz adım attığı için delay ms değişkenini döngü içinde değiştiremiyorum. Döngüye girmeden önce değişkeni değiştirmek istiyorum switch-case yapısı denedim fakat başarılı olamadım. hız artır butonunu birden fazla kullanarak 4 kademe artırmam gerekiyor delay ms değişkenini:
#define artihiz button(&PORTA,3,300,1)
void main() {
int hiz, sayac;
adcon1=7;
TRISB=0;
TRISA.f0=1; // sag
TRISA.f1=1; // dur
TRISA.f2=1; // sol
TRISA.f3=1; // hızlan
TRISA.f4=1; // yavasla
TRISA.f5=1; // tam tur
portb=0;
dur: portB=0;
sayac=0;
while(1) {
hiz=1000;
if(artihiz==1) {
sayac=sayac+1;
}
switch (sayac) {
case 1:
hiz=hiz-200;
break;
case 2:
hiz=hiz-200;
break;
}
if(porta.f0==1) for(;; ){
{ adim1:
portB.f0=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portB.f0=0;
portB.f1=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f1=0;
portb.f2=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f2=0;
portb.f3=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f3=0;
}
}
}
} umarım anlatabilmişimdir derdimi,,
16F877A ile step motor kontrol etmeye çalışıyorum mikroc kullanıyorum sorunum şu;
adım aralarına delay ms ile değişken tanımladım, for döngüsü içinde sonsuz adım attığı için delay ms değişkenini döngü içinde değiştiremiyorum. Döngüye girmeden önce değişkeni değiştirmek istiyorum switch-case yapısı denedim fakat başarılı olamadım. hız artır butonunu birden fazla kullanarak 4 kademe artırmam gerekiyor delay ms değişkenini:
#define artihiz button(&PORTA,3,300,1)
void main() {
int hiz, sayac;
adcon1=7;
TRISB=0;
TRISA.f0=1; // sag
TRISA.f1=1; // dur
TRISA.f2=1; // sol
TRISA.f3=1; // hızlan
TRISA.f4=1; // yavasla
TRISA.f5=1; // tam tur
portb=0;
dur: portB=0;
sayac=0;
while(1) {
hiz=1000;
if(artihiz==1) {
sayac=sayac+1;
}
switch (sayac) {
case 1:
hiz=hiz-200;
break;
case 2:
hiz=hiz-200;
break;
}
if(porta.f0==1) for(;; ){
{ adim1:
portB.f0=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portB.f0=0;
portB.f1=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f1=0;
portb.f2=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f2=0;
portb.f3=1;
if(porta.f1==1) goto dur;
Vdelay_ms(hiz);
portb.f3=0;
}
}
}
} umarım anlatabilmişimdir derdimi,,