serdar çiçekin kitabındaki örneği aynen yazdım çalışmadı

Başlatan agoero_22, 31 Ocak 2018, 17:56:55

agoero_22

arkadaşlar merhaba ccs c' yi yeni öğrenmeye başladım.
butondan input alıp ledi 1 dakika sonra timer ile yakmam gerekiyor. yazdığım programda butona basılı tutunca led yanıyor. butona 1 kere basınca 1 dk sonra yanması lazım. ne yapabilirim? teşekkür ederim şimdiden

fide

Serdar Çiçekin kitabı güzel bir kaynak. Ben de onunla başlamıştım.
Kitaptaki programları yazıp  çalıştırmak yerine satır satır anlamaya çalış. Bu şekilde neyin ne iş yaptığını daha kolay çözersin.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

Salih


agoero_22

#include <16F877A.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay(clock=4000000)
#use fast_io(b)
int i=0;

#int_timer0
void timer0_kesme ()
{  set_timer0(60);
   i++;
   if (i==10)
   {output_high(PIN_B0);
   }
   if (i=20)
   {output_low(PIN_B0);
   i=0;
   }
}
void main()
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);
   set_tris_b(0x00);
   output_b(0);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   set_timer0(60);
   enable_interrupts(INT_timer0);
   enable_interrupts(GLOBAL);
   while(1);
   }





agoero_22

hocam cevaplar için teşekkürler ikinci if tek eşittir kullanmışım sorun çözüldü. bir sorum daha olacak timer0 ile butondan 1 kere input alınca 1 dk sonra led yakmam gerekiyor. basılı tutunca yakabiliyorum. ne yapmam gerekiyor timet fonksiyonunun içinde mi sorgulamalıyım yoksa while içinde mi?

fide

set_timer0(60);
Bu komut 60sn beklemen için yeterli değil.
(Clock /4)/256 yapsan 250mikrosaniye civarında süre yapar. Timer içine her girdiğinde sayacı artır. 250mikrosaniye saniyede 4000, dakikada 240000 defa çalışan tiner rutini eder. Timer içinde bu sayıya ulaşınca işlem yaptırabilirsin.
Tabi bu sayıyı saymak için int32 tanımlı değişken kullanmalısın.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com