Ir ao conteúdo
  • Cadastre-se
Andrias Matheus

PIC Erro em programação de assembly

Recommended Posts

olá. estou fazendo uma programação para pic na qual o pic vai receber um sinal de módulo nec de um receptor infravermelho, e vai realizar determinada função.

para esse processo, estou utilizando preescaler de 1:16 e timer 1 no modo de temporizador. mas ao fazer essas configurações na programação, está dando erro na parte :

"org 0x00

goto inicio"

o erro é: overwriting previous address contents (0000)

não estou sabendo resolver esse pequeno problema.

aqui vão algumas partes da programação relacionadas aos banks do pic e as variáveis criadas:

 

----- variáveis -----

cblock    0x20       
        w_temp           
        status_temp       
        temp1
        temp2
        temp3
        tmr1l_temp
        tmr1h_temp
    
    endc       

       

inicio
    bank1                ;altera para o banco 1
    movlw    b'11111111'
    movwf    trisa        ;define porta como entradas
    movlw    b'00000000'
    movwf    trisb        ;define portb como saídas
    movlw    b'10000100'
    movwf    option_reg    ;define opções de operação prescaler 1:2 no tmr0
                        ;pull-ups desabilitados
                        ;as demais confg. são irrelevantes
    movlw    b'11000000'
    movwf    intcon        ;define opções de interrupções desligadas
    movlw b'00000101'
    movwf pie1

    
bank0        
    movlw    b'11000000'
    movwf    intcon            ;retorna para o banco 0
    movlw    b'00000101'
    movwf    cmcon        ;define o modo de operação do comparador analógico
    movlw b'00000111'
    movwf ccp1con; define preescaler 1:16
    
    movlw b'00110001' ; talvez b'00110101'
    movwf t1con ; define o timer1 como contador 1:8
    bcf t1con, tmr1on
    movf tmr1l,w
    movwf tmr1l_temp
    movf tmr1h,w
    movwf tmr1h_temp
    bsf t1con, tmr1on

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inicie assim:

 

---- variáveis -----

cblock    0x20       
        w_temp           
        status_temp       
        temp1
        temp2
        temp3
        tmr1l_temp
        tmr1h_temp
    
    endc    

org  0x00
goto inicio

 

Para facilitar os bancos,no inicio do código,defina eles assim:

 

#DEFINE BANK1 	BSF     STATUS,RP0
#DEFINE BANK0 	BCF	STATUS,RP0

Deste modo quando precisar mudar os bancos,apenas digite:

 

	BANK1					; 
	BCF		OPTION_REG,7	        ; Faça o que tenha que fazer
        .....
	BANK0					; Retorna a origem
	....

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×