kodu istedigim gibi calıstıramadm

Başlatan satilla, 27 Ekim 2010, 01:32:18

satilla

for(;;){


	PORTB=tarama[i];
	DelayMs(50);


enable=0;
for (t=0;t<8;t++)
{
	clock=0;
if((temp<<t)&0x80)

	data=1;
else
	data=0;
if(t==7){
enable=1;
t=0;
}
}
i++;
if(i==7)
i=0;
}

}


kod taramamı ksımını sürekli yapıyor ama aşagısını hiç yapmıyor
eminm yine mantık hatası vardır c'ye ayak uydurana kadar biraz yoracagm sizi

M_B

merhaba;
Kod ta yazılımsal hata gormedım.  ( Mantıksal olabilir. )
Yalnız dikkatimi ceken şey var clock hep sıfır  clock  hic bir olmuyacak mı ?.
Kolay gelsin.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

ete

3 adet Büyük parantez açılmış ama 4 adet kapatılmış bu bir hata değilmidir? yoksa programın tamamını görmediğimiz içinmi açılan şave parantezi göremiyoruz.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

M_B

Alıntı yapılan: ete - 27 Ekim 2010, 08:13:40
3 adet Büyük parantez açılmış ama 4 adet kapatılmış bu bir hata değilmidir? yoksa programın tamamını görmediğimiz içinmi açılan şave parantezi göremiyoruz.

Ete

Hocam programın devamı vardır.
O kısım alıntıya benziyor.
Sonuc ıtıbari ile C de bir tane main olması gerekiyor ve arkadas bu kısmı main fonksiyonundan alıp koymus korkende en sonundaki } eklemiş.


İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

JKramer

if(t==7){
enable=1;
t=0;

for döngüsünden çıkması için enable=1; satırını döngü dışına çıkarıp diğer iki satırı silin. Zaten for döngüsüyle t'yi kontrol ediyorsunuz, bir daha müdahale etmenin anlamı yok. Bir de aşağıdaki i'li satırlar ne iş yapıyor?

papylon

@sinansinan09,

@JKramer'in de bahsettiği gibi for (t=0;t<8;t++) döngüsü içinde kullandığınız if(t==7)sorgulamasında t=0; yaptırımı yüzünden program sonsuz döngüde kalıyor.

Programı aşağıda ki gibi uygularsanız sorun kalmaz.

while(1)
	{	PORTB=tarama[i];
		DelayMs(50);
		enable=0;
		for (t=0;t<8;t++)
		{	clock=0;
			if((temp<<t)&0x80) data=1;
			else data=0;
		}
		enable=1; t=0;
		i++;
		if(i==7)
		i=0;
	}

satilla

#6
üstadlarım dün gece t=0; yaptıgım için döngüden cıkmadııgnı buldum ancak burada yazamadım
okdar sorun yaşıyorumki anlatamam
3 gün once yazdıgım en temel hale dönüyorum yeniden baslayayım diye ancak o bile calsımıyor malesef C mantıgım ya tam oturmadı yada.....

aynı kodu protonda yazıyorum sorun yok ancak C'de delay eklemezsem görünmüyor sanki C'de daha hızlı  çalışıyorda görünmüyor gibi :S


satilla

proton,basic veya asm'deki gibi call-goto gibi bir komut yok sanırım

void bir(){
...........
...........
}


main{

for(;;){

bir();  //şeklindeki bir tanımlamayla bir() adındaki etikete gitmesi gerekmiyormu ???????


}
}


JKramer


satilla

verdiği hata

Error   [195] D:\Documents and Settings\Administrator\Desktop\LED PANO\main.c; 63.1 expression syntax
Warning [361] D:\Documents and Settings\Administrator\Desktop\LED PANO\main.c; 65.1 function declared implicit int

********** Build failed! **********

JKramer

Kodun tamamını (fuse'ler, header dosyası kullanılmışsa o dosya, include ettiğiniz dosyalar,vs. ) koymalısınız. Tamamı derken bütün projenizi değil, sadece sorun yaşadığınız bölümü içeren 30-40 satırlık derlenebilecek kodu kastediyorum.

satilla

#include <pic.h>
#include "delay.h"


nt m,bekle=3,j,k,deger,degisken,;
const char kelime={'A'};
const unsigned char tarama[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b11011111,0b10111111,0b01111111};
char satir0[32]; 
char satir1[32];
char satir2[32];
char satir3[32];
char satir4[32];
char satir5[32];
char satir6[32];
char satir7[32];

void bir()
{
RD5=1;DelayUs(100);RD6=1;DelayUs(100);
RD6=0;DelayUs(100);
}

void sifir(void)
{
RD5=0;DelayUs(100);RD6=1;DelayUs(100);
RD6=0;DelayUs(100);
}

void main(void)
{
int i;
int t;
int temp;
PORTB=0;
PORTD=0;
PORTC=0;
PORTE=0;
PORTA=0;

TRISC=0;
TRISD=0;
TRISE=0;
TRISA=0;
TRISB=0;
ADCON1=7;



for(;;){

for(i=0;i<8;i++){
PORTB=tarama
bir();

Delayms(10);

}
}
}