Ajuda - 16F877 ADC 10 bits

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ajuda - 16F877 ADC 10 bits

Mensagempor mendes » 12 Nov 2007 18:05

Caros colegas ,

Sou iniciante em microcontroladores e ASM , meus conhecimentos são limitados , mas estou procurando sempre aprender , principalmente aqui no forum ,. Estou sempre “de olho” nas dicas e sugestões dos colegas
aqui e sempre que possível estou montando uns “projetinhos” com Pic´s que encontro na net e acho
interessante . Porém dessa vez é eu quem pede a ajuda dos colegas .
Fiz um V.U ( Bargraph ) utilizando um LCD 16x2 e está funcionado bem .
Estou utilizando apenas 8 bits do ( ADRESH - justificado a esquerda ) .
Agora estou fazendo alguns testes com audio e gostaria de obter mais precisão na escala do Bargraph .
Pra isso , gostaria de utilizar 10 bits ( justificado a direita ) , 8 bits em ADRESL e 2 bits em ADRESH .
A forma que utilizei para “imprimir” os caracteres no LCD está escrito abaixo . O valor que está no registro
após a conversão é subtraido por um valor X , se for zero ... “imprime” o caractere correspondente a posição do Bargraph . Dessa maneira subtraio valores entre 0 e 255 ; agora minha dúvida é : Como posso subtrair um determinado valor ( entre 0 e 1023 ) sabendo que 8 bits estão em ADRESL e os outros 2 bits estão em ADRESH ?? ????????. Obs. Estou utilizando o PIC 16F877A
Bem , pelo que vejo na net , talvez se utilizasse a linguagem C , isso seria mais fácil , mas como estou
iniciando pelo assembly ... rs rs rs rs .


Agradeço a atenção e ajuda dos colegas .

Abraço a todos

Evandro Mendes




CONVERTE:

BSF ADCON0,GO
BTFSC ADCON0,GO
GOTO $-1

MOVF ADRESH, W
MOVWF VALOR_ESQUERDO

CALL BARGRAPH_ESQUERDO


RETURN


BARGRAPH_ESQUERDO:


MOVF VALOR_ESQUERDO, W
SUBLW .5
BTFSC STATUS, Z
GOTO CARACTERE_ESQ_1

MOVF VALOR_ESQUERDO, W
SUBLW .10
BTFSC STATUS, Z
GOTO CARACTERE_ESQ_2

MOVF VALOR_ESQUERDO, W
SUBLW .15
BTFSC STATUS, Z
GOTO CARACTERE_ESQ_3



...

RETURN
mendes
Bit
 
Mensagens: 6
Registrado em: 29 Nov 2006 23:17
Localização: São Paulo

Mensagempor LeandroPIC » 13 Nov 2007 11:44

vc tem que trabalhar com 16 bits, isso quer dizer que vc vai ter que desenvolver rotinas para trabalhar com 16 bits, e cada variavel acupar 2 byte da ram, no site da microchip vc encontra ans que te ajudaram.

vc vai ter que diminuir, rotacionar bits, verificar o carry...........

Mas não desista agora de ASM, agora é que vc vai entender e ver bem como é o verdadeiro ASM..................!!!!!!!!!!!

no inicio é complicado mas quando pega o jeito é tudo beleza, isso se vc tiver tempo e voltade de aprender.
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor RobL » 13 Nov 2007 15:09

Veja se isso lhe dá um click.
Base 10 estoura em 9+1.
Base 256 estoura em 255 +1. (1 byte) + 1
Então acima de 256 posso usar o mesmo algoritmo para subtrair em base 10 ou em qualquer base, no caso usando 2 bytes.

Pode também subtrair e fica mais simples, usando a soma do complemento.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor mendes » 14 Nov 2007 06:57

Olá Rob e Leandro

Em primeiro lugar obrigado pela ajuda , vou tentar fazer da forma que
vc´s indicaram , apesar de ter pouca experiência com uC e ASM ... o jeito é tentar , valew pela "LUZ" .

Brigadão !!!
mendes
Bit
 
Mensagens: 6
Registrado em: 29 Nov 2006 23:17
Localização: São Paulo

Mensagempor LeandroPIC » 14 Nov 2007 11:24

de uma olhada em teoria "eletronica digital", "portas logicas" "algebra booleana", isso é 80% do que vc precisa saber para realisar sua aplicação.
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19


Voltar para PIC

Quem está online

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

cron

x