Ajuda com mistério em assembly

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ajuda com mistério em assembly

Mensagempor ÁgioFelipe » 05 Fev 2007 21:50

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??
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Re: Ajuda com mistério em assembly

Mensagempor Renie » 05 Fev 2007 22:13

Olá Ágio!

O WDT está desabilitado? Não está caindo em alguma interrupção?
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Re: Ajuda com mistério em assembly

Mensagempor FLUGEL » 06 Fev 2007 07:11

Á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.
FLUGEL
Bit
 
Mensagens: 9
Registrado em: 22 Nov 2006 11:39

Mensagempor ÁgioFelipe » 06 Fev 2007 08:24

Entendi sim, valeu.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04


Voltar para PIC

Quem está online

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

x