Haberler:

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

Ana Menü

buton ile 3 e kadar sayma

Başlatan hasankomur, 24 Haziran 2012, 15:01:29

hasankomur

Sa arkadaşlar;
Yapmak istediğim programı kısaca anlatayım,
butona basıldığında 1. led yanacak ikinci defa basıldığında 1. led sönüp 2. led yanacak üçüncü defa basıldığında 2. led sönüp 3. led yanacak 4 veya farklı olduğunda buton sıfırlanıp başa dönecek. Ben bir tane kendimce yazdım ama olmadı. Yazdığım kodlarda bunlar;

#include <16f84a.h>
#use delay(clock=4000000)
#fuses xt,noput,nowdt,noprotect,
#use fast_io(a)
#use fast_io(b)
int i=0;

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   
   set_tris_a(0x01);
   set_tris_b(0x00);
   output_b(0);
   
   while(1){
   if(input(pin_a0)){
   i++;}
   switch (i){
   case 1:
   output_high(pin_b0);
   break;
   case 2:
   output_low(pin_b0);
   output_high(pin_b1);
   break;
   case 3:
   output_low(pin_b1);
   output_high(pin_b3);
   break;
   default:
   output_low(pin_b3);
   i=0;
   }
   }
}

pea

Bu haliyle , butona tek basışta i , 100lerce kez artacaktır.
i'yi arttırıp , biraz bekleme koyun.

Program hiç çalışmıyorsa MCLR pin'ini kontrol edin.

hasankomur

Alıntı yapılan: pea - 24 Haziran 2012, 15:31:07
Bu haliyle , butona tek basışta i , 100lerce kez artacaktır.
i'yi arttırıp , biraz bekleme koyun.

Program hiç çalışmıyorsa MCLR pin'ini kontrol edin.

Çok sağolun 250 ms lik bir gecikme koydum şuan gayet iyi :)

shark27

burda zamanlama ile butonu okutak problem yaratır önemliolan bir defa butona kısa sürelide uzun sürelide basssanız bunu bir defa basıldı olarak algılamasıdır.bunu için

if(input(pin_a0))
{
if(input(pin_a0));
{
...
}

bu şekilde düzenlerseniz siz butondan eliniz çektiğiniz zaman yapmak istediğiniz işlemi oluşturabilrsiniz.

hasankomur

Alıntı yapılan: shark27 - 26 Haziran 2012, 10:02:48
burda zamanlama ile butonu okutak problem yaratır önemliolan bir defa butona kısa sürelide uzun sürelide basssanız bunu bir defa basıldı olarak algılamasıdır.bunu için

if(input(pin_a0))
{
if(input(pin_a0));
{
...
}

bu şekilde düzenlerseniz siz butondan eliniz çektiğiniz zaman yapmak istediğiniz işlemi oluşturabilrsiniz.

sağolun deneyeceğim :)

hasankomur


OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.