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;}
}
}
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;}
}
}
acaba siz isiste denediniz mi çalıştı mı ? ben denedim fakat çalışmıyor
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;}
}
}
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 :)
hangi buton?
nem sensörü yazdığım, birde simulasyonu çalıştırdıktan 20 sn sonra butona bastığımda kesme oluşuyor
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;}
}
}
abi ben sana adamın dibisin desem az mı demiş olurum :)
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ş üstüne patron :)