C++ timer sorunu?

tersoll

Üye
Katılım
25 Nis 2010
Mesajlar
142
Puanları
1
Yaş
39
#include "C:\Users\ESMA\Desktop\DENEME\main.h"


void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

// TODO: USER CODE!!

basla:
output_high(PIN_b0);
output_high(pin_b3);
delay_ms(5000);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b3);
delay_ms(2000);
output_low(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
delay_ms(5000);
output_low(pin_b0);
output_low(pin_b1);
output_high(pin_b2);
output_low(pin_b3);
delay_ms(2000);
output_low(pin_b2);
goto basla;



}

yapmak istediğim örneğin bir zaman vericem 5 sn ve b0-b3 çalışacak programda olduğu gibi bunu başardım ama asıl olan bu 5 sn dolana kadar b3 1sn yanıcak 2 sn sönücek ben b3 zaman verdiğimde genel olan 5 saniyem oluyor toplamında 5+1+2=8 sn oluyor inş anlatabilmişimdir zaman içinde zaman yapmak istiyorum ve bu ana zamanım değişmesin yardımcı olursanız sevinirim
 
Daha küçük bekleme zamanı olan bir for döngüsü oluşturun. Örneğin 500ms lik. her döngüde yapmak istediğiniz işleme ait bir sayıcı oluşturun. Sayıcı bu değere ulaştığında işlemi yapın ve sayıcıyı sıfırlayın.
 
Daha küçük bekleme zamanı olan bir for döngüsü oluşturun. Örneğin 500ms lik. her döngüde yapmak istediğiniz işleme ait bir sayıcı oluşturun. Sayıcı bu değere ulaştığında işlemi yapın ve sayıcıyı sıfırlayın.

Tavsiye güzel ama anlayana..
 
hocam bir example be :)
 
int a=0;

void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);


basla:
output_high(PIN_b0);
output_high(PIN_b3);
for(a=0;a<1;a++) delay_ms(500);
a=0;
output_low(PIN_b3);
for(a=0;a<1;a++) delay_ms(500);
a=0;
for(a=0;a<2;a++) delay_ms(500);
output_low(PIN_b0);
a=0;
goto basla;

BÖYLE YAPIYORUM AMA OLMUYO
 
//Zannedersem istediğiniz bu.
// kullandığım pic 16f628a
#fuses XT,NOPROTECT,NOWDT ,NOPUT,NOLVP,NOBROWNOUT,NOCPD
#use delay(clock=4000000)

int16 say=0;
int16 say_1=0;

void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
for(;;)
{
say++; //b0...b3 için
say_1++; //b3 için
delay_ms(3); //sayma aralığı

if(say==500)
output_b(0b00001111);//b0..b3 high
//------------------------------------------------
if(say_1==300) //b3 low
output_b(0b00000111);

if(say_1==600) //b3 high
{
output_b(0b00001111);
say_1=0;

}
//-------------------------------------------------
if(say==3000) //b0..b3 low
{
output_b(0);
say=0;
delay_ms(100);// döngü sonlandığında boşda bekleme süresi
}
}
}

// Siz ayarlarla oynayarak istediğiniz zamana getirebilirsiniz
// saygılar.
 
a numeric expression must appear here diye bir hata veriyo derlerken
 
for
{ hata verdiği yer burası
 
for(;;) olmalı iki adet noktalı virgül ve parantezi kapa ordaki sırıtan şey kendiliğinden oluşuyor
 
Son düzenleme:
nasıl anlamadım

- - - Updated - - -

sadece for yazıp yapıyorum olmuyo
 

Yeni mesajlar

Forum istatistikleri

Konular
128,158
Mesajlar
915,525
Kullanıcılar
449,904
Son üye
teknikbilimlers31

Yeni konular

Çevrimiçi üyeler

Geri
Üst