duvida2

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

duvida2

Mensagempor rebelk » 11 Jan 2007 08:51

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
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor brasilma » 11 Jan 2007 09:49

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.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor rebelk » 11 Jan 2007 12:51

beleza brazilma , mas não tem como ele compilar apenas o que é
chamado na função principal?

desde já agradeço !!!!!!!!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor barboza » 11 Jan 2007 13:34

Lembro disso ter sido discutido no forum antigo.
Tem uma diretiva no Keil que faz isso.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor rebelk » 11 Jan 2007 14:51

onde , ou qual ?
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Maurício » 11 Jan 2007 16:44

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 !!! :lol:

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor rebelk » 11 Jan 2007 17:15

valeu professor!!!!!!!!

tambem gostari de saber !!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor rebelk » 12 Jan 2007 11:20

este se #if(0) seguifica o que!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Viktor » 12 Jan 2007 12:16

Coloca o comado REMOVEUNUSED dentro OPTIONS FOR TARGET->LX51 MISC->Misc controls

Isto resolve seu problema !
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33

Mensagempor rebelk » 12 Jan 2007 12:59

só não enterndi como faço isso!
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Viktor » 12 Jan 2007 13:31

PROJECT->OPTIONS FOR "TARGET"->LX51 MISC->Misc controls


TERGET = NOME DO SEU PROJETO
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33

Mensagempor rebelk » 12 Jan 2007 15:49

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 );



}


}
rebelk
Byte
 
Mensagens: 301
Registrado em: 15 Nov 2006 20:16

Mensagempor Viktor » 12 Jan 2007 16:36

Cara, comigo funciona. De qualquer modo dá uma olhada em http://www.keil.com/support/man/docs/lx ... unused.htm
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x