PIC16F877 LED Yakma Problemi

Başlatan mfurkan7, 21 Şubat 2013, 22:31:55

mfurkan7

Merhaba arkadaşlar ben PIC ile led yakmaya çalışıyorum ama kodları yazdıktan sonra complie dediğimde  CCS C beni P16F877.inc dosyasına yönlendiriyor ve tek erroruda bu nedenle veriyor. Sizce ne yapmalıyım. Bütün gerekli olan PIC dosylarını koydum dosyanın içine. Yani P16F877.inc ve 16F877.h dosyalarını. Ayrıca kesinlikle kopyala yapıştır yapmadım. Hepsini oluşturduğum dosyaya kendim yazdım.

mfurkan7

Sorunu çözdüm fakat ben yaptığım devreye anahtar nasıl bağlarım?

#include <16f877.h>
#use delay (clock=4000000)
#define fast_io_b

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
set_tris_b(0x00);
output_b(0x00);

start:
output_high(pin_b0);
delay_ms(10);
output_low(pin_b0);
delay_ms(10);

goto start;


}


Kodu bu yazdığım devrenin.

Extreme

nasıl bir anahtar bağlamak istiyorsun ..

if(input(PIN_A1)==1 )  //Buton-2 basılımı?
{
while(input(PIN_A1)==1); //Butonun bırakılmasını bekle
output_toggle(PIN_A2);  //Led'in durumuu değiştir
}

böyle bir şey mi istiyorsun daha açık sorular sormalısın .

mfurkan7

Hani normal ikili bir anahtar aç kapalı. Bir basacaksın sürekli açık kalacak bir basacaksın sürekli kapalı kalacak.

Extreme

Alıntı yapılan: mfurkan7 - 22 Şubat 2013, 15:05:58
Hani normal ikili bir anahtar aç kapalı. Bir basacaksın sürekli açık kalacak bir basacaksın sürekli kapalı kalacak.

yukarıda yazdığım kodları denediniz mi ??

mfurkan7

Hocam, bu kod çalışmadı. Ben b pinine bağladım. Çalışmadı.

mfurkan7

#include <16f877.h>
#use delay (clock=4000000)
#define fast_io_b

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
set_tris_b(0x00);
output_b(0x00);
if(input(PIN_A1)==1)
{
while(input(PIN_B1)==1);
output_toggle(PIN_B2);
}
start:

output_high(pin_b0);
delay_ms(100);
output_low(pin_b0);
delay_ms(100);

goto start;


}




Extreme

if(input(PIN_A1)==1)  >> if(input(PIN_B1)==1)

output_toggle(PIN_B2);  >> output_toggle(PIN_B0);

start: BUNU DA if döngünüzün başına ekleyin..

birde fuses ayarlarınız eksik..

ilk gözüme çarpanlar bunlar

skara1214

Alıntı yapılan: mfurkan7 - 22 Şubat 2013, 15:53:45
#include <16f877.h>
#fuses NOWDT
#use delay (clock=4000000)
#define fast_io_b  //böyle kullanılıyormu bilmiyorum doğrusu #use fast_io(B) ama senin devrende bu satıra gerek varmı diye sorarsan yok
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
set_tris_b(0x00);//bunada senin devren için gerek yok
output_b(0x00);
while(1)
{
if(input(PIN_A1)==1)
{
while(input(PIN_A1)==1);
output_toggle(PIN_B1);
}
}
}


verdiğim kodu yükleyip dönermisin
Herkes ölür ama herkes gerçekten yaşamaz

mfurkan7

Çalıştı. :) Sıkıntı yok şuanda. Herkese yardımları için teşekkürler...