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);
}
}
Ne gibi hata veriyor?
mplabx de hitech için bir dosyada degişiklik yapmak gerkiyordu. Hatayı yazarsan daha hızlı çözüm bulursun.
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.
#include "delay.h" şeklinde ekleyin. delay.h ve .c dosyalarıda proje klasöründe iken.
BUILD SUCCESSFUL (total time: 686ms)
Teşekkürler.Kafama takılan sigorta ayarlarını kendisi hallediyor mu biz bit bit girecekmiyiz acaba ?
Hayır kendisi halletmez.Siz ayarlamalısınız. window-->pic memory wiev altında conf. ayarlarını kolayca yapabilecegin bir menü var.
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 =)
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 ?
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