18 Eylül 2021, 18:47:04

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


keil c51

Başlatan kara_kalem, 19 Ekim 2005, 19: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

27 Kasım 2020, 20:27:19 #1 Son düzenlenme: 28 Kasım 2020, 15:54:01 mehmet
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 (voidinterrupt 1  
int i
;
int counter=0;
void Timer0_ISR (void) ;
void Delay_ms(unsigned int time1);

void Timer0_ISR (voidinterrupt 1  
{
    
    
TL0 = (15360x00FF);
    
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, 20: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 (voidinterrupt 1  
int i
;
int counter=0;
void Timer0_ISR (void) ;
void Delay_ms(unsigned int time1);

void Timer0_ISR (voidinterrupt 1  
{
    
    
TL0 = (15360x00FF);
    
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

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.

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  :)


Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.