hitech c kod yazarken tanımlama sırası nedir?

Başlatan aykut54, 29 Ağustos 2009, 18:53:06

aykut54

merhaba
hitech öğrenmeye yeni  başladm şimdilik 3 uygulama yaptım  :D
sormak istediğim hitech kod yazarken nelere dikkat etmeliyiz örneğin giriş ve çıkış tanımlaması ilk değerler nereye yazmam gerekir adc işlemleri, lcd işlemleri, kesme alt programı, sembol tanımlama işlemleri... nereye  ve ne şekilde yazılmalıdır.Bu işlerde öncelik sırası nedir.

hitech de bunun standartı varmıdır?

iyi akşamlar.

XX_CİHAN_XX

#include	<pic.h>                      //önce includeler yazılır 
	#include	"MYregister.h"	 //Bir dosyayı ekleme örneği
	#include	"i2c.h"		 //Bir dosyayı ekleme örneği
	#include	"PS2KlavyeKontrol.h"	 //Bir dosyayı ekleme örneği
	#include	"tanimlamalar.h" 	 //Bir dosyayı ekleme örneği
	#include	"Cdelay.h" 	 //Bir dosyayı ekleme örneği
	#include	"KarakterListesi.h"	 //Bir dosyayı ekleme örneği
//bu şekide programına istediğiğn kadar dosya ekleyebilirsin
//ardından aşağıdaki gibi konfigürasyon bilgisini içeren bir satır gelebilir
/**************************************************/
	__CONFIG (PROTECT & WDTDIS & HS & LVPDIS & BORDIS);
/**************************************************/
//burada istersen makro ve pin tanımlamaları yapabilirsin
#define     LED     RB0            //tanımlama örneği
//sonrada aşağıdaki gibi değişken yada sabit tanımlamalarını yapabilirsin
     unsigned char satirSayac=0, keyData = 0;   //değişken örneği
     unsigned int     degisken;                          //değişken örneği
     volatile char     karakterData  = 0;          //değişken örneği
//ardından programın fonksiyonlarına ve her programda olmazsa olmaz olan main fonksiyonuna geçebilirsin

void ToggleLed (void)
{
     LED = !LED;
}

void MainInit (void)
{
     TRISB = 0;
     PORTB = 0;
}

void main (void)
{
    MainInit();

    while (1)       //sonsuz döngü
    {
        ToggleLed ();
        __delay_ms (150);
    }
}


150mS lik kare dalga çıkaran bir program örneği include ve değişkenler gösterme amaçlı fazladan eklenmiştir.
Her programa 12 ve 16 serisi picler için MPLAB ortamında program yazıyorsanız her programa pic.h i include etmek zorundasınız.
Ayrıca yine her C programında main fonksiyonu olmak zorundadır.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

cetinkaya

C de bu dosya ekleme olayi nedir tam anlayamadim ? mesela lcd.h diye lcd icin dosya ekliyoruz bunu ne icin yapiyoruz ?

XX_CİHAN_XX

Lcd işlemleri bu dosyanın içinde yapılmıştır. Bu dosyayı eklediğinizde programınıza bu işlemler dahil edilmiş olur. Bu işlemler hazır paket fonksiyonlar şeklindedir. Bu dosyayı ekleyerek bu fonksiyonları kullanabilme imkanınız olur.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

cetinkaya


mesmert

unsigned int bin_volt=0;

bin_volt=((55./1024.)*10.)*volt_adc;


Yukardaki gibi aritmetik işlemlerde direk decimal sayı bu şekilde yazınca  
bin_volt=((55/1024)*10)*volt_adc; işlemci doğru işlem yapmıyor decimal değere nokta işareti koyunca Hi Tech aşağıdaki gibi uyarı veriyor ama doğru işlem yapıyor bu tarz işlemleri nasıl yapılacak
(356) implicit conversion of float to integer 	vac	main.c	line 167

Erol YILMAZ

güzel bir konuya değinmişsin.

( 55 / 1024 ) * 10 işlemi neticesi;

TAMSAYI ile yapılırsa SIFIR.
FLOAT sayılar ile yapılırsa 0.53 tür.

sayıları TAMSAYI tanımlayıp FLOAT gibi işlem yaptırınca Hi-tech "kızar".


XX_CİHAN_XX

55/1024
işleminin sonucu bir tamsayı değildir ama siz tamsayı tipinde tanımlı bir değişkene bu sonucu atmaya çalışıyorsunuz. sonucu tamsayıya tip dönüşümü yaparak atabilir yada float türünde değişken tanımlayıp oraya atabilirsiniz
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

arslan74

Merhaba,

Sonucu tartışmaya gerek yok. Aşağıda PC için basid örnek bir kod yazdım, oradan hepsi cıkar.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  printf("( 55  / 1024 ) * 10 = %f \n", ( 55 / 1024 ) * 10 );
  printf("( 55. / 1024 ) * 10 = %f \n", ( 55. / 1024 ) * 10 );
  printf("( 55. / 1024.) * 10 = %f \n", ( 55. / 1024. ) * 10 );
  system("PAUSE");	
  return 0;
}


Program çalıştırıldığında sonucları:

Alıntı Yap
( 55  / 1024 ) * 10 = 0.000000
( 55. / 1024 ) * 10 = 0.537109
( 55. / 1024.) * 10 = 0.537109


Selamlar