Pic programlama Soruları

Hangi mikrodenetleyici olduğunu söylememişsin 12F675 için örnek mikroc konfigurasyon ayarı şu şekilde:
4_mikroc.png


1)LEDli bir uygulama geliştimeniz istenmektedir. Bu uygulamada 4 adet LED ve 2 adet buton kullanılacaktır. Birinci butona basıldığında bütün LEDler yanıp sönecektir. İkinci butona basıldığında ise LEDler sıra ile yanacaklar ve hepsi yandıktan sonra hepsi sönecektir.
NOT:LEDler arasındaki yanıp sönme aralığı zaman gecikme süresi isteğinize bağlı olarak ayarlanabilir.

16F877 kullanıldığını varsayalım,
4 Adet led
Led0 PORTB0
Led1 PORTB1
Led2 PORTB2
Led3 PORTB3 e bağlı olsun.
Led Anod ları mcu pinine bağlı yani öcu çıkışı 1 high 5V olduğunda led yanıyor olsun.

Buton1 PORTB4
Buton2 PORTB5 e bağlı olsun.
Butona basıldığında mcu pinine High 5V geliyor olsun.


}
Kod:
ANSEL = 0x00;
CMCON =0x07;
TRISB = 0b00110000//Ledler için pinleri çıkış 0, butonlar için giriş 1 yapmalıyız.

while (1){
    if(PORTB.F4 == 1)   //Buton1 e basıldıysa
    {
       Delay_ms(100);    //Buton arkı için bekle
       while(PORTB.F4 == 1);//Butondan el çekilene kadar bekle
      
         PORTB = 0x0F; //4 ledde yansın
         Delay_ms(1000); //1 saniye yanık kalsın
         PORTB = 0x00; //bütün ledler sönsün
       }


    if(PORTB.F5 == 1)   //Buton2 ye basıldıysa
    {
       Delay_ms(100);    //Buton arkı için bekle
       while(PORTB.F5 == 1);//Butondan el çekilene kadar bekle
      
         PORTB.0 = 1; // led1 yansın
         Delay_ms(1000); //Led1 1 saniye yanık kalsın
         PORTB.1 = 1; //Led2 yansın
         Delay_ms(1000); //Led2 1 saniye yanık kalsın
         PORTB.2 = 1; //led3 yansın
         Delay_ms(1000); //Led3 1 saniye yanık kalsın
         PORTB.3 = 1; //Led4 yansın
         Delay_ms(1000); //Led4 1 saniye yanık kalsın

         PORTB = 0x00; //bütün ledler sönsün
       }
}
 
@karaapak Tahminimce yaşınız benden büyük şu zamana kadar kendi isteklerim doğrultusunda yaşayamadım. Hayal ettiğim bir çok şeyi gerçekleştiremedim. Çaba gösterdim olmadı,oluruna bıraktım daha da kötü oldu. Hani bize birşeyler öğret diyorsun ya size en iyi öğretebileceğim şey; Hayat hepimize belirli bir yaşam süresi vermiş ve bu süre içerisinde alışılagelmiş dünya düzenine ayak uydurmamak gerektiğini, hayatı bu kadar ciddiye alınmaması gerektiğini ve en önemlisi de dürüst yaşamak gerektiğini öğretebilirim. Bu ülkede ki en temel sorun bencillik bunu unutmayın. Herkes kendi menfaat ve çıkarlarını gözetir. Biz ne zaman toplumun en temel sorunlarına birlik içerisinde el atmaz isek bu ülkede mutlu olamayız. Önce insan olacağız kurulmuş bu düzensiz düzene baş kaldıracağız. Ülkede bu kadar adaletsizlik, düzensizlik var iken bir insanının rahat uyuması, düşünmemesi mümkün değildir.

İlk başa eklemeyi unuttum ; GENÇ ADAM AĞIR İŞTE ÇALIŞMAZ !!!
Hangi Pici kullanmam gerektiğini söylemedi. büyük ihtimal ile tercihi bize bırakmış olmalı. Bu arada elinize sağlık. Bu akşam vaktinde benim için uğraştınız sağolun varolun.
 
Sende yazılımcı potansiyeli var benden söylemesi.

Yazabileceğim çok şey var yukarıdaki mesajına ama
zeitgeist belgeseli (2 tane biri addendum)
Sigmound Freud (modern psikoanalizin babasıdır) çıkar ile ilgili açıklamaları.
Tüm canlılar için değişmez, canlının temel amacı nedir?

Tavsiye dersen kendimden örnek vereyim
çözemeyeceğin problemlerle uğraşıp kendi değerini boşa harcama,
nefes alıyorsan kabiliyetin mertebesinde aldığın nefesin hakkını ver,
doğadan adığını doğaya uyarak geri ver.

Merak etme meşakatsiz yollardan rahata ulaşmak, hayallerini yaşamak diye birşey ancak masallarda oluyor, ne kadar ekmek o kadar köfte yasası ;)
 
Öncelikle verdiğiniz bilgilerden ötürü size teşekkür ediyorum. Tavsiyelerinize uymaya çalışacağım. Emeğinize sağlık
 
