# Problema al compilar PIC18F2550 con PicBasic Pro



## Nano24 (Nov 17, 2010)

Hola a todos soy nuevo en el foro y necesito ayuda con un problema que me esta presentando a la hora de programar mi PIC18F2550 en Picbasic, tengo el Microcode Studio version 3.0.0.5 y el PBP 2.60 y por ultimo el MPASMWIN, ok el problema es que escribo un programa para encender un LED algo muy simple para probar mi PIC, cuando le doy compilar al programa me dice que ha encontrado los siguientes errores:

Illegal opcode (INIT)
Illegal opcode (clrf)
Illegal opcode (movwf)
Illegal opcode (R1)
Illegal opcode (STATUS)

al final dice  "Assambler Errors"

aqui la programacion:

;**************************** PIC18F2550 *******************************

DEFINE OSC 4      ;USAR UN OSCILADOR A 4MHZ
LED VAR PORTC.1   ;NOMBRE LED PARA EL PUERTO C1

  INICIO:         ;BLOQUE PRINCIPAL 

HIGH LED          ;PONER EL PIN C1 A 5 VOLTIOS
    PAUSE 500     ;PAUSAR A 500 ms
LOW  LED          ;PONER EL PIN C1 A 0 VOLTIOS

GOTO INICIO       ;VOLVER AL INICIO

END               ;FIN

no comprendo de verdad amigos que es lo que esta pasando, y por que no me genera el archivo hex para usar mi PIC de esa manera tan sencilla la cual es hacer parpader el LED.


----------



## lubeck (Nov 17, 2010)

> tengo el Microcode Studio version 3.0.0.5 y el PBP 2.60 y por ultimo el MPASMWIN



tengo el Microcode 3.0.0.0 el pbp246 y el mpasmwin y no me genera ningun error...

hice un cambio en el inc del pic2550 porque me generaba un error y lo solucione con esto...
http://www.todopic.com.ar/foros/index.php?PHPSESSID=8ea43abeef608b0410bf66e4001248c5&topic=13406.60

no se si sea lo mismo que te pasa...


----------



## Nano24 (Nov 23, 2010)

Gracias amigo, con la pagina que me distes, la lei bastante en cada tema, lo que tenia que hacer era descargar el MPASM 5.20 el cual no me da errores al compilar el hex para el 18F2550


----------



## Norvator (Oct 11, 2012)

Hola muy bueno tu programa pero el archivo .HEX que simula en Proteus funciona bien pero no es el que te genera en el lenguaje basic que subiste.


*Nota del Moderador:*
Tema movido aquí por Off Topic en https://www.forosdeelectronica.com/f24/generar-dtmf-pic-67659/


----------



## D@rkbytes (Oct 11, 2012)

Norvator dijo:


> Hola muy bueno tu programa pero el archivo .HEX que simula en Proteus funciona bien pero no es el que te genera en el lenguage basic que subiste.


No te entiendo. El proyecto en PICBasic Pro esta completo.
El *.hex que se genera, es el que se requiere para ese diseño.
¿Podrías explicar mejor a que te refieres?

Saludos.


----------



## Norvator (Oct 12, 2012)

Hola y gracias por responder, mira tu programa hecho en lenguage basic lo abri con el microcode studio y al compilarlo me tira esos errores que se muestra en la imagen adjunta, son esas instrucciones en "@" que estan en color verde, pero si quito esas instrucciones funciona aparentemente igual pero sin sonido,


----------



## D@rkbytes (Oct 12, 2012)

Norvator dijo:


> Hola y gracias por responder, mira tu programa hecho en lenguage basic lo abri con el microcode studio y al compilarlo me tira esos errores que se muestra en la imagen adjunta, son esas instrucciones en "@" que estan en color verde, pero si quito esas instrucciones funciona aparentemente igual pero sin sonido,


OK.
Veo que estas usando MicroCode Studio Plus, yo también use el mismo programa para hacer el programa.
Sin embargo los errores que te aparecen, se pueden deber a que no tienes actualizado el compilador.
Yo use MCS Plus v3.0.0.0 con el compilador PBP v2.60

