Página 1 de 1

conectando pic

MensagemEnviado: 29 Out 2010 20:22
por juniorlucival
Ola pessoal, tenho estudado os codigos do livro "conectando o pic" e preciso da ajuda dos mestres aqui, no exemplo dois, há uma rotina para o timer1 onde ele conta 1s, me deparei com a seguinte instrução.
Trata-se de uma declaração de constante:
TMR1_HIGH EQU HIGH(.65536 - 62500)
TMR1_LOW EQU LOW(.65536-62500)

Eu deduzi que se trata de duas variáveis uma para parte alta do endereço e outra para parte baixa, e nelas o valor da operação entre parendeses. gostaria que os senhores confirmassem pra mim, se não que me explicassem porque usar argumentos entre parendeses porque não por o valor direto.

MensagemEnviado: 30 Out 2010 20:58
por mastk
Confira o manual do seu compilador.

Ponto como sufixo representa algum tipo de notacao numerica, nao sei de cabeça, porem a subtracao, eh realizada para determinar o modulo do contador de maneira mais simples e logica, imagino que o contador do PIC va de 65536 a X, logo para determinar X realiza-se a subtracao.

MensagemEnviado: 30 Out 2010 21:16
por Kleber
TMR1_HIGH EQU HIGH(.65536 - 62500)
TMR1_LOW EQU LOW(.65536-62500)

.(ponto) na linguagem assembly do PIC é notação decimal. Acredito que deve estar faltando um ponto no número 62500.
TMR1_HIGH EQU HIGH é uma constante definida pela parte alta do resultado da operação 65536 - 62500, ou seja, 3036 em decimal e 0BDC em hexa. Assim, a parte 0B fica em TMR1_HIGH e DC em TMR1_LOW.

Poderia ser utilizado o valor direto sim, por exemplo:
TMR1_HIGH EQU 0x0B
TMR1_LOW EQU 0xDC

Veja as diretivas do compilador, e se não me enganho, no apêndice dos livros Desbravando, Conectando e PIC Técnicas Avançadas.
No livro Laboratório de Microcontrolador 8051 do Dennis Nicolosi, ele usa muito para Timers High e Low, mas isto de fato não faz parte da linguagem Assembly.

MensagemEnviado: 02 Nov 2010 10:00
por juniorlucival
obrigado a todos, tudo muito bem explicado e compreendido.