MPLAB X IDE v1.70 vs Hi-tech C Pro

Başlatan Mr.Java, 21 Mart 2013, 15:22:30

Mr.Java

Arkadaşlar merhaba.Ne yaptıysam bu ikiliyi kullanamadım.Forumda o kadar araştırma yaptım fakat tam çözüm yok.

En basit kodları dahi derleyemiyorum sorun nedir ?

Örnek
#include <stdio.h>
#include <stdlib.h>
#include <htc.h>
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 20000000
#endif

void main(void)
{
    TRISB=0x00;
    PORTB=0x00;

while(1)
{
    PORTB=~PORTB;
    DelayMs(250);
}

}

haydarpasamikro

Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

kantirici

mplabx de hitech için bir dosyada degişiklik yapmak gerkiyordu. Hatayı yazarsan daha hızlı çözüm bulursun.

Mr.Java

#3
Picc.ini hatası veriyordu.Sonra hi-tech içerisinde picc.ini içerisine 16F877A ifadesinin başına PIC ekledim.Bu defada eklenemedi hatası verdi.ayrıca #include pic16f877a.h dediğimde dosya yok diyor.

CLEAN SUCCESSFUL (total time: 206ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Users/Hi-tech/MPLABXProjects/denemeee.X'
make  -f nbproject/Makefile-default.mk dist/default/production/denemeee.X.production.hex
make[2]: Entering directory `C:/Users/Hi-tech/MPLABXProjects/denemeee.X'
"C:\Program Files (x86)\HI-TECH Software\PICC\PRO\9.65\bin\picc.exe" --pass1 newmain.c  -q --chip=16F877A -P  --outdir="build/default/production" -N31 --warn=0 --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,-stackcall,+stackwarn,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,9  --double=24 --float=24 --addrqual=ignore --mode=lite -g --asmlist "--errformat=%%f:%%l: error: %%s" "--msgformat=%%f:%%l: advisory: %%s" "--warnformat=%%f:%%l warning: %%s"
newmain.c:16 warning: function declared implicit int
"C:\Program Files (x86)\HI-TECH Software\PICC\PRO\9.65\bin\picc.exe"  -odist/default/production/denemeee.X.production.cof  -mdist/default/production/denemeee.X.production.map --summary=default,-psect,-class,+mem,-hex --chip=16F877A -P --runtime=default,+clear,+init,-keep,+osccal,-resetbits,-download,-stackcall,+stackwarn,+clib --summary=default,-psect,-class,+mem,-hex --opt=default,+asm,-asmfile,9 -N31 --warn=0  --double=24 --float=24 --addrqual=ignore --mode=lite --output=default,-inhx032 -g --asmlist "--errformat=%%f:%%l: error: %%s" "--msgformat=%%f:%%l: advisory: %%s" "--warnformat=%%f:%%l warning: %%s" build/default/production/newmain.p1  
HI-TECH C PRO for the PIC10/12/16 MCU family (Lite)  V9.65PL1
Copyright (C) 1984-2009 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode (warning)
make[2]: *** [dist/default/production/denemeee.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
:0: error: undefined symbol:
        _DelayMS(dist/default/production\denemeee.X.production.obj) 
make[2]: Leaving directory `C:/Users/Hi-tech/MPLABXProjects/denemeee.X'
make[1]: Leaving directory `C:/Users/Hi-tech/MPLABXProjects/denemeee.X'

BUILD FAILED (exit value 2, total time: 1s)


mesaj birleştirme:: 21 Mart 2013, 19:30:18

evet sorun delay gecikmesinde.hitech derleyicisindeki delay.c ve delay.h dosyalarını 'Header Files'ten ekliyorum ve #include <delay.h> dediğimde hata veriyor.Bulunamadı diyor.

kantirici

#4
#include "delay.h" şeklinde ekleyin. delay.h ve .c dosyalarıda proje klasöründe iken.

Mr.Java

BUILD SUCCESSFUL (total time: 686ms)

Teşekkürler.Kafama takılan sigorta ayarlarını kendisi hallediyor mu biz bit bit girecekmiyiz acaba ?

kantirici

Hayır kendisi halletmez.Siz ayarlamalısınız. window-->pic memory wiev altında conf. ayarlarını kolayca yapabilecegin bir menü var.

Mr.Java

#7
Teşekkürler Sorunsuz derlendi ve gerçek ortamda çalıştı.Kod yazması gerçekten çok zevkliymiş bu derleyicide.Birde ek özellikten bahsetmek istiyorum.

Tools>>Options>>Editör>>Formatting kısımında C dili ve ANSI C dili seçip okey diyip çıkalım ve kodu yazdığımız ana menüde Alt+Shift+F yaptığımızda daha bir ısınıyor insan derleyiciye =)

Mr.Java

void delay(uchar a,uchar i)
{   
     while(--a)
     while(--i);
}


bu delay döngüsü nasıl oluyor mantığı nedir arkadaşlar nette buldum fakat anlamadım ?

Gökhan BEKEN

Alıntı yapılan: Fkarizmatik - 21 Mart 2013, 22:11:33
void delay(uchar a,uchar i)
{   
     while(--a)
     while(--i);
}


bu delay döngüsü nasıl oluyor mantığı nedir arkadaşlar nette buldum fakat anlamadım ?
Aradan zaman geçmiş, yinede cevaplayım.
Bu kodun açılımı şudur:
void delay(uchar a,uchar i)
{
     while(--a)
     {
          while(--i)
          {
          }
     }
 }

örnek kullanım:
delay(10,20);
a değişkeni 10 ve i değişkeni 20 oldu
while() deyiminin içine yazılan değer 0(sıfır) dan farklı ise içindeki kodu çalıştırır ve tekrar sorgular böylece 0 olana kadar(belkide hiç olmaz) devam eder.

while(--a) demek
a değişkenini 1 kere azalt ve a değişkeni 0 dan farklı ise içerdeki kodları çalıştır. Bu demek oluyorki 9 kere dönecek.
İçeriye her girdiğinde ise  while(--i) döngüsü çalışacak yani 19 kere çalışacak.
while(--i) içindeki kodlar, toplamda 9*19 adet çalışacak
Özel mesaj okumuyorum, lütfen göndermeyin.