programinha com 16F88 dando erro no CONFIG, no MPLAB??

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

programinha com 16F88 dando erro no CONFIG, no MPLAB??

Mensagempor Haroldo Coelho » 21 Jun 2007 18:45

Galera, estou fazendo um programinha. Um voltímetro com 16F88 e peguei um código fonte emprestado do meu livro CONECTANDO O PIC, com 16F877.

Já fiz as modificações que acho necessárias, dentro do MPLAB, pra simular no PROTEUS. Porém quando vou compilar no MPLAB, aparece sempre um erro:

Building E04F88.ASM...

Command line: "C:\ARQUIV~1\MPLAB\MPASMWIN.EXE /aINHX8M /e+ /l+ /x- /w0 /c+ /p16F88 /q E04F88.ASM"
Error[126] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 25 : Argument out of range (not a valid config register address)
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 334 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 337 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 342 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 354 : Register in operand not in bank 0. Ensure that bank bits are correct.

MPLAB is unable to find output file "E04F88.hex". This may be due to a compile, assemble, or link process failure.

Build failed.



Já pesquisei nos meus livros mas não sei a razão do erro.

Se alguem estiver com tempo pra dar uma olhada e me esclarecer. agradeço.

Uma parte do código fonte vem a seguir:



; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * VOLTÍMETRO COM 16f88 *
; * *
; * NICOLÁS CÉSAR LAVINIA e DAVID JOSÉ DE SOUZA *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * VERSÃO : 2.0 *
; * DATA : 24/02/2003 *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DESCRIÇÃO GERAL *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTE EXEMPLO FOI ELABORADO PARA EXPLICAR O FUNCIONAMENTO DO MÓDULO DE
; CONVERSÃO ANALÓGICO DIGITAL INTERNO DO PIC 16f88. É CONVERTIDO O VALOR ANALÓGICO
; PRESENTE NO PINO RA1 DO MICROCONTROLADOR, E MOSTRADO NO LCD.
; FORAM UTILIZADAS ROTINAS DE MULTIPLICAÇÃO DE 8x8 E DIVISÃO DE 16x16. ESTAS
; ROTINAS FORAM RETIRADAS DE APLICATION NOTES DA PRÓPRIA MICROCHIP.
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * CONFIGURAÇÕES PARA GRAVAÇÃO *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; ESTE BLOCO DE VARIÁVEIS ESTÁ LOCALIZADO LOGO NO INÍCIO DO BANCO 0

CBLOCK 0X20 ; POSIÇÃO INICIAL DA RAM

ACCaHI ; ACUMULADOR a DE 16 BITS UTILIZADO
ACCaLO ; NA ROTINA DE DIVISÃO

ACCbHI ; ACUMULADOR b DE 16 BITS UTILIZADO
ACCbLO ; NA ROTINA DE DIVISÃO

ACCcHI ; ACUMULADOR c DE 16 BITS UTILIZADO
ACCcLO ; NA ROTINA DE DIVISÃO

ACCdHI ; ACUMULADOR d DE 16 BITS UTILIZADO
ACCdLO ; NA ROTINA DE DIVISÃO

temp ; CONTADOR TEMPORÁRIO UTILIZADO
; NA ROTINA DE DIVISÃO

H_byte ; ACUMULADOR DE 16 BITS UTILIZADO
L_byte ; P/ RETORNAR O VALOR DA ROTINA
; DE MULTIPLICAÇÃO

mulplr ; OPERADOR P/ ROTINA DE MUTIPLICAÇÃO
mulcnd ; OPERADOR P/ ROTINA DE MUTIPLICAÇÃO

TEMPO0
TEMPO1 ; TEMPORIZADORES P/ ROTINA DE DELAY

AUX ; REGISTRADOR AUXILIAR DE USO GERAL

UNIDADE ; ARMAZENA VALOR DA UNIDADE DA TENSÃO
DEZENA ; ARMAZENA VALOR DA DEZENA DA TENSÃO

ENDC

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DAS VARIÁVEIS INTERNAS DO PIC *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; O ARQUIVO DE DEFINIÇÕES DO PIC UTILIZADO DEVE SER REFERENCIADO PARA QUE
; OS NOMES DEFINIDOS PELA MICROCHIP POSSAM SER UTILIZADOS, SEM A NECESSIDADE
; DE REDIGITAÇÃO.
list P=16F88, R=dec
#INCLUDE "P16F88.INC" ; MICROCONTROLADOR UTILIZADO

; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * DEFINIÇÃO DOS BANCOS DE RAM *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; OS PSEUDOS-COMANDOS "BANK0" E "BANK1", AQUI DEFINIDOS, AJUDAM A COMUTAR
; ENTRE OS BANCOS DE MEMÓRIA.

#DEFINE BANK1 BSF STATUS,RP0 ; SELECIONA BANK1 DA MEMORIA RAM
#DEFINE BANK0 BCF STATUS,RP0 ; SELECIONA BANK0 DA MEMORIA RAM
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor fabim » 22 Jun 2007 08:04

esse não é um erro é um aviso..
no MPLAB apos as definições no começo do escopo vc coloca
#ERRORLEVEL -302

vc esta dizendo pro mplab que é pra descriminar este aviso..

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor renatokodaira » 22 Jun 2007 08:19

