keil c51

Başlatan kara_kalem, 19 Ekim 2005, 16:52:38

kara_kalem

keil programıyla ilgili bir ana başlık açılamazmı acaba? program hakkında fikir alışverişi için.

merve damar

#1
selamlar,
keilde bu şekilde bi kodum var. çıkışı girişteki butona bastığımda çıkışı aktif etmek istiyorum. aktif ediyorum. ama bi kaç saniye sonra pasif oluyor tekrardan. interupt, delay timer hepsini denedim hepsinde aynı sonuç. acaba keille ilgili bir problem mi var? ya da donanımsal başka bişey?
void Timer0_ISR (void) interrupt 1  
int i;
int counter=0;
void Timer0_ISR (void) ;
void Delay_ms(unsigned int time1);

void Timer0_ISR (void) interrupt 1  
{
    
    TL0 = (1536& 0x00FF);
    TH0 = ((1536 & 0xFF00) >> 8);
   counter++;	
}


void main (void) 
{  
	P15_Quasi_Mode;	// Output
	P30_Input_Mode; //Input
  TIMER0_MODE1_ENABLE;	
	set_T0M;	
	set_ET0;
	set_EA;	
	
P15=0;
	while(1)
	{
		
		if(P30==1){
			P15=1;
			clr_TR0;
		set_TR0;	//Timer0 run
			if(P30==0){
			if(counter >=5){ 
					P15=1;
			counter=0;
				clr_TR0;
				P15=1;
			
			}

	}}}
}
}


volkanunal

Alıntı yapılan: merve damar - 27 Kasım 2020, 17:27:19selamlar,
keilde bu şekilde bi kodum var. çıkışı girişteki butona bastığımda çıkışı aktif etmek istiyorum. aktif ediyorum. ama bi kaç saniye sonra pasif oluyor tekrardan. interupt, delay timer hepsini denedim hepsinde aynı sonuç. acaba keille ilgili bir problem mi var? ya da donanımsal başka bişey?
void Timer0_ISR (void) interrupt 1  
int i;
int counter=0;
void Timer0_ISR (void) ;
void Delay_ms(unsigned int time1);

void Timer0_ISR (void) interrupt 1  
{
    
    TL0 = (1536& 0x00FF);
    TH0 = ((1536 & 0xFF00) >> 8);
   counter++;	
}


void main (void) 
{  
	P15_Quasi_Mode;	// Output
	P30_Input_Mode; //Input
  TIMER0_MODE1_ENABLE;	
	set_T0M;	
	set_ET0;
	set_EA;	
	
P15=0;
	while(1)
	{
		
		if(P30==1){
			P15=1;
			clr_TR0;
		set_TR0;	//Timer0 run
			if(P30==0){
			if(counter >=5){ 
					P15=1;
			counter=0;
				clr_TR0;
				P15=1;
			
			}

	}}}
}
}



Timer interrupt içerisinde kullandığınız değişkeni bu şekilde kullanmanız problem doğurabilir bilginiz olsun.
Detaylı anlatım için, https://www.youtube.com/watch?v=telqY-65kPk
Primum nil nocere

merve damar

Onunla ilgili olmadığını düşünüyorum çünkü çok basit bir kod. buton ve led kullandım. butona bastığımda led yansın çektiğimde de yansın istiyorum. hep yansın ben başka bi müdahale edene kadar beklesin istiyorum. basıyorum yanıyor. elimi çekiyorum belli bir süre yanıyor. tekrar sönüyor. acaba döngü ayarlarında bir problem mi var. Sanki kendini resetliyo gibi. kodlarım bu şekilde.
#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"

void Delay_ms(unsigned int time1);
int button;
int i;
void main (void)

  InitialUART0_Timer1(9600);
 P14_PushPull_Mode;
 P05_Quasi_Mode;
   P14=0;
   while(1)
   {
      
button=P05;
      if(P05==0){
         
         P14=1;
         Delay_ms(50);
      }
      printf("button : %d\r\n",button);
      
}
   
}
void Delay_ms(unsigned int time1)
   {
   
   while (time1--){for(i=0;i<200;i++);}

}

volkanunal

Kendini resetlediğini düşünüyorsanız basit bir şekilde açıldığında bir debug mesajı yazdırın, mesaj tekrar tekrar yazar ise anlayabilirsiniz kendini resetleyip resetlemediğini.
Primum nil nocere

merve damar


sadogan

watchdog resetlemesin ,ayarı varmı,

merve damar

 ::ok
Evet böyle bi ayar vardı kaldırdım şimdi oluyor. çooook teşekkürler  :)