Quantidade máxima de veriáveis globais at89s8253

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Quantidade máxima de veriáveis globais at89s8253

Mensagempor Meson » 11 Mar 2008 10:51

Olá a todos!

Alguem tem como me dizer qual a quantidade máxima de variáveis globais que posso colocar em um program em C para o referido uc?
Estou usando um método simples de somar a quantidade de bits de cada tipo de variavel, ex:
int - somo 2 bytes
char - somo 1 byte
bit - a cada oito 1 byte.

Gostaria de saber se esta certo e qual o limite pois sei que não é os 256 bytes da RAM.

estou tendo problemas na execução do programa que acho q pode estar sendo causada por excesso no uso de variáveis globais.

Obrigado.
Meson
Nibble
 
Mensagens: 54
Registrado em: 13 Out 2006 08:31

Mensagempor LeandroPIC » 11 Mar 2008 12:28

fica dificil de dizer, depende do tipo de variavel.

Mas qual o problema que tá dando ai.
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor xultz » 11 Mar 2008 12:52

Dependendo do compilador e do microcontrolador, coisas como a pilha (para marcar endereços de entrada e saída de funções) vão para a RAM, aí o compilador tem que separar uma porção dela para isso (e provavelmente isso seja configurável), e talvez na mesma pilha ele reserve espaço para guardar informações de registradores, então a quantidade de RAM disponível pode cair drasticamente. Normalmente logo após compilar e linkar ele gera um arquivo com o mapa da memória usada, dá uma checada.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor styg » 12 Mar 2008 09:29

Meson,

o limite são os 256 bytes sim, oq pode estar acontecendo é que voce nao esta diferenciando na hora da declaração da variavel, os primeiros 128bytes( endereçamento direto), do ultimos 128 bytes( endereçamento indireto) da ram.
no keil por exemplo usa pdata (se nao me engano) antes do tipo da variavel (na declaração).
V c isso t ajuda.
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor Meson » 15 Mar 2008 10:25

Olá, styg dei uma olhada em um livro, e o que vc diz fez todo sentido, quando declaramos uma variavel int por exemplo, se não especificarmos nada, a reserva sera feita na região defalt que é a região DATA, que correspondem aos 128bytes, deve-se entaum acrescentar o modificador idata int para o restante.
Eu atualmente uso o sdcc!
Vou testar agora, obrigado a todos.
Meson
Nibble
 
Mensagens: 54
Registrado em: 13 Out 2006 08:31


Voltar para 8051

Quem está online

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

x