Si tienes las mismas versiones y no se soluciona tu problema, trata reinstalando los programas.

PD. Las instrucciones en verde son la palabra de configuración.
También las puedes editar con el programa que grabas el PIC (Depende que programador uses)

Suerte.


----------



## Norvator (Oct 14, 2012)

D@rkbytes dijo:


> OK.
> Veo que estas usando MicroCode Studio Plus, yo también use el mismo programa para hacer el programa.
> Sin embargo los errores que te aparecen, se pueden deber a que no tienes actualizado el compilador.
> Yo use MCS Plus v3.0.0.0 con el compilador PBP v2.60
> ...



Hice lo que me recomendaste pero aún no lo logro, siempre me salen los 2 errores, incluso lo probé en una pc con windows xp e igual con el mismo error, la verdad no se que será, tengo instalado el microcode studio plus 3.0.0.5 , PBP 2.60 y el MPLAB v8.87 en una PC windows 7 64bits, cualquier programa lo compila bien y me genera el .HEX, pero cuando se trata de configurar los fuses no lo consigo,


----------



## D@rkbytes (Oct 16, 2012)

Norvator dijo:


> tengo instalado el microcode studio plus 3.0.0.5 , PBP 2.60 y el MPLAB v8.87 en una PC windows 7 64bits, cualquier programa lo compila bien y me genera el .HEX, pero cuando se trata de configurar los fuses no lo consigo,


Saludos.
Te recomiendo que no utilices MPLAB para tus programas en PBP
Con tan solo usar MicroCode Studio Plus es suficiente.
Al usar MPLAB con plugin y compilar con la palabra de configuración, es cuando se generan ese tipo de errores.

Suerte.


----------



## Norvator (Oct 17, 2012)

D@rkbytes dijo:


> Saludos.
> Te recomiendo que no utilices MPLAB para tus programas en PBP
> Con tan solo usar MicroCode Studio Plus es suficiente.
> Al usar MPLAB con plugin y compilar con la palabra de configuración, es cuando se generan ese tipo de errores.
> ...



Hola me parece que el error podria ser el archivo .INC que tengo.
En la imagen que te adjunto esta como tengo configurado el assembler, esta leyendo del directorio del Mplab *C:\program files (x86)\microchip\mpasm suite*, tambien probe colocando en C:/ MPASMWIN (claro que cambiando el directorio manualmente y que además contiene archivos .INC) y daba los mismos errores, lo que quisiera sería que me facilitaras tu archivo *P16F628A.INC*. Te adjunto tambien mi archivo P16F628A.INC (se puede ver abriéndolo como modo texto)
En la barra de menu en "view/compile and program option" en la pestaña assembler esta la ruta donde lee todos los archivos .INC del tipo de PIC.


Gracias


----------



## D@rkbytes (Oct 17, 2012)

Norvator dijo:


> Hola me parece que el error podria ser el archivo .INC que tengo.
> En la imagen que te adjunto esta como tengo configurado el assembler, esta leyendo del directorio del Mplab *C:\program files (x86)\microchip\mpasm suite*, tambien probe colocando en C:/ MPASMWIN


Ahí esta el detalle. 
No compiles programas para PIC16 usando MPASM.
Compila usando PBP 2.60 y de esa forma no tendrás errores al compilar.
El programa MicroCode Studio solamente utiliza MPASM Win, para los programas PIC18
Y automáticamente aparece la ventana de selección del compilador, cuando no esta seleccionado.
Este debe ser el que provee la instalación de MPLAB, en la carpeta...
*C:\Archivos de programa\Microchip\MPASM Suite*

Quita la selección de usar MPASM en la pestaña Assembler.
Y en la pestaña Compiler, selecciona la carpeta del compilador PICBasic Pro, que por lo regular se instala en *C:\PBP*

Suerte.


----------



## Norvator (Oct 18, 2012)

D@rkbytes dijo:


> Ahí esta el detalle.
> No compiles programas para PIC16 usando MPASM.
> Compila usando PBP 2.60 y de esa forma no tendrás errores al compilar.
> El programa MicroCode Studio solamente utiliza MPASM Win, para los programas PIC18
> ...



