Kod paylaşırken kod tag ını kullanın, okumamız kolay olur.
[*code] buraya paylaşılacak kodlar yazılacak köşeli parantez içindeki "*" lar olmayacak [/*code]
Örnek:
Kod:
buraya paylaşılacak kodlar yazılacak köşeli parantez içindeki "*" lar olmayacak
Senin kodu yükle, butona 50 saniyeden fazla basılı tut,
5 saniye kadar led yanar.
Kod:
if (sayac==10) // sayac değişkeni 5 olursa
output_high(pin_b0); // b0 çıkışını 5 V yap
delay_ms(5000);
kısmını
Kod:
if (sayac==10) // sayac değişkeni 5 olursa
{
output_high(pin_b0); // b0 çıkışını 5 V yap
delay_ms(5000);
}
süslü parantezleri kullanarak yazmalısın.
Bu parantezler arası eğer "if" içi doğru ise çalışacak kodlar oluyor,
if karşılaştırmasında sonra parantez kullanmadan komut yazılırsa;
"if" karşılaştırması doğru olduğunda
sadece "if" karşılaşmasından sonra yazılan ilk komut işlenir,
senin yazımında sayac 10 olursa B0 pini High olsun,
sayac 10 olmadığı müddetçe "output_high(pin_b0); " komutu atlansın
devamında her halükarda 5 saniye delay verilsin demiş oluyorsun.
Ayrıca void main kısmından sonra,
mcu enerjilendikten sonra sadece bir defa işlenecek
pin giriş çıkış kurulumu, timer, adc vs. gibi modül ayarları, yani
"init" işlemleri yapıldıktan sonra
Kod:
while(1)
{
sürekli işlenecek kodlar
}
şu şekilde bir while döngüsü içerisine
sürekli işlenecek kodlar yazılır.
Kodunun geleceği son hali:
Kod:
#include <16F877.h>
#FUSES NOWDT //Watch Dog Timer Kullanma
#FUSES RC //Resistor/Capacitor Osilatör ile CLKOUT
#FUSES NOPUT //Power Up Timer Kullanma
#FUSES PROTECT //Rom'a Yazılan Verilerin Okunamasını Engelle
#FUSES NOBROWNOUT //Brownout Reset Kullanma
#FUSES NOLVP //Düşük Gerilimler ile Programlamayı Kapt
#FUSES NOCPD //Data EEPROM Korumasız
#FUSES NOWRT //Program Belleği Yazmaya Açık
#FUSES NODEBUG //ICD için Hata Ayıklama Modu Kapalı
#use delay(clock=4MHz)
#use fast_io(a)
#use fast_io(b)
unsigned int8 sayac=0x00;
void main()
{
/*Genel Pic de bölmlerinin ayarlamaları yapılıyor*/
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
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);
/* A pinleri a0 giriş hariç lojik-0 çıkış yapılıyor*/
set_tris_a(0b00000001);
/* B pinleri komle lojik-0 çıkış yapılıyor */
set_tris_b(0x00);
output_b(0x00);
while(1)
{
if (input(pin_a0)==1) //a0 pini 5 v olursa
{
delay_ms(20); //buton debounce - buton arkı için bekle
while(input(pin_a0)==1); //buton bırakılana kadar bekle
delay_ms(20); //buton debounce - buton arkı için bekle
sayac++; // sayac değişkenini 1 arttır
}
if (sayac==10) // sayac değişkeni 5 olursa
{
output_high(pin_b0); // b0 çıkışını 5 V yap
delay_ms(5000); //butona 10 defa basıldı, led 5 saniye boyunca yansın
output_low(pin_b0); // b0 çıkışını 0 V yap
sayac = 0; //sayac ı sıfırla
}
}//while 1 sonu
}//void main sonu
ilk istediğin gibi olması içinde
if sayac 10 kısmını
şu şekilde değiştirebilirsin:
Kod:
if (sayac==10) // sayac değişkeni 5 olursa
{
for(unsigned int8 i=1;i<100;i++) //butona 10 defa basıldı, led 100 defa 50ms aralıklarla yansın sönsün
{
output_high(pin_b0); // b0 çıkışını 5 V yap
delay_ms(50); //led 50ms yanık
output_low(pin_b0); // b0 çıkışını 0 V yap
delay_ms(50); //led 50ms sönük
}
sayac = 0; //sayac ı sıfırla
}