Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: serdar546 - 04 Nisan 2014, 17:28:50

Başlık: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 17:28:50
arkadaşlar üniversiteliyim bir projem var. altta vereceğim linkte proteus'ta kurulu devre ve c kodları var. acaba bilgili birileri kodları derlememde bana yardımcı olabilirler mi ?

http://s3.dosya.tc/server20/F20yhP/XX.rar.html (http://s3.dosya.tc/server20/F20yhP/XX.rar.html)


#include <16F628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD,NOMCLR //sigortalar ayarlanıyor, iç kristal kullanılacak ve mclr pullup kullanılmayacak
#use fast_io(b)  //hızlı giriş çıkış ayarı
#use fast_io(a)
#use delay(clock=4MHZ) //kristal ayarı
#byte INTCON=0x0B
#byte PIE1=0x8C

int i,sn,dk,saat;

int a=0;

#int_timer0

serdar()
{
   set_timer0(217);
   
if(a=1) {
   
   i++;
   
   if(i==100)
   {sn++;i=0;}
   if(sn==60)
   {dk++;sn=0;}
   if(dk==60)
   {saat++;dk=0;}
   
   if(saat<=4)
   {output_high(PIN_A7);}
   if(saat>=4)
   {output_low(PIN_A7);}
   if(saat==8)
   {saat=0;}
}
}

void main()
{
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   setup_timer_0(rtcc_internal | rtcc_div_256);
   set_timer0(217);
   
 
   
   
INTCON=0b11000000;
PIE1=0b00100000;
   set_tris_b(0x00);
   set_tris_a(0x00);
   output_a(0x00);


delay_ms(10000);

output_high(PIN_A2);

delay_ms(10000);

output_low(PIN_A2);

for(;;){
   if(input(PIN_B0))
   {a=1;}
   }
}
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: Salih - 04 Nisan 2014, 19:41:39
iki yerde düzeltme yaptım.

Hex dosyası.

https://dl.dropboxusercontent.com/u/20087162/Pic_Program/nem.hex (https://dl.dropboxusercontent.com/u/20087162/Pic_Program/nem.hex)


#include <16F628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD,NOMCLR //sigortalar ayarlanıyor, iç kristal kullanılacak ve mclr pullup kullanılmayacak
#use fast_io(b)  //hızlı giriş çıkış ayarı
#use fast_io(a)
#use delay(clock=4MHZ) //kristal ayarı
#byte INTCON=0x0B
#byte PIE1=0x8C

int i,sn,dk,saat;

int a=0;

#int_timer0

void serdar() // Dönüş değeri olmadığı için uyarı veriyordu. Hata değil.
{
   set_timer0(217);
   
if(a==1) {// Burada  a=1 yazmışsın. Burası mantıksal hatalı idi düzelttim.
   
   i++;
   
   if(i==100)
   {sn++;i=0;}
   if(sn==60)
   {dk++;sn=0;}
   if(dk==60)
   {saat++;dk=0;}
   
   if(saat<=4)
   {output_high(PIN_A7);}
   if(saat>=4)
   {output_low(PIN_A7);}
   if(saat==8)
   {saat=0;}
}
}

void main()
{
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   setup_timer_0(rtcc_internal | rtcc_div_256);
   set_timer0(217);
     
INTCON=0b11000000;
PIE1=0b00100000;
   set_tris_b(0x00);
   set_tris_a(0x00);
   output_a(0x00);

delay_ms(10000);

output_high(PIN_A2);

delay_ms(10000);

output_low(PIN_A2);

for(;;){
   if(input(PIN_B0))
   {a=1;}
   }
}
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 19:49:10
acaba siz isiste denediniz mi çalıştı mı ? ben denedim fakat çalışmıyor
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: Salih - 04 Nisan 2014, 20:19:28
Programda kesme çalışmıyordu. Düzelttim. 10 ms bir kesme oluşuyor.
Artık 4 saat bekleyerek sen denersin. :)
Hex dosyasını yeniledim. İndirebilirsin.
Pin_A6 çıkışını osilaskopa bağlayarak kesme süresini ölçebilirsin.
Şeman dada hatalar vardı. Düzeltilmiş halini indirebilirsin.
https://dl.dropboxusercontent.com/u/20087162/Pic_Program/nem.DSN (https://dl.dropboxusercontent.com/u/20087162/Pic_Program/nem.DSN)