Yo marcaba la pestaña MPASM porque trabajo con W7 64bits, si desmarco esa opción me decía que no es compatible con mi versión de 64bits, es por eso que lo utilizaba bien hasta que encontré tu programa en el foro y me surgió la duda 
Una cosa no me queda claro lo he probado como me dices en una 32 bits desmarcando la opción MPASM y el aviso que me sale es* "please reset the target microcontroller in order to access the bootloader process"*, esto quiere decir que necesito una programadora conectada con puerto serial, porque yo tengo el pickit3 con puerto usb y necesitaria un adaptador serial-usb?


Gracias por toda tu ayuda


----------



## D@rkbytes (Oct 18, 2012)

Norvator dijo:


> Yo marcaba la pestaña MPASM porque trabajo con W7 64bits, si desmarco esa opción me decía que no es compatible con mi versión de 64bits, es por eso que lo utilizaba bien hasta que encontré tu programa en el foro y me surgió la duda


OK.
Existe una opción que ya he comentado por algún post que no recuerdo, y se trata de hacer lo siguiente...

Para usar MPASM Win como compilador se debe editar el archivo correspondiente *.inc
que en este caso es el archivo 16F628A.INC que se encuentra en la carpeta de instalación de PBP.
Este archivo incluye la palabra de configuración por default que se usara para compilar el PIC.
Veras que contiene este programa como a continuación...

```
NOLIST
    ifdef PM_USED
        LIST
        include 'M16F62xA.INC'  ; PM header
        device  pic16F628A, xt_osc, wdt_on, mclr_on, lvp_off, protect_off
        XALL
        NOLIST
    else
        LIST
        LIST p = 16F628A, r = dec, w = -302
        INCLUDE "P16F628A.INC"  ; MPASM  Header
        [COLOR=Red]__config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF[/COLOR]
        NOLIST
    endif
        LIST
```
Lo que tienes que hacer es editar la palabra de configuración que marque en rojo.
La puedes modificar con lo siguiente, por ejemplo...

```
__CONFIG _INTRC_OSC_NOCLKOUT & _CP_OFF & _CPD_OFF & _WDT_OFF & _MCLRE_ON & _PWRTE_ON & _BOREN_OFF & _LVP_OFF
```
Si todo marcha bien, entonces podrás compilar tu programa usando MPASM con estos fuses y sin errores.


Norvator dijo:


> Una cosa no me queda claro lo he probado como me dices en una 32 bits desmarcando la opción MPASM y el aviso que me sale es* "please reset the target microcontroller in order to access the bootloader process"*,  esto quiere decir que necesito una programadora conectada con puerto  serial, porque yo tengo el pickit3 con puerto usb y necesitaría un  adaptador serial-usb?


Eso no lo sé exactamente, pero quiere decir que...
*Resetear el microcontrolador de destino con el fin de acceder al proceso del bootloader*

Algo sobre esto ya se ha comentado en el foro y puedes buscar para ver los comentarios.

Yo uso el WinPIC800 entre otros, por el puerto serie y todo marcha bien, incluso usando ICSP.


Norvator dijo:


> Gracias por toda tu ayuda


De nada, sigue haciendo pruebas, y te deseo mucha suerte.


----------



## Norvator (Oct 21, 2012)

D@rkbytes dijo:


> OK.
> Existe una opción que ya he comentado por algún post que no recuerdo, y se trata de hacer lo siguiente...
> 
> Para usar MPASM Win como compilador se debe editar el archivo correspondiente *.inc
> ...



El problema es que el archivo que te adjunte en el post anterior no se parece en nada a lo que me comentas, es algo así como este : (Lo que no sé es si tengo que añadir todo el texto que has escrito y si es así en que parte del texto?) por cierto tengo el *MPASM WIN v5.20*.

