Página 1 de 1
duvida2

Enviado:
11 Jan 2007 08:51
por rebelk
ultilizo uma biblioteca.h e nela existem varias funções e que algumas delas não chamo no progama principal , então aparece
linking...*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?CALCULO_TENCAO?FONTE
Program Size: data=26.7 xdata=0 code=707
creating hex file from "FONTE"..."FONTE" - 0 Error(s), 1 Warning(s).
o que segnifica isso , isso é um erro ?
como faço para resolver isso?
ultilizo o keil

Enviado:
11 Jan 2007 09:49
por brasilma
Não é erro não, apenas um aviso, vc pode perceber isso pois o compilador e o linker fizeram seu trabalho até o final, se fosse erro o objeto não seria gerado.
Ele está apenas o advertindo que um segmento dentro do seu programa não está sendo chamado, isto é útil, pois retirando-o (/* */), vc economisa memória.
Então não o encare como sendo uma coisa "chata" e sim boa.
Abraços,
MArcos.

Enviado:
11 Jan 2007 12:51
por rebelk
beleza brazilma , mas não tem como ele compilar apenas o que é
chamado na função principal?
desde já agradeço !!!!!!!!

Enviado:
11 Jan 2007 13:34
por barboza
Lembro disso ter sido discutido no forum antigo.
Tem uma diretiva no Keil que faz isso.

Enviado:
11 Jan 2007 14:51
por rebelk
onde , ou qual ?

Enviado:
11 Jan 2007 16:44
por Maurício
O problema é que ele compila e inclue a função não-chamada pra dentro do seu programa, o que ocupa espaço na memória.
Não conheço essa diretiva. Seria muito interessante se alguém conhecer outro método, postar aqui.
A solução que a Keil recomenda nos seus manuais é a seguinte:
Isole a função não-chamada através do uso da diretiva #if(0), #endif
No código fica assim:
- Código: Selecionar todos
#if (0)
void funcao_nao_chamada ( void)
{
}
#endif
Isso daí já elimina o código desnecessário do seu programa, e evita o mané do compilador de ficar enviando mensagens bestas !!!
[]'s
RETI.

Enviado:
11 Jan 2007 17:15
por rebelk
valeu professor!!!!!!!!
tambem gostari de saber !!

Enviado:
12 Jan 2007 11:20
por rebelk
este se #if(0) seguifica o que!

Enviado:
12 Jan 2007 12:16
por Viktor
Coloca o comado REMOVEUNUSED dentro OPTIONS FOR TARGET->LX51 MISC->Misc controls
Isto resolve seu problema !

Enviado:
12 Jan 2007 12:59
por rebelk
só não enterndi como faço isso!

Enviado:
12 Jan 2007 13:31
por Viktor
PROJECT->OPTIONS FOR "TARGET"->LX51 MISC->Misc controls
TERGET = NOME DO SEU PROJETO

Enviado:
12 Jan 2007 15:49
por rebelk
fiz tudo que vc mandou e deu isso
Build target 'Target 1'
compiling Acionador.c...
linking...
BL51 BANKED LINKER/LOCATER V5.01 - SN:
K1PTP-FS3H1E
COPYRIGHT KEIL ELEKTRONIK GmbH 1987
- 2002
"Acionador.obj"
TO "teste"
RAMSIZE(256)
REMOVEUNUSED
*** FATAL ERROR L204: INVALID KEYWORD
POS: 58
EIL\C51\BIN\BL51.EXE Acionador.obj TO teste RAMSIZE
(256) REMOVEUNUSED#
Target not created
#include <at898252.h>
//#include <binario.h>
//#include<delay_us.h>
//#include <delay_ms.h>
unsigned int W=0;
tabela(unsigned int A)
{
A=A*3;
}
// ***************************************************************************************************************
// ***************************************************************************************************************
main()
{
TMOD=0X11;
while(1)
{
W++;
tabela( W );
}
}

Enviado:
12 Jan 2007 16:36
por Viktor
Cara, comigo funciona. De qualquer modo dá uma olhada em
http://www.keil.com/support/man/docs/lx ... unused.htm