Hitech pro 9.60 da değişen Nedir??

Başlatan ORC, 11 Şubat 2009, 12:27:35

ORC

Merhaba Arkadaslar

Daha önce hitech kullandım ama 9.5 ve alt surumlerini kullanıyordum dün pro 9.60 ı deneyim dedim basit bi led yakıp programın ful olup olmadıgını anlayacaktım(kendimce)..

Neyse gelelim soruma..

Normalde delay.h ve delay.c yi include klasorune atıp #include<delay.c> dediğimde programımda atıyorum 100 ms lik gecikme istiyorsam  DelayMs(100) demem yeterliydi.. bunu yapmak için 9.60 pro klasorundeki samples içindeki delay folderına baktım içinde sadece main.c adında bi dosya buldum neyse içini actım

void main(void){
   while(1){
      NOP();
      _delay(1000);      // delay for 1000 instruction cycles
      CLRWDT();
      __delay_us(400);   // delay for 400 microseconds
      CLRWDT();
      __delay_ms(2);      // delay for 2 milliseconds
      CLRWDT();
   }
}

şeklinde kodlar cıktı bende gecikme vermek için bu #include<main.c> yi include ettim aynı zamanda bi sorun cıkmasın diye include folderına da koydum..

ve ana programıma da basit bi kod yazdım aşagıdaki gb

#include<pic.h>
#include<main.c>

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

   for(;;)
   {
      RB0=0;
      __delay_ms(2);
      RB0=1;
      __delay_ms(2);
   }
   
}

ama calıstırdıgımda derleme hatası veriyor iki programdaki main cakısıyor sanırım yani emin değilim sizce problem nerde

Make: The target "C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe" --pass1 "C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.c" -q --chip=16F84A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error   [984] C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.c; 5.1 type redeclared
Error   [1098] C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.c; 5.1 conflicting declarations for variable "main" (C:\Program Files\HI-TECH Software\PICC\PRO\9.60\include\main.c:11)
Error   [1098] C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.c; 5.1 conflicting declarations for variable "main" (C:\Documents and Settings\???\Desktop\HTDenemeler\d\ccode.c:5)
Make: The target "C:\Documents and Settings\???\Desktop\HTDenemeler\d\main.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe" --pass1 "C:\Program Files\HI-TECH Software\PICC\PRO\9.60\include\main.c" -q --chip=16F84A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

********** Build failed! **********


İlginiz için şimdiden teşekkürler

Birşey daha söylemek istiyorum bu cakışmayı önlemek için delay için koydugum main.c içindeki programı asagıdaki gibi

#include <htc.h>   // Required to interface with delay routines

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

/** demonstration of various built-in delay mechanisms */
void delaay(void){
   while(1){
      NOP();
      _delay(1000);      // delay for 1000 instruction cycles
      CLRWDT();
      __delay_us(400);   // delay for 400 microseconds
      CLRWDT();
      __delay_ms(2);      // delay for 2 milliseconds
      CLRWDT();
   }
}

gibi değiştirdim bu sefer hata olarak



HI-TECH C PRO for the PIC10/12/16 MCU family candidate build 3206 V9.60PL4
Copyright (C) 1984-2008 HI-TECH SOFTWARE
licensed for evaluation purposes only
this licence will expire on Fri, 14 Dec 2029
Error   [237] C:\Program Files\HI-TECH Software\PICC\PRO\9.60\include\main.c; 11. function "_delaay" redefined



şeklinde hata verdi acaba bunlar licence tam olmadıgından dolayı mı oluyor yoksa ben hatalı bişeyler mi yapıyorum  :oops:

ORC

Çözdüm arkadaslar belki size de yardımcı olur diye koyuyorum..

main.c yi aşagıdaki gb değiştirdim yoksa ana programda ki main ile cakısıyordu


Alıntı Yap
#include <htc.h>   // Required to interface with delay routines

#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

/** demonstration of various built-in delay mechanisms */
void delay(void){
   while(1){
      NOP();
      _delay(1000);      // delay for 1000 instruction cycles
      CLRWDT();
      __delay_us(400);   // delay for 400 microseconds
      CLRWDT();
      __delay_ms(2);      // delay for 2 milliseconds
      CLRWDT();
   }
}


ana programımı da asagıdaki gb yaptım

Alıntı Yap#include<pic.h>
#include <htc.h>

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

   for(;;)
   {
      RB0=0;
      _delay(1000);
      RB0=1;
      _delay(1000);
   }
   
}

