Bir butonla start stop pic css c

Katılım
18 May 2007
Mesajlar
96
Puanları
1
Yaş
39
Herkese merhaba; Bir deneme programı yazıyorum.Bir butonla start stop olarakta adlandırabilirsiniz. aşağıda örneğini verdiğim programda butona bir kere bastım ilk program çalışacak.Ama çalışmaya devam edecek sürekli.Ne zaman ikinci defa butona basarsam o zaman birinci program duracak 2. program çalışacak.3. defa basarsam da program komple duracak.nasıl yapabilirim??

/******************************************************
Uygulama Adı : Yürüyen Işık
PIC PROG/DEKA : Port B jumper'ı LED konumunda olmalı
*******************************************************/

‪#‎include‬ <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

‪#‎fuses‬XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

‪#‎use‬ delay(clock=4000000) // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

int i,x,led; //i ve led isminde tam sayı tipinde 8 bitlik değişkenler tanıtılıyor.

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı

set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor

output_b(0x00); // B portu çıkışları sıfırlanıyor

while(1)
{
x==0;
led=1;//led değişkeni değeri 1 oluyor

if (input (pin_a0))
{

delay_ms(25);
x++;

if (x==3)
{x=0;
}while(input(pin_a0))



{if (x==1)
{
for(i=0;i<=7;i++) // for döngüsü oluşturuluyor
{
output_b(led); // led değişkeni değeri B portuna gönder
led=led<<1; // led değişkeni değerini 1 bit sola kaydır
delay_ms(100); // 100 msn'lik gecikme veriliyor
}

led=0x80; //led değişkenine değer yükleniyor
output_b(led); //B portuna 0b10000000 bilgisi gönderiliyor
delay_ms(100); // 100 msn'lik gecikme veriliyor

for(i=0;i<=6;i++) // for döngüsü oluşturuluyor
{
led=led>>1; // led değişkeni değerini 1 bit sağa kaydır
output_b(led); // led değişkeni değeri B portuna gönder
delay_ms(100); // 100 msn'lik gecikme veriliyor
}}}

if(x=2)
{ for(i=0;i<=7;i++) // for döngüsü oluşturuluyor
{
output_b(led); // led değişkeni değeri B portuna gönder
led=led<<2; // led değişkeni değerini 1 bit sola kaydır
delay_ms(100); // 100 msn'lik gecikme veriliyor
}

led=0x80; //led değişkenine değer yükleniyor
output_b(led); //B portuna 0b10000000 bilgisi gönderiliyor
delay_ms(100); // 100 msn'lik gecikme veriliyor

for(i=0;i<=6;i++) // for döngüsü oluşturuluyor
{
led=led>>2; // led değişkeni değerini 1 bit sağa kaydır
output_b(led); // led değişkeni değeri B portuna gönder
delay_ms(100); // 100 msn'lik gecikme veriliyor
} }

}}}
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,864
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst