timer 1'i disable yaptıktan sonra tekrar başlatamıyorum

Başlatan umit2006, 06 Ağustos 2012, 14:52:12

umit2006

timer1'i kulanarak 999'a kadar saydırıyorum.A3 pininden timer1'i durduruyorum,tekrar çalıştırmak için A4 pininden set_timer1(0) yaptığımda sayıcı sıfırlıyor ama saymaya devam etmiyor.Yardımlarınızı bekiyorum.

#include <16F628.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES PROTECT                  //Code protected from reads
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=3276800)
int16 i=0;
int bir=0,on=0,yuz=0;

void ekran_goster()
{


output_high(pin_a0);//birler hanesi gösteriliyor
output_b(bir),
delay_ms(100);
output_low(pin_a0);


output_high(pin_a1);//onlar hanesi gösteriliyor
output_b(on);
delay_ms(100);
output_low(pin_a1);


output_high(pin_a2);//yüzler hanesi gösteriliyor
output_b(yuz);
delay_ms(100);
output_low(pin_a2);



}
void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|L_TO_H);//timer1 dış bacaktan puse alıyor(yükselen kenarda)
   setup_timer_2(T2_DISABLED,0,1);
   set_timer1(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
while(true)
{

i=get_timer1();//timer1 değerini i değikenine aktarıyorum
         if (i==1000)//999'a kadar sayması için sıfırıyorum
         {

         set_timer1(0);
         }
bir=i%10;//birler hanesi
on=i/10;//onlar hanesi
on=on%10;
yuz=i/100;//yüzler hanesi

//output_b(i);
ekran_goster();
      if (input(pin_a4))//A4 pinine basıp durdurumuş olan timer1'i sıfıryorum tekrar çalışması için ama çaışmıyor!yardım lütfen
      {
      
      set_timer1(0);
      }
      if (input(pin_a3))//A3 pinine basıp timer1'i durduruyorum saydığı en son değerde kalıyor
      {
//set_timer1(0);
setup_timer_1 ( T1_DISABLED );
      }
}
}

justice_for_all

set_timer1(0);
 setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|L_TO_H);


bu şekilde yapman gerek
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

umit2006

ilginize teşekkürler, yazdığınız kodu da denedim timer1 i sıfırlıyor ama saymaya başlamıyor...

sadogan

Sorunu çözdünüzmü bilemiyorum ama sorunun çözümü söyle.
ekran_goster();
      if (input(pin_a4))//A4 pinine basıp durdurumuş olan timer1'i sıfıryorum tekrar çalışması için ama çaışmıyor!yardım lütfen
      {
      setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1) // bu satırı ekleyin.
      set_timer1(0);
      }
      if (input(pin_a3))//A3 pinine basıp timer1'i durduruyorum saydığı en son değerde kalıyor
      {
//set_timer1(0);
setup_timer_1 ( T1_DISABLED );
      }
a3 pini ile tmr1 yasaklıyorsunuz a4 pini ile yeniden kurman gerekiyor.