```
LIST
; P16F628A.INC  Standard Header File, Version 1.10    Microchip Technology, Inc.
        NOLIST

; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F628A microcontroller.  These names are taken to match
; the data sheets as closely as possible.

; Note that the processor must be selected before this file is
; included.  The processor may be selected the following ways:

;       1. Command line switch:
;               C:\ MPASM MYFILE.ASM /PIC16F628A
;       2. LIST directive in the source file
;               LIST   P=PIC16F628A
;       3. Processor Type entry in the MPASM full-screen interface

;==========================================================================
;
;       Revision History
;
;==========================================================================

;Rev:   Date:    Reason:
;1.01   14 Nov 2002 Updated to reflect BOD terminology changed to BOR
;1.00   22 Aug 2002 Initial Release

;==========================================================================
;
;       Verify Processor
;
;==========================================================================

        IFNDEF __16F628A
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF

;==========================================================================
;
;       Register Definitions
;
;==========================================================================

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------

INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'
PORTB                        EQU     H'0006'
PCLATH                       EQU     H'000A'
INTCON                       EQU     H'000B'
PIR1                         EQU     H'000C'
TMR1L                        EQU     H'000E'
TMR1H                        EQU     H'000F'
T1CON                        EQU     H'0010'
TMR2                         EQU     H'0011'
T2CON                        EQU     H'0012'
CCPR1L                       EQU     H'0015'
CCPR1H                       EQU     H'0016'
CCP1CON                      EQU     H'0017'
RCSTA                        EQU     H'0018'
TXREG                        EQU     H'0019'
RCREG                        EQU     H'001A'
CMCON                        EQU     H'001F'

OPTION_REG                   EQU     H'0081'
TRISA                        EQU     H'0085'
TRISB                        EQU     H'0086'
PIE1                         EQU     H'008C'
PCON                         EQU     H'008E'
PR2                          EQU     H'0092'
TXSTA                        EQU     H'0098'
SPBRG                        EQU     H'0099'
EEDATA                       EQU     H'009A'
EEADR                        EQU     H'009B'
EECON1                       EQU     H'009C'
EECON2                       EQU     H'009D'
VRCON                        EQU     H'009F'

;----- STATUS Bits --------------------------------------------------------

IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'

;----- INTCON Bits --------------------------------------------------------

GIE                          EQU     H'0007'
PEIE                         EQU     H'0006'
T0IE                         EQU     H'0005'
INTE                         EQU     H'0004'
RBIE                         EQU     H'0003'
T0IF                         EQU     H'0002'
INTF                         EQU     H'0001'
RBIF                         EQU     H'0000'

;----- PIR1 Bits ----------------------------------------------------------

EEIF                         EQU     H'0007'
CMIF                         EQU     H'0006'
RCIF                         EQU     H'0005'
TXIF                         EQU     H'0004'
CCP1IF                       EQU     H'0002'
TMR2IF                       EQU     H'0001'
TMR1IF                       EQU     H'0000'

;----- T1CON Bits ---------------------------------------------------------
T1CKPS1                      EQU     H'0005'
T1CKPS0                      EQU     H'0004'
T1OSCEN                      EQU     H'0003'
NOT_T1SYNC                   EQU     H'0002'
TMR1CS                       EQU     H'0001'
TMR1ON                       EQU     H'0000'

;----- T2CON Bits ---------------------------------------------------------
TOUTPS3                      EQU     H'0006'
TOUTPS2                      EQU     H'0005'
TOUTPS1                      EQU     H'0004'
TOUTPS0                      EQU     H'0003'
TMR2ON                       EQU     H'0002'
T2CKPS1                      EQU     H'0001'
T2CKPS0                      EQU     H'0000'

;----- CCP1CON Bits ---------------------------------------------------------
CCP1X                        EQU     H'0005'
CCP1Y                        EQU     H'0004'
CCP1M3                       EQU     H'0003'
CCP1M2                       EQU     H'0002'
CCP1M1                       EQU     H'0001'
CCP1M0                       EQU     H'0000'

;----- RCSTA Bits ---------------------------------------------------------
SPEN                         EQU     H'0007'
RX9                          EQU     H'0006'
SREN                         EQU     H'0005'
CREN                         EQU     H'0004'
ADEN                         EQU     H'0003'
FERR                         EQU     H'0002'
OERR                         EQU     H'0001'
RX9D                         EQU     H'0000'

;----- CMCON Bits ---------------------------------------------------------

C2OUT                        EQU     H'0007'
C1OUT                        EQU     H'0006'
C2INV                        EQU     H'0005'
C1INV                        EQU     H'0004'
CIS                          EQU     H'0003'
CM2                          EQU     H'0002'
CM1                          EQU     H'0001'
CM0                          EQU     H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU                     EQU     H'0007'
INTEDG                       EQU     H'0006'
T0CS                         EQU     H'0005'
T0SE                         EQU     H'0004'
PSA                          EQU     H'0003'
PS2                          EQU     H'0002'
PS1                          EQU     H'0001'
PS0                          EQU     H'0000'

;----- PIE1 Bits ----------------------------------------------------------

EEIE                         EQU     H'0007'
CMIE                         EQU     H'0006'
RCIE                         EQU     H'0005'
TXIE                         EQU     H'0004'
CCP1IE                       EQU     H'0002'
TMR2IE                       EQU     H'0001'
TMR1IE                       EQU     H'0000'

;----- PCON Bits ----------------------------------------------------------

OSCF                         EQU     H'0003'
NOT_POR                      EQU     H'0001'
NOT_BO                       EQU     H'0000'
NOT_BOR                      EQU     H'0000'
NOT_BOD                      EQU     H'0000' ;Backwards compatability to 16F62X

;----- TXSTA Bits ----------------------------------------------------------
CSRC                         EQU     H'0007'
TX9                          EQU     H'0006'
TXEN                         EQU     H'0005'
SYNC                         EQU     H'0004'
BRGH                         EQU     H'0002'
TRMT                         EQU     H'0001'
TX9D                         EQU     H'0000'

;----- EECON1 Bits ---------------------------------------------------------
WRERR                        EQU     H'0003'
WREN                         EQU     H'0002'
WR                           EQU     H'0001'
RD                           EQU     H'0000'

;----- VRCON Bits ---------------------------------------------------------

VREN                         EQU     H'0007'
VROE                         EQU     H'0006'
VRR                          EQU     H'0005'
VR3                          EQU     H'0003'
VR2                          EQU     H'0002'
VR1                          EQU     H'0001'
VR0                          EQU     H'0000'

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

    __MAXRAM H'01FF'
    __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
    __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
    __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
    __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_BODEN_ON                    EQU     H'3FFF' ;Backwards compatability to 16F62X
_BODEN_OFF                   EQU     H'3FBF' ;Backwards compatability to 16F62X
_BOREN_ON                    EQU     H'3FFF'
_BOREN_OFF                   EQU     H'3FBF'
_CP_ON                       EQU     H'1FFF'
_CP_OFF                      EQU     H'3FFF'
_DATA_CP_ON                  EQU     H'3EFF'
_DATA_CP_OFF                 EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LVP_ON                      EQU     H'3FFF'
_LVP_OFF                     EQU     H'3F7F'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_RC_OSC_CLKOUT               EQU     H'3FFF'
_RC_OSC_NOCLKOUT             EQU     H'3FFE'
_ER_OSC_CLKOUT               EQU     H'3FFF' ;Backwards compatability to 16F62X
_ER_OSC_NOCLKOUT             EQU     H'3FFE' ;Backwards compatability to 16F62X
_INTOSC_OSC_CLKOUT            EQU     H'3FFD'
_INTOSC_OSC_NOCLKOUT         EQU     H'3FFC'    
_INTRC_OSC_CLKOUT            EQU     H'3FFD' ;Backwards compatability to 16F62X
_INTRC_OSC_NOCLKOUT         EQU     H'3FFC' ;Backwards compatability to 16F62X
_EXTCLK_OSC                  EQU     H'3FEF'
_HS_OSC                      EQU     H'3FEE'
_XT_OSC                      EQU     H'3FED'
_LP_OSC                      EQU     H'3FEC'

        LIST
```
Gracias por responder


