DUvida varialvel assembly

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

DUvida varialvel assembly

Mensagempor alex_david_lima » 20 Nov 2006 11:36

Ola, gostaria da ajuda dos colegas do forum, como locar munero com virgula em uma varialvel , estou utilanzando o assembl.




obrigado, Alex David
alex_david_lima
Bit
 
Mensagens: 35
Registrado em: 04 Nov 2006 07:46

Mensagempor eletroinf » 20 Nov 2006 15:37

Cada registrador pode conter um valor entre 0 e 255, uma vez que é composto de 8 bits. A questão de pôr vírgula depende mais de como tu trata os dados. Por exemplo, se tu quiser armazenar o número 5.6: Salva o número 56 e faz o tratamento do ponto no momento em que tu mostrar o número ou coisa do tipo. Se tu salvar o número em ASCII fica mais fácil, daí cada byte de memória fica com um dígito, inclusive um pra vírgula; ex: 5.6 em ASCII, vai ocupar 3 locações de memória:

1º byte: 53 -> 5 em ASCII
2º byte: 46 -> . em ASCII
3º byte: 54 -> 6 em ASCII

Em geral multiplicamos o número por 10, 100, etc. de acordo com a posição da vírgula. Dessa forma dificilmente o número caberá em um registrador de 8 bits, daí temos de trabalhar com dois registradores. Outro exemplo: Um termômetro, que vai indicar temperatura de 0.0 a 99.9; Trabalhamos os dados considerando 0 a 999. Botamos a vírgula na hora de mostrar o resultado, isto é, a temperatura. No meu site tem um termômetro que fiz e utiliza estas idéias:
http://www.eletroinf.cjb.net/
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor Fábio Pereira » 20 Nov 2006 16:06

Hmmm,

Acho que a resposta do eletroinf está só 50% correta.

Se a pergunta refere-se a "locar" um "munero" em uma variável apenas para fins de apresentação (num display, por exemplo). Aí o procedimento sugerido é correto.

Agora se a questão for utilizar o tal "munero" para cálculos, aí é muito mais complicado que isso.

Neste caso existem duas opções: utilização de binário fracional ou notação ponto-flutuante. O primeiro caso é adequado quando precisamos de baixa precisão na parte fracional. O segundo é mais adequado para cálculos de precisão.

Normalmente o formato de ponto-flutuante utilizado por padrão é o IEEE754. A Microchip sugere um outro formato, mais adequado ao funcionamento dos PICs.

Existem muitas notas de aplicação que descrevem bibliotecas para cálculos em ponto-flutuante com PICs. Está tudo no site da Microchip.

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor alex_david_lima » 20 Nov 2006 20:36

Ola, eletroinf
desta maneira acho que entendi como funciona


eletroinf escreveu:Cada registrador pode conter um valor entre 0 e 255, uma vez que é composto de 8 bits. A questão de pôr vírgula depende mais de como tu trata os dados. Por exemplo, se tu quiser armazenar o número 5.6: Salva o número 56 e faz o tratamento do ponto no momento em que tu mostrar o número ou coisa do tipo. Se tu salvar o número em ASCII fica mais fácil, daí cada byte de memória fica com um dígito,

inclusive um pra vírgula; ex: 5.6 em ASCII, vai ocupar 3 locações de memória:

1º byte: 53 -> 5 em ASCII
2º byte: 46 -> . em ASCII
3º byte: 54 -> 6 em ASCII

Em geral multiplicamos o número por 10, 100, etc. de acordo com a posição da vírgula. Dessa forma dificilmente o número caberá em um registrador de 8 bits, daí temos de trabalhar com dois registradores. Outro exemplo: Um termômetro, que vai indicar temperatura de 0.0 a 99.9; Trabalhamos os dados considerando 0 a 999. Botamos a vírgula na hora de mostrar o resultado, isto é, a temperatura. No meu site tem um termômetro que fiz e utiliza estas idéias:
http://www.eletroinf.cjb.net/
alex_david_lima
Bit
 
Mensagens: 35
Registrado em: 04 Nov 2006 07:46

Mensagempor alex_david_lima » 20 Nov 2006 20:38

Ola, Fábio Pereira
Obrigado pela ajuda vou pesquizar vobre o assunto.


Fábio Pereira escreveu:Hmmm,

Acho que a resposta do eletroinf está só 50% correta.

Se a pergunta refere-se a "locar" um "munero" em uma variável apenas para fins de apresentação (num display, por exemplo). Aí o procedimento sugerido é correto.

Agora se a questão for utilizar o tal "munero" para cálculos, aí é muito mais complicado que isso.

Neste caso existem duas opções: utilização de binário fracional ou notação ponto-flutuante. O primeiro caso é adequado quando precisamos de baixa precisão na parte fracional. O segundo é mais adequado para cálculos de precisão.

Normalmente o formato de ponto-flutuante utilizado por padrão é o IEEE754. A Microchip sugere um outro formato, mais adequado ao funcionamento dos PICs.

Existem muitas notas de aplicação que descrevem bibliotecas para cálculos em ponto-flutuante com PICs. Está tudo no site da Microchip.

Até +
alex_david_lima
Bit
 
Mensagens: 35
Registrado em: 04 Nov 2006 07:46


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x