26 Temmuz 2021, 10:03:32

Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME


12f675 problemi

Başlatan ~ENES~, 04 Temmuz 2021, 20:55:28

~ENES~

Arkadaşlar merhaba

12f675 ile led animasyonu yapıyorum. mikroC kullanıyorum derleyici olarak. GP2 bacağını bir türlü aktif edemedim. Tek başına flash yaptırıyorum çalışıyor hiç problem yok. Ama animasyona diğer pinleri de ekleyince GP2 hiç çalışmıyor. Yardımcı olabilir  misiniz ?





int animasyon=0;
int a=0;



void main() {
TRISIO=0b001000;
GPIO=0;
ANSEL  = 0;
CMCON  = 0X07;
OPTION_REG=0;
INTCON=0;

while(1)
{

    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    }






switch (animasyon) {
    case 0 :
    for(a=0;a<3;a++)
    {
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=1;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    delay_ms(70);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    delay_ms(70);
    }

    for(a=0;a<3;a++)
    {
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=1;
    delay_ms(70);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    delay_ms(70);
    }
       break;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    case 1 :
    GPIO.B1=1;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(300);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(300);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=1;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(300);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(300);
       break;
    case 2 :
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=1;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
    GPIO.B1=0;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=1;
    delay_ms(100);
       break;
    case 3 :
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=1;
    delay_ms(100);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
    GPIO.B1=0;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
    GPIO.B1=1;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(100);
       break;
    case 4 :
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=1;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(50);
    GPIO.B1=0;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(50);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=0;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(50);
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=1;
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    delay_ms(50);
       break;
    case 5 :

    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=1;
    delay_ms(50);
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=0;
    GPIO.B2=0;
    GPIO.B4=1;
    GPIO.B5=0;
    delay_ms(50);
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=0;
    GPIO.B2=1;
    GPIO.B4=0;
    GPIO.B5=0;
    delay_ms(50);
    if(GPIO.B3==0)
    {
    while(GPIO.B3==0){}
    animasyon++;
    if(animasyon>5) animasyon=0;
    break;
    }
    GPIO.B1=1;
    GPIO.B2=0;
    GPIO.B4=0;
    GPIO.B5=0;
    delay_ms(50);
       break;


}
}
}

RaMu

Kod eklerken kod tagı kullanın.

GPIO.B1=1;
    
GPIO.B2=1;
    
GPIO.B4=0;
    
GPIO.B5=0;
Bu iyi bir yöntem değil.Detaylar için Read modify write konusunu araştırabilirsin.

Şöyle kullanabilirsin:

GPIO 0b000000110;

Veya çıkış pini durum değiştirme satırları arasına 5-10 us bekleme koyabilirsin.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

mehmet

Animasyon harici ilgili pin hala
çalışmıyorsa; port tanımlamalarını
datasheet sayfa 21 deki sıralama
gibi yapınız.

~ENES~

Alıntı yapılan: RaMu - 04 Temmuz 2021, 21:10:46Kod eklerken kod tagı kullanın.

GPIO.B1=1;
    
GPIO.B2=1;
    
GPIO.B4=0;
    
GPIO.B5=0;
Bu iyi bir yöntem değil.Detaylar için Read modify write konusunu araştırabilirsin.

Şöyle kullanabilirsin:

GPIO 0b000000110;

Veya çıkış pini durum değiştirme satırları arasına 5-10 us bekleme koyabilirsin.

Sorun halloldu hocam söylediğiniz gibi port olarak işlem yapınca düzeldi. teşekkürler.

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.