----------



## D@rkbytes (Oct 21, 2012)

Norvator dijo:


> El problema es que el archivo que te adjunte en el post anterior no se parece en nada a lo que me comentas, (Lo que no sé es si tengo que añadir todo el texto que has escrito y si es así en que parte del texto?) por cierto tengo el *MPASM WIN v5.20*.


Saludos.
Ese no es el archivo que debes modificar.


D@rkbytes dijo:


> es el archivo 16F628A.INC que se encuentra en la carpeta de instalación de PBP.
> Este archivo incluye la palabra de configuración por default que se usara para compilar el PIC.


*C:\PBP\16F628A.INC* (O donde tengas instalado el compilador PBP 2.60)
Ese archivo es el que debes modificar, en la parte que comente anteriormente.

Suerte.


----------



## Norvator (Oct 22, 2012)

D@rkbytes dijo:


> Saludos.
> Ese no es el archivo que debes modificar.
> 
> *C:\PBP\16F628A.INC* (O donde tengas instalado el compilador PBP 2.60)
> ...



Gracias por responder pero ahora que acabo de modificar el archivo .INC con lo que me sugieres sigo con el mismo error que antes, lo he probado en una pc windows xp marcada la pestaña MPASM teniendo instalado solo el microcodestudio plus y Picbasic pro sin MPLAB, ni Proteus, ni MPASMWin y sigue igual. Tambien lo he probado en mi pc Windows 7 pero como tengo instalado también Proteus, cuando coloco la ruta manual al archivo modificado *16F628A.INC* para que compile no me deja, cuando le doy *compile program* el software comienza a buscar automaticamente y finalmente busca y encuentra la ruta de Proteus, ya no se que mas hacer.


