butona her bastığımda farklı işlem satırı işi yapmak istiyorum yardım edermisniz

Başlatan sifirzero, 02 Nisan 2016, 21:17:10

sifirzero

#include <16f628a.h>
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,MCLR,                                                                                 
#fuses NOPROTECT                              
#use delay(clock=4mhz) 

#use STANDARD_IO( A ) 
#use STANDARD_IO( B ) 

int a;

void main()
{                                 
while(TRUE) 
{
if(input(pin_a1)==1) //Buton a basılımı?
  {
output_high(pin_b0); //Butonun konumunu değiştir  
output_high(pin_b1);
delay_ms(500); //500 ms gecikme 
output_toggle(pin_b1); 
delay_ms(10);   
output_high(pin_b2);               
 }                           
                                       
 if(input(pin_a2)==1 )            
 {
  output_low(pin_b0);          
  output_low(pin_b1);
  output_low(pin_b2);
 }
  
}        
}           



yukarıda verdiğim kod bir işlem.tek butona ile üç işlem yapmak istiyorum pin_a0 1.bastığımda bir işlem 2.kez bastığımda 2.bir işlem çalışması.şu şekilde olabilir pin_a0  1 keremi mi evet ise alttaki programı çalıştır  pin_a0 2.kez basıldımı alttaki programı çalıştır gibi.abileri arkadaşlarım yardımcı olurmusunuz.yardım ederseniz çok büyük bir adım atıcam öğrenip.şimdiden Allah razı olsun.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

görkem

While döngüsü içine butona bastığında artan bir değişken ata    buton arkını önlemek içinse butonu kontol etikten sonra while(input(pin)==1); komutunu kullanarak buton dan elini çekene kadar döngüyü beklet ve  menü ler içinse if ile artan değişkeni denetle yani if(değişken)==1 ise 1.menu 2 ise 2.menü gibi

sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

görkem

While(true)
{
İf(input(pin)==1)
{
While(input(pin)==1);
Sayi++;
}
İf(sayi==1) menü 1
{

}
İf(sayi==2) menü 2
{

}
İf(sayi==3)sayi=0;
}
Bunu kesme ile yapabilirsinizde

fatal16

Butonu dış kesme ile kullan
Her kesme oluştuğunda sayacını bir arttır
Sayacın o andaki durumuna göre istediğin işlemi gerçekleştir.

sifirzero

ustam daha balık tutmasını öğrenemedim.hazır verebilirmisniz zahmet olmazsa.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

dursuncemal

su ana kadar yazdigin kodu paylasirmisin? birde tam olarak ne yapalim tek tek yazarsan yardimci olalim.
:=

sifirzero

Ustam ilk yazdigim mesajda kodlar var.kaldigim aşama.bir buton ile 3 tane seçenek olacak ikinci buton ile 3 seçenekten birini çalistircam.örnek 1.butona ilk bastim asagiya ikinci bastim yukari ücuncu bastim yan.ama ikinci buton çalıştircak bunlari.ikinci buton ile start vercem.Allah razı olsun.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

erpay

Öncelike buton okuma rutininde oluşan buton sıçramasını(debouncing) araştırıp butonu normalce okuyacak duruma gelmen lazım kendi başına. Bunu hazır verebiliriz ama sana fayda sağlamamış olur.

dursuncemal

:=

sifirzero

Şimdilik led ustam.transistor surucem daha sonra.

mesaj birleştirme:: 05 Nisan 2016, 15:15:07

Mesela kolumuzdaki casio saatler varsa basit elektronik olan bir tus seciyor diger tus artiriyor.tekrara badiyor diger ayara geciyor gibi.

mesaj birleştirme:: 05 Nisan 2016, 01:16:08

Ustam sure seçmeli yildiz ucgen devresi dusunuyorumda.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

ankyra

benim programımın bir parçası. tam istediğin gibi bir program. çalışıyor. giriş seviyesinde programlar yazıyorum, çok daha iyisi yazılabilir...

void menu()
{
  while(input(B1)==1); //B1 butonuna ilk kez basıldığında bu döngüye girer basıldığı sürece döngüde kalır
while (input(B1)==0)  //B1 bırakıldığında bu döngüdeki işlemleri yapar. tekrar b1 e basılana kadar
{

  lcd_putc("\f     cevre?\n");
  printf(lcd_putc,"%f",cx);
//!
if (input(B2)==1)   //SENSÖR KONTROL
    {
    while(input(B2)==1);

    cx=cx-1;
    }
    if (input(B3)==1)   //SENSÖR KONTROL
    {
    while(input(B3)==1);

    cx=cx+1;
    }
delay_ms(10);
}
                  if (input(B1)==1)   
                      {
                      while(input(B1)==1); //B1 butonuna ikinci kez basıldığında bu döngüye girer basıldığı sürece döngüde kalır
                      }
                     while (input(B1)==0) //B1 bırakıldığında bu döngüdeki işlemleri yapar. tekrar b1 e basılana kadar
                     {
                     
                       lcd_putc("\fKac Sensor Var??\n");
                       printf(lcd_putc,"%d",sensor);
                     //!
                     if (input(B2)==1)   //SENSÖR KONTROL
                         {
                         while(input(B2)==1);
                     
                         sensor=sensor-1;
                         }
                         if (input(B3)==1)   //SENSÖR KONTROL
                         {
                         while(input(B3)==1);
                     
                         sensor=sensor+1;
                         }
                     delay_ms(10);
                     
}
return;
}

sifirzero

Ustam Allah razi olsun kodlarin tamami yok ama bunu dencem.cikiş nasil alicaz.onu anlayamadim.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir