Página 1 de 1

Ajuda com mistério em assembly

MensagemEnviado: 05 Fev 2007 21:50
por ÁgioFelipe
Pessoal estou escrevendo um código para 16f877A q já está até meio grande mas ainda não ultrapassa a primeira página da memória de programa, o problema é q estas simples instruções não funcionam conforme o esperado:

1 movlw b'00000000'
2 addwf PCL
3 nop
nop
nop
nop
nop
Ele muda todo o PC e não o PCL que é somente a parte baixa.
Na linha 2 o meu pc é 0x5b7, logo depois disso o programa desvia para o endereço 0xb8.
O que vcs acham disso??

Re: Ajuda com mistério em assembly

MensagemEnviado: 05 Fev 2007 22:13
por Renie
Olá Ágio!

O WDT está desabilitado? Não está caindo em alguma interrupção?

Re: Ajuda com mistério em assembly

MensagemEnviado: 06 Fev 2007 07:11
por FLUGEL
ÁgioFelipe escreveu:Pessoal estou escrevendo um código para 16f877A q já está até meio grande mas ainda não ultrapassa a primeira página da memória de programa, o problema é q estas simples instruções não funcionam conforme o esperado:

1 movlw b'00000000'
2 addwf PCL
3 nop
nop
nop
nop
nop
Ele muda todo o PC e não o PCL que é somente a parte baixa.
Na linha 2 o meu pc é 0x5b7, logo depois disso o programa desvia para o endereço 0xb8.
O que vcs acham disso??


Bom dia Felipe.

Realmente parece um misterio, demorou um bom tempo para mim descobrir o problema quando me deparei com uma situação assim.
quando utilizamos o call, goto e return por exemplo, esta instruções corrigem o pclath e o pcl de acordo com o endereço que queremos ir, quando carregamos diretamente um valor no pcl isso não acontece, note que o programa pulou para os primeiros 256 bytes da flash
pois o pclath esta zerado.
existem duas altarnativas ou voce acerta o pclath no local onde você esta:
no seu caso:
movlw .05
movwf PCLATH
1 movlw b'00000000'
2 addwf PCL
3 nop
nop
nop
nop
nop

Ou cria uma tabela na parte baixa da flash, eu particurlamente utilizo esta opção:


movlw b'00000000'
call tab_exemplo

org 30H

Tab_exemplo:

2 addwf PCL
3 nop
nop
nop
nop

espero que tenha entendido.

até mais.

MensagemEnviado: 06 Fev 2007 08:24
por ÁgioFelipe
Entendi sim, valeu.