Pic programlama ccs c 5 uçla 8 led kontrol high low ve input fonksiyonları ile kontrol
#include <12f683.h>
#fuses NOWDT,INTRC_IO,NOMCLR,BROWNOUT
#use delay(clock=4000000)
int x=0;
void main ()
{
set_tris_a(0xff);
output_a(0x00);
while(true)
{
if(input(pin_a3)==1)
{
for(x=0;x<5;x++)
{
output_high(pin_a0);
output_low(pin_a5);
input(pin_a1);
input(pin_a2);
input(pin_a4);
delay_ms(100);
output_low(pin_a0);
output_high(pin_a5);
input(pin_a1);
input(pin_a2);
input(pin_a4);
delay_ms(100);
//-------------------
output_high(pin_a0);
output_low(pin_a4);
input(pin_a5);
input(pin_a2);
input(pin_a1);
delay_ms(100);
output_low(pin_a0);
output_high(pin_a4);
input(pin_a5);
input(pin_a2);
input(pin_a1);
delay_ms(100);
//---------------
output_high(pin_a0);
output_low(pin_a2);
input(pin_a5);
input(pin_a4);
input(pin_a1);
delay_ms(100);
output_low(pin_a0);
output_high(pin_a2);
input(pin_a5);
input(pin_a4);
input(pin_a1);
delay_ms(100);
//-------------------
output_high(pin_a0);
output_low(pin_a1);
input(pin_a5);
input(pin_a4);
input(pin_a2);
delay_ms(250);
output_low(pin_a0);
output_high(pin_a1);
input(pin_a5);
input(pin_a4);
input(pin_a2);
delay_ms(100);
//----------- geri dönüş
output_low(pin_a0);
output_high(pin_a1);
input(pin_a5);
input(pin_a4);
input(pin_a2);
delay_ms(100);
output_high(pin_a0);
output_low(pin_a1);
input(pin_a5);
input(pin_a4);
input(pin_a2);
delay_ms(100);
//-------------
output_high(pin_a2);
output_low(pin_a0);
input(pin_a5);
input(pin_a4);
input(pin_a1);
delay_ms(100);
output_low(pin_a2);
output_high(pin_a0);
input(pin_a5);
input(pin_a4);
input(pin_a1);
delay_ms(100);
//-------------------
output_high(pin_a4);
output_low(pin_a0);
input(pin_a5);
input(pin_a2);
input(pin_a1);
delay_ms(100);
output_low(pin_a4);
output_high(pin_a0);
input(pin_a5);
input(pin_a2);
input(pin_a1);
delay_ms(100);
//---------------
output_high(pin_a5);
output_low(pin_a0);
input(pin_a1);
input(pin_a2);
input(pin_a4);
delay_ms(100);
output_low(pin_a5);
output_high(pin_a0);
input(pin_a1);
input(pin_a2);
input(pin_a4);
delay_ms(100);
}
}
}
}
Merhaba hocam for döngüsüyle ilgili kod yazdım fakat 33.satırda yani 2.for döngüsünde hata veriyor(i nin altı kırmızı çizgili) buradaki sorun nedir acaba?
YanıtlaSil#include <12f683.H>
#fuses intrc_io,nomclr,nowdt,noprotect
#use delay(clock=4m)
void main()
{
set_tris_a(0x00);
output_a(0x00);
#define LED pin_a0
#define LED2 pin_a2
#define LED3 pin_a4
for(int i=0; i<5; ++i)
{
output_high(LED);
delay_ms(300);
output_high(LED2);
delay_ms(300);
output_high(LED3);
delay_ms(300);
output_low(LED);
delay_ms(300);
output_low(LED2);
delay_ms(300);
output_low(LED3);
delay_ms(300);
}
for(int i=5; i<15; ++i) BURADA HATA VERİYOR
{
output_high(LED);
delay_ms(50);
output_low(LED);
delay_ms(50);
output_high(LED);
delay_ms(50);
output_low(LED);
delay_ms(50);
output_high(LED);
delay_ms(50);
output_low(LED);
delay_ms(50);
output_high(LED2);
delay_ms(50);
output_low(LED2);
delay_ms(50);
output_high(LED2);
delay_ms(50);
output_low(LED2);
delay_ms(50);
output_high(LED2);
delay_ms(50);
output_low(LED2);
delay_ms(50);
}
}
}
while döngüsü yok, i değerleri çakışıyor ikinci i yerine başka harf yaz. yada ikinci i değeri 5 ten arklı olsun,denermisin
YanıtlaSilSiz harikasınız :) Çok teşekkürler i yerine başka harf atayarak yaptım.Mümkünse bir sorum daha olacaktı if else if koşuluyla sıralı olarak işlemler yaptırdım fakat program bitmeden butona basarsam program değişmiyor yani 2. koşula geçmiyor.Bunu program bitmeden basınca değişmesini hangi komutla sağlayabilirim?Araştırıp onu da öğrenmek istiyorum.
YanıtlaSilKesmeler ile yapabilirsin. Bu devre icin icin soruyorsan pina3 yerine baska uc kullanmalisin. Sitede verdigim kodlar basit örnekler.bunlarin hepsine bakarak ortaya guzel işler çıkartırsın.
SilÇoklamaya bakacaktim da üstteki cevabınızı şimdi gördüm.Normalde 6 led kontrol edecektim ama 683 un çıkışları az diye 1 buton 4 led led yapacağım.Dun plakete lehimini de yaptim a3 pinine 10k ile butonu bağladım ama diyorsunuz ki a3 ü kullanma.Bu mclr yi çıkış olarak kullanamiyoruz ama giriş olarak kullanabilmemiz gerekmez mi?Lehimledim geri sökmek de istemiyorum ama kesinlikle olmaz derseniz sökeceğim mecbur.A3 e buton da ekleyemeceksek bu pinin görevi nedir?
YanıtlaSilMclr ucu giriş olarak kullanabiliriz. Buton ekleyebilirsin
YanıtlaSilİnterrupt komutunu inceliyorum if else if ile birlestirirsem istediğim olacak sanırım.Coklamaya gelirsek ledleri anot katot ters şekilde baglamissiniz güzel olmuş fakat kayar sinyal LED için uygun olmaz bence.20 ledi 2 li grup halinde yani 10 kanal ile yakmam gerek.Birine daha sordum bdx53 ve bdx54 kullanman gerek dedi.Bir sitede daha gördüm 7 ile başlayan bir entegre kullaniyordu kodunu unuttum bulamadım sizin tavsiyeniz nedir?
YanıtlaSilSitede 74hc164 ile bir devre olacak
YanıtlaSil