I just write simple program for 16f628a Pic and I have problems with run it 
when I want add and initialize next variable. If I don't add variable program 
working just fine. This variable name is TABLE_INDEKS .I have:
 
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.6.1 
#4341 (Aug 24 2006) (MINGW32)
 
gasm-0.13.3 beta
gplink-0.13.3 alfa

windowsXP pro
My program:
 
/*==================================================================================*/
/*
/*/*==================================================================================*/
#define   __16f628a
#include <pic/pic16f628a.h>
#include "urzadzenia_pica.h"
#include "definicje.h"
 
typedef unsigned int WORD;
 
WORD at 0x2007 __CONFIG = (_CP_OFF & _WDT_ON & _MCLRE_OFF & 
_INTOSC_OSC_NOCLKOUT & _LVP_OFF & _PWRTE_ON & _BODEN_ON);
 

/*=================================== DEFINICJE 
=====================================*/
 
#define BIT(x)    (1<<(x))
 
/*=========================== DEKLARACJE ZMIENNYCH GLOBALNYCH 
=======================*/
code unsigned char 
tabelka[240]={51,54,57,60,63,66,69,72,75,85,87,89,91,93,95,97,99,101,103,114,116,118,120,122,124,126,128,130,
       
132,140,142,144,146,148,150,152,154,156,158,169,172,175,178,181,184,187,190,193,196,201,197,193,
       
189,185,181,177,173,169,165,161,158,155,152,149,146,143,140,137,134,126,123,120,117,114,111,108,
       
105,102,99,90,87,84,81,78,75,72,69,66,63,51,47,43,39,35,31,27,23,19,15,10,12,14,16,18,20,22,24,
       
26,28,34,35,36,37,38,39,40,41,42,43,47,49,51,53,55,57,59,61,63,65,68,70,72,74,76,78,80,82,84,86,
       
95,98,101,104,107,110,113,116,119,122,126,129,132,135,138,141,144,147,150,153,157,162,167,172,
       
177,182,187,192,197,202,207,202,197,192,187,182,177,172,167,162,157,152,147,142,137,132,127,122,
       
117,112,105,101,97,93,89,85,81,77,73,69,56,53,50,47,44,41,38,35,32,29,25,25,25,25,25,25,25,25,
       25,25,16,16,16,16,16,16,16,16,16,16,10};
 
static struct SOFT_KOMP{          //stuktura sterujaca komparatorem programowym
   unsigned char OLD_AN1   :1;
   unsigned char OLD_AN2   :1;
   unsigned char NEW_AN1   :1;
   unsigned char NEW_AN2   :1;
   unsigned char timer_working :1;
   unsigned char start     ;
   }STER_COMP;
 

unsigned char    LICZ_PRZER_T0;     //licznik impulsow zliczonych przez 
przerwaia z timera0 
unsigned int   LICZ_PRZER_T1;     //licznik impulsow zliczonych przez przerwaia 
z timera1
unsigned char   OPEN_BSP_TIME;     //czas przez jaki ma byc otwarty tranzystor
 
unsigned char   TABLE_INDEKS;
 
/*=================================== FUNKCJA MAIN 
===================================*/
void main(void) 
{
 
 //TABLE_INDEKS=0;
 
 TRISA=0x00;            //chwilowo ustawiamy wszystkie porty jako wyjscia
 TRISB=0x00;            //
 PORTA=0xFF;            //
 PORTB=0xFF;            //
 
 STER_COMP.timer_working=0;
 STER_COMP.start=205;
 
 OPEN_BSP_TIME=235;
 
 init_PIC_port();
 PORTB&=~BIT(BSP_GATE_O);        //WYLACZAMY TRANZYSTOR BSP295 BSP_GATE_O=0
 
 PORTB|=BIT(BSP_GATE_O);
 
 PORTB|=BIT(BUP_GATE_O);         //ZALACZAMY TRANZYSTOR BUP203 BUP_GATE_O=1
 
 init_PIC_timer0();
 init_PIC_timer1();
 
 PEIE=1;             //wlaczenie zezwolenia na przerwanie od dodatkoych przerwan
 GIE=1;             //globalne zezwolenie na przerwania
 
 
if(PORTA&BIT(AN1)){STER_COMP.OLD_AN1=1;STER_COMP.NEW_AN1=1;}else{STER_COMP.OLD_AN1=0;STER_COMP.NEW_AN1=0;}
 
if(PORTA&BIT(AN2)){STER_COMP.OLD_AN2=1;STER_COMP.NEW_AN2=1;}else{STER_COMP.OLD_AN2=0;STER_COMP.NEW_AN2=0;}
 
 while(1)
 {
  if(!STER_COMP.timer_working && !STER_COMP.start)       //jesli pracujemy
   {
    if(PORTA&BIT(AN1)){STER_COMP.NEW_AN1=1;}else{STER_COMP.NEW_AN1=0;}
    if(PORTA&BIT(AN2)){STER_COMP.NEW_AN2=1;}else{STER_COMP.NEW_AN2=0;}
    if((STER_COMP.NEW_AN1!=STER_COMP.OLD_AN1) && 
(STER_COMP.NEW_AN2!=STER_COMP.OLD_AN2))
     {
      
      PORTB&=~BIT(BUP_GATE_O);
      PORTB&=~BIT(BSP_GATE_O);
      
      STER_COMP.OLD_AN1=STER_COMP.NEW_AN1;
      STER_COMP.OLD_AN2=STER_COMP.NEW_AN2;
      STER_COMP.timer_working=1;
      T0IE=1;//1;
      T0CS=0;//0;
     }
   }
   
  if(!STER_COMP.timer_working && STER_COMP.start!=0)      //jesli wlasnie 
startujemy
   {
    
    if(PORTA&BIT(AN1)){STER_COMP.NEW_AN1=1;}else{STER_COMP.NEW_AN1=0;}
    if(PORTA&BIT(AN2)){STER_COMP.NEW_AN2=1;}else{STER_COMP.NEW_AN2=0;}
    if((STER_COMP.NEW_AN1!=STER_COMP.OLD_AN1) && 
(STER_COMP.NEW_AN2!=STER_COMP.OLD_AN2))
     {
      STER_COMP.start=STER_COMP.start-1;
      LICZ_PRZER_T0=250;
      
      PORTB&=~BIT(BUP_GATE_O);
      PORTB&=~BIT(BSP_GATE_O);
      
      STER_COMP.OLD_AN1=STER_COMP.NEW_AN1;
      STER_COMP.OLD_AN2=STER_COMP.NEW_AN2;
      STER_COMP.timer_working=1;
      T0IE=1;//1;
      T0CS=0;//0;
     }
   }
 } 
}
 
 
 
