//ALI EMRE MENTES//
#include <p18f452.h>
#pragma config OSC = XT, PWRT = ON, WDT = OFF, LVP = OFF, DEBUG = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF,WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF, EBTRB = OFF
void bekle(void) //BEKLEME FONKSİYONU TANIMLANDI
{
unsigned int m,n; //DÖNGÜNÜN DEĞİŞKENLERİ TANIMLANDI
for(m=0; m<300; m++) //İÇ İÇE DÖNGÜ OLUŞTURARAK BEKLEME ZAMANI AYARLANDI
for(n=0; n<100; n++); { };
}
void main(void) //MAİN FONKSİYONU TANIMLANDI
{
int i,j,l; //İLERİDEKİ DÖNGÜLERDE KULLANILACAK DEĞİŞKENLER TANIMLANDI
i=0; //DEĞİŞKENLER SIFIRA EŞİTLENDİ
j=0;
l=0;
TRISB=0x00; //PORTLAR GİRİŞ VE ÇIKIŞ OLARAK AYARLANDI
TRISC=0XFF;
TRISE=0X00;
PORTC=0X00; //PORTLAR SIFIRLANDI
PORTB=0X00;
PORTE=0X00;
while(1) //SONSUZ DÖNGÜ OLUŞTURULDU
{
if(PORTCbits.RC0==1) //1. BUTONA BASILINCA
{
i=i+1; //İ'Yİ 1 ARTIR
while(PORTCbits.RC0) //1. BUTANA BASILIP ÇEKİLENE KADAR BEKLEMESİ SAĞLANIYOR
bekle(); //BEKLEME FONKSİYONU ÇAĞRILIYOR
if(i==3) //EĞER BUTONA 3 KEZ BASILMIŞSA YANİ İ=3 İSE AŞAĞIDAKİ FONKSİYONLARI ÇALIŞTIR
{
PORTB=0; //B PORTUNU SIFIRLA
PORTB=0X01; //B PORTUNUN SADECE 1. PİNİNİ YAK
i=0; //İ'Yİ SIFIRLA
}
}
while(PORTCbits.RC1) //2. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
PORTB=0; //B PORTUNU SIFIRLA
PORTB=0X01; //B PORTUNUN 1. PİNİNİ 1 YAP
bekle();
PORTB=0X03; //B PORTUNUN İLK 2 PİNİNİ 1 YAP
bekle();
PORTB=0X07; //B PORTUNUN İLK 3 PİNİNİ 1 YAP
bekle();
PORTB=0X0F; //B PORTUNUN İLK 4 PİNİNİ 1 YAP
bekle();
PORTB=0X1F; //B PORTUNUN İLK 5 PİNİNİ 1 YAP
bekle();
PORTB=0X3F; //B PORTUNUN İLK 6 PİNİNİ 1 YAP
bekle();
PORTB=0X7F; //B PORTUNUN İLK 7 PİNİNİ 1 YAP
bekle();
PORTB=0XFF; //B PORTUNUN BÜTÜN PİNİNİ 1 YAP
bekle();
}
while(PORTCbits.RC2) //3. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{ //BİR ÖNCEKİ WHİLE DÖNGÜSÜNÜN TERS ŞEKLİ HALİNDE ÇALIŞMASI
PORTB=0;
PORTB=0X80;
bekle();
PORTB=0XC0;
bekle();
PORTB=0XE0;
bekle();
PORTB=0XF0;
bekle();
PORTB=0XF8;
bekle();
PORTB=0XFC;
bekle();
PORTB=0XFE;
bekle();
PORTB=0XFF;
bekle();
}
while(PORTCbits.RC3) //4. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
PORTB=0; //B PORTU SIFIRLANDI
for(j=0; j<256; j++) //FOR DÖNGÜSÜ İLE J DEĞİŞKENİ 0 DAN 255 KADAR 1 ARTIRARAK SAYIYOR
{
PORTB=j; //J DEĞİŞKENİ PORTB'YE ATANARAK J NİN 2 LİK TABANDAKİ DEĞERLERİNİ PİNLERE ATANIYOR
bekle();
}
}
while(PORTCbits.RC4) //5. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
PORTB=0;
PORTB=0X55; //B PORTUNUN ÇİFT PİNLERİ 1 YAPILARAK TEK NUMARALI LEDLER YAKILDI
bekle();
}
while(PORTCbits.RC5) //6. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
PORTB=0;
PORTB=0XAA; //B PORTUNUN TEK PİNLERİ 1 YAPILARAK ÇİFT NUMARALI LEDLER YAKILDI
bekle();
}
while(PORTCbits.RC6) //7. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
bekle();
l=l+1; //L DEĞİŞKENİNİ 1 ARTIR
if(l==1) //L=1 İSE İF DÖNGÜSÜNE GİR
{
PORTB=0x01; //PORTB NİN 1. PİNİNİ YAK
while(PORTCbits.RC6) //BUTONA BASILIP L=1 OLDUKTAN SONRA HALA BUTONA BASILIYSA BEKLEMEYİ SAĞLIYOR
bekle();
} //AŞAĞIDAKİ KOMUTLARDA AYNI MANTIKLA ÇALIŞIYOR
if(l==2)
{
PORTB=0x02;
while(PORTCbits.RC6)
bekle();
}
if(l==3)
{
PORTB=0x04;
while(PORTCbits.RC6)
bekle();
}
if(l==4)
{
PORTB=0x08;
while(PORTCbits.RC6)
bekle();
}
if(l==5)
{
PORTB=0x10;
while(PORTCbits.RC6)
bekle();
}
if(l==6)
{
PORTB=0x20;
while(PORTCbits.RC6)
bekle();
}
if(l==7)
{
PORTB=0x40;
while(PORTCbits.RC6)
bekle();
}
if(l==8)
{
PORTB=0x80;
while(PORTCbits.RC6)
bekle();
}
if(l==8)
l=0; //L DEĞİŞKENİ 0 YAPILARAK DÖNGÜNÜN TEKRAR ÇAILŞMASINA OLANAK SAĞLANIYOR
}
while(PORTCbits.RC7) //8. BUTONA BASILDIĞIN AŞAĞIDAKİ KOMUTLARI ÇALIŞTIR
{
PORTB=0; //PORTB Yİ SIFIRLA
PORTEbits.RE1=1; //E PORTUNUN 1.PİNİNİ 1 YAP VE BUZZERİN ÇALIŞMASINI SAĞLA
bekle();
}
PORTEbits.RE1=0; //E PORTUNUN 1. PİNİNİ 0 YAP
}
}
//ALI EMRE MENTES//