Autor Tema: Ajuda com basic pic 18f452  (Leído 3369 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Danilo Almeida

  • PIC10
  • *
  • Mensajes: 2
Ajuda com basic pic 18f452
« en: 17 de Noviembre de 2008, 20:23:14 »
Olá pessoal!
Alguém pode me dar uma força com basic?
Estou tentando compilar um código fonte .bas para .hex
Só que esta dando erro se alguem puder dar uma verificada no código e corrigir o erro ficarei muito agradecido
Estou usando o compilador picbasic pro o free basic.
O arquivo .bas foi escrito para o pic 18f452.

Quando mando compilar da os seguintes erros:

C:\>cd pbp

C:\pbp>pbp -p18f452 control
PicBasic Pro Compiler 2.42, (c) 1998, 2002 microEngineering Labs, Inc.
All Rights Reserved.
PM Assembler 4.04, (C) 1995, 2002 microEngineering Labs, Inc.
Error 18F452.INC 14 : [235] Opcode Expected Instead of 'Error: PM does not supp
ort this device. Use MPASM.'
Error C:\PBP\CONTROL.ASM 65 : [225] Undefined Symbol 'PORTB'
Error C:\PBP\CONTROL.ASM 66 : [225] Undefined Symbol 'PORTC'
Error C:\PBP\CONTROL.ASM 67 : [225] Undefined Symbol 'TRISB'
Error C:\PBP\CONTROL.ASM 68 : [225] Undefined Symbol 'TRISC'
Error PBPPIC18.LIB 148 : [225] Undefined Symbol 'PORTB'
Error PBPPIC18.LIB 179 : [225] Undefined Symbol 'PORTC'
Error PBPPIC18.LIB 303 : [225] Undefined Symbol 'PORTB'
Error PBPPIC18.LIB 1114 : [200] Instruction Restricted to 14-Bit Core
Error PBPPIC18.LIB 1114 : [218] Address Limit of FFFFh Exceeded
Error PBPPIC18.LIB 1119 : [200] Instruction Restricted to 14-Bit Core
Error PBPPIC18.LIB 1119 : [218] Address Limit of FFFFh Exceeded
Error PBPPIC18.LIB 2550 : [200] Instruction Restricted to 14-Bit Core
Error PBPPIC18.LIB 2550 : [218] Address Limit of FFFFh Exceeded
Error PBPPIC18.LIB 2551 : [200] Instruction Restricted to 14-Bit Core
Fatal PBPPIC18.LIB 2551 : [300] Too Many Errors

C:\pbp>


o codigo é esse abaixo

'************************************************* ******************************
' SOUND CONTROL - 09/01/08 *
' THOMAZ ALBERTO F. THOMAZINI *
'************************************************* ******************************

'************************************************* ******************************
DEFINE LCD_DREG PORTB 'DEFINE PORTB COMO LINHA DE DADOS LCD
DEFINE LCD_DBIT 4 'INICIO DOS DADOS LCD PORTB (BIT4)
DEFINE LCD_RSREG PORTB 'DEFINE REGISTRADOR RS LCD PORTB
DEFINE LCD_RSBIT 1 'DEFINE BIT 1 PORTB COMO RS LCD
DEFINE LCD_EREG PORTB 'DEFINE REGISTRADOR ENABLE ENABLE LCD PORTB
DEFINE LCD_EBIT 0 'DEFINE BIT 0 PORTB COMOENABLE DO LCD
DEFINE LCD_BITS 4 'NUMERO DE BITS DO LCD 4
DEFINE LCD_LINES 2 'NUMERO DE LINHAS LCD - 2
DEFINE LCD_COMMANDUS 2000 'DELAY uS LCD
DEFINE LCD_DATAUS 50 'DELAY DADOS uS LCD
DEFINE OSC 4 'DEFINE OSCILADOR 4 MHZ

'************************************************* ******************************
' DECLARAÇÃO DAS VARIÁVEIS *
'************************************************* ******************************
A VAR WORD 'VARIAVEL A VOLUME
B VAR WORD 'VARIAVEL B GRAVES
C VAR WORD 'VARIAVEL C AGUDOS
D VAR WORD 'VARIAVEL D BALANCO
X VAR WORD
SOMAC VAR WORD
SOMAD VAR WORD
'************************************************* ******************************

'************************************************* ******************************
' CONFIGURAÇÃO I/O *
'************************************************* ******************************
ADCON1 = 7 'DESABILITA A/D PORT A
TRISA = 255 'PORTA ENTRADA
PORTA = 255 'PORTA NIVEL LÓGICO ALTO
TRISB=0 'PORTB SAÍDA
TRISC=0 'PORTC SAÍDA
TRISD=0 'PORTD SAÍDA
SELEC VAR PORTA.0 'BIT 0 PORTA SELEC
UP VAR PORTA.1 'BIT 1 PORTA UP
DOWN VAR PORTA.2 'BIT 2 PORTA DOWN
READ 1,A 'LÊ ENDEREÇO 1 DA EEPROM E GURADA EM A
IF A>16 THEN 'SE VALOR DO ENDEREÇO 1>16
WRITE 1,7 'GRAVA NO ENDEREÇO 1 EEPROM VALOR 7
WRITE 2,7 'GRAVA NO ENDEREÇO 2 EEPROM VALOR 7
WRITE 3,7 'GRAVA NO ENDEREÇO 3 EEPROM VALOR 7
WRITE 4,7 'GRAVA NO ENDEREÇO 4 EEPROM VALOR 7
ENDIF 'FIM CHECAR VARIAVEL A
READ 1,A 'LÊ ENDEREÇO 1 DA EEPROM E SALVA EM A
READ 2,B 'LÊ ENDEREÇO 2 DA EEPROM E SALVA EM B
READ 3,C 'LÊ ENDEREÇO 3 DA EEPROM E SALVA EM C
READ 4,D 'LÊ ENDEREÇO 4 DA EEPROM E SALVA EM D
SOMAC=A+(16*B) 'SOMAC RECEBE VALOR DE A E B
PORTC=SOMAC 'PORTC RECEBE VALOR DE SOMA C
SOMAD=C+(16*D) 'SOMAD RECEBE VALOR DE C E D
PORTD=SOMAD 'PORTD RECEBE VALOR DE SOMAD
'************************************************* ******************************
' INICIO DO PROGRAMA *
'************************************************* ******************************
INICIO:
LCDOUT $FE, 1 'LIMPA DISPLAY
FOR X=1 TO 16 'CARACTERES DE ENTRADA
LCDOUT 255 'ENVIA CARACTERE "255" LCD
PAUSE 20 'TEMPO 20 mS
NEXT X 'FIM LAÇO
LCDOUT $FE, $C0 'POSICIONA CURSOR DO DISPLAY INICIO 2.A LINHA
FOR X=1 TO 16 'INICIO LAÇO
LCDOUT 255 'ENVIA CARACTERE "255" LCD
PAUSE 20 'PAUSA 20mS
NEXT X 'FIM LAÇO
PAUSE 500 'PAUSA 500mS
LCDOUT $FE, 2 'APAGA CARACTERE DE ENTRADA
FOR X=1 TO 16 'INICIO LAÇO
LCDOUT " " 'CARACTERE VAZIO
PAUSE 20 'PAUSA 20mS
NEXT X 'FIM LAÇO
LCDOUT $FE, $C0 'CURSOR MOVIDO PARA O INICIO INICIO 2.A LINHA
FOR X=1 TO 16 'INICIO LAÇO
LCDOUT " " 'ENVIA CARACTERE " " LCD
PAUSE 20 'PAUSA 20mS
NEXT X 'FIM LAÇO
PAUSE 500 'PAUSA 500mS
LCDOUT $FE, 1 'LIMA DISPLAY
LCDOUT " SOUND " 'ESCREVE "SOUND" NO LCD
LCDOUT $FE, $C0 'POSICIONA CURSOR INICIO 2.A LINHA
LCDOUT " CONTROL " 'ESCREVE "CONTROL" LCD
PAUSE 2000 'PAUSA DE 2 SEGUNDOS
LCDOUT $FE, 1 'LIMA DISPLAY
GOTO VOLUME 'VAI PARA SUBROTINA VOLUME
'************************************************* ******************************

'************************************************* ******************************
' SUBROTINA VOLUME *
'************************************************* ******************************
VOLUME:
LCDOUT $FE, 2 'INICIO PRIMERIRA LINHA LCD
LCDOUT "VOLUME " ,#A," " 'ESCREVE VOLUME E SEU VALOR
LCDOUT $FE, $C0 'POSICIONA CURSOR INICIO 2.A LINHA
FOR X=1 TO A 'INICIO LAÇO
LCDOUT 255 'ESCREVE CARACTERE "255"
NEXT X 'FIM LAÇO
LCDOUT " " 'ESCREVE CARACTERE " "
PAUSE 150 'PAUSA 150mS
PORTC=SOMAC 'PORTC RECEBE VALOR DE SOMAC
READ 1,A 'LÊ ENDEREÇO 1 EEPROM ARMAZENA EM A
IF UP=0 AND A<15 THEN A=A+1 'SE BOTÃO UP APERTADO INCREMENTA A
WRITE 1,A 'SALVA VALOR DE A EEPROM
IF DOWN=0 AND A<>0 THEN A=A-1 'SE BOTÃO DOWN APERTADO DECREMENTA A
WRITE 1,A 'SALVA VALOE DE A EEPROM
SOMAC=A+(16*B) 'SAMAC RECEBE NOVO VALOR DE A E B
PORTC=SOMAC 'PORTC RECEBE VALOR DE SOMAC
PAUSE 100 'PAUSA DE 100mS
IF SELEC = 0 THEN 'SE BOTÃO SELEC APERTADO
LCDOUT $FE,1 'LIMPA DISPLAY
PAUSE 100 'PAUSA 100mS
GOTO GRAVES 'VAI PARA SUBROTINA GRAVES
ENDIF 'FIM CHECAR BOTÃO SELEC
GOTO VOLUME 'VAI PARA SUBROTINA VOLUME
'************************************************* ******************************

'************************************************* ******************************
' SUBROTINA GRAVES *
'************************************************* ******************************
GRAVES:
Lcdout $fe, 2 'INICIO PRIMERIRA LINHA LCD
Lcdout "GRAVES " ,#B ," " 'ESCREVE GRAVES E VALOR EEPROM
LCDOUT $FE, $C0 'POSICIONA CURSOR INICIO 2.A LINHA
FOR X=1 TO B
LCDOUT 255
NEXT X
LCDOUT " "
PAUSE 150
PORTC=SOMAC
READ 2,B
IF UP=0 AND B<15 THEN B=B+1
WRITE 2,B
IF DOWN=0 AND B<>0 THEN B=B-1
WRITE 2,B
SOMAC=A+(16*B)
PORTC=SOMAC
pause 100
IF SELEC = 0 THEN
LCDOUT $fe, 1
pause 100
GOTO AGUDOS
ENDIF
Goto GRAVES
'************************************************* ******************************

'************************************************* ******************************
' ISUBROTINA AGUDOS *
'************************************************* ******************************
AGUDOS:
Lcdout $fe, 2 'INICIO PRIMERIRA LINHA LCD
Lcdout "AGUDOS ", #C ," " 'ESCREVE AGUDOS E VALOR EEPROM
LCDOUT $FE, $C0 'POSICIONA CURSOR INICIO 2.A LINHA
FOR X=1 TO C
LCDOUT 255
NEXT X
LCDOUT " "
PAUSE 150
PORTD=SOMAD
READ 3,C
IF UP=0 AND C<15 THEN C=C+1
WRITE 3,C
IF DOWN=%0 AND C<>0 THEN C=C-1
WRITE 3,C
SOMAD=C+(16*D)
PORTD=SOMAD
pause 100
IF SELEC = 0 THEN
LCDOUT $fe, 1
pause 100
GOTO BALANCO
ENDIF
Goto AGUDOS
'************************************************* ******************************

'************************************************* ******************************
' SUBROTINA BALANCO *
'************************************************* ******************************
BALANCO:
Lcdout $fe, 2 'INICIO PRIMERIRA LINHA LCD
Lcdout " BALANCO " 'ESCREVE BALANCO
LCDOUT $FE, $C0 'POSICIONA CURSOR INICIO 2.A LINHA
FOR X=1 TO 16
LCDOUT 255
NEXT X
PAUSE 150
LCDOUT $FE, $C0
FOR X=1 TO D
LCDOUT 255
NEXT X
LCDOUT " "
PAUSE 150
PORTD=SOMAD
READ 4,D
IF UP=0 AND D<15 THEN D=D+1
WRITE 4,D
IF DOWN=0 AND D<>0 THEN D=D-1
WRITE 4,D
SOMAD=C+(16*D)
PORTD=SOMAD
pause 100
IF SELEC = 0 THEN
pause 100
LCDOUT $fe, 1
GOTO VOLUME
ENDIF
Goto BALANCO
'************************************************* ******************************
' FIM *
'************************************************* ******************************

_________________
Danilo Almeida Projeto 001

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Ajuda com basic pic 18f452
« Respuesta #1 en: 17 de Noviembre de 2008, 20:29:17 »
La familia de PIC18F's no puede ser compilada sin el MPASM, tienes que activarla:



Por cierto eso aplica para el IDE para la consola es:

Citar
Option -A

PBP has the capability to use either PM, which is included with PBP, or Microchip=s MPASM as its assembler. To specify MPASM (which must be acquired from Microchip), use -ampasm on the command line:

PBP -ampasm filename

If no assembler is specified on the command line, PM is used. See the section on assembly language programming for more information.
« Última modificación: 17 de Noviembre de 2008, 20:31:48 por navaismo »
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Danilo Almeida

  • PIC10
  • *
  • Mensajes: 2
Re: Ajuda com basic pic 18f452
« Respuesta #2 en: 17 de Noviembre de 2008, 20:56:09 »
obrigado muito abrigado mesmo
fiquei muito agradecido
abraço e muita paz e saude

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Ajuda com basic pic 18f452
« Respuesta #3 en: 17 de Noviembre de 2008, 21:02:21 »
De nada, espero funcione.

Saludos
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."


 

anything