Programa simples não compila no MPLAB

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Programa simples não compila no MPLAB

Mensagempor Renato_mcl » 21 Jan 2007 13:33

Olá pessoal,

Estou desde ontem tentando compilar o programa abaixo no MPlab 6.4 e aparece um monte de erros.
Este simples programa compilava na versão 5.7 do MPlab.
Já procurei no fórum antigo e não encontrei resposta.
Agradeço se puderem ajudar.


;# #
;# Rotina de delay (atraso) de 1s utilizando apenas instrucoes #
;# usado para um circuito de pisca led #
;############################################################################

;-----------------------DIRETIVAS AO COMPILADOR------------------------------

LIST P=16F84A
RADIX DEC
INCLUDE <P16F84A.INC>
__CONFIG _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_ON


;-------------------VARIAVEIS E EQUIVALENCIAS---------------------------------


x equ 0ch ;variavel auxiliar no delay
milisegundo equ 0dh ;variavel auxiliar no delay
seg equ 0eh ;variavel auxiliar no delay

;--------------------INICIALIZAÇÃO DO PROGRAMA---------------------------------

clrf portb ; Faz todos os bits de portb = zer0
bsf status,rp0 ; vai para o banco 1 da RAM
clrf trisb ; Faz portb todo saida
bcf status,rp0 ; volta ao banco 0 da RAM

;--------------------PROGRAMA PRINCIPAL-----------------------------------------

repete
bsf portb,7 ; Faz bit 7 do portb=1 (apaga o LED)
call s1 ; Chama a subrotina s1 (nosso delay de 1s)
bcf portb,7 ; Faz bit 7 do portb=0 ( acende o Led}
call s1 ; Chama a subrotina s1 (nosso delay de 1s) goto repete ; Vai para o label repete

;-------------------------------- SUB ROTINAS ---------------------------------

;----- inicio da rotina de 1 segundo

s1
movlw 10
movwf seg ; Até aqui incluindo o call gastaram-se 4 us.

ms100
movlw 100 ; 1 us Carrega milisegundo com 100
movwf milisegundo ; 1 us

ms1
movlw 249 ; carrega x com o valor 249 (decimal)
movwf x ; 2 us ( 1 do movlw e 1 do movwf )
ms2
nop ; + 1 us
decfsz x ; + 1 us (no último eh 2 e pula p/ decfsz seg)
goto ms2 ; + 2 us, total 4us.(no último não passa aqui)
; (4 us x 249)-1 totaliza 995 us
decfsz milisegundo ; +1 us (na última pasagem 2 us)
goto ms1 ; +2 us (na última passagem pula)
; total ms1 (1000 x 100)-1 = 99999
decfsz seg ; + 1 us (no último eh 2 e pula p/ return)
goto ms100 ; +2 us (na última passagem pula)

; Total antes do return: 4us (inicio) +10 X 100004
; {(1 do movlw100 + 1 do movwf milisegundo + 99999 da
; rotina ms1 + 1 do decfsz seg + 2 do goto)}- 1 da
; última passagem Total = 1000043 us
return ; + 2 us retorna da sub-rotina apos 1.000.045 us
; aproximadamente 1 segundo
;-----fim da rotina de 1 segundo

;----------------------------- fim do programa ----------------------------------
end

Relatórios de erros:

Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 24 : Symbol not previously defined (portb)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 25 : Symbol not previously defined (status)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 25 : Symbol not previously defined (rp0)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 26 : Symbol not previously defined (trisb)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 27 : Symbol not previously defined (status)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 27 : Symbol not previously defined (rp0)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 32 : Symbol not previously defined (portb)
Error[113] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 34 : Symbol not previously defined (portb)
Message[305] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 55 : Using default destination of 1 (file).
Message[305] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 58 : Using default destination of 1 (file).
Message[305] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\RENATO\PISCA.ASM 61 : Using default destination of 1 (file).


Obrigado
Renato_mcl
Byte
 
Mensagens: 204
Registrado em: 04 Dez 2006 20:34

Mensagempor proex » 21 Jan 2007 14:06

Em vez de INCLUDE <P16F84A.INC>
Use INCLUDE <P16F84.INC>
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Renato_mcl » 21 Jan 2007 15:08

Infelizmente não deu certo.

Este outro para o PIC 16F84 compila e debuga sem problema.
O primeiro que postei me interessa porque funciona no circuito montado e eu iria usar para aprender a simular no Proteus/Isis.


; Funcionamento: Pisca um led no pino RB7 a cada 250 ms.

include <P16F84.INC>

__config _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC


aux1 equ 0ch
aux2 equ 0dh


main


bsf STATUS,RP0
movlw 11011111b
movwf OPTION_REG

movlw 0ffh
movwf TRISA
movlw 0
movwf TRISB
bcf STATUS,RP0

inicio
bsf PORTB,7
call tempo
bcf PORTB,7
call tempo
goto inicio

; Rotina de tempo de 250 ms.
tempo
movlw 250d
movwf aux1

tempoa
movlw 248d
movwf aux2

tempob
nop
decfsz aux2
goto tempob
decfsz aux1
goto tempoa
return

end

Relatório de erros:

Warning[202] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 19 : Argument out of range. Least significant bits used.
Message[302] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 23 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 25 : Register in operand not in bank 0. Ensure that bank bits are correct.
Warning[202] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 37 : Argument out of range. Least significant bits used.
Warning[202] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 41 : Argument out of range. Least significant bits used.
Message[305] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 46 : Using default destination of 1 (file).
Message[305] C:\DOCUMENTS AND SETTINGS\SP\DESKTOP\PPS\PPS.ASM 48 : Using default destination of 1 (file).
Renato_mcl
Byte
 
Mensagens: 204
Registrado em: 04 Dez 2006 20:34

Mensagempor Maia » 21 Jan 2007 15:18

O problema é que o nome das variáveis estão escritos em letras minúsculas e no arquivo .inc as definições estão em maiúsculas. A linguagem C é sensível a isso.
Abraços,
Maia
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor Renato_mcl » 21 Jan 2007 16:02

Olá Maia,

É assembly.

Renato
Renato_mcl
Byte
 
Mensagens: 204
Registrado em: 04 Dez 2006 20:34

Mensagempor proex » 21 Jan 2007 17:15

Renato, o MPLAB ja esta na versao 7.52

Essa versao que vc esta usando é muito antiga.

Mesmo em Assembler, vc tem que escrever os nomes dos registradores do PIC em maiusculas.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor Renie » 21 Jan 2007 18:02

Olá Renato!

Com o projeto aberto, vá no menu Project, selecione Build Options, na
janela que abrir, marque o checkbox Disable case sensitivy! (com a
seleção de Categories General)
[]'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

Mensagempor Renato_mcl » 21 Jan 2007 18:29

Depois de ler o post do Maia transformei tudo em maiúscula e Pimba, já estou simulando no proteus/isis pela primeira vez.
Renie, obrigado, vou configurar conforme sua sujestão e fazer um teste, é sempre bom ter mais opções.
Obrigado a todos.

Renato
Renato_mcl
Byte
 
Mensagens: 204
Registrado em: 04 Dez 2006 20:34


Voltar para PIC

Quem está online

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

cron

x