/*==================================== OBSLUGA 
PRZERWAN===============================*/
static void przerwanie(void) interrupt 0
{
 if(T0IF)
  {
  T0IF=0;
      
   if(PORTB&BIT(PWR_OK_I))      //jesli PWR_OK to odliczaj czas
    {
    LICZ_PRZER_T0++;    
    if(!LICZ_PRZER_T0)      //jesli licznik sie przepelnil to 
     {            
     PORTB|=BIT(BUP_GATE_O);    //znaczy ze juz czas konczyc odliczanie
     PORTB|=BIT(BSP_GATE_O);    //no i ustawiamy porty wyjsciowe w odp stan
     TMR0=D_INIT_TIMER;     //inicjalizujemy timer wartoscia poczatkowa
 
     T0IE=0;        //blokujemy przerwania ad timera 0
     T0CS=1;        //zliczmy impulsy zewnetrzne czyli stop
     
     LICZ_PRZER_T0=OPEN_BSP_TIME;  
     STER_COMP.timer_working=0;  
     }
    }
   else
    {
    PORTB|=BIT(BUP_GATE_O);
    }
  TMR0=TMR0-D_TIMER_INTERVAL;     //korekcja licznika timera0 tak aby byla 
wlasciwa ilosc cykli do zliczeia
  }
  
 if(TMR1IF)
  {
   TMR1IF=0;
   PORTB^=BIT(5);
   LICZ_PRZER_T1++;
   if(!LICZ_PRZER_T1)
    {
     PORTB^=BIT(5);
     LICZ_PRZER_T1=(65535-/*900*/10);   //czas 45 sekund
    }
   
   TMR1L=D_INIT_TIMER1L;
   TMR1H=D_INIT_TIMER1H;
  }
}
 
included files:
  
#include "urzadzenia_pica.h"
/*======================================== FUNKCJE 
===========================================*/ 
 
void init_PIC_timer0(void)
{ 
 PSA=1;           
 T0CS=1;           
 T0IE=0;           
 TMR0=D_INIT_TIMER;        
}
 
/*void init_PIC_comp (void)
{
 CM0=1;           
 CM2=1;
 PEIE=1;           
 CMIF=0;           
 CMIE=1;           
}*/
 
void init_PIC_port(void)
{
 CM0=1;           
 CM1=1;
 CM2=1;
 TRISA|=BIT(AN1);       
 TRISA|=BIT(AN2); 
 NOT_RBPU=0;          
 TRISB&=~BIT(BUP_GATE_O);     
 TRISB&=~BIT(BSP_GATE_O);      
 TRISB|=BIT(PWR_OK_I);       
 
 TRISB&=~BIT(5);         
}
 
void init_PIC_timer1(void)
{
 TMR1IF=0;          
 TMR1ON=0;          
 TMR1IE=1;          
 TMR1CS=0;          
 T1CKPS1=0;          
 T1CKPS0=0;
 TMR1L=D_INIT_TIMER1L;
 TMR1H=D_INIT_TIMER1H;
 TMR1ON=1;          
}

and my makefile:
 
#=================================ZMIENNE MAKFILE===========================#
 
CC=sdcc
#zmienne gdy uzywamy gputils
 
CFLAGS=-V --debug-xtra -mpic14 -p16f628a 
LINKER=gplink
LFLAGS=-ainhx8m -m
LLIB= "c:\Program Files\sdcc\lib\pic\pic16f628a.lib" "c:\Program 
Files\sdcc\lib\pic\libsdcc.lib"
 
CL_DIR="c:\Documents and Settings\marcin\Pulpit\pce\"
 
#===========================================================================#
 
all: count
 
count: count.o urzadzenia_pica.o 
 
# $(CC) $(CFLAGS) -o count.hex count.o urzadzenia_pica.o
 
 $(LINKER) $(LFLAGS) -o count.hex count.o urzadzenia_pica.o $(LLIB)
 
urzadzenia_pica.o: urzadzenia_pica.c
 
 $(CC) $(CFLAGS) -c urzadzenia_pica.c
 
count.o: count.c
 
 $(CC) $(CFLAGS) -c count.c 
 

clean:
 
 rm *.hex *.lst *.o *.cod *.asm *.d *.p *.map

What I'm doing wrong ?
Please anyone help me.   


------------------------------------------------------------------------
Szybko i tanio ubezpiecz samochod! 
Kupno polisy zajmie Ci 15 minut! Kontakt przez telefon albo Internet. 
Kliknij i sprawdz: http://link.interia.pl/f19a0


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to