Hi Tech kod derlemede hata

Başlatan demyzombie, 09 Mayıs 2007, 01:32:07

demyzombie

Hi Tech i yeni kullanmaya basladım cok fazlada bildigim söylenemez ama program hexe çevirebiliyorum. asıl sorun şu benim internetten bulduğum ve tekrar derlediğim kod u hex e çeviremiyorum devamlı hata veriyor. PIC C ile yazılmış kod. Yardımcı olabilecek arkadaslar var mı acaba??

KOD:
#pragma chip PIC16F84

/*
 SERIAL COMMUNICATION (RS232)
 ============================

 Using 9600 baud, one stop bit, no parity.
 Baudrate 9600 baud => 104.167 microsec. per bit
 TMR0 counts each 8th microsec. => 13.02 steps per bit

 ______       _____ _____ _____ _____ _____ _____ _____ _____ _____
       |_____|_____|_____|_____|_____|_____|_____|_____|_____|
        Start bit0  bit1  bit2  bit3  bit4  bit5  bit6  bit7  Stop

 NOTE: RS232 signal levels are different from the CMOS levels
 used by the PIC device. A level converter is required:

       Logic level     CMOS       RS232
       1 (default)     +Vcc       -2.8V to -15V
       0               0 V        +2.8V to +15V
*/

#define _4_MHz    /* 4 MHz system clock */
#define BPS9600   /* 9600 bits per sec */
//#define BPS4800   /* 4800 bits per sec */
//#define BPS2400   /* 2400 bits per sec */
//#define BPS1200   /* 1200 bits per sec */

// optional items
#define UseTMR0
#define USE_CONST

#pragma bit RS232_out @ PORTA.0
#pragma bit RS232_in  @ PORTB.0
#pragma bit LED_Green @ PORTA.1
#pragma bit Button0   @ PORTB.4
#pragma bit Button1   @ PORTB.5


//UltraSonic Transmitter
//======================
#pragma bit US_TX1 @ PORTA.3
#pragma bit US_TX2 @ PORTA.2

//UltraSonic Transmitter Enable
// - 0 to enable,
// - 1 to disable.
//=============================
#pragma bit US_Enable_N @ PORTB.2


//UltraSonic Receiver
// - 0 to not received
// - 1 to first pulse received
//=============================
#pragma bit Echo_Recvd @ PORTB.1


#ifdef _4_MHz

 #ifdef BPS9600
   #define   TimeStartbit    4    //9600
   #define   BitTimeIncr     13   //9600
 #endif

 #ifdef BPS4800
    #define   TimeStartbit    8  //4800
    #define   BitTimeIncr     26 //4800
 #endif

 #ifdef BPS2400
    #define   TimeStartbit    4  //2400
    #define   BitTimeIncr     13 //2400
 #endif

 #ifdef BPS1200
    #define   TimeStartbit    8  //1200
    #define   BitTimeIncr     26 //1200
 #endif

#endif

unsigned long DelayCount;
char bitCount, limit;
char serialData;
char command; //first 4 bits are state
             // state 0 - expected = 0xAA
             // state 1 - expected = 0x55
             // state 2 - command
             // state 3 - bitwise complement of command

             //MSB 4 bits are the actual command.

#ifdef _4_MHz
#ifdef UseTMR0
  #define delayStart   limit = TMR0;
  #define delayOneBit      \
    limit += BitTimeIncr;  \
    while (limit != TMR0) \
        ;
#else
  #define delayStart   /* empty */
 
  //9600
  //====
 #ifdef BPS9600
  #define delayOneBit  {      \
       char ti;               \
       ti = 30;               \
       do ; while( --ti > 0); \
       nop();                 \
    }  /* total: 5 + 30*3 - 1 + 1 + 9 \
          = 104 microsec. at 4 MHz */
  #endif

 #ifdef BPS4800
  #define delayOneBit  {      \
       char ti;               \
       ti = 63;               \
       do ; while( --ti > 0); \
       nop();                 \
    }  /* total: 5 + 33*(3+9) - 1 + 1 + 9 \
          = 416.6 microsec. at 4 MHz */
 #endif

 #ifdef BPS2400
  #define delayOneBit  {      \
       char ti;               \
       ti = 100;               \
       do {nop();} while( --ti > 0); \
       nop();                 \
    }  /* total: 5 + 33*(3+9) - 1 + 1 + 9 \
          = 416.6 microsec. at 4 MHz */
 #endif

 #ifdef BPS1200
  #define delayOneBit  {      \
       char ti;               \
       ti = 137;               \
       do {nop(); nop(); nop(); } while( --ti > 0); \
       nop();                 \
    }  /* total: 5 + 33*(3+9) - 1 + 1 + 9 \
          = 416.6 microsec. at 4 MHz */
 #endif

#endif
#endif

void sendData( char dout)
/* sends one byte */
{
   RS232_out = 0;  /* startbit */
   delayStart
   for (bitCount = 9; ; bitCount--)  {
       delayOneBit
       if (bitCount == 0)
           break;
       Carry = 1;  /* incl. stopbit */
       dout = rr( dout);
       RS232_out = Carry;
   }
}


#define NText 12

#ifndef USE_CONST
char text( char i)
{
   skip(i);
  #pragma return[NText] = "YANGIN VAR"
}
#else
const char text[NText] = "Datmobile US";
#endif

