Página 1 de 1

Quantidade máxima de veriáveis globais at89s8253

MensagemEnviado: 11 Mar 2008 10:51
por Meson
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.

MensagemEnviado: 11 Mar 2008 12:28
por LeandroPIC
fica dificil de dizer, depende do tipo de variavel.

Mas qual o problema que tá dando ai.

MensagemEnviado: 11 Mar 2008 12:52
por xultz
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.

MensagemEnviado: 12 Mar 2008 09:29
por styg
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.

MensagemEnviado: 15 Mar 2008 10:25
por Meson
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.