3)Bir 7 segment göstergede 0 ile 9 arasında asal sayıları sırası ile gösteren bir uygulama yapınız.
7 Segment ortak katod olsun,
mcu 7 segment ledine bağlı pine1 verince ilgili led yansın.
Bu soru için 7 segment abcdefg pinlerini mcuda PortB ye bağlı şekilde bir tablo yap.
7 segmentte 0~9 rakamlar için PortB de hangi pinleri 1 hangi pinleri 0 yapmak lazım onu belirle.
Sonra 0~9 arası hangi rakamlar asal sayı bunu belirle.
Kod:
MCU   RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
7Seg  DOT  g   f   e   d   c   b   a
Rakam                Değer
9
8
7
6
5
4
3
2
1
0
 
bak, @Leodamar win 98 den önce w2000 sonrada xpyi öğrendim Delphi de program yazmayı öğrendim, access+excel de haciz program yazdım,derledim. ki o zamanlarda öyle şeyler hem çok pahalı hem de yoktu. ege bölgeden denetleme avukatı programı görünce çıldırdı, sayfalarca matbuu evrak doldurmak yerine bir kaç bilgi ile 1 saatte yaptığı hesaplı kitaplı kanunlu bilgiyi sadece 5 dakikada yapar oldu. sonra hayat beni öyle biryerlere attı ki. bildiklerimi unuttum. herkes herkese bir şeyler öğretir. emekli olduktan sonra eletronik kart tamircisinin yanıda işe girdim. yaz tatilinde yanımızda çalışan 12 yaşındaki çocuktan ardiuno bile öğrendim. yani öğrenmek için geç değil, öğretmek için de erken değil.
 
3.SORUYU KENDİMCE ÇÖZÜMLEMEYE ÇALIŞTIM.
#define BTN PORTA.B0
//---------------------------
const char ledKod[10]={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x67};
unsigned int sayi=0,asal=0;
//--------------------------------
unsigned char asalMi(unsigned int say)
{
char x,y;
int temp=1;
for(x=2;x<say-1;x++)
{
if(say%x==0) {temp=0;break;}
}
if(say==1) temp=0;
return temp;
}
//----------------------------------
void main()
{
ANSEL=0; //başlangış ayarları
ANSELH=0;
TRISA=1;
TRISC=0;
TRISD=0;
PORTC=ledKod[sayi/10];
PORTD=ledKod[sayi%10];
while(1)
{
if(BTN)
{
sayi++;
if(sayi>9) sayi=0;
asal=asalMi(sayi);
if(asal==1)
{
PORTC=ledKod[sayi/10];
PORTD=ledKod[sayi%10];
delay_ms(500);
}
}
}
}

PROGRAMI TAMAMEN KENDİM YAZMADIM. FARKLI SİTELERDEN ARAŞTIRARAK KENDİMCE SORUYA GÖRE UYARLAMAYA ÇALIŞTIM.SABAHTAN BERİ UĞRAŞIYORUM.
 
3.SORUYU KENDİMCE ÇÖZÜMLEMEYE ÇALIŞTIM.
#define BTN PORTA.B0
//---------------------------
const char ledKod[10]={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x67};
unsigned int sayi=0,asal=0;
//--------------------------------
unsigned char asalMi(unsigned int say)
{
char x,y;
int temp=1;
for(x=2;x<say-1;x++)
{
if(say%x==0) {temp=0;break;}
}
if(say==1) temp=0;
return temp;
}
//----------------------------------
void main()
{
ANSEL=0; //başlangış ayarları
ANSELH=0;
TRISA=1;
TRISC=0;
TRISD=0;
PORTC=ledKod[sayi/10];
PORTD=ledKod[sayi%10];
while(1)
{
if(BTN)
{
sayi++;
if(sayi>9) sayi=0;
asal=asalMi(sayi);
if(asal==1)
{
PORTC=ledKod[sayi/10];
PORTD=ledKod[sayi%10];
delay_ms(500);
}
}
}
}

PROGRAMI TAMAMEN KENDİM YAZMADIM. FARKLI SİTELERDEN ARAŞTIRARAK KENDİMCE SORUYA GÖRE UYARLAMAYA ÇALIŞTIM.SABAHTAN BERİ UĞRAŞIYORUM.
bak işte böyle gel, hatan varsa eksiğin varsa yardım edecek çok kişi var. emeksiz yemeği sadece satın alabilirsin, o da paran varsa
 
PROGRAMIN SON HALİ;

#define BTN PORTA.B0
//---------------------------
const char ledKod[10]={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x67};
unsigned int sayi=0,asal=0;
//--------------------------------
unsigned char asalMi(unsigned int say)
{
char x,y;
int temp=1;
for(x=2;x<say-1;x++)
{
if(say%x==0) {temp=0;break;}
}
if(say==1) temp=0;
return temp;
}
//----------------------------------
void main()
{
ANSEL=0; //başlangış ayarları
ANSELH=0;
TRISA=1;
TRISC=0;
TRISD=0;
PORTC=ledKod[sayi%10];

while(1)
{
if(BTN)
{
sayi++;
if(sayi>9) sayi=0;
asal=asalMi(sayi);
if(asal==1)
{
PORTC=ledKod[sayi%10];

delay_ms(500);
}
}
}
}
 

Forum istatistikleri

Konular
127,739
Mesajlar
912,360
Kullanıcılar
449,226
Son üye
ashbringer

Yeni konular

Geri
Üst