YARDIM

Başlatan taytis, 13 Mayıs 2005, 07:43:06

taytis

SLM ARKADAŞLAR ...
SİZE UFAK BİR SORUYLA KARIŞIK BİR SERDENİŞTE BULUNMAK İSTİYORUM . ACABA HI-TECH C SECMEK İLE HATA MI YAPTIM .

BASIC TUM KOMUTLARI ACIKLAMA YAPILMISTIR.FAKAT C İLE İLGİLİ KOMUTLAR BASİT OLANLARIN DIŞINDA BİR SIR.

ŞİMDİ USTADLARA SORUYORUM

HI-TECH C DE KAÇ ADET KOMUT VARDIR ?

Ersin

Eger altyapin varsa veya C den anliyorsan hata yapmamisin.
Ben 4 ay Picbasic Pro kullandim ama belli bir yerde artik cevap veremeyecek duruma geliyo.PBP basit ve hizli programlarsin ama cok yuzeysel C de oyle değil o yuzden ben CCS kullaniyom.

taytis

c bilgim var ,kusura bakma arkadaşım yazdığın cevap için çok teşekür ederim bende bir çok kitap var c ve asembler hakkında ama bir dtmf yollaması veya sda scl bir kullanım hiç anlatılmamış.
                                                                                 
                                                                  taytis sevgilerimle

sheriff79@hotmail.com

Ersin

PBP nin ornek olsun kitap olsun daha yaygin, cunku daha fazla kullanicisi var basit oldugundan dolayi.HI-TEC olarak bisey soyleyemeyecegim ama CCS te example library de ornek program mevcut.Ayrica hi-tec in forumunda boyle ornekler olmasi gerekir.

CCS ornek:

#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)    // must be 20 MHz
#endif

#include <kbd.c>

CONST unsigned int SINE_WAVE[200] = {
128,132,136,139,143,147,150,154,158,161,165,169,172,176,179,
182,186,189,192,195,199,202,204,207,210,213,215,218,220,223,
225,227,229,231,233,235,237,238,240,241,242,243,244,245,246,
247,247,247,248,248,248,248,248,247,247,247,246,245,244,243,
242,241,240,238,237,235,233,231,229,227,225,223,220,218,215,
213,210,207,204,202,199,195,192,189,186,182,179,176,172,169,
165,161,158,154,150,147,143,139,136,132,128,124,120,117,113,
109,106,102, 98, 95, 91, 87, 84, 80, 77, 74, 70, 67, 64, 61,
57, 54, 52, 49, 46, 43, 41, 38, 36, 33, 31, 29, 27, 25, 23,
21, 19, 18, 16, 15, 14, 13, 12, 11, 10,  9,  9,  9,  8,  8,
 8,  8,  8,  9,  9,  9, 10, 11, 12, 13, 14, 15, 16, 18, 19,
21, 23, 25, 27, 29, 31, 33, 36, 38, 41, 43, 46, 49, 52, 54,
57, 61, 64, 67, 70, 74, 77, 80, 84, 87, 91, 95, 98,102,106,
109,113,117,120,124};

int index1,index2,inc1,inc2;


#INT_RTCC
void wave_generator() {
  int wave = 0;

  set_rtcc(25);           // when clock is 20MHz, interrupts every 100us

  wave = ((long)SINE_WAVE[index1]+(long)SINE_WAVE[index2])/2;
  output_d(wave);

  index1 += inc1;
  index2 += inc2;

  if(index1 >= 200)
     index1 -= 200;

  if(index2 >= 200)
     index2 -= 200;
}

#define DTMF_ROW1   14  // for 700 Hz, increment this many times every 100us
#define DTMF_ROW2   15  // for 750 Hz, increment this many times every 100us
#define DTMF_ROW3   17  // for 850 Hz, increment this many times every 100us
#define DTMF_ROW4   19  // for 950 Hz, increment this many times every 100us
#define DTMF_COLA   24  // for 1200 Hz, increment this many times every 100us
#define DTMF_COLB   27  // for 1350 Hz, increment this many times every 100us
#define DTMF_COLC   30  // for 1500 Hz, increment this many times every 100us

void generate_dtmf_tone(char keypad, long duration)  {

  index1=0;
  index2=0;
  inc1=0;
  inc2=0;
  if((keypad=='1')||(keypad=='2')||(keypad=='3'))
     inc1=DTMF_ROW1;
  else if((keypad=='4')||(keypad=='5')||(keypad=='6'))
     inc1=DTMF_ROW2;
  else if((keypad=='7')||(keypad=='8')||(keypad=='9'))
     inc1=DTMF_ROW3;
  else if((keypad=='*')||(keypad=='0')||(keypad=='#'))
     inc1=DTMF_ROW4;

  if((keypad=='1')||(keypad=='4')||(keypad=='7')||(keypad=='*'))
     inc2=DTMF_COLA;
  else if((keypad=='2')||(keypad=='5')||(keypad=='8')||(keypad=='0'))
     inc2=DTMF_COLB;
  else if((keypad=='3')||(keypad=='6')||(keypad=='9')||(keypad=='#'))
     inc2=DTMF_COLC;

  setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  enable_interrupts(INT_RTCC);
  enable_interrupts(GLOBAL);

  while(duration-- > 0)
  {
     delay_ms(1);
  }
  disable_interrupts(INT_RTCC);
  output_d(0);
}


void main()  {
  char k;

  kbd_init();

  while(TRUE)
  {
     k=kbd_getc();
     if(k!=0)
        generate_dtmf_tone(k, 100);
  }
}

arslan74

Merhaba,

Eğer hi-tech ile ilgili örnek kod bakiyorsan Microchip'in web sayfasına bakmanını öneririm. Cünkü orda bir sürü örnek kod var. Örnek C kodları nın coğu Hi-Tech C ile yapılmış ve ayrıca Microchip Hi-Tech C diline destek veriyor. Dolaysıla ileri düzey için güzel ve professonel bir derleyici. Ama onun eksi yani işte içinde hazır bir şey yok. Ihtiyacın olan bütün kodları kendin yazman gerekecek, yada bir başkasından aradığın şeyle ilgili kütüphane isteyeceksin. CCS yeni başlayanlar için çok ideal ama tam profesyoneller için ideal değil. Cünkü Ansi C standartını desteklemiyor. Ama hi-tech te yazdığın bir progamı kolaylıkla Microchip C dilinde de derleyebilirsin. Ayrıca PIC için yapılmış işletim sistemleri var, bunlara RTOS deniliyor yani Real Time Operation system. Microchip Salvo'nun RTOS una destekliyor ve bunun programları ancak AnsiC standartına uygun diller ile calışyor. Yani Hi-TECH C, Microchip C veya IAR C dillleri gibi.

Hi-Tech'e giriş yapmak zordur ama başladın mı ileride kolay kolay tıkanmassın.

Başarılar,

Hasan ARSLAN