ipek

delay .h içinde mikrosaniye olarak tanımlanmıs 9.60 pl3 içn

*   Files required: delay.h, delay.c    : provides DelayMs()            *
*                                                                       *
*************************************************************************
*                                                                       *
*   Description:    Lesson 1, exercise 5a                               *
*                                                                       *
*   Toggles LED when pushbutton is pressed (low) then released (high)   *
*   Uses counting algorithm to debounce switch                          *
*                                                                       *
*************************************************************************
*                                                                       *
*   Pin assignments:                                                    *
*       GP1 - indicator LED                                             *
*       GP3 - pushbutton switch                                         *
*                                                                       *
************************************************************************/

#include <htc.h>

#define XTAL_FREQ   4MHZ        // oscillator frequency for DelayMs()
#include "delay.h"              // defines DelayMs()

// Config: int reset, no code protect, no brownout detect, no watchdog,
//         power-up timer enabled, 4MHz int clock
__CONFIG(MCLRDIS & UNPROTECT & BORDIS & WDTDIS & PWRTEN & INTIO);


void main()
{
    unsigned char   sGPIO;          // shadow copy of GPIO
    unsigned char   db_cnt;         // debounce counter

    // Initialisation
    GPIO = 0;                       // start with LED off
    sGPIO = 0;                      //   update shadow
    TRISIO = ~(1<<1);               // configure GP1 (only) as an output

    // Main loop
    for (;;) {
        // wait until button pressed (GP3 low), debounce by counting:
        for (db_cnt = 0; db_cnt <= 10; db_cnt++) {
            DelayMs(1);             // sample every 1 ms
            if (GPIO3 == 1)         // if button up (GP3 high)
                db_cnt = 0;         //   restart count
        }                           // until button down for 10 successive reads

        // toggle LED on GP1
        sGPIO ^= 1<<1;              // flip shadow GP1
        GPIO = sGPIO;               // write to GPIO

        // wait until button released (GP3 high), debounce by counting:
        for (db_cnt = 0; db_cnt <= 10; db_cnt++) {
            DelayMs(1);             // sample every 1 ms
            if (GPIO3 == 0)         // if button down (GP3 low)
                db_cnt = 0;         //   restart count
        }                           // until button up for 10 successive reads

    }   // repeat forever
}
buda delay.h
/*
 *	Delay functions for HI-TECH C on the PIC
 *
 *	Functions available:
 *		DelayUs(x)	Delay specified number of microseconds
 *		DelayMs(x)	Delay specified number of milliseconds
 *
 *	Note that there are range limits: x must not exceed 255 - for xtal
 *	frequencies > 12MHz the range for DelayUs is even smaller.
 *	To use DelayUs it is only necessary to include this file; to use
 *	DelayMs you must include delay.c in your project.
 *
 */

/*	Set the crystal frequency in the CPP predefined symbols list in
	HPDPIC, or on the PICC commmand line, e.g.
	picc -DXTAL_FREQ=4MHZ
	
	or
	picc -DXTAL_FREQ=100KHZ
	
	Note that this is the crystal frequency, the CPU clock is
	divided by 4.

 *	MAKE SURE this code is compiled with full optimization!!!
	
 */

#ifndef	XTAL_FREQ
#define	XTAL_FREQ	4MHZ		/* Crystal frequency in MHz */
#endif

#define	MHZ	*1000L			/* number of kHz in a MHz */
#define	KHZ	*1			/* number of kHz in a kHz */

#if	XTAL_FREQ >= 12MHZ

#define	DelayUs(x)	{ unsigned char _dcnt; \
			  _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
			  while(--_dcnt != 0) \
				  continue; }
#else

#define	DelayUs(x)	{ unsigned char _dcnt; \
			  _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
			  while(--_dcnt != 0) \
				  continue; }
#endif

extern void DelayMs(unsigned char);
[code]

bunu nereden ms cinsinden yapabilirim yada kolay bir delay headeri varmıdır. asemblerde bunu düzeltmek basit ne denedimse olmadı helpini'de Hatim indirdim ama bir şey gözden kaçıyor galiba. iki adet delay yapsan nolurdu birini delayus.h diğerinide delayms.diye çağırırdık.

ORC

kardeş ben anlamadım niye header ını değiştirmek istiyorsun zaten bu dosyaları include ettikten sonra ms olarak kullanırsın öyle değil mi anlamadım ben ama anlayan bi arkadas yardımcı olacaktır  :oops: