Varredura de tabela na memoria de programa

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Varredura de tabela na memoria de programa

Mensagempor Vonnilmam » 17 Dez 2016 17:34

Olá, pessoal....eu acho que estou ficando burro... :cry:

Eu preciso ir lendo byte a byte em sequencia até o final da tabela que esta na memória de programa, mas não estou conseguindo criar o raciocinio, podem me ajudar.

Cheguei até essa rotina a seguir, eu consigo ler o primeiro byte na flash, mas não estou conseguindo entender como incrementar o ponteiro...

cpp code
// tabela com os dados:
const code char tab1[5]
{ 0, 1, 2, 3, 4, 5};

void main()
{
while (1)
{
txt = *tab1; // txt é uma variável unsigned char.
}
}


obrigado
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: Varredura de tabela na memoria de programa

Mensagempor andre_luis » 17 Dez 2016 18:43

Isso está compilado normalmente sem errro ?

No meu entender, a atribuição dos valores do vetor deveria ser precedido de um operador "=".
Além disso. parece que está estourando o tamanho da variavel de 5 bytes com um vetor de 6 posições:

Código: Selecionar todos
const code char tab1[5]
{ 0, 1, 2, 3, 4, 5};
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Varredura de tabela na memoria de programa

Mensagempor Vonnilmam » 17 Dez 2016 19:06

A dúvida é que eu não estou conseguindo entender como incrementar a tabela para ler os bytes em sequencia, colocando eles na variavel txt...

Esse é apenas um exemplo...

corrigindo, tab1[6]
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: Varredura de tabela na memoria de programa

Mensagempor andre_luis » 17 Dez 2016 20:05

Não precisa de ponteiro, mas apenas de um indice.
Algo do tipo:

cpp code
// tabela com os dados:
const code char tab1[] = { 0, 1, 2, 3, 4, 5};
char i = 0 ;

void main()
{
while (1)
{
if ( i++ > sizeof(tab1[]) )
i = 0 ;
txt = tab1[i]; // txt é uma variável unsigned char.
}
}
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Varredura de tabela na memoria de programa

Mensagempor Vonnilmam » 17 Dez 2016 21:24

Oi andre,

Obrigado pelas dicas, vou montar essa ideia e compilar.

No meu caso eu só dei um exemplo, pois minha tabela terá 3.000 dados de 8 bits cada um.

O procedimento é o mesmo?

Porém vou fazer como você disse, quero ler uma sequencia inteira até o final, partindo do 0 até o final.

Para esboçar melhor imagine uma tabela de imagem, serão várias, com diversos tamanhos...sendo que ao invés de imagem vou ler um arquivo midi.

Obrigado
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: Varredura de tabela na memoria de programa

Mensagempor Vonnilmam » 17 Dez 2016 21:36

Andre, muito obrigado, foi na MOSCA, sua dica.

Funcionou corretamente,

Sou muito agradecido...

Obrigado
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial


Voltar para PIC

Quem está online

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

cron

x