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