Tá dando erro na linha de config (linha 25).
Experimente usar assim:

__CONFIG _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _BOD_OFF & _PWRT_ON & _WDT_OFF & _XT_OSC

ou só tirar o CP_OFF

__CONFIG _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

deve ser problema na nomenclatura dos fuses. Vai no MPLAB e abra o arquivo 16F88.inc e veja qual a ortografia correta e nao se esqueça que depois da palavra CONFIG precisa ter dois espaços (no seu codigo só tem um).
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Haroldo Coelho » 22 Jun 2007 20:06

Os livros que tenho e os leio, evidente, nunca explicam direito essa parte de setar os fuses. Se mudar o PIC, o que fazer?. Como agora que eu estou aproveitando um código do PIC 16F877(utilização do conversor CAD) para usar num 16F88.

Caramba, kodaiara, dois espaços. Qual o livro que ensina isso?
Essa idéia de ver o arquivo PIC16F88.inc dentro do MPLAB é uma boa hein?

Vou ver se aprendo ainda mais.
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor Haroldo Coelho » 22 Jun 2007 20:24

Sou eu novamente.

Coloquei dois espaços antes da palavra CONFIG e o erro anterior sumiu mas apareceu outro erro, que é:


Error[122] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 25 : Illegal opcode (_CP_OFF)


Conforme aparece melhor detalhado a seguir.
Building E04F88.ASM...

Command line: "C:\ARQUIV~1\MPLAB\MPASMWIN.EXE /aINHX8M /e+ /l+ /x- /w0 /c+ /p16F88 /q E04F88.ASM"
Warning[207] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 25 : Found label after column 1. (___CONFIG)
Error[122] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 25 : Illegal opcode (_CP_OFF)
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 334 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 337 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 342 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 354 : Register in operand not in bank 0. Ensure that bank bits are correct.

MPLAB is unable to find output file "E04F88.hex". This may be due to a compile, assemble, or link process failure.

Build failed.


Mas CP_off não quer dizer Code Protection desligado?
Porque se eu fizer essa opção dá pau?

São tantas dúvidas cruéis.
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor Haroldo Coelho » 22 Jun 2007 20:45

Eu novamente. Eu vou, estou deletando o que está provocando erro e o código seguinte aparece mostrando outro erro.

Só se eu deletar tudo?? Não estou entendendo lhufas.

Error[122] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 27 : Illegal opcode (_DEBUG_OFF)

Error[122] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 27 : Illegal opcode (_LVP_OFF)

rror[122] C:\DOCUME~1\ADMINI~1\MEUSDO~1\VOLTF877\E04F88.ASM 27 : Illegal opcode (_XT_OSC)
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor renatokodaira » 22 Jun 2007 22:22

Calma Haroldo, eu dei uma olhada no P16F88.INC e descobri que o 16F88 tem DOIS CONFIGS, portanto voce deve tentar assim (obs: programa aqui do forum eleimina os espaços quando tem mais de um, por isso abra o arquivo P16F88.INC pra ver direito quantos espaços sao na verdade):

__CONFIG _CONFIG1, _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

__CONFIG _CONFIG2, (tem um lance de IESO, etc veja abaixo)

=================================================
Veja o finalzinho do arquivo P16F88.INC:

_CONFIG1 EQU H'2007'
_CONFIG2 EQU H'2008'

;Configuration Byte 1 Options
_CP_ALL EQU H'1FFF'
_CP_OFF EQU H'3FFF'
_CCP1_RB0 EQU H'3FFF'
_CCP1_RB3 EQU H'2FFF'
_DEBUG_OFF EQU H'3FFF'
_DEBUG_ON EQU H'37FF'
_WRT_PROTECT_OFF EQU H'3FFF' ;No program memory write protection
_WRT_PROTECT_256 EQU H'3DFF' ;First 256 program memory protected
_WRT_PROTECT_2048 EQU H'3BFF' ;First 2048 program memory protected
_WRT_PROTECT_ALL EQU H'39FF' ;All of program memory protected
_CPD_ON EQU H'3EFF'
_CPD_OFF EQU H'3FFF'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_MCLR_ON EQU H'3FFF'
_MCLR_OFF EQU H'3FDF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_EXTRC_CLKOUT EQU H'3FFF'
_EXTRC_IO EQU H'3FFE'
_INTRC_CLKOUT EQU H'3FFD'
_INTRC_IO EQU H'3FFC'
_EXTCLK EQU H'3FEF'
_HS_OSC EQU H'3FEE'
_XT_OSC EQU H'3FED'
_LP_OSC EQU H'3FEC'

;Configuration Byte 2 Options
_IESO_ON EQU H'3FFF'
_IESO_OFF EQU H'3FFD'
_FCMEN_ON EQU H'3FFF'
_FCMEN_OFF EQU H'3FFE'



; To use the Configuration Bits, place the following lines in your source code
; in the following format, and change the configuration value to the desired
; setting (such as CP_OFF to CP_ALL). These are currently commented out here
; and each __CONFIG line should have the preceding semicolon removed when
; pasted into your source code.

;Program Configuration Register 1
; __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC

;Program Configuration Register 2
; __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Haroldo Coelho » 23 Jun 2007 00:48

Valeu kodaira. Vivendo e aprendendo.
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro


Voltar para PIC

Quem está online

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

x