#include <16F628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD,NOMCLR //sigortalar ayarlanıyor, iç kristal kullanılacak ve mclr pullup kullanılmayacak
#use fast_io(b)  //hızlı giriş çıkış ayarı
#use fast_io(a)
#use delay(clock=4MHZ) //kristal ayarı

int i,sn,dk,saat;

int a=0;

#int_timer0

void serdar()
{
   Output_toggle(Pin_A6);
   set_timer0(217);
   
if(a==1) {   
   i++;   
   if(i==100)
   {sn++;i=0;}
   if(sn==60)
   {dk++;sn=0;}
   if(dk==60)
   {saat++;dk=0;}
   
   if(saat<=4)
   {output_high(PIN_A7);}
   if(saat>=4)
   {output_low(PIN_A7);}
   if(saat==8)
   {saat=0;}
}
}

void main()
{   
   setup_timer_0(rtcc_internal | rtcc_div_256);
   set_timer0(217);
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   set_tris_b(0xFF);
   set_tris_a(0x00);
   output_a(0x00);

delay_ms(10000);

output_high(PIN_A2);

delay_ms(10000);

output_low(PIN_A2);

for(;;){
   if(input(PIN_B0))
   {a=1;}
   }
}
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 20:31:53
led i 1dk ya ayarladım butona basınca gayet sağlıklı çalışıyor. ama bir sorun var diğer butona basınca röleyi çekmiyor :)
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: Salih - 04 Nisan 2014, 20:44:12
hangi buton?
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 20:45:37
nem sensörü yazdığım, birde simulasyonu çalıştırdıktan 20 sn sonra butona bastığımda kesme oluşuyor
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: Salih - 04 Nisan 2014, 23:16:54
Anladığım kadarıyla şöyle yaptım. Bir incele.

#include <16F628a.h>
#fuses INTRC_IO,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD,NOMCLR //sigortalar ayarlanıyor, iç kristal kullanılacak ve mclr pullup kullanılmayacak
#use fast_io(b)  //hızlı giriş çıkış ayarı
#use fast_io(a)
#use delay(clock=4MHZ) //kristal ayarı
#Define m_on   output_high(Pin_A0)
#Define m_off  output_Low(Pin_A0)
#Define nem_on input(Pin_B7)


int8 i,sn,dk,saat,a=0;
int16 zr=0; //zaman rölesi değişkeni

#int_timer0
void serdar()
{
   if (zr == 0) m_off;
   if (zr > 0)  zr--;
     
if(a==1) {   
   i++;   
   if(i==100)
   {sn++;i=0;}
   if(sn==60)
   {dk++;sn=0;}
   if(dk==60)
   {saat++;dk=0;}
   
   if(saat<=4)
   {output_high(PIN_A7);}
   if(saat>=4)
   {output_low(PIN_A7);}
   if(saat==8)
   {saat=0;}   
}
set_timer0(217);
}

void main()
{   
   setup_timer_0(rtcc_internal | rtcc_div_256);
   set_timer0(217);
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   set_tris_b(0xFF);
   set_tris_a(0x00);
   output_a(0x00);

for(;;)
{
   if(input(PIN_B0))  a=1;
   if(nem_on)  {zr=1000;m_on;}
}
}

Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 23:23:46
abi ben sana adamın dibisin desem az mı demiş olurum :)
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: Salih - 04 Nisan 2014, 23:35:25
Alıntı yapılan: serdar546 - 04 Nisan 2014, 23:23:46
abi ben sana adamın dibisin desem az mı demiş olurum :)

Bir şey deme.
Öğrendikçe sende başkalarına yardım et.
Başlık: Ynt: yaptığım devre bir türlü çalışmıyor
Gönderen: serdar546 - 04 Nisan 2014, 23:37:39
baş üstüne patron :)