----------



## D@rkbytes (Oct 22, 2012)

Norvator dijo:


> Gracias por responder pero ahora que acabo de modificar el archivo .INC con lo que me sugieres sigo con el mismo error que antes, lo he probado en una pc windows xp marcada la pestaña MPASM teniendo instalado solo el microcodestudio plus y Picbasic pro sin MPLAB, ni Proteus, ni MPASMWin y sigue igual. Tambien lo he probado en mi pc Windows 7 pero como tengo instalado también Proteus, cuando coloco la ruta manual al archivo modificado *16F628A.INC* para que compile no me deja, cuando le doy *compile program* el software comienza a buscar automaticamente y finalmente busca y encuentra la ruta de Proteus, ya no se que mas hacer.


NOP
NOP
NOP
Mira, cuando instalas el programa MicroCode Studio por vez primera,
el mismo programa empieza a buscar la carpeta donde están instalados los archivos de PBP
Por default previamente se instalan en C:\PBP
Si lo haces manualmente, entonces en la pestaña Compiler del MCS debes establecer esa carpeta,
sin seleccionar la opción de la pestaña Assembler que dice Use MPASM

Esos son los pasos a seguir para la correcta instalación de MCS.

PD:
Si todo esto no te funciona, Upps!!! 
Escribe tus programas sin la palabra de configuración y...
Como último recurso, puedes instalar algún programa sencillo como el IC-Prog o el WinPic800
Abres tu archivo *.hex y con ayuda de alguno de esos programas, editas los bits de configuración.
Guardas el archivo con los bits establecidos y procedes a grabar el PIC con tu programador.

Suerte.

*Nota del Moderador:*
Los post de Norvator y las respuestas, han sido movidos a este tema para dejar limpio el tema...
https://www.forosdeelectronica.com/f24/generar-dtmf-pic-67659/
Ya que tratan acerca de lo referente aquí expuesto y causaron Off Topic en dicho tema.


----------



## baterod3 (Oct 31, 2012)

a mi me sale este error cuando compilo PIC18F4550 en PBP...no puedo solucionarlo

The microchip assembler (mpasm) only allows up to 65 characters to be used for path and filename. current length is 64 characters


----------



## D@rkbytes (Oct 31, 2012)

baterod3 dijo:


> a mi me sale este error cuando compilo PIC18F4550 en PBP...no puedo solucionarlo
> 
> The microchip assembler (mpasm) only allows up to 65 characters to be used for path and filename. current length is 64 characters



Ese es un error muy común.
Quiere decir que estas excediendo el máximo tamaño soportado por MPASM para la ruta del archivo.
Copia la carpeta de tu proyecto en C:\ por ejemplo o en el escritorio.
Trata de que la ruta de tu proyecto no exceda 65 caracteres como máximo.