const char ResetMobile[5] = "ATZ\r\n"; //reset mobile
const char NoEcho[6] = "ATE0\r\n"; //no echo
const char FwdMsg[13] = "AT+CNMI=3,3\r\n"; //forward all messages to
mobile phone
const char SndMsg[12] = "AT+CMGS=23\r\n"; //send message to mobile
phone, AT+CMGS=%d\r\n...PDU..
const char Dial[8] = "ATD000\r\n"; //Dial number 000
const char text1[5] = "State";
const char SMSMsg[48] =
"0021000B815063141516F600000AD9A0F3987482AC416928";

/*
#define delay12usec  {      \
    char titemp0;               \
    titemp0 = 30;               \
    do ; while( --titemp0 > 0); \
    nop();                 \
 }  /* total: 5 + 30*3 - 1 + 1 + 9 \
       = 104 microsec. at 4 MHz */
*/

#define delay10usec  {      \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
 } /* to create a total of 12 sec, but, adjusted for the looping delay
at 4 MHz */

#define delay12usec  {      \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
 } /* to create a total of 12 sec, but, adjusted for the looping delay
at 4 MHz */


#define delay13usec  {      \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
    nop();               \
    nop();                 \
 }  /* to create a total of 13 sec, but, adjusted for the looping
delay at 4 MHz */

void send_40KHz(void)
{
     char i;

     i = 8;
     do
     {
      PORTA = 0x05; //The RS232 Txd bit has to be high all the time
      delay12usec;
   
      PORTA = 0x09; //The RS232 Txd bit has to be high all the time
      delay13usec;
   } while ( --i > 0);

   PORTA = 0x01;
}

void delay_1millisec(void)
{
   int temp;
     for (temp = 0; temp < 100; temp++)
     {
          delay10usec;
     }
}

void delay_500millisec(void)
{
   int16 temp;
     for (temp = 0; temp < 500; temp++)
     {
      delay_1millisec();
     }
}

void delay_200millisec(void)
{
   int16 temp;
     for (temp = 0; temp < 250; temp++)
     {
      delay_1millisec();
     }
}


const char Digitext[10] = "0123456789";
void print_dec(unsigned char bytedata)
{
char i_temp, j_temp;

   if (bytedata > 100)
   {
      i_temp = bytedata/100;
      sendData(Digitext[i_temp]);

      j_temp = (bytedata/10);
      i_temp =  j_temp % 10;
      sendData(Digitext[i_temp]);

      i_temp = bytedata % 10;
      sendData(Digitext[i_temp]);
   }
   else if (bytedata > 10)
   {
      i_temp = bytedata/10;
      sendData(Digitext[i_temp]);
      i_temp = bytedata % 10;
      sendData(Digitext[i_temp]);
   }
   else
   { //single digit
      sendData(Digitext[bytedata]);
   }
}

const char Digitext[10] = "0123456789";

void send_SMS(void)
{
  int i;
  for (i = 0; i < 12; i++)
  {
     sendData( SndMsg );
  }
  delay_500millisec();
  for (i = 0; i < 48; i++)
  {
     sendData( SMSMsg );
  }
  sendData( 0x1A );
  sendData( '\r' );
  sendData( '\n' );
}

void main( void)
{
  char i;

   /* NOTE: some devices like the 16F877 have an on-chip analog to
      digital converter with analog input pins that should be
      configured. */
   //ADCON1 = ..; // Refer to the data sheet for init values.

   PORTB = 0x07; // xxxx xx11
   TRISB = 0xFB; // Bit 2: US_Enable_N (output), Bit 1: Ultrasonic
Recvd Bit (Input), Bit 0 : Rxd_RS232 (Input)

   PORTA = 0x01; // xxxx xx11
   TRISA = 0xF0; // xxxx xx10

   serialData = 0;

 #ifdef BPS9600
   OPTION = 2;   // prescaler divide by 8, for 9600 bps
 #endif

 #ifdef BPS4800
   #ifdef UseTMR0
     OPTION = 2;   // prescaler divide by 16, for 4800 bps
   #else
     OPTION = 2;   // prescaler divide by 16, for 4800 bps
   #endif
 #endif

 #ifdef BPS2400
   OPTION = 4;   // prescaler divide by 16, for 2400 bps
 #endif

 #ifdef BPS1200
   OPTION = 4;   // prescaler divide by 16, for 1200 bps
 #endif

   for (i = 0; i < NText; i++)  {
      #ifndef USE_CONST
       sendData( text(i));  /* text string */
      #else
       sendData( text);  /* text string */
      #endif
   }

  while(1)
  {
   LED_Green = 1;
     delay_500millisec();
   LED_Green = 0;
     delay_500millisec();
   while (Button0 == 0)
     {
      LED_Green = 1;
      delay_200millisec();
        LED_Green = 0;
      delay_200millisec();
     }      
  }
}

arslan74

Merhaba,

Bu gönderdiğini tek bir dosya halindemi yoksa ayrı ayrı dosyalarımı gönderdin. Eğer Tek bir dosya ise zaten çalışmaz. Çalışmamassının sebebi, hi-tech'den değil C nin yazım kurallarına hiç uyulmadığı için derlemez. Cünkü global değişkenler en başta tamınlanır ortada bir yerde global değişken tanımlayamassın.

Selamlar.

xenitis

en azından derleyici hatalarını yazsaydınız daha kolay yardım edilirdi

lamercik

program baştan sona mantık hataları ile dolu ve hi-teck in kendi kütüphanelerinde bulunan tanımlamalar ile bire bir çakışan  yanlış tanımlamalar var...

ahmet2004

Bu kodlar CC5X  kodları.

Kodlar internette yanlış aktarılıyor.Yanlış kopyalanıyor.

Burayada yazım hataları olan kodlar aktarılmış.

Yönetici arkadaşlar bu konuyu CC5X altına alabilirlermi?