pıc 16f877 ile start stop kontrollü karasimsek devresi

27fth27

Üye
Katılım
27 Kas 2013
Mesajlar
8
Puanları
1
pic16f877 nin a portunun 0. bittini start butonu a portunun 1. bitini stop butonu kullanmam gerekiyor d portunuda cıkış olarak ayarlamam gerekiyor



#include "C:\Users\etudbilisim\Desktop\deneme\main.h"
#use delay(clok=4000000)
#use fast_io(a) //Port yönlendirme komutları a portu için geçerli
#use fast_io(d) //Port yönlendirme komutları d portu için geçerli
int i,led;
void main()
{
set_tris_d(0x00); // D portu tamamen cıkış yapılıyor
output_d(0x00); // d portunun cıkışları sıfırlanıyor
set_tris_a(0x03); // RA0 ve RA1 pinleri giriş
output_a(0x00);


while (1)
{
if(input(pin_a0))
{
while(!input(pin_a1))
{
led=1; //led değişkenin değeri bir oluyor
for(i=0;i<=7;i++) // for döngüsü oluşturuluyor
{output_d(led); //led değişkeni değeri d portuna gönder
led=led<<1; //led değişkenini değerini 1 bit sola kaydır
delay_ms(100); //100 ms gecikme veriliyor
}
led=0x80;//led değişkeninne değer yükleniyor
output_d(led);//d prtuna 0d10000000 bigisi gönderiliyor
delay_ms(100);// 100ms lik gecikme veriliyor
for(i=0;i<=6;i++)// for döngüsü oluşturuluyor
{
led=led>>1;//led led değişkeninin değeri 1 bit sağa kaydır
output_d(led);//led değiş kenin değerini b portuna gönder
delay_ms(100);//100ms lik geçikme veriliyor


}
}
}
}
}
ben böyle yazdım ama hata veriyor nerde yanlış yaptığımı söylersenin sevinirim.
yardımlarınız için şimdiden tşk.
 
led=1; //led değişkenin değeri bir oluyor


yazmışsın bunun yerine

led = 0x01;


olarak değiştir öyle bi dene.
 
Programı derledim herhangi bir sorun yok.Hex dosyasının dahil bütün dosyaların bulunduğu klasör ekte.Galiba senin derleyicide bir problem var.Hex halini deneyip sonucu söyler misin..
 

Ekli dosyalar

  • Yeni klasör.rar
    11 KB · Görüntüleme: 26
devre calışıyor ama bu defada stop butonu cok gec algılıyor
 
stop butonunun kodunu yazılımda for döngülerinin içine koymayı dene.Beklemelerden ve for döngülerinden dolayı geç algılıyor.Kolay gelsin..
 
ledleri iki iki nasıl yaka bilirim proğramı yazdım biraz değişiklik yapmam gerekiyor

- - - Updated - - -

#use delay(clok=4000000)
#use fast_io(d)
#use fast_io(a)
int abc();
int i,led = 0x01;
void main()
{
set_tris_d(0x00); // D portu tamamen cıkış yapılıyor
output_d(0x00); // d portunun cıkışları sıfırlanıyor
set_tris_a(0xff);
while (1)
{
abc();
}
}
int abc()
{
int x=0;
if(input(pin_a0)==1)
{
while(x!=100)
{
led=1; //led değişkenin değeri bir oluyor
for(i=0;i<=7;i++) // for döngüsü oluşturuluyor
{
if(input(pin_a1)==1)
return 0;
output_d(led); //led değişkeni değeri d portuna gönder
led=led<<1; //led değişkenini değerini 1 bit sola kaydır
delay_ms(30);//50ms lik geçikme veriliyor

}
output_d (0xff); //ledlerin yanıp sönmesini sağlayan komut
delay_ms(50);//50ms lik geçikme veriliyor
led=0x80;//led değişkeninne değer yükleniyor
output_d(led);//d prtuna 0d10000000 bigisi gönderiliyor
//delay_ms(100);// 100ms lik gecikme veriliyor
for(i=0;i<=6;i++)// for döngüsü oluşturuluyor
{
led=led>>1;//led led değişkeninin değeri 1 bit sağa kaydır
if(input(pin_a1)==1)
return 0;

output_d(led);//led değiş kenin değerini b portuna gönder
delay_ms(30);//50ms lik geçikme veriliyor

}
output_d (0xff);//ledlerin yanıp sönmesini sağlayan komut
delay_ms(50);//50ms lik geçikme veriliyor
x++;
}
}
}
 
arkadaşlar bu proğrama artı olarakta 2 şe 2 şer olarak nasıl yaka bilirim
 

Yeni mesajlar

Forum istatistikleri

Konular
128,190
Mesajlar
915,724
Kullanıcılar
449,960
Son üye
katzeimar

Yeni konular

Çevrimiçi üyeler

Geri
Üst