Suerte.


----------



## baterod3 (Nov 1, 2012)

amigo D@rkbytes gracias por tu ayuda, pero me sale este error yo sé que es de configuración por favor ayudame te agradezco, soy nuevo en ésto, te adjunto la imagen


----------



## D@rkbytes (Nov 1, 2012)

baterod3 dijo:


> amigo D@rkbytes gracias por tu ayuda, pero me sale este error yo sé que es de configuración por favor ayúdame te agradezco, soy nuevo en ésto, te adjunto la imagen


Saludos.
Al parecer estas tratando de hacer un programa para un proyecto con USB
Por lo tanto MicroCode Studio te pide compilar el programa con MPASM al usar un PIC18.

Lo que sucede es que seguramente tienes la palabra de configuración en el código,
y al compilar con MPASM se producen los errores que muestras.

Para solucionar ese problema, quita o comenta los fuses de la palabra de configuración de tu código.

*1.-* Ve a la carpeta donde tienes instalado el compilador para PBP
*2.-* Busca el archivo del PIC que estas usando, en este caso el archivo 18F4550.INC
*3.-* Dentro de ese archivo veras los fuses que PBP tiene por default para este PIC
*4.-* Modifica los fuses del archivo por los que deseas para tu programa.
*5.-* Guarda el archivo con los cambios realizados, y compila tu programa.

Esta es una opción para la palabra de configuración que puedes usar en el archivo...

```
__CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        __CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L
```
Si sigues teniendo problemas para compilar tu programa, te recomiendo que lo adjuntes para darle solución.

Suerte.


----------



## Luno (Nov 1, 2012)

Hola y buenas tardes queria saber por que me sale este mensaje . Utilizo el Pic16f886







llevaba hasta el 22% de la ROM.... hasta que puse unas 20 lineas mas y suaz me sale esto ....

Cómo podria solucionarlo?


Gracias!


----------



## D@rkbytes (Nov 1, 2012)

Luno dijo:


> llevaba hasta el 22% de la ROM.... hasta que puse unas 20 lineas mas y suaz me sale esto ....
> 
> Cómo podria solucionarlo?


Estructura mejor tu programa.
Por que excediste el tamaño máximo permitido para una rutina ó void main
una estructura main no puede ser más larga de una pagina.

Suerte.


----------



## Luno (Nov 1, 2012)

Si, pero que extraño que con el 16f88 no me pasó esto y con las mismas sentencias, estoy haciendo una sencuencia de leds primero probe con el f88 y logré hasta 16 secuencia, ahora como queria más led probe con f886, pero no llego ni a 5 secuencias ...  y ojo que son las mismas sentencias solo que esta ves añado el puerto C.


----------



## baterod3 (Nov 1, 2012)

Amigo D@rkbytes he cambiado los fuses que me indicaste y sigo teniendo errores creo que aumentaron, tu crees que se deba a la versión del compilador, tengo instalado el MPLAB 8, mi programa es sencillo no estoy usando ninguna aplicacion USB solo encender y apagar un led. No entiendo mucho a que te refieres con el uso de la palabra configuracion en el codigo de programa


----------



## D@rkbytes (Nov 2, 2012)

baterod3 dijo:


> Amigo D@rkbytes he cambiado los fuses que me indicaste y sigo teniendo errores creo que aumentaron, tu crees que se deba a la versión del compilador, tengo instalado el MPLAB 8, mi programa es sencillo no estoy usando ninguna aplicación USB solo encender y apagar un led.


OK.


D@rkbytes dijo:


> Si sigues teniendo problemas  para compilar tu programa, te recomiendo que lo adjuntes para darle  solución.


Adjunta en un archivo comprimido tu proyecto como lo tienes para poder saber que es lo que esta pasando.


baterod3 dijo:


> No entiendo mucho a que te refieres con el uso  de la palabra configuración en el código de programa





Luno dijo:


> con el 16f88 no me pasó esto  y con las mismas sentencias.


Por ese motivo es recomendable que adjunten el código fuente.

Con eso podremos determinar muchas cosas.


----------



