Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

ccs c de hata veriyor...

Başlatan engineer42, 08 Ekim 2011, 16:24:24

engineer42

merhaba..
üniversite de arkadaşlarla bi proje yapmak için uğraşıyoruz.. ilk adımımızda 0-9999 sayıcı devresi yapmak. pic için programı ccs c de yazdık ama bu bizim ilk programımız oldu.. öncesinde biraz alt yapı çalışması yaptık ama biraz devşirme gibi oldu  :) herneyse yazdığım kodu derleyince derleyici hata veriyor ama ben hata verdiği satırda bir terslik göremedim kendimce.. profesyonelk arkadaşlardan yardım bekliyorum...
#include<16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(b)

#define display_1 pin_a0
#define display_2 pin_a1
#define display_3 pin_a2
#define display_4 pin_a3
#define butar pin_b0
#define butaz pin_b1

char birler=0, onlar=0,yuzler=0,binler=0,sayi=0;
const int digit[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F};
void main()
{
int x;
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);

set_tris_a(000000);
set_tris_b(00000011);

output_low(display_1);
output_low(display_2);
output_low(display_3);
output_low(display_4);
while(1)
{
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
 
   if(input(butar))
   {
   delay_ms(5);
   sayi=sayi+1;
   if(sayi==10000)
   sayi=0;
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
   }
   else if(input(butaz))
   {
   delay_ms(5);
   sayi=sayi-1;
   if(sayi==0)
   sayi=9999;
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
   }
  
   while(input(butar||butaz))
   {
   output_high(display_1);
   output_b(digit[birler]);
   delay_ms(5);
   output_high(display_2);
   output_b(digit[onlar]);
   delay_ms(5);
   output_high(display_3);
   output_b(digit[yuzler]);
   delay_ms(5);
   output_high(display_4);
   output_b(digit[binler]);
   delay_ms(5);
   }
}
}


justice_for_all

#1
ne hatasi veriyo peki arkadasim...


Not: set_tris_a(000000); set_tris_b(00000011); kodunda binary tanimlama yapmak istiyosan 8 bitin onune 0b eklemen gerek yani set_tris_b(0b00000011); olmasi gerek arkadasim... duzeltip tekrar denermisiniz..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

engineer42

setup_timer_2(T2_DISABLED);
bu satırda virgül eksikliğinden söz ediyor..

GreeN

else if(input(butaz))
   {
   delay_ms(5);
   sayi=sayi-1;
  if(sayi==0)
   sayi=9999;
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
   }

Burada mı hata veriyor.
Terörü Lanetliyoruz.

JKramer

char 8 bit'likdir, değişken tiplerini kontrol edin.

GreeN

setup_timer_2(T2_DISABLED);  // problem bu satırda

//Bunu ;

setup_timer_2(T2_DISABLED,0,1); // olarak değiştir düzelir.

setup_timer_2 (x,x,x) ; fonksiyon 3 parametre istiyor. Ondan hata alıyorsun.

Ayrıca @justice_for_all belirttiği binary sayıların ccs c de kullanımına dikkat.(0b11110000)
Terörü Lanetliyoruz.

GreeN

if kullanımına da dikkat et;

else if(input(butaz))
   {
   delay_ms(5);
   sayi=sayi-1;
///////////////////////
 if(sayi==0)
{
   sayi=9999;
}
//////////////////////
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
   }


yada ;

else if(input(butaz))
   {
   delay_ms(5);
   sayi=sayi-1;
/////////////////////
 if(sayi==0) sayi=9999;
////////////////////
   birler=sayi%10;
   onlar=sayi/10;
   yuzler=sayi/100;
   binler=sayi/1000;
   }


şeklinde değiştir. senin yazdığın kodda sayı her else if(input(butaz)) koşulunda 9999 değerini alıp if yapısından öyle çıkar.
Terörü Lanetliyoruz.

engineer42

teşekkür ederim herkese 8)