## baterod3 (Nov 2, 2012)

D@rkbytes estoy adjuntando el programita que ando compilando, gracias por tomarte tu tiempo en ayudarme


----------



## Luno (Nov 2, 2012)

Hola queria decir que ya eh solucionado mi problema  solo me habia faltado declarar esto :
#use fast_io(c) 
#use fast_io(e) 
Solo había declarado para a y b  

Ahora, solo tengo un insignificante problema pero nose por donde atacar en 2 de las secuencias el Bit A5/AN4/SS/C2OUT enciende cuando no debería encender, por ejem declaro que todo el puerto A debe estar apagado y este unico Bit se enciende y se apaga

Ya el eh declarado al incio que todos los puertos de salida deben estar en cero al iniciar.


----------



## D@rkbytes (Nov 2, 2012)

baterod3 dijo:


> D@rkbytes estoy adjuntando el programita que ando compilando, gracias por tomarte tu tiempo en ayudarme


OK. Saludos.
Pues compile el programa que adjuntaste sin problema alguno.

Para empezar a utilizar el programa MicroCode Studio (MCS) vamos a ver como se instala desde el principio.

*1.-* Instala *PICBasic Pro* Compiler 2.60 por default en C:\PBP
*2.-* Inicia la instalación de MCS como cualquier otra instalación.
*3.-* Ejecuta MCS y si no esta establecida la carpeta con los archivos del compilador,
se iniciara una búsqueda automática que se puede cancelar y hacerla manualmente.
*4.-* Se debe especificar la carpeta de instalación de PBP (C:\PBP)
*5.-* Para programas usando PIC18 se requiere tener MPLAB IDE 8.8X o superior, previamente instalado.
*6.-* Al compilar PIC18 debemos ir al menú View-Compile and Program Options.
En la ventana que aparecerá, seleccionamos la pestaña Assembler y presionamos el botón *Find Manually...*
*7.-* Debemos seleccionar la carpeta *MPASM Suite* de la carpeta de instalación de MPLAB
Por default para Windows en español es... C:\Archivos de programa\Microchip\MPASM Suite
Las opciones para el compilador que vienen seleccionadas por default son...
*Listing file
Macro expansion
Case sentitive
INHX8M*
Estas opciones se dejan como están XD, o se seleccionan las requeridas para nuestro proyecto.
*8.-* Presionamos el botón OK y luego la tecla F9 para compilar sin programar el PIC

Notas:
Yo utilizo Windows XP SP2 para evitar problemas de incompatibilidad con los programas.

Existe un método para la configuración de los fuses, comentando las lineas de la palabra de configuración,
en el archivo 18F4550.INC. Esto se hace colocando un *;* antes de cada linea.
Se pueden copiar los fuses que vienen en ese archivo, ó ir a la carpeta de MPLAB y buscarlos en...
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code
Ahí están los archivos *.ASM de cabecera para cada tipo de PIC que incluyen los fuses predeterminados.
Y estos se copian y pegan en tu código, estableciendo las sentencias ASM y ENDASM

Bien, con estos datos la compilación se debe de llevar a cabo sin problemas.
Adjunto tu programa compilado para que veas que no hay problema.



Luno dijo:


> Ahora, solo tengo un insignificante problema pero no se por donde atacar  en 2 de las secuencias el Bit A5/AN4/SS/C2OUT enciende cuando no debería  encender, por ejem declaro que todo el puerto A debe estar apagado y  este único Bit se enciende y se apaga
> 
> Ya he declarado al inicio que todos los puertos de salida deben estar en cero al iniciar.


¿Declaraste los registros ANSEL y ANSELH en 0?
Esto hace al puerto A y al puerto B Digital I/O

Suerte.


----------



## baterod3 (Nov 2, 2012)

1000 gracias D@rkbytes, el problema de la compilación ha sido resuelto he compilado mi propio programa antes de bajar tu simulación, éstos foros son de mucha ayuda, tienes una paciencia increíble, gracias de todo corazon.


----------



## Luno (Nov 3, 2012)

Bueno de mi parte ya solucioné todos mis problemas asi que doy por cerrado mis dudas


----------

