# Errores al compilar en MPLAB X



## juan luis (Mar 19, 2006)

Hola:
Podrian ayudarme con una sentencia de error que genera el MPLAB al compilar el archivo asm. Ya revise el programa y no encuentro la falla, incluso modifique algunas sentencias y el error es el mismo. Podrian alguien decirme a que se refiere este error, ¿cual es la condicion ilegal que menciona?


```
Building VIDEO.HEX...

Compiling VIDEO.ASM:
Command line: "C:\ARCHIV~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F84 /q C:\MISDOC~1\PROYEC~1\VIDEO.ASM"
Error[125]   C:\MISDOC~1\PROYEC~1\VIDEO.ASM 2 : Illegal condition (EOF encountered before END or conditional end directive)

MPLAB is unable to find output file "VIDEO.HEX".

Build failed.
```

Gracias.


----------



## caliche (Mar 19, 2006)

Según ese archivo de salida, ejecutaste un instrucción EOF (End Of File) antes de la sentencia de finalización.

Para ayudarte mejor a encontrar el problema, deberías postear el código que estas compilando.

Saludos.


----------



## tzeeth (Mar 20, 2006)

Si como dice caliche por favor pega el codigo y asi podremos ayudarte mas . Suerte!


----------



## Geo (Mar 20, 2006)

El error muy probablemente es que se llegó al final del archivo y no encontró el final de una instrucción.

Saludos,
José Jorge (Geo).


----------



## lalosoft (Mar 21, 2006)

> Error[125]   C:\MISDOC~1\PROYEC~1\VIDEO.ASM 2 : Illegal condition (EOF encountered before END or conditional end directive)



Esta super claro   y no es necesario que postees tu codigo  .Te falto colocar la directiva de MICROCHIP ASSEMBLER llamada END que indica que no hay mas codigo para ensamblar(*el proposito de esta directiva  es por si deseas colocar otro tipo de información a continuacion y no quieres que el ensamblador la tome en cuenta*)  generalmente va como ultima linea de texto en el archivo *.ASM.


----------



## maunix (Mar 21, 2006)

lalosoft dijo:
			
		

> > Error[125]   C:\MISDOC~1\PROYEC~1\VIDEO.ASM 2 : Illegal condition (EOF encountered before END or conditional end directive)
> 
> 
> 
> Esta super claro   y no es necesario que postees tu codigo  .Te falto colocar la directiva de MICROCHIP ASSEMBLER llamada END que indica que no hay mas codigo para ensamblar(*el proposito de esta directiva  es por si deseas colocar otro tipo de información a continuacion y no quieres que el ensamblador la tome en cuenta*)  generalmente va como ultima linea de texto en el archivo *.ASM.



Es así como dices tu lalosoft.

El mensaje indica claramente que falta la directiva END que indica al ensamblador el fin del bloque a ensamblar.


----------



## juan luis (Mar 22, 2006)

La instruccion END si se encontraba en el codigo hasta el final.
El problema era que no cerre correctamente un Loop, como el codigo era demaciado largo, (Lo copie de una revista de hace varios años que me perstaron) al transcribirlo cometi ese pequeño error debido a la fata de experiencia, despues de verificarlo muchas veces lo encontre.

Gracias a todos por sus respuestas en realidad me ayudaron.


----------



## elvis_mendocino (Mar 7, 2007)

en realidad no se usar mplab y me gustaria aprender deseo si alguien puede pasarme un buen tutorial o información acerca de como se usa. gracias


----------



## pic-man (Mar 7, 2007)

Revisa este tutorial de mplab, creo que es una buena manera de comenzar


----------



## raul marquez (Oct 17, 2007)

hola a todos los del foro

alguien que me ayude con esto, estoy tratando de compilar un programa con mplab, estoy usando el pic16f877 pero cuando utilizo el include me salen errores osea que tengo que cargar todas las direcciones y registros, si alguien me puede ayudar con este problema se lo agradezco


muchas gracias


----------



## maunix (Oct 23, 2007)

raul marquez dijo:
			
		

> hola a todos los del foro
> 
> alguien que me ayude con esto, estoy tratando de compilar un programa con mplab, estoy usando el pic16f877 pero cuando utilizo el include me salen errores osea que tengo que cargar todas las direcciones y registros, si alguien me puede ayudar con este problema se lo agradezco
> 
> ...



Raul, qué tipo de errores te da? qué compilador/lenguaje estas usando?


----------



## ben99 (Oct 25, 2007)

maunix dijo:
			
		

> raul marquez dijo:
> 
> 
> 
> ...



adjunta el pantallazo amigo.

saludos


----------



## enigma_myvs (Nov 2, 2007)

Es posible que no hayas seleccionado el tipo de pic en Mplab. a lo mejor estás utilizando librerias del 16F877 y estás compilando con el 16F84 o cualquier otro pic. verifica la configuración.


----------



## manuel360 (Ene 17, 2008)

tengo un problema soy principiante en esto de los pic  tengo una laptop que no tiene los puertos serial o paralelo  compre una adaptador de usb que se hace serial esto me sirve para poder programar pic y en cuando instale el MPLAB no me detecta unas funciones


----------



## tiopepe123 (Ene 17, 2008)

Mplab no tiene que detectarte nada.

Recuerda que para programar los pic es necesario los 13V, si no te programa revisa si en algun lado apararecen.


----------



## manuel360 (Ene 17, 2008)

ok entonces mplab solo es para hacer el codigo fuente cierto?    ok y con el problema de mi laptop no tiene puertos serial que puedo utilizar para programarlo


----------



## pic-man (Ene 17, 2008)

Puedes utilizar algun programador USB, no te sirve ningun programador serial aun utilizando un conversor usb-rs232, esos convertidores no funcionan para programar, ocupas un programador usb


----------



## manuel360 (Ene 18, 2008)

ok   ya encontre uno por puerto usb ahorita estoy realizando un proyecto de unos led que al girarlos despliega mensajes pero tenngo el codigo fuente, tengo mplab v 7.51 ahora mi problema es pasarlo a .hex me aparece una leyenda que dice que no encuentra el archivo y lo guarde con extension .asm  .   Gracias


----------



## haroldstanly (Mar 28, 2008)

hola compañeros foristas tengo un pequeño problema al momento de simular en mplab un programa para el pic16f873 es cuando configuro los puertos como salida, no los configura y si uso el mismo programa para el 16f84 trabaja perfecto ya use dos verciones del mplab incluso la mas nueva que hay, agradecere a quien pueda ayudarme


----------



## tiopepe123 (Mar 28, 2008)

manuel360:

Hola Manuel, prueba de primero crear un new project y despues en el mismo menu un add files to project.

Finalmente un save project y ya podes compilar con el build all.



haroldstanly:

Mira primero en el menu el configure que este marcado tu micro.
Simula paso a paso y vigila la ventana Special funcion register el registro Tris


----------



## haroldstanly (Mar 31, 2008)

hola tio gracias por tu respuesta pero aun no he podido con el problema ya vigile el registro tris en la ventana de registros especiales y el aparentemente me configura dicho registro entonces abro el wach para vigilar el estado del puerto y no sucede nada cuando le envio al puerto el valor 01h, solo veo un cambio cuando le envio un 0ffh pero en el puerto aparece el valor 10h. y el programa esta bien te digo que solo cambio el tipo de micro a 16f84 y me funciona correctamente, (por cierto el micro que uso es el 16f873a. espero atentamente sus respuestas.


----------



## mrkcc (Ago 20, 2008)

bueno intento ensamblar el hex, pero resulta que me sale que tiene un erro y que no se puede continuar, ya intente cambiarlo, pero en fin, para hacerlo yo me voy a (inicio=todos los programas=Microchip=MPLAB IDE v8.00=MPASMWIN) me sale ese error una vez me salio pero volvio a cambiar el formato y nucan mas lo volvi a ver pero ahora resulta que nuevamente sale, tenia 6.5 mplab o cambie pensando que tal vez era la version, y me pasa a la 8.0 mplab, pero siguio igual no se que esta pasando.

cualquier comentario gracias


----------



## Meta (Ago 20, 2008)

¿Puedes dar más detalles de lo que has hecho exactamente?

La versión más actual es el MPLAB 8.14


----------



## mrkcc (Ago 21, 2008)

mira es que me sale siempre, salelo mismo probe cada uno y es lo mismo cada version que baje de microchip baje todas y es lo mismo


----------



## Meta (Ago 21, 2008)

Prueba con el compilador y simulador en la descarga abajo.

Manual:
http://usuarios.lycos.es/reparaplaystation/cs/manual/EL_PRIMER_CONTACTO_CON_EL_PIC16X84.pdf

Ya nos contarás.


----------



## ricbevi (Ago 21, 2008)

mrkcc dijo:
			
		

> bueno intento ensamblar el hex, pero resulta que me sale que tiene un erro y que no se puede continuar, ya intente cambiarlo, pero en fin, para hacerlo yo me voy a (inicio=todos los programas=Microchip=MPLAB IDE v8.00=MPASMWIN) me sale ese error una vez me salio pero volvio a cambiar el formato y nucan mas lo volvi a ver pero ahora resulta que nuevamente sale, tenia 6.5 mplab o cambie pensando que tal vez era la version, y me pasa a la 8.0 mplab, pero siguio igual no se que esta pasando.
> 
> cualquier comentario gracias



Hola me parece y si no me equivoco es lo siguiente... se ve claramente en la imagen que subiste que la ruta en donde tienes el archivo tiene demasiados caracteres(mas de 62 te dice el programa) es al menos lo que informaciónrma el error.
Crea una carpeta en la raíz del C: (Ej: C:\Trabajos\) guarda tu trabajo allí(el ".asm", etc) e intenta compilar desde allí con el MPASMWIN.

Saludos.

Ric.


----------



## Meta (Ago 21, 2008)

Los carácter te soporta hasta los 256. No es por ese error, aún así compruébalo y nos avisa.


----------



## El nombre (Ago 21, 2008)

Guarda tus archivos en uan carpeta mas cercana al directorio raiz. Te está indicando que escedes los caracteres máximos. Seguramente lo guardas en "mis documentos" y el camino hasta llegar ahi es muy largo. create una carpeta en el directorio raiz y verás como se soluciona el problema

A mandar


----------



## Meta (Ago 21, 2008)

También es largo en el escritorio, ya nos contará si le ha funcionado. Si no te funciona , prueba lo de arriba qu puse para descargar.


----------



## diego_z (Ago 21, 2008)

totalmente coincido con ricbevi y El nombre ese es tu problema para la vercion 8,xx ya de la 7,xx en adelante tenian esa modalidad de tener que hacer tus proyectos cerca de compilador


----------



## Meta (Ago 21, 2008)

Vamos  a ver si ha resuelto el problema.


----------



## mrkcc (Ago 23, 2008)

bueno gracias ya se resolvio el problema, era que era muy grande la direccion donde lo tenia guardado


----------



## Meta (Ago 23, 2008)

FELICIDADES. Si que has tardado en resolverlo.


----------



## mrkcc (Ago 27, 2008)

si se pudo tenia razon de que la direccion era muy grande lo puse en c:microchip-1 y ahi se compilo en hex, asi pasa siempre en windoes, gracias por su ayuda, ya que me sirvio de mucho, y por los programas


----------



## tjdor (Ago 29, 2008)

Acabo de instalar el MPLab v8.10, también me he bajado el Niple v5.2.

Utilizo el Niple para hacer el código asm, (este me parece muy buen programa para generar código porque es todo muy visual, gráfico...) y bien, me genera el siguiente código (Archivo adjunto).

Paso el código al MPLab, le doy para que programe y me da errores, en concreto el siguiente (Archivo adjunto).

Me podría decir alguien donde esta el fallo?


----------



## asherar (Ago 29, 2008)

El problema es que la ruta del archivo excede un largo de 62 caracteres. 
Te lo dice en el mensaje de error.
Poné todo el proyecto en una carpeta colgada directamtente del raiz, y listo !





> Error[173]   C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\UNTITLED.ASM 58 :
> *Source file path exceeds 62 characters* (C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\UNTITLED.ASM)


----------



## tjdor (Ago 29, 2008)

Pues si, tenias razón!
Muchas gracias

Pero ahora me pasa otra cosa, estoy empezando con el libro "microcontrolador PIC16F84"
de "Ra-Ma", escribo el primer ejercicio que pone, y me da otros errores que tampoco se solventar, los he puesto sobre el directorio raíz y tampoco.

Estos son mis primeros pasas con PIC y no se me da muy bien el ingles, es mas todo lo contrario


----------



## asherar (Ago 29, 2008)

Bueno; cuando te aparezca un error en la salida de compilación, primero trata de traducir lo 
que dice ahí lo mejor que puedas. 
Luego haz "doble click" sobre la palabra ERROR y el "debugger" llevará el cursor a la instrucción donde se ha producido ese error. 
Y allí, mi amigo, ... estás solo, ... tan solo como has venido a este mundo!

En este caso puede ser que has olvicdado poner el caracter # delante de INCLUDE	<P16F84A.INC>. Además sobra el punto final (.)

Debería decir: 

#INCLUDE	<P16F84A.INC>     ; Comentarios que quieras poner 

El proceso de debug es tanto o más largo que el de programar.
Bienvenido al mundo de los "sacabichos". 
Por qué te crees que les han puesto PIC, porque los bichos "PIC-an"!


----------



## tjdor (Ago 29, 2008)

De acuerdo muchas gracias, creo que ya lo estoy entendiendo, de todas formas ya he hecho mus pinitos en c++, pero cuando me pasaba esto se lo decía al profesor y me solucionaba.


----------



## asherar (Ago 29, 2008)

Disculpame, no es que no te quiera ayudar. Es que como los WARNINGS no son problemas graves, no les presté atención. 

Lo que pasa acá es que las palabras LIST e INCLUDE  son instrucciones para el compilador 
que deben ir a partir de la columna 2. 
Los numeros 4 y 5 indican la linea donde está el error.

Warning[205] C:\*PARA BORRAR*\UNTITLED2.ASM 4 : Found directive in column 1. (LIST)
Warning[205] C:\*PARA BORRAR*\UNTITLED2.ASM 5 : Found directive in column 1. (INCLUDE)

Debes dejar al menos una columna libre a la izquierda, o usar el tabulador así:


```
LIST          P=PIC16F84A
 #INCLUDE	   <P16F84A.INC>
```

Si te pones hábil con el inglés, el debugger te lleva solo !
Tan solo no estás después de todo. 
Por el debugger y por el foro.  

Saludos

*Editado*: Acabo de notar el nombre del directorio: Je Je !!!


----------



## Meta (Sep 3, 2008)

Hola:

No se que pasa pero desde que empecé a compilar cualquier .asm me da el mismo error y nunca compila.

Desinstalé el MPLAB y lo volví a instalar, reinicio y sigue igual. ¿Qué le pasa ahora el MPLAB  que cuanto más me hace es cuando más me da problemas?



> Debug build of project `C:\PIC16F84\ejem_1_2.disposable_mcp' started.
> Preprocessor symbol `__DEBUG' is defined.
> Wed Sep 03 19:39:53 2008
> ----------------------------------------------------------------------
> ...



El programa que estoy haciendo es este:


```
;Tres valores están almacenados en la memoria, A, B y C. Y en las
;direcciones 10, 11 y 12h. Resolver ecuación (A + B) - C.
;Velocidad d ereloj; 4MHz
	LIST	p=16F84A		;Tipo de procesador.
	INCLUDE	<P16F84A.INC>	;Definiciones de registros internos.
__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
;*****************************************************************
	DATO_A		EQU 0x10	;Define la posición del dato A
	DATO_B		EQU 0x11	;Define la posición del dato B
	DATO_C		EQU 0x12	;Define la posición del dato C
	RESULTADO 	EQU 0x13	;Define la posición del dato RESULTADO
;*****************************************************************
	ORG 0x00	;Vector de reset
	goto INICIO
	ORG 0x05	;Salva el vector de interrupción
INICIO:
	movlw .1
	movwf DATO_A
	movlw .9
	movwf DATO_B
	movlw 0Ah
	movwf DATO_C
;
	movf	DATO_A,W	;Carga el 1er sumando
	addwf	DATO_B,W	;Suma 2º operando
	movwf	RESULTADO	;Almacena resultado parcial
	movf	DATO_C,W	;Carga el sustraendo
	subwf	RESULTADO,F	;Resta el minuendo y almacena
STOP
	goto $
	END		;Fin del programa
```

Saludos.[/code]


----------



## mabauti (Sep 3, 2008)

segun leo en microchip, la V8.14 no es una version final. Yo intentaria con una version anterior



edit. Tu programa se compila OK


----------



## asherar (Sep 3, 2008)

Meta dijo:
			
		

> Hola:
> 
> Debug build of project `C:\PIC16F84\ejem_1_2.disposable_mcp' started.
> Preprocessor symbol `__DEBUG' is defined.
> ...




Hola: 

Está claro que el programa ese no te puede generar ningún problema.

Se me ocurren dos posibles salidas: 

Primero podrías fijarte si está bien configurado el paquete de lenguaje de compilacion. 
En la figura 1 te muestro el acceso (del MPLAB 8.10), en la figura 2 la ventana que se abre, señalando en azul la opción que deberías elegir para compilar en ASSEMBLER con el 16F84A. 

Lo segundo es probar si instalando una versión anterior te pasa lo mismo. 

Saludos.

NOTA: Google traduce "spawn" como "desovar" (?)


----------



## Meta (Sep 3, 2008)

Gracias, lo voy a probar pero en ASM. Luego aviso, voy a quitar el 8.14 he instalo el 8.10 por si acaso.

EDIT:
Gracias. Instalé el MPLAB 8.10. 

Si el 8.14 es más nuevo. *¿Por qué instalar el anterior?*


----------



## asherar (Sep 4, 2008)

Bueno, y qué era lo que pasaba ?  

Me dejaste con la intriga !

Saludos !


----------



## Meta (Sep 4, 2008)

Hice lo que me dijiste y no funcionaba sobre configurarlo. Desinstalé todo y volví a instalar el MPLAB 8.10 y me funcionó.

Lo que quiero saber es, ¿por qué no se aconseja el 8.14? No tenía problemas y de repente surgió.


----------



## BRUNO27 (Sep 4, 2008)

Tengo un problemilla con el driver lcd del ccs ,quiero compilar un programita para el lcd (016en el proteus) y  al compilar me sale identificador indefinido set_tris_lcd  medoy cuenta  que puede ser , porque el driver no lo he tocado para nada .
tarror sea algo trivial pero no medoy cuenta ya que no domino mucho el "c".
desde ya si alguien me aclara lo agradecere.
saludos a todos


----------



## ricbevi (Sep 12, 2008)

mrkcc dijo:
			
		

> si se pudo tenia razon de que la direccion era muy grande lo puse en c:microchip-1 y ahi se compilo en hex, asi pasa siempre en windoes, gracias por su ayuda, ya que me sirvio de mucho, y por los programas



A veces la solucion esta delante de nuestros ojos...solo es cuestion de detenerse a observar con detenimiento.

Saludos.

Ric.


----------



## mrkcc (Oct 16, 2008)

El nombre dijo:
			
		

> Guarda tus archivos en uan carpeta mas cercana al directorio raiz. Te está indicando que escedes los caracteres máximos. Seguramente lo guardas en "mis documentos" y el camino hasta llegar ahi es muy largo. create una carpeta en el directorio raiz y verás como se soluciona el problema
> 
> A mandar



gracias era esto la solucion ya que tenia muy grande el nombre mejor cree una carpeta en c:\ y todo se resolvio, muchas gracias.


----------



## Vossler (Ene 29, 2009)

me da este error, y lo extraño esque me lo da en una instruccion tan sencilla como el GOTO, qe el programa se "muere", no tira mas y me sale este error o aviso mas bien

Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero

¿Alguien sabe que puede significar?¿O porque me sale esto?
Y lo mas importante, ¿Como solucionarlo? Es vital


----------



## pepechip (Ene 29, 2009)

la traducion de google es: Detenido debido a la creciente PC Maximum PC durante el envasado y la dirección de vuelta a cero.

A mi nunca me ha dado ese error. Mira a ver si has superado el limite de memoria de ese micro.


----------



## Ardogan (Ene 29, 2009)

Debe ser porque estas saltando a una dirección de memoria que no existe (que excede la dirección más alta de la memoria flash del pic). GOTO carga el registro PC (program counter), por eso salta en esa instrucción.
Chequeá ese salto y si sigue el problema incluí el código fuente para poder ver mejor cual es el problema


----------



## mabauti (Ene 29, 2009)

cierto, postea el programa, asi puede ser mas sencillo.


----------



## Vossler (Ene 30, 2009)

soy pesimo en la realizacion de programas asi que espero que nadie se ria jaja


```
LIST	P=16F876

Estado		EQU		03
Puerto_A	EQU		05
Puerto_B	EQU		06
TMR1		EQU		0A
SEG			EQU		32
MIN			EQU		33
HOR			EQU		34

			ORG		00
			GOTO	INICIO
			ORG		05

INICIO
			BSF		Estado,5
			MOVLW	0xFF
			MOVWF	Puerto_A	
			CLRF	Puerto_B	
			MOVLW	0x09		
			MOVWF	TMR1
			BCF		Estado,5

COMIENZO						
			CLRF	SEG
			CLRF	MIN
			CLRF	HOR

SEGUNDOS		
			INCFSZ	SEG,1		
			MOVLW	0x3B		
			SUBWF	SEG,1		
			BTFSC	SEG,0		
			GOTO	SEGUNDOS	
		
MINUTOS
			INCFSZ	MIN,1		
			MOVLW	0x3B		
			SUBWF	MIN,0		
			BTFSS	MIN,2		
			GOTO	SEGUNDOS	

HORAS
			INCFSZ	HOR,1		
			MOVLW	0x18		
			SUBWF	HOR,0		
			BTFSS	HOR,2		
			GOTO	SE	

			GOTO	COMIENZO	



			END
```

El objetivo del programa es la configuracion del TMR1 del pic16F876 para que cuente horas minutos y segundos, se que queda  mucho codigo, es el comiezo aun 

no se rian


----------



## pepechip (Ene 30, 2009)

Asi por encima he comprobado que en la tercera linea empezando por el final tienes puesto "GOTO SE" y el "SE" no se encuentra en ninguna parte, asi que cuando llega esa instruccion no puede ejecutarse porque la direccion "SE" no se encuentra. Naturalmente el Mplab se da cuenta de este fallo.


----------



## Vossler (Feb 2, 2009)

SEGUNDOS      
         INCFSZ   SEG,1      
         MOVLW   0x3B      
         SUBWF   SEG,1      
         BTFSC   SEG,0      
         GOTO   SEGUNDOS 

En ese GOTO, ya se me cuelga el programa, gracias por avisar del fallo pero no llegar a esa tarea...


----------



## Vossler (Feb 10, 2009)

en verdad, necesito vuestra ayuda
no pido qe me hagais el codigo
solo que me digais...¿Como puedo hacerlo...que pasos he de seguir?ESque anda bastante perdido


----------



## Ardogan (Feb 11, 2009)

Creo que la cosa viene por este lado.
Declaraste TMR1 en la ubicación 0A, que en realidad corresponde a PCLATH, que se utiliza para obtener la dirección final del contador de programa (PCLATH + PC)
Entonces al poner:

MOVLW   0x09      
MOVWF   TMR1

estas en realidad cargando PCLATH con el valor 0x09, lo que altera el contador de programa y se ve recién al GOTO SEGUNDOS porque en esa instrucción se toman bits de PCLATH. En otras palabras, estarías haciendo un cambio de página.

Recomendación: usa arriba de todo 	
#include	<p16f876.inc>
y te olvidas de definir direcciones de registros de propósito específico (SFR) a mano. Sí vas a tener que seguir definiendo los de propósito general, que son tus variables de usuario (GPR's): en tu caso, SEG, MIN, HOR.

Saludos


----------



## Vossler (Feb 12, 2009)

gracias Ardogan


----------



## rayko (Feb 26, 2009)

Hola a todos,esta tarde haciendo un programa en el m-plab no me genera el codigo asembler,siempre me ha funcionado bien pero no se que le puede pasar,os dejo el mensaje que me sale para que veais ................muchas gracias,saludos.

Deleting intermediary files... done.
Executing: "C:\Archivos de programa\MPLAB IDE\MCHIP_Tools\mpasmwin.exe" /q /p16F84A "1.3.asm" /l"1.3.lst" /e"1.3.err"
Message[301] C:\ARCHIVOS DE PROGRAMA\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 37 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
BUILD FAILED: Thu Feb 26 19:35:24 2009


----------



## mabauti (Feb 26, 2009)

intenta cambiando el tipo de micro : Configure > select device  y en device selecciona el uC

si no lo resuelve, postea el programa , asi sera mas sencillo auxiliarte


----------



## Moyano Jonathan (Feb 26, 2009)

Es verdad postea el programa y fijate bien en las configuraciones del mplab, una ves matandome la cabeza para ver cual era mi error me di cuenta que el micro seleccionado no era el que estaba en el programa... una tontera pero puede causarte un gran dolor de cabeza si no lo configuras bien.


----------



## rayko (Feb 27, 2009)

;Leer el estado de los 5 interruptores E0-E4 conectados a RA0-RA4 y reflejar el nivel lógico de 
;los mismos sobre los leds S0-S4 conectados en RB0-RB4

		List	P=16F84A		;Tipo de procesador
		include	<P16F84A.INC>	;Incluye el fichero P16F84.INC que contiene la definición con los nombres 
					;de los registros internos


		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x05		;Salva el vector de interrupción

Inicio	        clrf 	PORTB		;Borra los latch de salida
		bsf	STATUS,RP0	;Selecciona banco 1 de la memoria de datos
		clrf	TRISB		;Puerta B se configura como salida
		movlw	b'00011111'		
		movwf	TRISA		;Puerta A se configura como entrada
		bcf	STATUS,RP0	;Selecciona banco 0 de la memoria de datos

Loop		movf	PORTA,W		;Leer las entradas RA0-RA4
		movwf	PORTB		;Reflejar en las salidas
		goto	Loop		;Bucle sin fin

		end			;Fin del programa fuente


Es con cualquier programa no es con uno en especial y lo del tipo de micro ya lo mire,saludos


----------



## mabauti (Feb 27, 2009)

con la adecuacion que te dije, el programa que posteas al compilarlo MPLab no me marca errores y si genera el  archivo .hex correspondiente


fijate que tipo de micro te marca en la barra de status del MPLab


----------



## rayko (Feb 28, 2009)

Hola,el programa ya me trabaja bien,pero lo sorprendente es que no le hice nada para solucionarlo,lo del micro ya lo habia chequeado,pero muchas gracias por haberme contestado.
Saludos.


----------



## MILmaster (Mar 19, 2009)

Hola amigos lo que pasa es que recien ando iniciandome en programacion de pics en C  yo manejaba assembler sin problemas y ahora he intentado programar en C  pero el mplab no acepta la compilacion me sale este error 

Executing: "C:\Archivos de programa\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe" --pass1 "E:\ELECTRONICA\PROGRAMAS MIL\primero.c" -q --chip=16F84 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error   [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" 
Error   [141] E:\ELECTRONICA\PROGRAMAS MIL\primero.c; 12.18 can't open include file "16F84.h": No such file or directory

al parecer no jala el include no lo acepta nose que puede estar faltandome cualquier ayuda se los agredecere saludos.

PD. El pic q utilizo es el 16f84 y el compilador el de hi tech que viene con el mplab 8.10


----------



## brody (Mar 21, 2009)

aparte del mplab otro programador de pic. por fa contesten


----------



## mabauti (Mar 21, 2009)

puedes encontrar versiones gratuitas de otros compiladores (aunque limitadas) aqui : http://softwarepic.50webs.com/freesoft.html


----------



## DMag00 (Mar 25, 2009)

En lugar de declarar

#include <16F84.h> esto solo lo haces con ensamblador

La forma correcta en Hi tech
es 

#inlude <pic.h> para programar en Ansi C


----------



## DMag00 (Mar 25, 2009)

Ha! tambien tienes que crear un proyecto nuevo, al cual deberas agregarle el codigo fuente; no sin antes seleccionar la herramienta de compilación correcta.

Deberias revisar algun manual; en este momento no tengo ninguno a la mano, creo que lo puedes obtener en la pagina de hi- tech.
Si encuentro un manual te lo envio; ya que no recuerdo bien todo el procedimiento.


----------



## Alexdro7 (Abr 12, 2009)

Hola a todos

  Tengo un problema al compilar con el PIC18, el error es el siguente:

Error[105]   C:\USERS\ALEJANDRO\DESKTOP\PROJECTS MPLAB\NITO_PROJECT.ASM 72 : Cannot open file (Include File "RETARDOS.INC" not found)
Halting build on first failure as requested.

ya agregue el archivo de retardos.inc en la carpeta de Header Files y lo guarde iy aun asi sigo teniendo ese error, agradeceria su ayuda, gracias

tambien dejo el programa para que lo vean...
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
	LIST P=16F84
	#include <p16F84a.inc>

	CBLOCK 0X0C
	ENDC

	#DEFINE B0 BCF STATUS,RP0
	#DEFINE B1 BSF STATUS,RP0
	#DEFINE SERVO PORTB,7
	ORG 0

	B1
	MOVLW B'00001111'
	MOVWF TRISB
	BCF OPTION_REG,NOT_RBPU
	B0
	BCF SERVO


INICIO
	BTFSS PORTB,0
	GOTO DERECHA
	BTFSS PORTB,1
	GOTO IZQUIERDA
	BSF SERVO
	CALL RET_CENTRO
	BCF SERVO
	CALL RET_RESTANTE
	GOTO INICIO


DERECHA
	BSF SERVO
	CALL Retardo_1ms
	CALL Retardo_500micros
	CALL Retardo_200micros
	CALL Retardo_100micros
	;CALL Retardo_20micros
	NOP
	NOP
	NOP
	NOP
	BCF SERVO
	CALL RET_RESTANTE
	GOTO INICIO

IZQUIERDA
	BSF SERVO
	CALL Retardo_1ms
	CALL Retardo_50micros
      CALL Retardo_20micros
	;CALL Retardo_20micros
	BCF SERVO
	CALL RET_RESTANTE
	GOTO INICIO

RET_CENTRO
	CALL Retardo_1ms
	CALL Retardo_200micros
	CALL Retardo_200micros
	CALL Retardo_50micros
	;CALL Retardo_10micros

	;CALL Retardo_20micros
	RETURN

RET_RESTANTE
	CALL Retardo_10ms
	RETURN

	INCLUDE<RETARDOS.INC>
	END




muchas gracias


----------



## mabauti (Abr 12, 2009)

coloca el archivo *.inc en el mismo lugar que el archivo *.asm


----------



## Vick (Abr 12, 2009)

mabauti dijo:
			
		

> coloca el archivo *.inc en el mismo lugar que el archivo *.asm



o en la carpeta del MPASM, que debe ser:

C:\Archivos de programa\Microchip\MPASM Suite

Donde estan los demas archivos .INC, así el ensamblador buscará automáticamente ahí todos los archivos .INC que coloques en tus programas...


----------



## FenixSpook (Abr 27, 2009)

Hola a toda la comunidad, antetodo quiero presentarme soy un usuario que le gusta la electrónica ya que la he estudiado en mi carrera y también la tengo como hobby. También quiero felicitaros por el foro, veo que tenéis muchísima información y bastante interesante. Hace poco he creado un programa para el PIC16F873 así que me descargué la última versión del MPLAB y veo que el interfaz ha cambiado bastante, hará cosa de 4 años que no volvía a programar PICs, cuando meto el asm para compilar me da un error de librería. ¿Alguien sabe cómo se soluciona esto?


----------



## Ardogan (Abr 27, 2009)

¿Y cual es el error de librería? (hay unos cuantos).
Viendo que retomaste después de un paso largo, ¿seguiste todos los pasos que menciona la ayuda para crear un nuevo proyecto? con el wizard: elegir pic, archivo inc, archivo lkr, y el template en asm (opcional).


----------



## FenixSpook (Abr 27, 2009)

Sí, he seguido todos los pasos del wizard. Pero ya he arreglado me lo compila pero me salen mensajes del estilo "Message[302] C:\PROGRAMACION\PROYECTO1.ASM 19 : Register in operand not in bank 0. Ensure that bank bits are correct."

Así que me va a tocar mirar los bancos bancos. Muchas gracias por todo.


----------



## Ardogan (Abr 27, 2009)

Ok, para el tema bancos te recomiendo usar banksel, y para cambios de página de memoria de programa-> pagesel. Así no tenés que andar viendo a qué banco pertenece cada registro que vas a usar.
Ya hablamos en el foro de banksel y pagesel en el foro, lo podés encontrar con el buscador para más detalles (también en la ayuda del mpasm).
Saludos.


----------



## FenixSpook (Abr 27, 2009)

Yo es que soy de la vieja escuela y en el programa tengo:

BCF   STATUS,RP1
BSF   STATUS,RP0

Para ir al banco 1 y entonces configurar las entradas y salidas en el TRISA, y creo que lo tengo todo bien.

Aun así te haré caso y echaré un vistazo a lo que me has dicho. Muchísimas gracias por todo. Creo que este es el mejor foro de electrónica de toda la Red.


----------



## El nombre (Abr 27, 2009)

Solo has puesto eso?
Pega todo el programa.


----------



## FenixSpook (Abr 27, 2009)

Ya está chicos lo he solucionado muchas gracias por todo. Me habéis sido de gran ayuda.


----------



## pic-man (Abr 27, 2009)

los mensajes tipo "Message[302]" no son errores, son warnings o advertencias del compilador para avisarte que algo puede estar mal. En este caso el mensaje 302 se refiere a los bancos de memoria, tu cambias al banco 1 para configurar los registros TRIS y lo haces de la manera correcta, pero el compilador no esta seguro de que lo hayas hecho de la manera correcta ya que estas trabajando con el registro 0x85 y a el le gustaría que usaras el 0x05. Si estando en el banco 1 modificas el registro PORTA en lugar del TRISA el compilador no te marca ningún mensaje, aunque esa sea la manera incorrecta de configurar los puertos.

Esto que te digo es posible aunque no es la manera correcta de trabajar. Si estás en el banco 1 para el compilador TRISA y PORTA son iguales y equivalen al registro 0x05 de ese banco. Pero por los mensajes 302 no te preocupes tanto, probablemente el compilador esté equivocado.


----------



## FenixSpook (Abr 27, 2009)

Efectivamente, pic-man tiene toda la razón. Al final es lo que he hecho para que el compilador deje de mostrar mensajes. Muchísimas gracias por todo.


----------



## giovarp (May 5, 2009)

hola soy nuevo en el foro y tengo el siguiente problema estoy comensando en la programacion de los pic e instale el mplab para programar me pasa el siguiente problema cuando cargo el .asm y luego le ago el quickbuild para compilar y dejarlo en hex me tira error a pesar de que lo e compilado en otro pc y me compila sin problema lo e instalado mas de 5 veces pensando k es por k keda mal instalado si alguien me puede ayudar pliss ya noc que es


----------



## Chico3001 (May 5, 2009)

Si colocas una captura del error y/o el programa ayudaria mucho para encontrar la causa del problema, de otro modo solo adivinariamos...


----------



## mabauti (May 5, 2009)

que error te aparece?

postea el programa , asi sera menos complicado auziliarte?


----------



## giovarp (May 5, 2009)

estoy desintalando el mplab e instalando otra version en si sigo con el mismo problema subo los errores ok


----------



## giovarp (May 5, 2009)

```
;***************************************************************
;programa ejemplo ej01b.asm	b por Basico (16f876a)
;fecha: SaApril26_08
;este programa realiza I/O y es bueno como verificacion
;del proceso global sobre un PIC
;lee por el port A y escribe por el port B el mismo dato como ¬dato 
;revision: 00			programa para PIC16F84
;velocidad de reloj:		instruccion: 
;watchdog: disable		tipo reloj: XT
;proteccion de codigo:
;***************************************************************
		LIST p=16F876a	;tipo de PIC
;***************************************************************
portA EQU 0x05	;direccion del registro asociado al port A
portB EQU 0x06 ;direccion del registro asociado al port B
;***************************************************************
		ORG 0
			goto INICIO
		ORG 05
;***************************************************************
INICIO			movlw 0ff	;W<-FF
			tris portA	;TRISA<-W	portA as Input
			movlw 00	;W<-00
			tris portB	;TRISB<-W	portB as Output
LOOP_1			movf portA,0	;W<-portA
			comf portA,0	;W<- ¬W
			movwf portB	;portB<-W
			goto LOOP_1	;lazo...
			END
;***************************************************************
```


ese es el programa los errores son los siguientes

Warning[215] D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 12 : Processor superseded by command line.  Verify processor symbol.
Warning[226] D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 18 : Destination address must be word aligned
Error[157]   D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 19 : ORG at odd address
Warning[207] D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 22 : Found label after column 1. (tris)
Error[122]   D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 22 : Illegal opcode (portA)
Warning[207] D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 24 : Found label after column 1. (tris)
Error[122]   D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 24 : Illegal opcode (portB)
Warning[226] D:\ELECTRONICA\ULTIMO AñO\COMPUTADORES\EXAMP01.ASM 28 : Destination address must be word aligned


----------



## giovarp (May 5, 2009)

aqui otro programa 


```
;PROGRAMA Menu.ASM

;*************** MAIN ************************
DEFSEG MENU, START=00H
SEG MENU

INICIO: JB P3.7,$

OPCION: JB P3.0, PROBAR
JB P3.1, DOS

CERO CALL ROTA0
JMP INICIO

PROBAR: JB P3.1, TRES

UNO: CALL ROTA1
JMP INICIO

DOS: CALL ROTA2
JMP INICIO

TRES: CALL ROTA3
JMP INICIO

;**********************************************

ROTA0: MOV A,#01H

LAZO10: MOV P1,A
MOV P2,A
ACALL RETARDO
RL A
CJNE A,#80H,LAZO10
MOV P1,A
MOV P2,A
ACALL RETARDO
MOV A,#80H

LAZO20: MOV P1,A
MOV P2,A
ACALL RETARDO
RR A
CJNE A,#01H,LAZO20
MOV P1,A
MOV P2,A
ACALL RETARDO

RET

;********************************************
ROTA1: MOV A,#01H

LAZO11: MOV P1,A
MOV P2,A
ACALL RETARDO
RL A
CJNE A,#80H,LAZO11
MOV P1,A
MOV P2,A
ACALL RETARDO
MOV P1,#00H
MOV P2,#00h
RET

;********************************************
ROTA2: MOV A,#80H

LAZO12: MOV P1,A
MOV P2,A
ACALL RETARDO
RR A
CJNE A,#01H,LAZO12
MOV P1,A
MOV P2,A
ACALL RETARDO
MOV P1,#00H
MOV P2,#00h
RET

;**********************************************

ROTA3: MOV A,#01H

LAZO13: MOV P1,A
ACALL RETARDO
RL A
CJNE A,#80H,LAZO13
MOV P1,A
ACALL RETARDO
MOV P1,#00H


MOV A,#01H

LAZO23: MOV P2,A
ACALL RETARDO
RL A
CJNE A,#80H,LAZO23
MOV P2,A
ACALL RETARDO
MOV P2,#00h

RET

;********RETARDO PARA EL SIMULADOR********

RETARDO: MOV R0,#20
DJNZ R0,$
RET

END
```

aqui los errores 


```
Error[122]   D:\1.ASM 4 : Illegal opcode (MENU)
Error[122]   D:\1.ASM 5 : Illegal opcode (MENU)
Error[122]   D:\1.ASM 7 : Illegal opcode (JB)
Error[122]   D:\1.ASM 9 : Illegal opcode (JB)
Error[122]   D:\1.ASM 10 : Illegal opcode (P3.1)
Error[113]   D:\1.ASM 12 : Symbol not previously defined (ROTA0)
Error[122]   D:\1.ASM 13 : Illegal opcode (INICIO)
Error[122]   D:\1.ASM 15 : Illegal opcode (JB)
Error[113]   D:\1.ASM 17 : Symbol not previously defined (ROTA1)
Error[122]   D:\1.ASM 18 : Illegal opcode (INICIO)
Error[113]   D:\1.ASM 20 : Symbol not previously defined (ROTA2)
Error[122]   D:\1.ASM 21 : Illegal opcode (INICIO)
Error[113]   D:\1.ASM 23 : Symbol not previously defined (ROTA3)
Error[122]   D:\1.ASM 24 : Illegal opcode (INICIO)
Error[122]   D:\1.ASM 28 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 30 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 31 : Illegal opcode (P2)
Error[122]   D:\1.ASM 32 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 33 : Illegal opcode (A)
Error[122]   D:\1.ASM 34 : Illegal opcode (A)
Error[122]   D:\1.ASM 35 : Illegal opcode (P1)
Error[122]   D:\1.ASM 36 : Illegal opcode (P2)
Error[122]   D:\1.ASM 37 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 38 : Illegal opcode (A)
Error[122]   D:\1.ASM 40 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 41 : Illegal opcode (P2)
Error[122]   D:\1.ASM 42 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 43 : Illegal opcode (A)
Error[122]   D:\1.ASM 44 : Illegal opcode (A)
Error[122]   D:\1.ASM 45 : Illegal opcode (P1)
Error[122]   D:\1.ASM 46 : Illegal opcode (P2)
Error[122]   D:\1.ASM 47 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 52 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 54 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 55 : Illegal opcode (P2)
Error[122]   D:\1.ASM 56 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 57 : Illegal opcode (A)
Error[122]   D:\1.ASM 58 : Illegal opcode (A)
Error[122]   D:\1.ASM 59 : Illegal opcode (P1)
Error[122]   D:\1.ASM 60 : Illegal opcode (P2)
Error[122]   D:\1.ASM 61 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 62 : Illegal opcode (P1)
Error[122]   D:\1.ASM 63 : Illegal opcode (P2)
Error[122]   D:\1.ASM 67 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 69 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 70 : Illegal opcode (P2)
Error[122]   D:\1.ASM 71 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 72 : Illegal opcode (A)
Error[122]   D:\1.ASM 73 : Illegal opcode (A)
Error[122]   D:\1.ASM 74 : Illegal opcode (P1)
Error[122]   D:\1.ASM 75 : Illegal opcode (P2)
Error[122]   D:\1.ASM 76 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 77 : Illegal opcode (P1)
Error[122]   D:\1.ASM 78 : Illegal opcode (P2)
Error[122]   D:\1.ASM 83 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 85 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 86 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 87 : Illegal opcode (A)
Error[122]   D:\1.ASM 88 : Illegal opcode (A)
Error[122]   D:\1.ASM 89 : Illegal opcode (P1)
Error[122]   D:\1.ASM 90 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 91 : Illegal opcode (P1)
Error[122]   D:\1.ASM 94 : Illegal opcode (A)
Error[122]   D:\1.ASM 96 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 97 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 98 : Illegal opcode (A)
Error[122]   D:\1.ASM 99 : Illegal opcode (A)
Error[122]   D:\1.ASM 100 : Illegal opcode (P2)
Error[122]   D:\1.ASM 101 : Illegal opcode (RETARDO)
Error[122]   D:\1.ASM 102 : Illegal opcode (P2)
Error[122]   D:\1.ASM 108 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 109 : Illegal opcode (R0)
Warning[205] D:\1.ASM 112 : Found directive in column 1. (END)
```


----------



## giovarp (May 5, 2009)

Otro programa mas corto con problemas no funsiona ningunoo que esta pasando alguien sabeee aaa


```
DEFSEG CONTADOR, START=00H
       SEG  CONTADOR

INICIO: MOV R1,#0
INCREM: MOV A,R1
        INC A
        MOV R1,A
        ACALL BINBCD
        MOV P1,A
        ACALL RETARDO
        CJNE R1, #99, INCREM
        JMP  INICIO

BINBCD: MOV B,#10
        DIV AB
        SWAP A
        ADD A,B
        RET

RETARDO:MOV R0,#20
        DJNZ R0,$
        RET


       END
```

errores de este programa 


```
Error[122]   D:\1.ASM 1 : Illegal opcode (CONTADOR)
Warning[207] D:\1.ASM 2 : Found label after column 1. (SEG)
Error[122]   D:\1.ASM 2 : Illegal opcode (CONTADOR)
Error[122]   D:\1.ASM 4 : Illegal opcode (MOV)
Error[122]   D:\1.ASM 5 : Illegal opcode (MOV)
Warning[207] D:\1.ASM 6 : Found label after column 1. (INC)
Error[122]   D:\1.ASM 6 : Illegal opcode (A)
Warning[207] D:\1.ASM 7 : Found label after column 1. (MOV)
Error[122]   D:\1.ASM 7 : Illegal opcode (R1)
Warning[207] D:\1.ASM 8 : Found label after column 1. (ACALL)
Error[122]   D:\1.ASM 8 : Illegal opcode (BINBCD)
Warning[207] D:\1.ASM 9 : Found label after column 1. (MOV)
Error[122]   D:\1.ASM 9 : Illegal opcode (P1)
Warning[207] D:\1.ASM 10 : Found label after column 1. (ACALL)
Error[122]   D:\1.ASM 10 : Illegal opcode (RETARDO)
Warning[207] D:\1.ASM 11 : Found label after column 1. (CJNE)
Error[122]   D:\1.ASM 11 : Illegal opcode (R1)
Warning[207] D:\1.ASM 12 : Found label after column 1. (JMP)
Error[122]   D:\1.ASM 12 : Illegal opcode (INICIO)
Error[122]   D:\1.ASM 14 : Illegal opcode (MOV)
Warning[207] D:\1.ASM 15 : Found label after column 1. (DIV)
Error[122]   D:\1.ASM 15 : Illegal opcode (AB)
Warning[207] D:\1.ASM 16 : Found label after column 1. (SWAP)
Error[122]   D:\1.ASM 16 : Illegal opcode (A)
Warning[207] D:\1.ASM 17 : Found label after column 1. (ADD)
Error[122]   D:\1.ASM 17 : Illegal opcode (A)
Warning[207] D:\1.ASM 18 : Found label after column 1. (RET)
Error[122]   D:\1.ASM 20 : Illegal opcode (MOV)
Warning[207] D:\1.ASM 21 : Found label after column 1. (DJNZ)
Error[122]   D:\1.ASM 21 : Illegal opcode (R0)
Warning[207] D:\1.ASM 22 : Found label after column 1. (RET)
```


----------



## mabauti (May 5, 2009)

el primer programa lo compile y no tuve error

checa la configuracion en : Configure > select device
de preferencia cambia el archivo .asm al directorio raiz, por ejemplo : D: miarchivo.asm y compilalo alli

yo estoy usando el MPLab 7.5


en los demas programas , me parece que no usas instrucciones propias del UC ; bajate la hoja de datos para que sepas que instrucciones puedes utilizar


----------



## giovarp (May 5, 2009)

ok el problema es que e compilado en otros compuradores con el mismo software y los mismos programas y compilan entonces noc realmente cual es el problema entiendo que debe ser el software intalado en mi maquina pero puntalmente nose que seria ya que falla solamente en mi pc siguiendo los mismos pasos que siempre bajare el mplab 7.5 y vere como anda pero la verdad que e probado distintos y lo mismo


----------



## giovarp (May 5, 2009)

mabauti dijo:
			
		

> el primer programa lo compile y no tuve error
> 
> checa la configuracion en : Configure > select device
> de preferencia cambia el archivo .asm al directorio raiz, por ejemplo : D: miarchivo.asm y compilalo alli
> ...




modifique el selct device tampoco sigue teniendo los mismos errores bajare la version 7.5 y posteo como me fue espero su ayuda


----------



## giovarp (May 5, 2009)

Instale el mplab 7.5 y ensamble el siguiente programa 
	
	



```
;***************************************************************
;programa ejemplo ej01b.asm b por Basico (16f876a)
;fecha: SaApril26_08
;este programa realiza I/O y es bueno como verificacion
;del proceso global sobre un PIC
;lee por el port A y escribe por el port B el mismo dato como ¬dato
;revision: 00 programa para PIC16F84
;velocidad de reloj: instruccion:
;watchdog: disable tipo reloj: XT
;proteccion de codigo:
;***************************************************************
LIST p=16F876a ;tipo de PIC
;***************************************************************
portA EQU 0x05 ;direccion del registro asociado al port A
portB EQU 0x06 ;direccion del registro asociado al port B
;***************************************************************
ORG 0
goto INICIO
ORG 05
;***************************************************************
INICIO movlw 0ff ;W<-FF
tris portA ;TRISA<-W portA as Input
movlw 00 ;W<-00
tris portB ;TRISB<-W portB as Output
LOOP_1 movf portA,0 ;W<-portA
comf portA,0 ;W<- ¬W
movwf portB ;portB<-W
goto LOOP_1 ;lazo...
END
;***************************************************************
```

me tiro los siguientes errores  creo que son solamente warning de manera que no tendria problema o si ?


```
Warning[205] D:\PRUEBA.ASM 12 : Found directive in column 1. (LIST)
Warning[205] D:\PRUEBA.ASM 17 : Found directive in column 1. (ORG)
Warning[203] D:\PRUEBA.ASM 18 : Found opcode in column 1. (goto)
Warning[205] D:\PRUEBA.ASM 19 : Found directive in column 1. (ORG)
Warning[203] D:\PRUEBA.ASM 22 : Found opcode in column 1. (tris)
Warning[224] D:\PRUEBA.ASM 22 : Use of this instruction is not recommended.
Warning[203] D:\PRUEBA.ASM 23 : Found opcode in column 1. (movlw)
Warning[203] D:\PRUEBA.ASM 24 : Found opcode in column 1. (tris)
Warning[224] D:\PRUEBA.ASM 24 : Use of this instruction is not recommended.
Warning[203] D:\PRUEBA.ASM 26 : Found opcode in column 1. (comf)
Warning[203] D:\PRUEBA.ASM 27 : Found opcode in column 1. (movwf)
Warning[203] D:\PRUEBA.ASM 28 : Found opcode in column 1. (goto)
Warning[205] D:\PRUEBA.ASM 29 : Found directive in column 1. (END)
```


----------



## kuropatula (May 26, 2009)

Estimados, 

Programo hace mucho tiempo en MikroC. Ahora quiero migrar a C18 pero prengo un problema: el compilador no me reconoce los registros, como por ejemplo el TRISA. Ya configuré en "select lenguaje tool locations" el C18
Adjunto una imagen de lo que me pasa. 
Muchas gracias de ante mano.
Saludos


----------



## kuropatula (May 26, 2009)

Bueno, solucioné mi problema. Lo que hice fue sacar el archivo .lkr y hacer esto:
Entorno: Mplab IDE v8.10
Error: "Error - could not find file 'c018i.o'."

Este error se genera por que no se adjuntó la dirección en donde se encuentran las librerias, entonces la solución será como sigue:

project -> build options -> project -> directories ->library search path -> new

Agregar el directorio:
c:/MCC18/lib


Esto lo saqué de la pagina: http://txos.blogspot.com/2008/09/error-could-not-find-file-c018io.html


----------



## wilogiba (May 31, 2009)

Tengo un problema con la programacion estoy haciendo un sensor de niveles de liquido segun yo esta bien la programacion pero me envia los seguientes errores... :


Executing: "D:\MPLAB IDE\MCHIP_Tools\mpasmwin.exe" /q /p18F452 "tankepozo.asm" /l"tankepozo.lst" /e"tankepozo.err"
Warning[215] C:\TANKEPOZO.ASM 2 : Processor superseded by command line.  Verify processor symbol.
Message[301] D:\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 37 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Error[126]   D:\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 116 : Argument out of range (must be greater than or equal to 255)
Error[126]   D:\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 117 : Argument out of range (__MAXRAM must be used first)
Error[126]   D:\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 117 : Argument out of range (__MAXRAM must be used first)
Error[126]   D:\MPLAB IDE\MCHIP_TOOLS\P16F84.INC 117 : Argument out of range (__MAXRAM must be used first)
Error[126]   C:\TANKEPOZO.ASM 4 : Argument out of range (not a valid config register address)
Error[107]   C:\TANKEPOZO.ASM 55 : Illegal digit
Error[108]   C:\TANKEPOZO.ASM 55 : Illegal character (0)


*mi programa es el siguiente me gustaria que me ayudaran a corregir los errores....:
*

LIST		P=16F84
	#include		P16F84.INC
	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
	ORG 	0					
Inicio
	clrf	PORTB				
	bsf		STATUS,RP0			
	clrf	TRISB				
	movlw	b'00001111'			
	movwf	TRISA
	bcf		STATUS,RP0			
Principal
	movf	PORTA,W				
	andlw	b'00001111'			
	addwf	PCL,F				
	goto	Configuracion0
	goto	Configuracion1
	goto	Configuracion2
	goto	Configuracion3
	goto	Configuracion4
	goto	Configuracion5
	goto	Configuracion6
	goto	Configuracion7
	goto	Configuracion8
	goto	Configuracion9
	goto	Configuracion10
	goto	Configuracion11
	goto	Configuracion12
	goto	Configuracion13
	goto	Configuracion14
	goto	Configuracion15
Configuracion0
	movlw 	b'01100000'			
	goto	ActivaSalida
Configuracion1
	movlw 	b'01000001'			
	goto	ActivaSalida
Configuracion2
	movlw 	b'01000010'			
	goto	ActivaSalida
Configuracion3
	movlw 	b'01000011'			
	goto	ActivaSalida
Configuracion4
	movlw 	b'00110100'			
	goto	ActivaSalida
Configuracion5
	movlw 	b'00010101'			
	goto	ActivaSalida
Configuracion6
	movlw 	b'00100110'			
	goto	ActivaSalida
Configuracion7
	movlw 	b'00000111'			.
	goto	ActivaSalida
Configuracion8
	movlw 	b'01111000'			
	goto	ActivaSalida
Configuracion9
	movlw 	b'01011001'			
	goto	ActivaSalida
Configuracion10
	movlw 	b'01101010'			
	goto	ActivaSalida
Configuracion11
	movlw 	b'01001011'			
	goto	ActivaSalida
Configuracion12
	movlw 	b'00111100'			
	goto	ActivaSalida
Configuracion13
	movlw 	b'00011101'			
	goto	ActivaSalida
Configuracion14
	movlw 	b'00101110'			
	goto	ActivaSalida
Configuracion15
	movlw 	b'00001111'			
	goto	ActivaSalida
ActivaSalida
	movwf	PORTB				
	goto 	Principal

	END

De antemano gracias a la persona que me ayude..! ^^


----------



## Manonline (May 31, 2009)

es un PIC16F84 o un PIC16F84A?


----------



## wilogiba (May 31, 2009)

es un PIC 16F84


----------



## Manonline (May 31, 2009)

Bueno... el error es que en el MPLAB estabas eligiendo el dspositivo equivocado... Para esto anda a "Configure -> Select device..." y elegi al PIC16F84

otro error es que tenias un punto volando en la "Configuracion 7" que tiraba "ilegal digit".

te dejo el codigo que lo pase en limpio.


```
;****************************************************************
; Saltos indexados para algo
;****************************************************************
	LIST	p=16F84A
	#INCLUDE <p16f84.inc>


	__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC
	ERRORLEVEL	-302

;****************************************************************
	ORG	0x0000
	goto	Inicio

;****************************************************************

Inicio 
	clrf	PORTB	
	bsf	 STATUS,RP0	
	clrf	TRISB	
	movlw	b'00001111'	
	movwf	TRISA 
	bcf	 STATUS,RP0	
Principal 
	movf	PORTA,W	
	andlw	b'00001111'	
	addwf	PCL,F
Tabla
	goto	Configuracion0 
	goto	Configuracion1 
	goto	Configuracion2 
	goto	Configuracion3 
	goto	Configuracion4 
	goto	Configuracion5 
	goto	Configuracion6 
	goto	Configuracion7 
	goto	Configuracion8 
	goto	Configuracion9 
	goto	Configuracion10 
	goto	Configuracion11 
	goto	Configuracion12 
	goto	Configuracion13 
	goto	Configuracion14 
	goto	Configuracion15 
Configuracion0 
	movlw	b'01100000'	
	goto	ActivaSalida 
Configuracion1 
	movlw	b'01000001'	
	goto	ActivaSalida 
Configuracion2 
	movlw	b'01000010'	
	goto	ActivaSalida 
Configuracion3 
	movlw	b'01000011'	
	goto	ActivaSalida 
Configuracion4 
	movlw	b'00110100'	
	goto	ActivaSalida 
Configuracion5 
	movlw	b'00010101'	
	goto	ActivaSalida 
Configuracion6 
	movlw	b'00100110'	
	goto	ActivaSalida 
Configuracion7 
	movlw	b'00000111'
	goto	ActivaSalida 
Configuracion8 
	movlw	b'01111000'	
	goto	ActivaSalida 
Configuracion9 
	movlw	b'01011001'	
	goto	ActivaSalida 
Configuracion10 
	movlw	b'01101010'	
	goto	ActivaSalida 
Configuracion11 
	movlw	b'01001011'	
	goto	ActivaSalida 
Configuracion12 
	movlw	b'00111100'	
	goto	ActivaSalida 
Configuracion13 
	movlw	b'00011101'	
	goto	ActivaSalida 
Configuracion14 
	movlw	b'00101110'	
	goto	ActivaSalida 
Configuracion15 
	movlw	b'00001111'	
	goto	ActivaSalida 
ActivaSalida 
	movwf	PORTB	
	goto	Principal 

;*************************************************************************

	END
```

saludos!


----------



## wilogiba (May 31, 2009)

es la primera vez que trabajo en programacion de pic asi es que no estoy familiarizado con el MPLAB solo otra duda me manda una serie de advertencias no se a que se deba te las muestro para que me orientes en el por que ....:

Warning[205] D:\MPLAB IDE\DLLS\TANKES.ASM 1 : Found directive in column 1. (LIST)
Warning[205] D:\MPLAB IDE\DLLS\TANKES.ASM 5 : Found directive in column 1. (__CONFIG)
Warning[205] D:\MPLAB IDE\DLLS\TANKES.ASM 6 : Found directive in column 1. (ERRORLEVEL)
Warning[205] D:\MPLAB IDE\DLLS\TANKES.ASM 9 : Found directive in column 1. (ORG)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 10 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 15 : Found opcode in column 1. (clrf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 16 : Found opcode in column 1. (bsf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 17 : Found opcode in column 1. (clrf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 18 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 19 : Found opcode in column 1. (movwf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 20 : Found opcode in column 1. (bcf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 22 : Found opcode in column 1. (movf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 23 : Found opcode in column 1. (andlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 24 : Found opcode in column 1. (addwf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 26 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 27 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 28 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 29 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 30 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 31 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 32 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 33 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 34 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 35 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 36 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 37 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 38 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 39 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 40 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 41 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 43 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 44 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 46 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 47 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 49 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 50 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 52 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 53 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 55 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 56 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 58 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 59 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 61 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 62 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 64 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 65 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 67 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 68 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 70 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 71 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 73 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 74 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 76 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 77 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 79 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 80 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 82 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 83 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 85 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 86 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 88 : Found opcode in column 1. (movlw)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 89 : Found opcode in column 1. (goto)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 91 : Found opcode in column 1. (movwf)
Warning[203] D:\MPLAB IDE\DLLS\TANKES.ASM 92 : Found opcode in column 1. (goto)
Warning[205] D:\MPLAB IDE\DLLS\TANKES.ASM 95 : Found directive in column 1. (END)

me gustaria saber a que se debe .. GRACIAS.!


----------



## mabauti (May 31, 2009)

muchas veces los warnings no alteran la ejecucion del programa.

Esto





> Found directive in column 1


no tiene mucha importancia, el programa en sí debe funcionar.


----------



## Manonline (May 31, 2009)

Lo que significa eso es que estas poniendo la instruccion en la columna numero 1. Para que entiendas mejor que voy a poner una demostracion de como es la estructura de un programa:


```
Columna 1	Columna 2	Columna 3	Columna 4
Etiqueta	Instruccion	Operandos	Comentario
```

*Etiqueta:* Es una etiqueta descriptiva o referencia que se pone en distintas partes del programa para poder realizar saltos o llamados (goto y call) de forma mas intuitiva.

Ejemplo:


```
Columna 1	Columna 2	Columna 3	Columna 4
Principal	sleep		;entra en modo de bajo consumo
	goto	Principal	;despues de despertarse, salta a la primer
			;instruccion despues de la etiqueta "Principal"
```

*Instruccion:* Es la instruccion a ejecutar por el micro
*Operandos:* Son el/los operandos que se vinculan con la instruccion.

Ejemplo:


```
Columna 1	Columna 2	Columna 3	Columna 4
Principal	bsf	SATUTS,RP0	;Banco 1
	movlw	0xFF	;Carga W con 0xFF, b'11111111' ó .255
	movwf	TRISB	;Pone todos los pines del Puerto B como entrada
	bcf	STATUS,RP0	;Banco 0
```

*Comentario:* Se usa para ir describiendo el programa a medida que se escribe, y al momento de debuggear o que otra persona lo lea, se entienda que es lo que se hizo en el proceso de programacion.


Las etiquetas y comentarios no se graban en la memoria del pic, asi que no tengas miedo de llenar el programa de comentarios, pero tampoco te vayas de mambo y sea puro comentario para un programa boludo. Lo mismo con las etiquetas, al programar se reemplazan las etiquetas por la posicion en memoria, asi que los "goto Principal" se reemplazan por ejemplo por "goto 0x0005".

Bueno, espero que esto te sirva al momento de programar.

Saludos,
mano.

P.D.: El formateo de codigo no acomoda bien las columnas, pero creo que vas a entender bien


----------



## wilogiba (May 31, 2009)

muchas gracias por la información ya corregi los datos y ya no me dio ninguna advertencia muchas gracias por todo Manonline fuiste de mucha ayuda..! Saludos


----------



## Miguel Cortez (Jun 7, 2009)

Hola amigo!
Soy totalmente nuevo en este mundo de los PIC's y en la actualidad estoy tratando de aprender por medio de un entrenador y el MPLAB 8.10 en asm. Pues bien, en el entrenador tengo montado el pic16f64a. Al crear un programa por medio del MPLAB y mandarlo a compilar me da el siguiente problema:

Error[113]   C:\USERS\.....................\DOCUMENTS\PROYECTO\1.ASM 19 : Symbol not previously defined (DELAY_500MS)
Error[105]   C:\USERS\................\DOCUMENTS\PROYECTO\1.ASM 22 : Cannot open file (Include File "DELAYS.INC" not found)
Halting build on first failure as requested.

Por favor me podrías orientar para ver a que se debe este problema?
Gracias de ante manos!


----------



## Vick (Jun 8, 2009)

Hola Miguel:

El primer error es por que estas intentando llamar a una subrutina que no esta, y esto se debe al segundo error, que es que el ensamblador no encuentra la librería DELAYS.INC, asegurate de colocar dicha librería en el lugar adecuado.

Saludos...


----------



## Miguel Cortez (Jun 8, 2009)

Muchas gracias amigo! No habia notado que hay que colocar en la carpeta donde se guarda el .asm un sub-programa que se llama dislay. Al incuir este automaticamente el MPLAB lo asocia. Nuevamente muchas gracias!


----------



## andy1 (Jul 7, 2009)

hola compas tengo problemas con mplab no me toma las intruccones rlf y rrf , y status no funciona .
alguien que me colabore con este problema , ya instale 2 verciones y nada , que pasa?

gracias por su colaboracion


----------



## Chico3001 (Jul 7, 2009)

andy1 dijo:
			
		

> hola compas tengo problemas con mplab no me toma las intruccones rlf y rrf , y status no funciona .
> alguien que me colabore con este problema , ya instale 2 verciones y nada , que pasa?
> 
> gracias por su colaboracion



Tal vez si nos dijeras cual es el error que marca MPLAB, postearas tu programa y nos dijeras que version de PIC y de MPLAB usas podriamos ayudarte.... magos no somos...


----------



## andy1 (Jul 8, 2009)

las versiones que he puesto son  8.10 y 6.
este progama tambien lo esta realizado con el pic 16f628 y sale el mismo error

Warning[207] D:\ANDRES T\TRABAJOS\DOMOTICA\ESTU\LED.ASM 29 : Found label after column 1. (RRF)
Error[122]   D:\ANDRES T\TRABAJOS\DOMOTICA\ESTU\LED.ASM 29 : Illegal opcode (NUM3)

el status no produce errores pero no realiza las funciones cunado se maneja los bits de z ,c, dc


```
list p=16f877a
#include <p16f877a.inc>

CBLOCK 0X60
NUM1
NUM2
NUM3
ENDC

BSF STATUS ,RP0
BCF STATUS ,RP1
CLRF TRISB
BCF STATUS ,RP0

INICIO

	
	MOVLW B'1111100' 
	MOVWF NUM1
	SUBWF NUM2 
	BTFSS NUM2 ,0
	GOTO SUMA 
	GOTO INICIO

SUMA 

	MOVF NUM2 ,W
	MOVWF NUM3
	RRF NUM3
	END
END
```


----------



## Chico3001 (Jul 8, 2009)

Tu problema es muy simple.... en la ultima instruccion no estas poniendo el destino, tienes que poner RRF NUM3,W o RRF NUM3,F segun a donde quieras que se guarde el resultado....

Tambien veo que el programa va a fallar por que estas mandando al micro a Suma, pero nunca lo regresas al programa principal y se va a seguir de frente, tienes que poner un goto al final de Suma....


----------



## Meta (Jul 8, 2009)

elvis_mendocino dijo:
			
		

> en realidad no se usar mplab y me gustaria aprender deseo si alguien puede pasarme un buen tutorial o información acerca de como se usa. gracias



Es esta Web hay un video tutorial.

http://tutopic.webs.com/

Introduccion al assembler.

Saludo.


----------



## Vegetal Digital (Jul 8, 2009)

manuel360 dijo:
			
		

> ok   ya encontre uno por puerto usb ahorita estoy realizando un proyecto de unos led que al girarlos despliega mensajes pero tenngo el codigo fuente, tengo mplab v 7.51 ahora mi problema es pasarlo a .hex me aparece una leyenda que dice que no encuentra el archivo y lo guarde con extension .asm  .   Gracias



Que programador conseguiste? podes usar alguno de microchip, o construir el eclip-se que publicaron aquí en el foro...

https://www.forosdeelectronica.com/about15166.html


----------



## andy1 (Jul 8, 2009)

Hola compa que pena la la intenidad, pero si el progama esta incompleto solo era un ejemplo para que se mire el error ya que las intrucciones rlf rrf quedan en rojo y no en azul como deben ser , ya le puse el destino y sale el error , como dije anterior mente el status tampoco realiza las funciones en los bits c, dc y z  
gracias por sus colaboraciones 
att: @ndres t

list p=16f877a
#include <p16f877a.inc>

CBLOCK 0X60
NUM1
NUM2
NUM3
ENDC

BSF STATUS ,RP0
BCF STATUS ,RP1
CLRF TRISB
BCF STATUS ,RP0

INICIO


	MOVLW B'1111100' 
	MOVWF NUM1
	SUBWF NUM2 
	BTFSS NUM2 ,0
	GOTO SUMA 
	GOTO INICIO

SUMA 

	MOVF NUM2 ,W
	MOVWF NUM3
	RRF NUM3 ,W 

END 


Warning[207] D:\ANDRES T\TRABAJOS\DOMOTICA\ESTU\LED.ASM 29 : Found label after column 1. (RRF)
Error[122]   D:\ANDRES T\TRABAJOS\DOMOTICA\ESTU\LED.ASM 29 : Illegal opcode (NUM3)
Halting build on first failure as requested.


----------



## mabauti (Jul 9, 2009)

a mi me compila sin error.

Ya configuraste el uC a usar? configure> select device


----------



## andy1 (Jul 9, 2009)

gracias viejo ya configure pero otras cosas que estan en select device  y si ya dio las intrucciones rlf y rrf .
pero tengo una duda donde esta la opcion  de uc a usar?
en select device me sale el nombre del pic y otros puntos en color verde y rojo


----------



## Lalo22 (Ago 2, 2009)

tengo el siguiente problema....
con el siguiente programa........

y me sale este error

por q segun esto......esta mal mi banco?


----------



## Vick (Ago 2, 2009)

Los primeros no son errores solo te esta avisando que estas trabajando en un banco que no es el Cero, el último es por la ruta donde esta tu archivo fuente y no debe excederse de 62 caracteres ya que el MPLAB no puede manejar rutas de más de ese límite, coloca el/o los archivos fuente en una ruta más cercana a la raíz de la unidad C:


----------



## Lalo22 (Ago 2, 2009)

tenias razon...gracias.........
menos mal siempre estas al tanto del foro....
muchas gracias


----------



## killerzea (Ago 7, 2009)

giovarp dijo:
			
		

> hola soy nuevo en el foro y tengo el siguiente problema estoy comensando en la programacion de los pic e instale el mplab para programar me pasa el siguiente problema cuando cargo el .asm y luego le ago el quickbuild para compilar y dejarlo en hex me tira error a pesar de que lo e compilado en otro pc y me compila sin problema lo e instalado mas de 5 veces pensando k es por k keda mal instalado si alguien me puede ayudar pliss ya noc que es




Hola amigo.

por lo que veo en tus programas te falta el include 
ejemplo:

List p=16f84
include <p16f84.inc> 'esta linea te falta'
org 0x2007
dw 0x3ffa
org 0

-
-
-
-
-
-
end

tambien fijate en Configure / Select device y pon el pic que usas.
espero que te sirva.
Saludos.


----------



## giovarp (Ago 8, 2009)

gracias por las respuestas


----------



## Varo001 (Sep 2, 2009)

Hola que tal, estoy iniciandome en la programacion en mplab para el cual uso la version 8.10 y el toolsuite MPLAB C30 C Compiler, el primer programa que estoy haciendo es muy facil, el cual solo enciende y apaga un LED:

#include <p33fj12GP201.h>

int main (void)
{
	TRISA=0;
	while(1)
	{
		PORTAbits.RA2=1;
		PORTAbits.RA2=0;
	}
}

El porblema es cuando lo intento compilar me muestra este error:

---------------------------------------------------------------------
Debug build of project `C:\Documents and Settings\Varo\Escritorio\dghjh\1.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Wed Sep 02 20:52:14 2009
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\Varo\Escritorio\dghjh\1.mcs".
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=33FJ12GP201 -x c -c   "C:\Documents and Settings\Varo\Mis documentos\LED\1.c" -o"1.o" -D__DEBUG -g -Wall
Microchip MPLAB C30 License Manager Version v3_11 (Build Date Jul 16 2008).
Copyright (c) 2008 Microchip Technology Inc. All rights reserved.
The dsPIC language tools key is not in the registry.
pic30-coff-cc1.exe: error: General License error, please install a license
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Documents and Settings\Varo\Escritorio\dghjh\1.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Wed Sep 02 20:52:15 2009
----------------------------------------------------------------------
BUILD FAILED


Desinstale y volvi a instalar el mplab y sigue sin compilar. Ademas este programa lo volvi a hacer en la PC de un amigo y si lo compilo pero en la mia no funciona, ¿Acaso tambien tiene que ver alguna caracteristica de la computadora para que me pase esto, o estoy haciendo algo mal?. Si me pudieran ayudar les estaria muy agradecido.


----------



## DOA (Sep 2, 2009)

Verifica que este seleccionado el pic correcto, en el menu configure > select device


----------



## aguevara (Sep 3, 2009)

Estimado Varo, muy claramente te esta diciendo que las herramientas para el lenguaje propio del microcontrolador tipo dsPic no las tiene en su registro... es decir no has instalado una licencia para usar el compilador para ese tipo de micros.
"The dsPIC language tools key is not in the registry.
pic30-coff-cc1.exe: error: General License error, please install a license"
Por lo tanto requieres alguna licencia que permita hacer uso de ese tipo de herramienta, te sugiero busques en el site de microchip y veas si hay algo disponible, que seguro debe de haber.
Saludos


----------



## jacc3086 (Sep 18, 2009)

Que mas compañeros.

tengo una pregunta de un error q me sale al tratar de generar el codigo asm de un algoritmo que hice en niple 5.2, al tratar de general el condigo asm me aparece "error '341' en tiempo de ejecucion: el indice de la matriz de controles no es valido". alguien me podria ayudar? alguein sabe por que sale este error? le agradeceria a quien me pudea colaborar.

gracias


----------



## Varo001 (Sep 20, 2009)

Gracias por responder tan rapido, hize lo que me recomendaron pero aun asi el problema persistia.

Pero acabo de solucionar mi problema, la razon se debia a que la bateria de mi PC se acabo y como saben al pasar esto el reloj y la fecha pierden la configuracion que tienen y vuelve a ponerse la hora y fecha de hace varios años. Esto aparentemente afecta al compilador C30 ya que la fecha de la version de este es mas nueva que la fecha que se pone como default y no se muy bien pero se crea un conflicto que impide al Mplab C30 compilar y para resolverlo hay que volver a poner la fecha y hora actual o cambiar la pila de la PC por una nueva y listo..

Gracias de todos modos por su ayuda.

Saludos desde Aguascalientes, Mexico!!!!


----------



## diego_z (Oct 22, 2009)

hola e estado intentando crear un proyecto en mplab y c18 vercion demo y me tira este error 

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\MCC18\bin\mcc18.exe" -p=18F452 "cbasico.c" -fo="cbasico.o" /i"C:\MCC18\h" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
MPLAB C18 v3.33 (evaluation)
Copyright 2000-2009 Microchip Technology Inc.
Days remaining until evaluation becomes feature limited: 59
Skipping link step. The project contains no linker script.
BUILD FAILED: Thu Oct 22 12:08:24 2009

alguien tiene idea por que sera , ya e probado varias veces y siempre lo mismo , agradesco su ayuda de antemano


----------



## Ardogan (Oct 27, 2009)

Tenés que agregar un "linker script" al proyecto. Para eso en el mplab ide fijate en la ventana Project (donde estan los archivos, los .c, los .h) en donde dice "Linker Script" botón derecho -> "Add Files...", anda a la carpeta MCC18\lkr y ahí elegí el que corresponda a tu microcontrolador. En este caso para el pic18f452 sería 18f452.lkr.

¿Que es el linker script?, lo podes abrir en el mismo mplab ide y darte cuenta, es un archivo que fundamentalmente le dice al compilador (el C18) las zonas de memoria ram/rom/eeprom, el tamaño de pila, también se puede poner nombres a determinadas zonas de memoria...
Saludos


----------



## diego_z (Oct 27, 2009)

gracias por tu respuesta adrogan esos pasos ya los hice pero no pasaba nada , despues instale el mplab 8.33 y anduvo el anterior hera el 7.2 no se tal vez tenia errores , con este engancha el icd2 clon por supuesto y va como piña , gracias deberia haber editado el post pero me olvide jeje


----------



## DJ DRACO (Nov 11, 2009)

Hola a todos y vuelvo al foro para pedir un poco de ayuda al respecto:

mi problema es el siguiente:
estoy empezando en esto de la programación y me mande de lleno a un robot que estoy diseñando para competir en Sumo. La programación en sí ya estaria resuelta pero en el MPLAB veo lo siguiente:

al escribir un comando CORRECTAMENTE el mismo se pone azul, lo mismo pasa con los registros y bits que se usan para indicar de donde muevo y hacia donde...PERO cuando se escribe una instrucción erroneamente se pone roja.

lo que escribo a continuación es el arranque de mi programa en ASM y cuales cosas me aparecen en rojo....

cuando coloco #INCLUDE todo azul pero <P16F84A.INC> eso queda rojo
luego al colocar ejemplo: movf     0x0C,W la W queda roja.
luego cuando coloco STATUS,Z todo eso queda rojo...
tambien con el goto    Comp1 - el Comp1 queda rojo.


----------



## cerebroo (Nov 25, 2009)

He buscado en el foro sobre este asunto, pero ninguno socorre a mi problema. Estoy haciendo un codigo en assembler y uso 3 archivos include, algo extensos cada uno, sobrepasando la linea 300 en alguno , pero el ultimo tuve que acortarlo para poder compilarlo, ya que me aparecia warning [220] Address exceeds maximum range for this processor varias veces en el archivo output, y tambien el error [126] Argument out of range (040E not between 0000 and 03FF).

Quisiera ver, que otra solucion tengo para poder compilar el programa, ya que necesito completar todo el archivo .INC, pero tuve que acortarlo. Y a que se debe este problema.
Uso el pic 16f84A.

Gracias.

Saludos.
Cerebro


----------



## aguevara (Nov 25, 2009)

Se debe a que tu programa es demasiado largo y excede el rango de memoria interna del PIC que es de 1024 palabras y va de la direccion 0000 a la 03FF, si no te es posible acortar tu programa, dudo mucho que lo puedas compilar simplemente por que no "cabe" en la memoria del PIC


----------



## pepechip (Nov 25, 2009)

Pasate al pic 16f628, ya que te sale mas economico y tiene el doble de memoria.


----------



## cerebroo (Nov 25, 2009)

Mmmm, pienso cambiar de pic luego, primero quiero exprimir bien al 84A, ia luego pasaré, aunque se ve interesante el 628.


----------



## MartinD (Ene 25, 2010)

hola,yo no voy a respder porq no se nada,de hecho recien empiezo a tratar de programar,pero tengo un problema con el mplab.....:cuando recien configuro el programa y creo el .asm,(con el save as); no me aparece como source file,sino como others...hay algo q no configure bien?uso el mplab v.8.15,y segui todas las instrucciones segun los tutoriales


----------



## el-rey-julien (Ene 25, 2010)

brody dijo:


> aparte del mplab otro programador de pic. por fa contesten



yo uso linux y programo los pic o sea ago el prog, y los grabo todo con el pikdev  en windowf no se si ay otros pero seguramente ay otros solo  es cuestion de buscar un poco


----------



## Dpineda (Feb 15, 2010)

Hola

Estoy haciendo un proyecto con el el pic 16f877a que consiste en construir un equipo que verifique la conductividad de un cable con 24 cabelcillos dentro de punta a punta,

Resulta que el programa los estoy haciendo en assembler y, siendo la primera vez que hago algo en esto, tengo el siguiente problema.

Dado que al compilar en modo absolute, me debe entregar un .hex para cargarlo en el pic o algun simulador no socede esto, sino que me entega un.O como si fuera un programa relocatable.

Ahora bien, si me entrega esto como lo haria para cargarlo en el pic o en el proteus o bien como arreglar el programa para que me entregue el archivo correcto.


Adjunto:
Los archivos fuente y el esquematico del circuuito.

EL circuito va ademas conectado a una pantalla LCD y a un teclado 4x4

Si me ayudan, podrian verificar ademas el correcto uso de las funcionalidades de estos aparatos 


PD: Programe a pura intuicion, sin experiencia.

Saludos


----------



## Chyryes (Feb 15, 2010)

Hola Dpineda,

No he mirado muy a fondo el programa pero... yo creo que en la línea siguiente a ORG 0x00 debería decir GOTO inicio. Insisto en que no he mirado nada mas.

Saludos


----------



## armentatron (Feb 15, 2010)

tampoco he visto el programa pero tiene razon chyryes despues de org 0 va goto inicio y si hay interrupciones vas a org 4 escribes la interrupcion despues y si no hay org 5 y empiezas con el programa. para compilaro a .hex yo utilizo el mpaswin es sencillo solo tienes que instalarlo en una direccion corta como por ejemplo en c:/ ( en tu disco duro) no pesa casi nada. solo seleccionas el microcontrolador q utilizas y el programa en .asm y compilas


----------



## Dpineda (Feb 15, 2010)

Muchas gracias.

Con la correccion que me dicen aun permance el problema.
Algo que note es que, segun el manual, una vez compilado aparece una flecha verde en donde parte el programa, esto no parece.
Si se fijan el "peso finaL" al observar el archivo .o es de 5k tal vez algo grande pero inferior a los 8kb limite. Sin embargo tal vez tenga que ver.
Pienso tal vez en disminuir el include del pic, dejando solo las etiquetas usadas, de los port y tris y algo mas.
Otra cosa que arregle y aun me confunde son las subrutinas.

Siempre deben llevar ":"?
Deben necesariamente que terminar en "return"??

Tengo que añadir que tal vez sea un problema con los archivos include


Al hacer un debuggeo comentando las referencias a los .inc el progrma se compila bien y aparece la flecha roja....

Uf,,,tak vez tenga que ver con las direcciones de memoria no?=


----------



## madcv (Feb 17, 2010)

Hola necesito su ayuda por favor uso el mplab ide 8.43 pero necesito compilar en C, ya mi proyecto esta en lenguaje C, pero al compilarlo me aparece este error espero puedan ayudarme, gracias


----------



## tecnogirl (Feb 18, 2010)

No se ve bien el mensaje de error pero prueba bajar e instalar de nuevo el MPLAB IDE. Conviene que te leas primero los archivos de recomendacion para la instalacion y los sigas. Salu2


----------



## Dr. Zoidberg (Feb 18, 2010)

El mensaje de error es claro y es que el archivo con la clave de registro del CCS que tenés no tiene el formato correcto. Si es pirateado, no busques ayuda aquí. Si no lo es, reclamale al fabricante/vendedor/quien sea.


----------



## Vegetal Digital (Feb 18, 2010)

si, el problema es de CCS, el mensaje lo da el compilador.

Que version del ccs estas usando?


----------



## supergd (Abr 15, 2010)

hola amigos del foro bueno quiero desirles que he estado aprendiendo a progrmar microcontroladores en lenguaje BASIC que me parece muy sensillo

estoy intentando hacer encender y apagar un led con un PIc16f628a he estado utilizando este codigo utilizando el MPLAb version 8.02 con un copilador Pbpw de microengineering   

led var portb.0
trisb=0
loop:
high led
pause 1000
low led 
pause 1000
goto loop

luego intento copilar y me aprece el siguiente error

Executing: "C:\PBP\PBPW.EXE" -ampasmwin -oq -z   -p16F628A "led.bas" PICBASIC PRO(TM) Compiler 2.50, (c) 1998, 2007 microEngineering Labs, Inc. All Rights Reserved.  

 ERROR: Unable to execute mpasmwin.Halting build on first failure as requested. BUILD FAILED: Thu Apr 15 20:06:01 2010  

por lo que entiendo es que no se ejecuta el MPASM

 he visto el la red que algunos tambien lo ha pasado y dan algnas soluciones pero las hise y sigue dando el mismo error


----------



## NMORENO (Abr 16, 2010)

Buenas noches. mi nombre es Nicolas y soy estudiante de ingenieria electronica en colombia. Agradezco de antemano toda su colaboracion. 

Mi problema es el siguiente. recientemente descargue el mplab ide v8.43 e intente crear un programa muy simple de prender un led y rotarlo por los 8 bits indefinidamente con el fin de probar el mcu 16f84a. El caso es que al compilar me da un error que dice:


```
make: the target "c:\microcontroladores\a\prueba quemadora.o" is up to date.
make: the target "c:\microcontroladores\a\prueba quemadora.cof" is out of date.
executing: "c:\archivos de programa\microchip\mpasm suite\_mplink.exe" "prueba quemadora.o" /z__mplab_build=1 /z__mplab_debug=1 /o"prueba quemadora.cof" /m"prueba quemadora.map" /w /x
mplink 4.35, linker
copyright (c) 2009 microchip technology inc.
error - linker command file required.
errors : 1
```


No estoy usando la programacion en c o algo por el estilo. solo assembler
Este es el programa:


```
include <P16F84A.INC>

relay	EQU	0X26
relay2	EQU	0X27
relay3	EQU	0X28

org	00

bcf	status,RP0; 

movlw	B'00000000'
movwf	PORTB

clrf	PORTB

inicio	BSF	PORTB,1
		
giro	RLF PORTB
		CALL retardo

retardo	MOVLW B'11111111'
		MOVWF relay
		BTFSC PORTB,0
 
end
```


Gracias por la ayuda


----------



## ByAxel (Abr 16, 2010)

Prueba: guarda tu ejemplo en otro sitio cuya dirección no exceda los 62 caracteres o mejor que este cerca al la carpeta de Microchip.
Escoge y configura bien el chip.

Y te convendría bastante pasar por este tema con respecto al ASM 
https://www.forosdeelectronica.com/f24/asm-desde-0-asm-desde-cero-16898/
ya que en tu ejemplo no es muy comprensible...


----------



## NMORENO (Abr 18, 2010)

Ya cambie el path de mi proyecto a una raiz cerca de la carpeta de Microchip pero aun sigo con el mismo error al compilar. Tambien revise la configuracion del micro el el panel de Project Wizard y todo esta en orden. Asi contruya un programa que solo sea para prender un led, me sale el mismo error...

Carlos, gracias por la ayuda. 
Mirando la configuraciondel MPLAB, descubri que en Project>>Select Languaje Toolsuite se seleccionan las herramientas con las que se puede usar el MPLAB, pero me di cuenta que hay 2 ejecutables para el MPLINK (que es el q me esta generando el error). Hay un .exe que es "_mplink" y otro que es "mplink". Cuendo escojo el "mplink", antes de compilar el programa me sale una advertencia y si le digo "SI", me compila sin errores el programa.

¿Que diferencia hay entre esos dos .exe de MPLINK y porq me muestra esa advertencia?

Envio el pantallazo como archivo adjunto

Gracias


----------



## ByAxel (Abr 18, 2010)

Si las direcciones de los ejecutables no están entonces debes de darle la ubicación de los que te está pidiendo en "ToolSuite Content" a la hora de crear el proyecto.
NOTA: Que eso solo es una vez para todos los proyectos.



Si te pide MPLINK.EXE debes darle la ubicación del mismo ejecutable y no otro, aunque hayan similares el resto solo es usado internamente por el programa.

> Sobre la advertencia, lo único que se me ocurre es que no estás cumpliendo con las reglas del compilador al usar ASM, ya que es un poco especial a la hora de usar tabulaciones, el orden y la ubicación de las instrucciones, entre otros..., seria bueno que mostraras un pantallazo para ver como estas organizando tu programa.


----------



## NMORENO (Abr 18, 2010)

Este es el pantallazo de mi programa. 

Gracias por la colaboracion


----------



## ByAxel (Abr 21, 2010)

Fijate en un ejemplo basico...
Por lo que veo no sigues varias de las reglas basicas; en la cabecera debe ir PROCESSOR o la otra directiva que no recuerdo seguido del nombre del chip, los fuses, entre otras cosas... seguro te da varias advertencias...
Revisa eso...

Estare fuera unas semanas... espero que soluciones tu problema..


----------



## viggiani1975 (Abr 24, 2010)

Hola supergd,

No te compliques, utiliza el Pic Basic Pro y simula en proteus, a mí que soy princiante me ha dado resultado, lo único a tomar en cuenta es que el Pic basic no configura los fusibles, pero en el tema "curso de programación en basic"  encontrarás los ejemplos y la configuración de los fuses.

Suerte con eso.


----------



## NMORENO (May 16, 2010)

Si claro, por eso utilizo el Include<p16f84.inc>, conesa instruccion le indico el modelo del micro, para que use ese Header. 

gracias por la ayuda


----------



## Meta (May 19, 2010)

Hola:

Estoy pasando de 16F84A al 16F886 y me da estos errores.
Debug build of project `I:\PIC16F84A\PicRS232 16F886\PicRS232 16F886.mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Thu May 20 04:05:06 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "I:\PIC16F84A\PicRS232 16F886\PicRS232v2.o".
Clean: Deleted file "I:\PIC16F84A\PicRS232 16F886\PicRS232v2.err".
Clean: Deleted file "I:\PIC16F84A\PicRS232 16F886\PicRS232v2.hex".
Clean: Deleted file "I:\PIC16F84A\PicRS232 16F886\PicRS232v2.lst".
Clean: Deleted file "I:\PIC16F84A\PicRS232 16F886\PicRS232v2.cof".
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F886 "PicRS232v2.asm" /l"PicRS232v2.lst" /e"PicRS232v2.err" /d__DEBUG=1
Error[113]   I:\PIC16F84A\PICRS232 16F886\RS232MEN.INC 26 : Symbol not previously defined (Mensajes)
Error[113]   I:\PIC16F84A\PICRS232 16F886\RS232MEN.INC 33 : Symbol not previously defined (Mensajes)
Message[302] I:\PIC16F84A\PICRS232 16F886\LCD_4BIT.INC 93 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] I:\PIC16F84A\PICRS232 16F886\LCD_4BIT.INC 105 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   I:\PIC16F84A\PICRS232 16F886\LCD_MENS.INC 44 : Symbol not previously defined (Mensajes)
Error[113]   I:\PIC16F84A\PICRS232 16F886\LCD_MENS.INC 49 : Symbol not previously defined (Mensajes)
Error[113]   I:\PIC16F84A\PICRS232 16F886\LCD_MENS.INC 75 : Symbol not previously defined (Mensajes)
Error[113]   I:\PIC16F84A\PICRS232 16F886\LCD_MENS.INC 94 : Symbol not previously defined (Mensajes)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `I:\PIC16F84A\PicRS232 16F886\PicRS232 16F886.mcp' failed.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Thu May 20 04:05:35 2010
----------------------------------------------------------------------
*BUILD FAILED*


Saludo.


----------



## xuintuic (May 24, 2010)

Ese problema ocurre cuando tienes archivos en "other files" si haya rchivos que no son ASM y el mplab no los puede compilar....

....A mi me pasó al generar el proyecto que añadí el archivo del workspace y por eso me tiraba el error. Le das a Remove en el arbol de archivos que hay en la ventana esa que pone Files y Symbols....y ya compila.

saludos.


----------



## Meta (May 24, 2010)

Gracias por la información.

Por suerte ya no me ocurre, ahora uso el *MPLAB v8.50*.

Estoy deseoso cuando salga el MPLAB v9.00, espero que la novedad sea hecha con el IDE de Visual Studio .net, porque este se nota muy obsoleto y con mucho fallos de algo.


----------



## karthebest (Jun 29, 2010)

Buenas tardes, tengo una pequeña duda, porque estoy viendo que mucha gente hace programas con ccs y luego utiliza mplab, entonces yo quiero preguntar si con CCs no es suficiente para crear programas en c para el pic, compilarlos y grabar el archivo con extensión .hex en el pic.

saludos gracias!


----------



## Apuleyo (Jun 29, 2010)

Sí, es suficiente. 
Existe un pluggin, para escribir código en Mplab y que compile el CCS. A algunos les gusta más el entorno Mplab, cuestión de costumbre o bien tienen un programador reconocido por éste para quemar el PIC directamente desde ahí.


----------



## karthebest (Jun 29, 2010)

Entonces si yo unicamente creo mi programa con el pcw de ccs y lo compilo como se crea el archivo con extensión .hex entonces lo estaré haciendo bien, y ya solamente me queda grabar ese archivo en el pic. no?? Gracias esque soy un poco dura de mollera!! jiji


----------



## Apuleyo (Jun 30, 2010)

No hay problema... nadie es un genio o deja de serlo por saber estas cosas...
Claro, podés usar el icprog o el winpic para grabar el .HEX. Saludos.


----------



## karthebest (Jul 2, 2010)

ok muchas gracias!! ya me quedo más trankila!


----------



## bofocastillo (Jul 15, 2010)

Hola, tengo un programa para el 12F509 en C; uso el MPLAB
Había estado haciendo el BUILD sin problema, pero de repente (o sea, al agregar algunas líneas de código aquí y allá) empezó a tardarse en compilar; ahora mismo se tarda como 2 minutos o más.

Uso 760 de 1024 de Program Memory
y 16 de 41 de Data Memory

No tengo Warnings

Al final si hace todo bien, pero es molesto porque si tengo que hacer un pequeño cambio, tengo que esperar algunos minutos para ver si hace lo que debe o tengo que modificarlo de nuevo.

A alguien le ha pasado que se tarde mucho en el BUILD??


----------



## cerebroo (Jul 15, 2010)

Si, pero no demora tanto... pero se siente un retardo...
Trata de acortae la ruta donde guardas el proyecto...


----------



## bofocastillo (Jul 15, 2010)

Justo lo acabo de cambiar (más bien hice otro proyecto nuevo) en un directorio más cerca a la raiz y sigue tardando lo mismo

Le tomé el tiempo y tardó 1 minuto y unos pocos segundos.

Al principio pensé que podía ser alguna rutina mal escrita que, aunque el programa funcione, esté haciendo alguna operación que propicie que tarde en compilar.

Al comienzo del programa tendo un IF. EL IF y el ELSE hacen básicamente lo mismo sólo que uno controla GP0 (IF) y GP1 (ELSE), pero las operaciones son, repito, básicamente iguales. Lo curioso es que si quito la parte del ELSE, o sea, disminuyo el código a la mitad, MPLAB compila bien, sin tardarse.


----------



## cerebroo (Jul 17, 2010)

Para que usas el ELSE y el IF....??
Esas instrucciones se usan, para la parte de compilacion, que compile o no...si no me equivoco

Else.. Usado junto con la directiva IF para proporcionar un camino alternativo de ensamblado si al evaluar la condicion es falsa.
Else puede usarse dentro de un bloque de programa o en una macro...

Trata de ver esa parte porque el error esta en esas sentencias..

Saludos.
Cerebro.

Fuente.. Pic 16f84a Ra-Ma


----------



## felipemel (Sep 13, 2010)

hola a todos.

soy un poco nuevo en esto de programar. tengo un archivo en c y lo deseo compilar a un .hex y no he podido lo estuve intentando hacer con mplab pero no me dio resultado. es para generar un Multimetro digital

si alguien me pudiera dar la mano le agradecería.
---------------------------
#include<math.h>
#include<avr/io.h>
#include<lcd.h>
#include<stdlib.h>


int main(void)
{
double resultado_Vcd,Vcd,RMS,corriente,corriente_res,resistencia,resistencia_res;
int muestra, muestra_anterior;
char resul[16];


DDRD=0x00;
DDRA=0xF0;
ADMUX=0xC0;
ADCSRA=1<<ADEN;
lcd_init(LCD_DISP_ON);

while(1)
{
	switch (PIND)
	{
	case (0x00):	//con 0x00 se selecciona el voltimetro de CD
		{
			ADMUX=0xC0;
			do{

				ADCSRA|=0x40;
				while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
				resultado_Vcd=ADCL|(ADCH<<8);
				Vcd = resultado_Vcd/53.28;
				lcd_gotoxy(0,1);lcd_puts(dtostrf(Vcd,16,4,resul)); break; //manda a escrirbir en el display el resultado de la conversion
				}
			while(PORTB=0x00);
			}
	break;
	case  (0x01):	//con 0x01 se selecciona ohmetro
		{
			ADMUX=0xC1;	//se selecciona el canal 3
			do{ 
				ADCSRA|=0x40;
				while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
				resistencia_res=ADCL|(ADCH<<8);
				resistencia=((-resistencia_res)*10000)/(resistencia_res-2000);	//determina la resistencia
				lcd_gotoxy(0,1);lcd_puts(dtostrf(resistencia,16,4,resul));break;
				}

			while(PORTB=0x01);
			}
	break;
	case  (0x02):	//con 0x02 se selecciona amperimetro
		{
			ADMUX=0xC2;	//se selecciona el canal 2
			do{
				ADCSRA|=0x40;
				while ((ADCSRA & 0x10)==0); //se espera a que termine la conversion
				corriente_res=ADCL|(ADCH<<8);
				corriente=corriente_res/1.9998;	//determina la corriente
				lcd_gotoxy(0,1);lcd_puts(dtostrf(corriente,16,4,resul)); break;
				}
			while(PORTB=0x02);
			}
	break;

	/*case : (0x01)	//con 0x01 se selecciona el voltaje RMS
		{
			ADMUX=0x01;	//se selecciona el canal 1
			muestra=0;
			muestra_anterior=0;
			do{
				while((!(ADCSRA&(1<<ADIF)) //se espera a que termine la conversion
				ADCSRA=(1<<ADIF);
				muestra_anterior=muestra;
				muestra=(ADCH<<8)+ADCL;//se guarda el resultado
				if(muestra<muestra_anterior)
					RMS=((muestra/2)/sqrt(2));
				lcd_gotoxy(0,1);lcd_puts(dtostrf(RMS,16,4,resul)); break;
				}
			while(PORTB=0x01);
			}
	break;*/



		}//sierra el swhitch
	}//sierra el while(1)
}//sierra el main

--------------------


----------



## moverar (Sep 14, 2010)

Hola *FELIPEMEL* 

No te prometo verlo yà, porque es un poco tarde, pero si mañana lo pruebo y te paso las novedades.

De todos modos, primero debes convertir el archivo a .asm (ensamblador), recien ahì lo podes compilar como hexadecimal (.hex) en MPLAB.

te recomiendo el prog MPASMWIN que se incluye em MPLAB

Mañana lo veo y te cuento. OK?


----------



## moverar (Sep 14, 2010)

Hola felipemel, recien puedo ponerme a ver lo tuyo, disculpa la demora, es que me surgieron unos trabajos no programados en la universidad que bebí atender. 
Ahora sigo con lo tuyo... Gracias por el aguante.


----------



## felipemel (Sep 14, 2010)

hola moverar gracias por tu preocupación



moverar dijo:


> Hola felipemel, recien puedo ponerme a ver lo tuyo, disculpa la demora, es que me surgieron unos trabajos no programados en la universidad que bebí atender.
> Ahora sigo con lo tuyo... Gracias por el aguante.



moverar gracias por tu precupacion


----------



## sammaael (Sep 14, 2010)

no te faltaria incluir el microcontrolador que usas, es decir añadir la directiva

#include<16f873.h> por ejempplo?????????


----------



## moverar (Sep 14, 2010)

Pregunta ------> ¿ qué compilador y versión estas usando? 

Mientras, si te parece bien, lee el texto de este enlace, creo que puede ayudarte...

http://atc.ugr.es/docencia/udigital/13.html

Te comento que hace unos años no programo en C y me cuesta retomar, pero esta bueno el desafío.

Actualmente programo con el Niple v5.2 que me arroja un programa *.asm, lo guardo en el HDD (no en carpeta o directorio) y de ahí lo paso a *.hex en el MPASMWIN (de MPLAB) y ya està. 

Para grabarlo en el pic uso el ICProg con un grabador JDM. 

Puede que te sirvan estos datos, sigo viendo lo tuyo...



sammaael dijo:


> no te faltaria incluir el microcontrolador que usas, es decir añadir la directiva
> 
> #include<16f873.h> por ejempplo?????????



Yo también observo ese detalle, Sammaael, pero no estoy seguro que el MPLAB lo acepte directamente en C, vos que experiencia tenes al respecto?

lo que pasa y como dije antes, hace un tiempo que no programo en c... 
Vos dirás, y para que cuernos responde? Bueno, me tenté para reflotar los conocimientos... Perdón si entorpezco...


----------



## felipemel (Sep 14, 2010)

moverar dijo:


> Pregunta ------> ¿ qué compilador y versión estas usando?
> 
> Mientras, si te parece bien, lee el texto de este enlace, creo que puede ayudarte...
> 
> ...



bueno les comento  el micro controlador es unATMEL MEGA 32 pero dicho controlador no lo encuentro en mplab, ahora para estoy intentando con pic c compiler me parece un muy buen compilador, pero al querer compilar me genera un error, lo adjunto
http://es.zimagez.com/zimage/mult.php

ahora estuve mirando la info muy buena voy a seguir mirando


----------



## ByAxel (Sep 14, 2010)

felipemel dijo:


> bueno les comento  el micro controlador es unATMEL MEGA 32 pero dicho controlador no lo encuentro en mplab, ahora para estoy intentando con pic c compiler me parece un muy buen compilador, pero al querer compilar me genera un error, lo adjunto
> http://es.zimagez.com/zimage/mult.php
> 
> ahora estuve mirando la info muy buena voy a seguir mirando



Buenas, perdón pero estaba viendo el tema; *felipemel* el MPLAB solo es de la empresa Microchip que solo es para sus microcontroladores llamados PIC y no tiene nada que ver los los AVR de Atmel que es otra empresa.
De la imagen te pide que declares el microcontrolador que estás usando pero también aclaro que el PCW C Compiler IDE solo el para microcontroladores PIC y no los AVR de atmel... para programar los Atmel necesitas el WinAVR AVR-GCC por ejemplo pero hay más, consulta en el foro.

Un saludo


----------



## felipemel (Sep 14, 2010)

ByAxel dijo:


> Buenas, perdón pero estaba viendo el tema; *felipemel* el MPLAB solo es de la empresa Microchip que solo es para sus microcontroladores llamados PIC y no tiene nada que ver los los AVR de Atmel que es otra empresa.
> De la imagen te pide que declares el microcontrolador que estás usando pero también aclaro que el PCW C Compiler IDE solo el para microcontroladores PIC y no los AVR de atmel... para programar los Atmel necesitas el WinAVR AVR-GCC por ejemplo pero hay más, consulta en el foro.
> 
> Un saludo


ByAxe gracias por tu respuesta voy a intentar lo que tu dices



			
				felipemel dijo:
			
		

> ByAxe gracias por tu respuesta voy a intentar lo que tu dices



ByAxel mira hace poco me dejaste un comen en el foro y bue.. lo intente compilar con avr studio pero me da error, no se si sera muy confianzudo de mi parte pedirte que me lo revises igual intento generar un .hex y no puedo tu me dirás 

gracias de ante mano


----------



## melon666 (Oct 12, 2010)

miren les expliko, al crear un programa cn el mplab ( he provado versiones distintas) me arroja el mismo error, ya realmente no se que hacer.

inicio el programa (mplab v8.56)

abro el proyect wizard 
selecciono el 16f84a

asigno direccion al mcp y gravo el mcw, pero a la hora de grabar el *.asm me lanza este error



y no puedo empezar a programar en mi pc 

chicos x favor es de caracter urgente si es que alguien conoce el porque y obviamente si alguien tiene una solucion lo agradeceria eternamente


gracias


----------



## jairosaw (Oct 12, 2010)

olap intenta de esta forma si lo que quieres es solo generar el .hex para cargarlo a tu pic:

1: Abre el Mplab Ide 8.56v que posees.
2: *FILE > new* te abre una ventana sin titulo  (untitled),
3: Escribe tu codigo del programa en asm en este espacio.
4: Cuando termines ve *FILE > Save as* donde dice Nombre: escribele el nombre de tuproyecto; *prueba.asm*, le escribes el .asm seguido.
5: Ve a PROJECT > y click en Quickbuild (prueba.asm).
6: Listo si tu programa no tiene errores te compila bien
saludos


----------



## melon666 (Oct 12, 2010)

lo acabo de intentar y me lanza el mismo error a la hora de guardar el "prueba.asm"


bueno = gracias de todas maneras


----------



## jairosaw (Oct 12, 2010)

Cuando instalaste el Mplab lo instalaste con todos sus complementos, ya que no deberia aparecerte ese error, ahora del ejemplo anterior se me olvido decirte que antes de compilar selecionaras el micro a usar :

CONFIGURE > SELECT DEVICE


----------



## melon666 (Oct 13, 2010)

compadre ya lo solucione, el problema era la direccion raiz donde guardaba el archuvo *.asm, ya que por ser un windows modificado tiene ese cacracter en el nombre si te fijas, ese Black Crystal TM, ese caracter tm no es reconocido y ese era la abse del error asi k cree una carpeta base en c: y chan!! se acabo el fkn problema.

asi k si a alguno le pasa esto note q tenga cuidado cn el nombre d la direccionx  q esos caracteres son para puro pelutudearte un rato


----------



## JuanCarlosabigor (Oct 18, 2010)

hola a todos, he comenzao a usar el mplab, ya he echo algunos proyectos en ensamblador, pero no he podido simular ningun proyecto en lenguaje c, sabe alguno de ustedes si se puede simular lenguaje c en mplab
gracias


----------



## El nombre (Oct 20, 2010)

tienes instalado compilador en C en el MPLAB?
de no tenerlo tienes que instalarte uno,ccs por ejemplo
si lo tienes   proyect/select language toolsuite y lo seleccionas. 
pasate por https://www.forosdeelectronica.com/f24/compilador-ccs-6678/
Saludos


----------



## JuanCarlosabigor (Oct 23, 2010)

hola si tengo el compilador CCs, pero no me compila en MPLAB, me marca errores, desintale MPLAB y lo volvi a instalar y nada, sabrian donde puedo descargar MPLAB, tal ves el que yo tengo esta mal


----------



## harimuya (Oct 25, 2010)

Hola a todos
Tengo un problema ccs c compilado en mplab.
al compilador me da este error

Executing: "C:\Ar..\PICC\Ccsc.exe" +FH "Neutronic_USB.c" +DF +LN +T +A +M +Z +Y=9 +EA
*** Error 111 "D:\PIC\Neo_USB.c" Line 12(7,70): Unknown keyword in #FUSES   "CPUDIV1"
*** Error 100 "D:\PIC\Neo_USB.c" Line 14(5,54): USE parameter value is out of range   Not a number: PIN_C6
*** Error 128 "C:\ARCHIV~1\PICC\drivers\usb.h" Line 263(1,11): A #DEVICE required before this line

estas son las primeras 4 lineas del programa

Desde ya gracias por la respuesta.

#include <18F2553.h>
#fuses NOWDT,NOPROTECT,NOLVP,NODEBUG,VREGEN,HSPLL,USBDIV,PLL5,CPUDIV1
#use delay(clock=48000000)
#use RS232(baud=4800,xmit=PIN_C6,rcv=PIN_C7,PARITY=O)


----------



## ByAxel (Oct 25, 2010)

Si compila... aveces eso es por la versión del compilador ya que no actualizan los detalles de los PIC... revisa en "Tools > Device Editor", busca el PIC y revisa que todo esté declarado...

Sobre los errores no reconoce "CPUDIV1", PIN_C6 no lo considera pin... no existe ese puerto y el tercer error se debe a la libreria en la linea 263 algo le falta...

PD: La versión que use es la CCS V4.104


----------



## harimuya (Oct 25, 2010)

No, no lo compìla, yo compilo a traves de MPLab, pero verifique a traves del PCW, segun indicas y no esta el Pic18F2553, como ubico el header del Pic 18F2553 y como se actualiza en el PCW

Gracias.


----------



## ByAxel (Oct 25, 2010)

El problema es que si solo tienes el PCW del CCS entonces no soporta los PIC18, debes de instalar el PCWH.
El header del PIC lo encuentras en "C:\Program Files\PICC\Devices".

El PIC18F2553 es de 16bits, está en PCWH.
C Compiler
Devices Supported

saludos.


----------



## harimuya (Oct 25, 2010)

ByAxel si cuento con el PCWH version 4.023, lo que sucedde que no cuenta con el H Pic18F2553, si bien la pagina indica que lo soporta no se de donde bajar los header y como actualizar.

Gracias.


----------



## ByAxel (Oct 25, 2010)

Adjunto el archivo, lo que no se, es si eso es suficiente (debería serlo) para compilar. Es posible que si eso no funciona, tendrás que escribir los parámetros en "Tools > Device Editor"...

saludos.


----------



## harimuya (Oct 25, 2010)

Gracias lo voy a intentar.


----------



## harimuya (Oct 26, 2010)

El archivo es el correcto, lo que no pude es ingresar los parametros en "Tools > Device Editor"..., conoces algun manual de como ingresar los nuevos parametros del pic ??.
Gracias de antemano


----------



## ByAxel (Oct 26, 2010)

En la ventana puedes probar seleccionando un PIC similar (P18F con USB, con los mismos puertos, etc) y usas el botón "Copy" (Copy this entry to a new entry); pide el nuevo nombre del dispositivo, lo pones y ya se puede editar puesto que todos los parámetros se pueden cambiar. Mas no e intentado, si no funciona creo que tendrás que descargar una versión más actual del compilador.

saludos.


----------



## cristian_elect (Oct 26, 2010)

El pic18f2553 es identico que el pic18f2550 solo cambia el ADC a 12bits.
Asi que grabalo con el hex del pic18f2550 normal funciona.


----------



## harimuya (Oct 26, 2010)

Gracias a ambos.

Saludos.


----------



## FernandoJS (Oct 31, 2010)

Buenas, estoy trabajando en un robot que debería realizar diferentes acciones según las entradas que reciba.

El problema es que no consigo que lea las entradas correctamente y, por lo tanto, no me es posible manipular las salidas según mis necesidades.


Este es el código:


> *
> ; Revision : 1.0                        Programa para : PIC16F628A
> ; Velocidad del reloj : 4 MHz           Reloj instrucci¢n: 1 MHz = 1 us, T= 4 us
> ; Perro Guardian : Deshabilitado        Tipo de reloj : XT
> ...



Cuando simulo el circuito el código ejecuta directamente FELIZ independientemente de las entradas que reciba, y siempre las salidas son las que especifíca esa función.

Si pudieran ayudarme estaría muy agradecido, es un para un tranajo que debo presentar en tres semanas.


----------



## ByAxel (Oct 31, 2010)

Que tal:
1) Este PIC tiene oscilador interno/externo por lo que te sugiero que lo configures bien en los fuses.
2) Más importante... en este PIC el PORTA comparte sus pines con los comparadores análogos internos que por defecto usan los pines del PORTA como entradas análogas. Debes de configurar para que sean entradas digitales en el registro CMCON; si ves el datasheet hay un ejemplo de como hacerlo.


```
movlw 0x07
movwf CMCON   ; Todas en PORTA cono I/O digitales
```
luego configuras el TRISA y listo.

saludos.


----------



## FernandoJS (Nov 1, 2010)

Gracias por la ayuda!! pero todavía no consigo resolver el problema.



> Error[113]   D:\FERNANDO\ARCHIVOS DEL PROYECTO OGGY\OGGY1.ASM 42 : Symbol not previously defined (CMCON)



El MPLAB me tira un error cuando intento compilar y me dice que el símbolo debe definirse previamente.
¿Será un error mío?

Esto es lo que hice:



> *INICIO      bsf      ESTADO,RP0   ;Cambio al banco 1
> movlw	 0x07
> movwf 	 CMCON   ; Todas en PORTA cono I/O digitales
> movlw    b'11111111'  ;puerto A como entrada
> ...



*

EDITO: ya solucioné el problema de que debo definirlo previamente. Debía establecer la equivalencia entre 1Fh y CMCON. Sin embargo, todavía no lee las entradas.*


----------



## ByAxel (Nov 1, 2010)

1) Has escogido bien el PIC?? en *"Configure" >> "Select Device"*.
2) No es necesario definir ningún registro si incluyes en la cabecera
*#include <p16F628A.inc>* que en ese archivo están todos los registros declarados...
3) El registro CMCON está en el banco '0' y tal y como lo has echo ya está mal.

saludos.


----------



## FernandoJS (Nov 1, 2010)

Si, he elegido bien el pic, y gracias por el consejo de #include <p16F628A.inc>

¿Podrías darme un ejemplo de como debería extactamente escribir el código de esa parte? Me ayudaría a orientarme mejor.


----------



## ByAxel (Nov 2, 2010)

Un ejemplo, directo del datasheet:

```
PROCESSOR 16F628A
	
	; Libreria donde están declarados todos los registros del PIC
#include <P16F628A.inc>

	; Algunos fuses y Oscilador externo tipo XT que soporta de 4Mhz a 10Mhz
	__CONFIG _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
	errorlevel -302
	
	org		0x00	; Vector de inicio
	goto	Inicio
	
	org		0x05
Inicio:
	banksel	TRISA	; TRISA está en el banco 1
	movlw	.7		; Binario 0b00000111
	movwf	TRISA
	clrf	TRISB
	banksel	CMCON	; CMCON están ene l banco 0
	movlw	.7
	movwf	CMCON	; Desactiva entradas análogas
	clrf	PORTB
	
TuCode:
	;...
	;...
	goto	TuCode
	END
```

saludos.


----------



## FernandoJS (Nov 3, 2010)

Muchas gracias por tu ayuda, me ha sido realmente util y gracias a ella, ya he solucionado el problema.

Saludos!


----------



## luis c (Nov 3, 2010)

saludos

estoy tratando de compilar un programa en MPLAB. es un programa sencillo con LCD, pero cuando lo compilo me aparecen los errores 113 y 105.

e qui mi trabajo.


; ZONA DE DATOS **********************************************************************

	LIST		P=16F873
	INCLUDE		<P16F873.INC>
	__CONFIG _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _CPD_OFF

	CBLOCK	0x20
	Frecuencia
	ContA	
	ContB	
	ContC	
	ENDC	

;************************************************************************
BANK_0	macro						;Macros de selección de bancos
		BCF	STATUS,RP0
		BCF	STATUS,RP1
		endm

BANK_1	macro
		BSF	STATUS,RP0
		BCF	STATUS,RP1
		endm
;************************************************************************

; ZONA DE CÓDIGOS *******************************************************
		org		0x00					;Vector de Reset
		goto	Inicio
;************************************************************************	
Inicio
 	call	LCD_Inicializa
	movlw	Mensaje0				; Apunta al mensaje.
	call	LCD_MensajeMovimiento
	call	Retardo_2s
	movlw	Mensaje01				; Apunta al mensaje.
	call	LCD_MensajeMovimiento
	call	LCD_Linea2				; Pasa a la segunda línea.
	movlw	MensajeParpadeante		; Apunta al mensaje parpadeante.
	call	LCD_Mensaje				; Lo visualiza.
	call	Retardo_500ms			; Durante este tiempo.
	call	Retardo_500ms
	call	Retardo_2s	
	goto 	Inicio

;=============================================================================


; Subrutina "Mensajes" =======================================================
Mensajes
	addwf	PCL,F
Mensaje0							
	DT "               "		
	DT "  *BIENVENIDOS*", 0x0
Mensaje01							
	DT "              "			
	DT "   ECCI-ING LUIS", 0x0
MensajeParpadeante
	DT " $$FELIZ DIA$$ ", 0x0;


	INCLUDE  <RETARDOS.INC>
	INCLUDE  <BIN_BCD.INC>
	INCLUDE  <LCD_16FXXX.INC>
	INCLUDE  <LCD_MENS.INC>
	END

y estos son los errores que me aparecen al compilarlo:

Debug build of project `C:\Archivos de programa\Microchip\MPASM Suite\menu.mcp' started.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Wed Nov 03 19:28:28 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\mpasmwin.exe" /q /p16F873 "lcd2.asm" /l"lcd2.lst" /e"lcd2.err" /d__DEBUG=1 /c-
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 31 : Symbol not previously defined (LCD_INICIALIZA)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 33 : Symbol not previously defined (LCD_MENSAJEMOVIMIENTO)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 34 : Symbol not previously defined (RETARDO_2S)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 36 : Symbol not previously defined (LCD_MENSAJEMOVIMIENTO)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 37 : Symbol not previously defined (LCD_LINEA2)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 39 : Symbol not previously defined (LCD_MENSAJE)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 40 : Symbol not previously defined (RETARDO_500MS)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 41 : Symbol not previously defined (RETARDO_500MS)
Error[113]   C:\PROGRAMAS MPLAB\LCD2.ASM 42 : Symbol not previously defined (RETARDO_2S)
Error[105]   C:\PROGRAMAS MPLAB\LCD2.ASM 61 : Cannot open file (Include File "RETARDOS.INC" not found)
Error[105]   C:\PROGRAMAS MPLAB\LCD2.ASM 62 : Cannot open file (Include File "BIN_BCD.INC" not found)
Error[105]   C:\PROGRAMAS MPLAB\LCD2.ASM 63 : Cannot open file (Include File "LCD_16FXXX.INC" not found)
Error[105]   C:\PROGRAMAS MPLAB\LCD2.ASM 64 : Cannot open file (Include File "LCD_MENS.INC" not found)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Archivos de programa\Microchip\MPASM Suite\menu.mcp' failed.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Wed Nov 03 19:28:31 2010
----------------------------------------------------------------------
BUILD FAILED

alguien me dijo que podría ser que en project- select language toolsuite y que depronto algunao de las 3 direcciones que aparecen en toolsuite contents, estuvieran con una equis roja, pero no me funciono.

agradeceria al maestro que me pudiera indicar que debo hacer.

muchas gracias de antemano


----------



## vazko (Nov 5, 2010)

Hola gente,
como ya he dicho necesito asociar el PIc Basic Pro a el MPLAB, para que el PBP sea el compilador, pero aun no lo he logrado.
si alguien sabe cmo hacerlo por favor comparten conmigo 

gracias.

saludos


----------



## ByAxel (Nov 5, 2010)

Esto Using PICBASIC PRO™ Compiler as a language tool within Microchip's MPLAB te sirve.

saludos.


----------



## vazko (Nov 5, 2010)

Gracias ByAxel, he tratado de hacer eso pero no me da, es decir, la opcion micro Engineering PIC BASIC PRO compiler, no me aparece  ese precisamente es el problema, o dime cual version de PBP debo usar apra esto...


----------



## ByAxel (Nov 5, 2010)

Uso el PBP2.6, lo que tienes que agregar es el archivo *PBPMPLAB.BAT* como dice según el link; al usar el botón 'Browse' cambia el tipo a 'Todos los archivos' y ve a la carpeta del PBP en busca del *PBPMPLAB.BAT*, aceptas y listo o también puede ser el ejecutable *PBPW.EXE*.


----------



## vazko (Nov 5, 2010)

Gracias BYAxel  eso era, ejecutar el BAT que hay en la carpeta del PBP y el PBPW.EXE y listo! .
Muchisimas Gracias...

ByAxel te molesto de nuevo, todo me ha ido muy bien hasta el momento de compilar...
cuando le doy compilar me sale un error.
adjunto la imagen y me dices que podria ser

gracias


----------



## Gatxan (Nov 6, 2010)

Hola, soy bastante nuevo en esto de los PICS programados en C, y resulta que tengo el siguiente problema:

Tengo un proyecto en C de otra persona que fue compilado con el HI-TECH 7.86 PL3 del año 2002, y que al volver a compilarlo con el MPLAB y el compilador de la misma casa HI-TECH pero ACTUAL, me da errores tipo 192, que segun el manual es porque está escrito al estilo antiguo "K&R".... No entiendo mucho a qué se refiere con esto, pero deberian ser cientos de lineas que deberia modificar.

¿Hay algun otro compilador que acepte versiones antiguas, o que el hi-tech se le pueda hacer entender el código que tengo?


----------



## ByAxel (Nov 6, 2010)

Cual es el código? podrías subirlo?...
No debería haber tanto problema si se compila en el entorno del MPLAB o el entorno de HiTide que es el IDE para los compiladores de Hi-tech.


----------



## Gatxan (Nov 6, 2010)

Por si quereis echarle un vistazo es el zip adjunto. Se trata de un proyecto de vatímetro digital que se publicó en la revista elektor.

Con el HiTide todavia no lo he probado, pero con el Mplab no hay manera.

Saludos


----------



## ByAxel (Nov 6, 2010)

Lo e compilado por otro medio ya que en el MPLAB que tengo no está disponible la opción de Hi-Tech. Pero desde MPLAB se debe crear un proyecto y luego importar el main y todos sus archivos para que pueda compilar.

Sobre el error/incompatibilidad he visto que hay un conflicto con algunas declaraciones PIC16F876A:
- *bit RW @ (unsigned)&PORTC*8+2 ;* que está en el archivo def.h hace conflicto con la declaración *volatile bit RW @ (unsigned)&SSPSTAT*8+2;* que está en el archivo de cabecera del PIC, asi que hay que cambiar *RW* en el archivo *def.h* y *lcd.c* del proyecto.

- Esto *__CONFIG(CP1|CP0|WRT|CPD|WDTE|FOSC0|BODEN);*, tampoco lo reconoce, creo que la declaración de los fuses es de otra forma. Lo puse como comentario y compilo todo...

PD: Use el MPLAB X IDE beta 3 + Hitech picc V9.70.

saludos


----------



## Gatxan (Nov 7, 2010)

Cierto, lo estoy comprobando ahora mismo. 
Tengo que profundizar un poco más en el tema, pero ya lo voy viendo.
Saludos y gracias


----------



## CHOPERS (Nov 10, 2010)

tengo problemas para copilar este programa agradeceria su ayuda......

list      p=16F84      			; Lista de las directivas que definen al microprocesador.
	#include <p16F84.inc>      		; procesador especifico definicion de variables.

	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; '__CONFIG' directiva se utiliza para insertar los datos de configuración dentro archivo .asm 
; Los mensajes siguientes de la directiva se encuentran en las respectivos archivos .Inc 

;***** VARIABLE DEFINITIONS
w_temp        	EQU    	0x0C       	; variable utilizada para guardar el contexto 
status_temp   	EQU    	0x0D       	; variable utilizada para guardar el contexto
irerror			EQU		0x0E		; variable utilizada cuando recibe posibles errors 
irtimer			EQU		0x0F		; variable utilizada para guardar el tiempo bitlenght 
ircounter		EQU		0x10		; variable utilizada como contador de bits
ircmd			EQU		0x11		; variable que mantenga el comando recibido
iradr			EQU		0x12		; variable que mantenga la dirección recibido
irtemp			EQU		0x13		; variable utilizada para calcular ircommand de salida
delay1			EQU		0x14		; variable de tiempo de comparacion de entrada
delay2			EQU		0x15		; variable de tiempo de entrada
CounterA		EQU		0x16		; variable de contador de tiempoA
CounterB		EQU		0x17		; variable de contador de tiempoB
;led				EQU		0x01		; variable que asigna la salida del LED
ir				EQU		0x04		; variable que asigna la entrada de la Señal IR

;**********************************************************************
		ORG		0x000          		; restablece el vector del procesador
 		goto	main           		; envia al inicio del programa goto main
		ORG     0x004           	; ubicación vector de interrupción
		movwf   w_temp            	; save off current W register contents
		movf	STATUS,w        	; mueve el registro status hacia el registro W
		movwf	status_temp       	; save off contents of STATUS register
		movf    status_temp,w    	; recupera copia de registro de status
		movwf	STATUS            	; restablece el contenido pre-isr registro status  
		swapf   w_temp,f
		swapf   w_temp,w         	; restablece el contenido de pre-isr al registro W 
		retfie                   	; retornamos de la interrupcion
init	
		CLRF 	PORTA				;Inicializamos el Puerto A y sus configuraciones
		BCF 	STATUS, RP1
		BSF 	STATUS, RP0 		;Seleccionamos el Banco 1
		MOVLW 	B'11110000'			;Valor usado en la inicializacion
		MOVWF 	TRISA 				
		MOVLW 	B'00000000'			;Valor usado en la inicializacion
		MOVWF 	TRISB 				;Set Rb<7:0> como salidas									
		BCF		STATUS, RP0			;Seleccionamos el banco 0
		return						;retornamos a la subrutina
read_sony   	
		BSF		irerror,0			;Set el errorbit (después se borrará cuando se recibe un código correcto)
        BCF		INTCON,GIE			;Deshabilita interrupciones temporalmente
      	CLRWDT						;Limpiamos el tiempo watchdog
      	BSF   	STATUS,RP0			;Seleccionamos banco1
      	MOVLW   b'10000101'			;Establece el temporizador y prescaler
		MOVWF   OPTION_REG	
 		BCF     STATUS,RP0			;Seleccionamos el banco0
 		BTFSC   PORTA,ir			;Si se trata de un corto sobre el señal ir dejar de leer el código de error.
  		GOTO    end_sony
  		CLRF    TMR0				;Borrar temporizador para medir la longitud startbit
sony_st1    	
		BTFSS   PORTA,ir			;Medir el startbit
		GOTO    sony_st1
		MOVF    TMR0,0				;mueve el valor de bitlength a irtimer
 		MOVWF   irtimer
 		MOVLW   d'32'				;Mide la longitude del startbit menos de 2 ms a continua,si no es error
		SUBWF   irtimer,0
		BTFSS   STATUS,C
		GOTO    end_sony			
 		MOVLW   d'213'				;Si la longitud del startbit fue es 2,6ms entonces la lectura final con código de error. 
		ADDWF   irtimer,0			;Porque cuando no es válido el startbit el código ir ya no es protocolo sony 
 		BTFSC   STATUS,C			;Así startbit debe estar entre 2 ms y 2,6 ms.
		GOTO    end_sony				
		MOVLW   d'7'				;Establecer ir para de recibir 7 bits de comando.
 		MOVWF   ircounter
rd_sony_cmd 	
		CLRF    TMR0				;Medida la primera parte de la bitlength: Si no es entre 300 y 900µs
sony_prt1_c 	
		BTFSC   PORTA,ir			;A continuación, la salida inmediata de la rutina con un error.
        GOTO    sony_prt1_c
		MOVF    TMR0,0
		MOVWF   irtimer
  		MOVLW   d'5'
 		SUBWF   irtimer,0
  		BTFSS   STATUS,C
  		GOTO    end_sony
		MOVLW   d'241'
 		ADDWF  	irtimer,0
 		BTFSC   STATUS,C
 		GOTO    end_sony
		CLRF    TMR0				
 		CLRWDT						;limpiamos el watchdog
sony_prt2_c 	
		BTFSS   PORTA,ir			;Part2 medida del comando bits y probar si la duración es de entre 300 y 1600µs
 		GOTO    sony_prt2_c			;Si entre estos intervalos de prueba, si bitpart segundo es más corto o más largo que 900µs
		MOVF    TMR0,0
 		MOVWF  	irtimer
		MOVLW   d'5'
 		SUBWF   irtimer,0
  		BTFSS   STATUS,C
 		GOTO    end_sony
 		MOVLW   d'230'
		ADDWF  	irtimer,0
		BTFSC   STATUS,C
 		GOTO   	end_sony
		MOVLW   d'241'
   		ADDWF   irtimer,0
		BTFSC   STATUS,C
		GOTO   	sony_its_1
sony_its_0  	
		BCF     STATUS,C			;si inferior a 900 µs recibido el bit es un cero
  		RRF    	ircmd,1
		GOTO    nxt_sony_cmd
sony_its_1  	
		BSF     STATUS,C
 	 	RRF     ircmd,1
nxt_sony_cmd	
		DECFSZ  ircounter,1			;comprobar si todos los bits de comando son procesados en caso de no,recibir el próximo
		GOTO   	rd_sony_cmd			;si es más de la longitud de 900µs recibido es un uno
  		BCF     STATUS,C
 		RRF     ircmd,1				;Girar ircmd una posición para convertirse en comando correcto
 		MOVLW  	d'5'				;ircounter establecido para recibir 5 bits de dirección
 		MOVWF   ircounter
rd_sony_adr  	
		CLRF   	TMR0
sony_prt1_a  	
		BTFSC   PORTA,ir			;conjunto ir contar medida primer bit de longitud inferior a 300µs o más de 900µs entonces recibir 5 bits de dirección
      	GOTO    sony_prt1_a			;luego sale inmediatamente si es error
		MOVF    TMR0,0
		MOVWF   irtimer
		MOVLW   d'5'
		SUBWF   irtimer,0
		BTFSS   STATUS,C
		GOTO    end_sony
		MOVLW   d'241'
		ADDWF   irtimer,0
   		BTFSC   STATUS,C
   		GOTO    end_sony
  		CLRF    TMR0
    	CLRWDT						;limpiamos el tiempo del watchdog
sony_prt2_a  	
		BTFSS   PORTA,ir		
		GOTO    sony_prt2_a			;segunda medida de longitud poco más corto que si 300µs o superior 1600µs
		MOVF    TMR0,0				;luego sale si es error
		MOVWF   irtimer				;Si entre estos intervalos de prueba si el bit es un uno o un cero (más corto o más largo que 900µs)
		MOVLW   d'5'
 		SUBWF   irtimer,0
 		BTFSS   STATUS,C
		GOTO    end_sony
 		MOVLW   d'230'
  		ADDWF   irtimer,0
 		BTFSC   STATUS,C
   		GOTO    end_sony
 		MOVLW   d'241'
 		ADDWF   irtimer,0
		BTFSC   STATUS,C
		GOTO    sony_its_1_a
sony_its_0_a   	
		BCF     STATUS,C			;si bitpart segundo fue más corto que 900µs es un cero
		RRF     iradr,1
 		GOTO    nxt_sony_adr
sony_its_1_a  	
		BSF     STATUS,C			;si bitpart segundo fue más larga que la 900µs es uno
       	RRF    	iradr,1
nxt_sony_adr  	
		DECFSZ  ircounter,1			;Comprueba si todos los bits son procesados en caso de no, recibir el próximo
 		GOTO    rd_sony_adr
		BCF     STATUS,C			;Girar tres veces el iradr a convertirse en la dirección correcta
		RRF     iradr,1
 		BCF     STATUS,C
		RRF     iradr,1
 		BCF     STATUS,C
		RRF     iradr,1
  		CLRF    irerror				;Porque cada bitlength se midió correcto entre los límites no se han producido errores
;		bcf		PORTA,led
end_sony    	
		BCF 	INTCON,T0IF			;Borrar timer0 interrumpir un pabellón para evitar interrupciones
 		BSF     STATUS,RP0
		MOVLW   b'00000101'
		MOVWF   OPTION_REG
 		BCF     STATUS,RP0
 		RETURN
ir_to_outp							;Comienza la seleccion de Botones
		movf	ircmd,W				;Guarda ircmd en irtemp para evitar perder el código recibido
		movwf	irtemp		

		movf	irtemp,W			;Check si el comando de IR es 0 (button 1) entonces la salidas es 1 
		sublw	d'0'				;hace una resta comando y el numero de codigo 
		btfss	STATUS,Z			;hace una comparacion 
		goto	not_button1			;si el resultado no es cero salta al siguiente
		movlw	b'00000001'			;carga la salida al Puerto B
		xorwf	PORTB,1				;deja el dato grabado en el Puerto B
		;call	Tiempo				;tiempo que tarda el dato en el Puerto B
		;goto 	reset				;limpia el puerto si deshabilitamos el puerto deja el codigo en la salida
		goto	end_output			;si queremos que el dato se quede encendido habilitamos esta funcion y deshabilitamos la anterior	
not_button1		
		movf	irtemp,W			;Check si el comando de IR es 1 (button 2) entonces la salidas es 10 
		sublw	d'1'
		btfss	STATUS,Z
		goto	not_button2
		movlw	b'00000010'
		xorwf	PORTB,1
		;call	Tiempo
		;goto 	reset
		goto	end_output
not_button2		
		movf	irtemp,W			;Check si el comando de IR es 2 (button 3) entonces la salidas es 11
		sublw	d'2'
		btfss	STATUS,Z
		goto	not_button3
		movlw	b'00000100'
		xorwf	PORTB,1
		;call	Tiempo
		;goto 	reset
		goto	end_output
not_button3		
		movf	irtemp,W			;Check si el comando de IR es 3 (button 4) entonces la salidas es 100
		sublw	d'3'
		btfss	STATUS,Z
		goto	not_button4
		movlw	b'00001000'
		xorwf	PORTB,1
		;call	Tiempo
		;goto 	reset
		goto	end_output
not_button4		
		movf	irtemp,W			;Check si el comando de IR es 4 (button 5) entonces la salidas es 10000
		sublw	d'4'
		btfss	STATUS,Z
		goto	not_button5
		movlw	b'00010000'
		xorwf	PORTB,1	
		;call	Tiempo
		;goto 	reset
		goto	end_output		
not_button5		
		movf	irtemp,W			;Check si el comando de IR es 5 (button 6) entonces la salidas es 110
		sublw	d'5'
		btfss	STATUS,Z
		goto	not_button6
		movlw	b'00100000'
		xorwf	PORTB,1
		;call	Tiempo
		;goto 	reset
		goto	end_output				
not_button6		
		movf	irtemp,W			;Check si el comando de IR es 6 (button 7) entonces la salidas es 111
		sublw	d'6'
		btfss	STATUS,Z
		goto	not_button7
		movlw	b'01000000'
		xorwf	PORTB,1		
		;call	Tiempo
		;goto 	reset		
		goto	end_output
not_button7		
		movf	irtemp,W			;Check si el comando de IR es 7 (button 8) entonces la salidas es 1000
		sublw	d'7'
		btfss	STATUS,Z
		goto	not_button8
		movlw	b'10000000'
		xorwf	PORTB,1
		;call	Tiempo
		;goto 	reset 
		goto	end_output
not_button8		
		movf	irtemp,W			;Check si el comando de IR es 8 (button 9) entonces la salidas es 1001
		sublw	d'8'
		btfss	STATUS,Z
		goto	not_button9
		movlw	b'00000001'
		xorwf	PORTA,1
		;call	Tiempo
		;goto 	reset		
		goto	end_output
not_button9
		movf	irtemp,W			;Check si el comando de IR es 9 (button 0) entonces la salidas es 2 Puerto A		
		sublw	d'9'				
		btfss	STATUS,Z			
		goto	not_button16 		
		movlw	b'00000010'			
		xorwf	PORTA,1				
		;call	Tiempo				
		;goto 	reset				
		goto 	end_output			
not_button16	
		movf	irtemp,W			;Check si el comando de IR es 16(channel up) entonces la salidas es 1010
		sublw	d'16'
		btfss	STATUS,Z
		goto	not_button17
		movlw	b'00001111'
		xorwf	PORTB,1
		call	Tiempo
		goto 	reset
		;goto	end_output
not_button17
		movf	irtemp,W			;Check si el comando de IR es 17 (channel down) entonces la salidas es 1011
		sublw	d'17'
		btfss	STATUS,Z
		goto	not_button18
		movlw	b'11110000' 
		xorwf	PORTB,1
		call	Tiempo
		goto 	reset
		;goto	end_output
not_button18
		movf	irtemp,W			;Check si el comando de IR es 18 (volunen up) entonces la salidas es 1100
		sublw	d'18'
		btfss	STATUS,Z
		goto	not_button19
		movlw	b'00000011'
		xorwf	PORTA,1
		call	Tiempo
		goto 	reset
		;goto	end_output
not_button19
		movf	irtemp,W			;Check si el comando de IR es 19 (volumen down) entonces la salidas es 1101
		sublw	d'19'
		btfss	STATUS,Z
		goto	not_button20
		movlw	b'00001100'
		xorwf	PORTA,1
		call	Tiempo
		goto 	reset
		;goto	end_output
not_button20
		movf	irtemp,W			;Check si el comando de IR es 20 (mute) entonces la salidas es 100000  
		sublw	d'20'
		btfss	STATUS,Z
		goto	not_button63
		movlw	b'00000100'
		xorwf	PORTA,1
		;call	Tiempo
		;goto 	reset
		goto	end_output
not_button63
		movf	irtemp,W			;Check si el comando de IR es 63 (prev ch) entonces la salidas es 100000  
		sublw	d'63'
		btfss	STATUS,Z
		goto	not_button21
		movlw	b'00001000'
		xorwf	PORTA,1
		;call	Tiempo
		;goto 	reset
		goto	end_output
not_button21
		movf	irtemp,W			;Check si el comando de IR es 21 (Off-On) entonces la salidas es 100000  
		sublw	d'21'
		btfss	STATUS,Z
		goto	not_button26
		movlw	b'11111111'
		xorwf	PORTB,1
		call	Tiempo
		goto 	reset
		;goto	end_output
not_button26
		movf	irtemp,W			;Check si el comando de IR es 26 (PLAY) entonces la salidas es 1000000
		sublw	d'26'
		btfss	STATUS,Z
		goto	end_output			;Si agregamos mas botones escribimos goto not_buttonSiguiente, pero no hay mas finaliza la busqueda
		movlw	b'00001111'
		xorwf	PORTA,1
		call	Tiempo
		goto 	reset
		;goto	end_output
reset								;limpia los puertos
		clrf	PORTB				;PuertoB a cero
		clrf	PORTA				;PuertoA a cero
end_output		
		return						;retorna al codigo principal
delayrout1							;tiempo de comparacion de señal IR
		movlw	d'255'
		movwf	delay2
looping2		
		movlw	d'255'
		movwf	delay1
looping1		
		nop
		nop
		decfsz	delay1,1
		goto	looping1
		decfsz	delay2,1
		goto 	looping2
		return		
Tiempo								;Tiempo de muestra rapido
		movlw 	d'150'
		movwf	CounterA
		movlw	d'150'
		movwf	CounterB
loopTiempo	
		decfsz	CounterB,1
		goto	loopTiempo
		decfsz	CounterA,1
		goto	loopTiempo
		return

;*************************************
;********* 		MAIN  	**************
;*************************************
main								;Codigo Principal
		call	init				;Inicializacion de variables
		clrf	PORTB				;Limpiamos PuertoB 
		clrf	PORTA				;Limpiamos PuertoA 
test			
		call	read_sony			;Funcion que recibe la señal IR
		btfsc	irerror,0			;Busqueda de Errores
		goto 	test				;Se queda esperando nueva entrada
		call	ir_to_outp			;Funcion que verifica los botones y la salida
		call	delayrout1			;Tiempo de comparacion de señal IR
		goto 	test				;Se queda esperando nueva entrada

		END     	              	;Finaliza el programa


----------



## matiaskpo (Nov 15, 2010)

hola que tal hize un programa en assembler de controlar 2 motores via rs232 basicamente lo q hago el mandar un listado de cajas a sellar y me activa un motor conectado a una correa (con un led de estado), y cuando las x cajas pasan por un sensor, se activa otro motor "sellandola" , luego va a ir decrementando la cantidad de cajas hasta llegar a 0 y se prende otro led de estado, cuando lo compile en mplab me aparecen los siguientes errores...
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F627 "SEGUNDO PARCIAL.asm" /l"SEGUNDO PARCIAL.lst" /e"SEGUNDO PARCIAL.err" /d__DEBUG=1 Error[113]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 28 : Symbol not previously defined (RA0) Error[113]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 31 : Symbol not previously defined (RA0) Message[305] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 41 : Using default destination of 1 (file). Error[113]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 41 : Symbol not previously defined (JUAN.1) Message[305] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 43 : Using default destination of 1 (file). Error[113]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 43 : Symbol not previously defined (PEPE.1) Error[108]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 50 : Illegal character (,) Message[305] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 51 : Using default destination of 1 (file). Error[113]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 51 : Symbol not previously defined (CONTADOR.1) Message[302] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 62 : Register in operand not in bank 0.  Ensure that bank bits are correct. Message[302] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 64 : Register in operand not in bank 0.  Ensure that bank bits are correct. Message[302] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 66 : Register in operand not in bank 0.  Ensure that bank bits are correct. Message[302] D:\TECNICAS II\SEGUNDO PARCIAL.ASM 68 : Register in operand not in bank 0.  Ensure that bank bits are correct. Error[129]   D:\TECNICAS II\SEGUNDO PARCIAL.ASM 76 : Expected (END) Halting build on first failure as requested. 

POR FAVOR NECESITO SU AYUDA, TENGO QUE ENTREGARLO ANDANDO EN 3 DIAS!...
el programa que hize fue este..
		list	P=16F627
		include	P16F627.INC
CONTADOR	equ	0x34
PEPE		equ	0x35
JUAN		equ	0x36
		org	0x00
		goto	main


LOOP	clrw
	btfss	PIR1,RCIF	;se fija si hay dato
	goto 	LOOP
	call	RECEPCION	;si hay dato llama a RECEPCION
	movwf	CONTADOR	;guardo dato (para uso en cualquier rutina)
	bcf	PORTA,3		;limpio led de apagado
	bsf	PORTA,2	;	seteo led de encendido	
	call	VELOCIDAD


RECEPCION	movf	RCREG,W		;guarda dato recibido en acumulador
		return


VELOCIDAD	movlw	b'00001100'
		movwf	CCP1CON	;	activo PWM
SEGUIR		movlw 	b'00001111'
		movwf	CCPR1L		;configuro velocidad de motor de cinta
ARRIBA		btfss	PORTA,RA0	;salta si es alto (si hay que sellar)
		goto	ARRIBA 		;vuelve a testear si no hay que sellar todavia
		call 	RETARDO20	
		btfss 	PORTA,RA0	;me aseguro que no sea un ruido
		goto	ARRIBA		;vuelve a testear si es un ruido
		call	PARAR		;llama a rutina de sellado de cajas
		goto 	SEGUIR		;vuelve a encender el motor de cinta si hay que seguir sellando


RETARDO20	movlw	.13
		movwf	PEPE	
SALTO2		movlw	.254
		movwf	JUAN
SALTO1		decfsz	JUAN.1
		goto	SALTO1
		decfsz	PEPE.1
		goto	SALTO2
		return


PARAR	clrf	CCPR1L	;	apago motor de cinta
	movlw	b'10101010'	;le doy velocidad al motor de sellado	
	movwf	PORTA,RA1	;enciendo motor se sellado
	decfsz	CONTADOR.1	;decremento contador de cajas a sellar
	return			;vuelvo a VELOCIDAD si hay que seguir sellando
	bcf	PORTA,2		;limpio led de encendido
	bsf	PORTA,3		;seteo led de apagado
	call 	LOOP		;vuelvo a esperar un nuevo dato si termine de sellar cajas


main	movlw	b'00000111'
	movwf	CMCON		;configuro las entradas como digitales
	bsf	STATUS,RP0	;me muevo al banco 1
	movlw	b'00000010'	;configuro RB1 como entrada (recepcion serial), las demas salidas
	movwf	TRISB
	movlw	b'00000001'	;configuro RA0 como entrada (interruptor se sellado), las demas salidas
	movwf 	TRISA
	movlw	0x19		;configuro la velocidad de lectura a 9600 bps
	movwf	SPBRG
	movlw	b'00100100'	 ;habilito la transmicion asincrona por las dudas
	movwf	TXSTA
	bsf	STATUS,RP0	;me muevo al banco 0
	movlw	b'10010000'	;habilito la recepcion asincrona
	movwf	RCSTA
	goto	LOOP


	ESPERO SU RESPUESTA POR FAVOR MUCHAS GRACIA!


----------



## aguevara (Nov 16, 2010)

Basicamente te esta diciendo que no has definido tus variables y por alli hay un errorcillo de usar coma en lugar de punto y coma


----------



## yamilongiano (Feb 10, 2011)

yo tengo el mismo problema porq ue seria....


----------



## lonely113 (Feb 27, 2011)

hola, estoy programando un pic 16f84a. tengo el problema de que cuando pongo la directiva en MPLAB

_CONFIG _WDT_OFF & _XT_OSC

me da error diciendo que no se reconoce el caracter "&".

ya intente sin el simbolo, sin espacios y nada. 

que estoy haciendo mal? si llamo al archivo p16f84a.inc en el programa.


----------



## Basalto (Feb 27, 2011)

config creo que es con dos barra bajas ej __CONFIG. Un que si, utilizar un programa externo para programar el chip tipo winpic800, lo fusibles se programan en este. Tambien puedes ir a configure-configuration bits y le quitas la pestaña de set to code y lo configuras desde ahi.


----------



## Eminem (Abr 8, 2011)

Buen día a todos:

Estoy haciendo un programa sencillo en lenguaje C para leer la señal de un sensor. La señal será filtrada digitalmente por un dspic30FXXXX.

Cada segundo, la señal resultante del filtrado debe visualizarse en un LCD.

El problema no está en el filtro ni en el LCD. Sucede que al ejecutar la función *sprintf()* el simulador señala un error de pila: _Trap due to stack error, occurred from instruction at 0x001bf0_, tras el cual ocurre un reset; y esto es cíclico.

Les pongo aquí un fragmento de la programación, aclarándoles que la función sprintf() la coloqué al principio de main() para ver qué sucedía, pero igual ocurre el error.


```
void main(void)
{
	float x=123.45; char m[20]; int y;

	sprintf(m, "%f", x);
	
	FIRFilterInit(&lowpass_5_10_100Filter);
	adc_inicializa();
	timer1_inicializa();
	while(1);	
}
```

El progrrama sin la función sprintf() funciona excelente, no así cuando la función está presente. ¿Qué estoy haciendo mal?

Por su atención, muchas gracias.


----------



## Unikfriend (Abr 8, 2011)

Hi,
los errores de stack normalmente son
por falta de memoria de trabajo con 
variables locales. Si tienes varias
funciones anidadas la RAM disponible 
se va decrementando en cada llamada 
a funcion.


----------



## Eminem (Abr 8, 2011)

Muchas gracias por tu respuesta.

Probé utilizando un micro con más memoria y sí funcionó. Al principio yo creí que la librería *stdio.h* me acaparaba toda la memoria RAM. Pero después caí en la cuenta de que estoy implementando un filtro FIR de orden 60; por lo tanto, el programa reserva 61*2=122 bytes para almacenar los coeficientes y 122bytes para almacenar las muestras, con lo cual ya van 244 bytes. También se reservan bytes para almacenar datos iniciales y de control y son aproximadamente 14 bytes más, lo que nos da un total de 258 bytes. Además, como los buffers deben estar alineados, se desperdician unos cuantos bytes, lo cual deja un espacio miserable para la pila, ya que estoy manejando un dsPIC30F2010 con 512 bytes de RAM.

La verdad, no me había puesto a pensar en eso al principio, por eso te reitero el agradecimiento. Hasta pronto.


----------



## Unikfriend (Abr 8, 2011)

Que bien que lo arreglaste!
Slds.


----------



## milealate31 (Abr 22, 2011)

Lo que te pasa es porque las librerias que necesitas:

INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_16FXXX.INC>
INCLUDE <LCD_MENS.INC>

no las tienes guardadas donde está el programa, entonces guardalas. Las encuentras en:  http://www.todopic.com.ar/asm/rama/
despues las guardas en tu compu y luego las copias en donde de ser, la direccion en el sistema es: C:\Program Files\Microchip\MPASM Suite 
y ya!! Vuelves a compilar y funciona. 

He respondido un poco tarde pero bueno, una solucion.


----------



## kenoby (Jun 7, 2011)

para el pic: 16f628a
al compilar un programa para controlar un motor PP me sale la siguiente advertencia en MPLAB

"The configuration bits in the file are invalid and may cause problems if programed.
Do you want to set them to their default value?
Please note that you will need to either rebuild the file or export memory again to correct the file.
Config Field: CP"

en principio el programa lo hice para un 16f84a y lo pase para un 16f628a (haciendo los correspondientes cambios)

funciona correctamente en proteus... pero en el circuito verdadero  el motor gira hacia un solo sentido sin haber recibido señal de algún puerto de entrada.
como si ya esté leyendo una señal de entrada... asi que supongo que será el problema del CP como me advirtió ya que el mismo programa.
 (cambiado en los registros y algunas cosas mas de adaptación) y grabado en un 16f84a funciona correctamente tanto en proteus como en el circuito real. pero realmente necesito del 16f628a

si alguien puede darme una mano estoy agradecido



```
list      p=16f628A           ; list directive to define processor
	#include <p16F628A.inc>       ; processor specific variable definitions

	errorlevel  -302              ; suppress message 302 from list file

	__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT 

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.




;***** VARIABLE DEFINITIONS
w_temp        EQU     0x7E        ; variable used for context saving 
status_temp   EQU     0x7F        ; variable used for context saving





;**********************************************************************
	ORG     0x000             ; processor reset vector
	goto    main              ; go to beginning of program
	

	ORG     0x004             ; interrupt vector location
	movwf   w_temp            ; save off current W register contents
	movf	STATUS,w          ; move status register into W register
	movwf	status_temp       ; save off contents of STATUS register

; isr code can go here or be located as a call subroutine elsewhere


	movf    status_temp,w     ; retrieve copy of STATUS register
	movwf	STATUS            ; restore pre-isr STATUS register contents
	swapf   w_temp,f
	swapf   w_temp,w          ; restore pre-isr W register contents
	retfie                    ; return from interrupt


main


PC         equ    0x02
CONTADOR   equ    0x22
PDel0      equ    0x20
PDel1      equ    0x21
STATUS     equ    0x03
TRISB      equ    0x86
TRISA      equ    0x85
PORTB      equ    0x06
PORTA      equ    0x05

;     bsf     STATUS,5  
;      movlw   00h 
;       movwf   TRISB 
;        movlw   0xFF
;         movwf   TRISA
;          bcf     STATUS,5
;           movlw   00h
;           movwf   PORTA




;leer
;       btfsc  PORTA,0        ;si hay un 1
;       goto   mot1der            ;           ir a derecha
;       btfsc  PORTA,1        ;si hay un 1
;       goto   mot1izq            ;           ir a izquierda
;       btfsc  PORTA,2        ;si hay un 1
;       goto   mot2der            ;           ir a derecha
;       btfsc  PORTA,3        ;si hay un 1
;       goto   mot2izq            ;           ir a izquierda
;       goto   leer

;******************************************************************************

main

           bsf     STATUS,5  
           movlw   00h 
           movwf   TRISB 
           movlw   0x1F
           movwf   TRISA
           bcf     STATUS,5
           movlw   00h
           movwf   PORTB
           movlw   0x08
           movwf   CONTADOR


leer
;selección de sentido:

            btfss     PORTA,0                 ;si hay un 1
            goto      der
            btfss     PORTA,1                 ;si hay un 1
            goto      izq            
            btfss     PORTA,2                 ;si hay un 1
            goto      der
            btfss     PORTA,3                 ;si hay un 1
            goto      izq
            movlw     00h                     ;si no hay señal, mantiene el puerto en 0
            movwf     PORTB
            goto      leer
der            
            incf      CONTADOR,1  
            call      limiteder
            goto      continuar
izq
            call      limiteizq
            decf      CONTADOR,1           ; si no es 0, salta la siguiente instruccion
            goto      continuar

continuar
;seleccion de motor:
                                             ;tomar el valor de CONTADOR y comprobarlo

            movfw     CONTADOR             ; mueve los contenidos de CONTADOR a W
            call      tabla                ;pide un valor de tabla
            btfss     PORTA,0              ;si hay un 1 en este bit
            goto      motor1
            btfss     PORTA,1              ;si hay un 1 en este bit
            goto      motor1
            btfss     PORTA,2              ;si hay un 1 en este bit
            goto      motor2
            btfss     PORTA,3              ;si hay un 1 en este bit
            goto      motor2

motor1
           addlw     b'00100000'          ;al valor puesto en w le suma bit deseleccion eligiendo el primer motor
           goto      seguir     
motor2
           addlw     b'01000000'          ;al valor puesto en w le suma bit deseleccion eligiendo el primer motor
           goto      seguir

seguir
            movwf     PORTB                ;pone el resultado en B
            call      wait
            clrwdt
            goto      leer   

tabla       addwf     PC
            retlw     b'00000010' 
            retlw     b'00000110'    
            retlw     b'00000100'  
            retlw     b'00001100'   
            retlw     b'00001000'  
            retlw     b'00011000'   
            retlw     b'00010000'  
            retlw     b'00010010'  
            retlw     b'00000010'    
     
            return        

limiteder
            movlw     0x08        ; Ponemos 7 en W.
            subwf     CONTADOR,0  ; Restamos W a CONTADOR y ponemos 
                                  ; el resultado en W.
            btfss     STATUS,0    ; Comprueba el flag CARRY. Se activará si CONTADOR es igual o mayor que w, 
                                  ; y se activará como resultado de la instrucción subwf
            return                ; si el flag está en 0 no pasa nada y deja al registro igual      (no salta)     
            clrf      CONTADOR    ; si el flag está activado pone a 0 CONTADOR
            return                ; y despues sí retorna

limiteizq
            movlw     0xFF
            addwf     CONTADOR,0
            btfsc     STATUS,0    ; Comprueba el flag CARRY. Se activará si CONTADOR es igual o mayor que w, 
                                  ; y se activará como resultado de la instrucción subwf
            return                ; si el flag está en 1 no pasa nada y deja al registro igual           
            movlw     0x08       
            movwf     CONTADOR 
            return


;bucle de 40 mls

wait    movlw     .93       ; 1 set numero de repeticion  (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .71       ; 1 set numero de repeticion  (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
PDelL1  goto      PDelL2    ; 2 ciclos delay
PDelL2  
        decfsz    PDel1, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL3  goto      PDelL4    ; 2 ciclos delay
PDelL4  goto      PDelL5    ; 2 ciclos delay
PDelL5  clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.


;	ORG	0x2100
;	DE	0x00, 0x01, 0x02, 0x03

		END                     ; directive 'end of program'
```


----------



## Juanfelg (Jun 7, 2011)

Tienes que revisar los bits de configuración, lo que te está diciendo el MPlab es que los bits en el archivo pueden causar problemas, muy probablemente los bits de configuración del 84A sean diferentes al del 628A y por allí puede estar tu inconveniente que el pic no funcione.

No he trabajado con el 628A, pero puede que no tenga algunos bits de configuración o que tenga algunos mas que el 84A.

Estas diferencias las puedes ver en configure/configurations bits en cada uno de los pic.

otra cosa que puedes hacer es eliminar la configuración de bits del programa y configurarlo desde el menú al momento de compilar y programar el pic.


----------



## kenoby (Jun 7, 2011)

ya dije que hice todo los cambios pertinentes con respecto a este nuevo pic. de hecho la configuración es de la librería de MLAB para ese pic

voy a intentar hacer la configuración como decís desde el menú ... y te cuento
GRACIAS!


----------



## kenoby (Jun 8, 2011)

si alguien mas tiene el mismo problema:
buscando encontré esto:


> The unreferenced config bits most probably have nothing to do with your issue - this is just a warning, nothing else.  You are most likely experiencing the non-initialized ADCxPFGx register(s) problem. The ICD Debug Executive configures it to enable digital i/o on analog pins during debugging, but if you do not do the same in your release code, the digital i/o simply will not work because it is disabled by default (one of the most annoying Microchip's design team decision BTW).



basicamente dice que es una "advertencia" del programa ensamblador.
(aunque tampoco me deja muy tranquilo)


----------



## Miguelectronik (Jun 9, 2011)

bueno que tal amigos, tengo este problema, en principio el proyecto es un termometro digital a base de pic16f877a, un LM35 y el LCD el cual eh programado en el mplab para que salga la frase "proyecto electronica" ademas de la temperatura pero al compilar me vota un sin fin de errores eh estado viendo algunos de los errores eh trtado de modificarlos pero aun revotan las fallas.Porfavor agradeceria si me apoyan en esto,ya que no cuento con mucha experiencia .

*esta es la programación: *

```
list p=16f877a radix hex include "p16f877a.inc" ;declaración de la librería ;*******************declaración de los bits de configuración*****
__config _cp_off&_cpd_off&_lvp_off&_wdt_off&_xt_osc 
;************************** declaración de registros *******************
cblock 0x20 
num1,num2,num3 ;********************************************
pointer ;registros utilizados en unidades,decenas ;binbcd y en la adquisición de centenas,millares ;datos 
datoh 
unidadest,decenast 
centenast,millarest 
sample 
shift 
;**********************************************************************
promedio 
contador 
endc 

cblock 0x70 ;se coloca a datol en una de las localidades de datol ;memoria que están espejadas en banco0 y banco1 
;*************************************** ;********declaración de los pines de control de la lcd***************** 
#define 
rs portc,2 
#define 
en portc,1 ;***************************** ;**************puerto donde estarán los pines de datos de la lcd*************** 

;********************************* ;*************************************;comandos de la pantalla 
portlcd  equ portd 
limpiar  equ b'00000001' ;limpia toda la pantalla 
renglon1 equ b'10000000' ;coloca en el renglón 1 
renglon2 equ b'11000000' ;coloca en el renglón 2 
dison    equ b'00001100' ;enciende el display 
home     equ b'00000010' ;va a la dirección 0 
shiftdl  equ b'00011100' ;rota el lcd a la izquierda 
shiftdr  equ b'00011000' ;rota el lcd a la derecha 
shiftcl  equ b'00010100' ;rota el cursor a la izquierda 
shiftcr  equ b'00010000' ;rota el cursor a la derecha ;*************************************************** 
         org 0x00 ;vector de reset 
         goto inicio ;salto al inicio del código 
         org 0x04 ;vector de interrupción 
;*******************tablas de datos para la subrutina binbcd******************* 
tablau ;tabla de unidades 
         movf pointer,w 
         addwf pcl,f 
         retlw d'2' 
         retlw d'6' 
         retlw d'8' 
         retlw d'4' 
         retlw d'2' 
         retlw d'6' 
         retlw d'8' 
         retlw d'4' 
         retlw d'2' 
         retlw d'1' 

tablad  ;tabla de decenas 
         movf pointer,w 
         addwf pcl,f 
         retlw d'1' 
         retlw d'5' 
         retlw d'2' 
         retlw d'6' 
         retlw d'3' 
         retlw d'1' 
         retlw d'0' 
         retlw d'0' 
         retlw d'0' 
         retlw d'0' 

tablac ;tabla de centenas 
        movf pointer,w 
        addwf pcl,f 
        retlw d'5' 
        retlw d'2' 
        retlw d'1' 
        retlw d'0' 
        retlw d'0' 
        retlw d'0' 
        retlw d'0' 
        retlw d'0' 
        retlw d'0' 
        retlw d'0' 
;****************************************************************************** 
inicio: 
        bsf STATUS,RP0
        bcf STATUS,RP1 ;cambio a banco1 
        clrf trisd ;configuro todo portd como salida 
        bcf trisc,1 ;configuro portc,1 como salida(en) 
        bcf trisc,2 ;configuro portc,2 como salida(rs) 
        bcf  STATUS,RP0 ;cambio a banco0 
        clrf portd ;apago posible latchs en portd 
        clrf portc ;apago posible latchs en portc 
        call init_adqui ;llamo a la subrutina de configuración de ;el modulo adc 
        call initlcd ;llamo a la subrutina de inicialización ;de la pantalla lcd 16x2 
start 
        call d16x2 ;llamo a la subrutina que escribe el mensaje inicial ;********** ;codigo que hace que se ejecute el comando de rotación a la derecha 46 veces 
        movlw .46 
        movwf shift 

vuelta 
        call retardo 
        movlw shiftdr ;comando de rotación 
        call cmd 
        decfsz shift,f 
        goto vuelta 
;**************************************** 
        movlw limpiar ;comando de limpieza de pantalla 
        call cmd 
opera  
        movlw renglon1 ;comando para empezar a escribir a partir ;de la primera dirección del renglon1
        call cmd  
        clrf promedio ;se limpia al registro promedio 
        call adqui ;se llama a la subrutina de adquisición de ;datos del adc 
        call binbcd ;llamo a la subrutina que convierte de binario ;a ascii 
;**************************************** 
        movf millares,w ;mando los datos adquiridos a la lcd 
        call dato 
        movf centenas,w 
        call dato 
        movf decenas,w 
        call dato 
        movf unidades,w 
        call dato 
;**************************************** 
        movlw b'11011111' ;dato para el símbolo de grado 
        call dato 
        movlw 'c' ;la c de celsius 
        call dato 
        goto opera ;regreso al inicio del programa principal 
;**************************subrutina de los mensajes ************************** 
d16x2  movlw "p" 
       call dato 
       movlw "r" 
       call dato 
       movlw "o" 
       call dato 
       movlw "y" 
       call dato 
       movlw "e" 
       call dato 
       movlw "c" 
       call dato 
       movlw "t" 
       call dato 
       movlw "o" 
       call dato 
       movlw " " 
       call dato 
       movlw "p" 
       call dato 
       movlw "d" 
       call dato 
       movlw "m" 
       call dato 
       movlw renglon2 
       call cmd 
       movlw "e" 
       call dato 
       movlw "l" 
       call dato 
       movlw "e" 
       call dato 
       movlw "t" 
       call dato 
       movlw "r" 
       call dato 
       movlw "o" 
       call dato 
       movlw "n" 
       call dato 
       movlw "i" 
       call dato 
       movlw "c" 
       call dato 
       movlw "a" 
       call dato 
       movlw " " 
       call dato 
       movlw "a" 
       call dato 
       movlw "/" 
       call dato 
       movlw "d" 
       call dato 
       return 
;**********************subrutina de adquisición del adc********************** 
adqui: call sampletime ;retardo de adquisición 
       bsf adcon0,go ;inicia la conversión 
       btfsc adcon0,go ;ya se termino la conversión? 
       goto $-1 ;no? pregunta de nuevo 
       banksel adresh ;si, continua 
       movf adresh,w ;lee la parte más significativa 
       movwf datoh ;guárdalo en datoh 
       banksel adresl ;cambio a banco1 
       movf adresl,w ;lee la parte menos significativa 
       movwf datol ;guárdalo en datol 
       banksel portb ;cambio a banco0 
       bcf status,c ;borra el bit de acarreo 
       rrf datoh,f ;elimino el bit menos significativo 
       rrf datol,f ;para ocupar solo 9 bits 
       return 
sampletime: 
       movlw .225 
       movwf sample 
espera_s: 
       nop 
       nop 
       decfsz sample,f 
       goto espera_s 
       return 
;***********************subrutina de inicialización lcd************************ 
initlcd: 
       movlw b'00110000' ;1 
       call cmd 
       movlw b'00110000' ;2 
	   call cmd 
	   movlw b'00110000' ;3 
	   call cmd 
	   movlw b'00111100' ;4 
	   call cmd 
	   movlw b'00001000' ;5 
	   call cmd 
	   movlw b'00000001' ;6 
	   call cmd 
	   movlw b'00000110' ;7 
	   call cmd 
	   movlw dison ;8 
	   call cmd 
	   movlw home 
	   call cmd 
	   return 
;*****************subrutina que envía los caracteres a la lcd****************** 
dato   movwf portlcd 
       bsf rs 
       nop 
       nop 
       nop 
       bsf en 
       call retardo5ms 
       bcf en 
       return 
;******************subrutina que envía los comandos a la lcd******************* 
cmd    movwf portlcd 
       bcf rs 
       nop 
       nop 
       nop 
       bsf en 
       call retardo5ms 
       bcf en 
       return 
;****************************************************************************** 
retardo5ms 
       movlw d'1' 
	   movwf num3 
otra25 movlw d'100' 
	   movwf num2 
otra15 movlw d'166' 
	   movwf num1 
otra5  decfsz num1,f 
	   goto otra5 
	   decfsz num2,f 
	   goto otra15 
	   decfsz num3,f 
	   goto otra25 
	   return 
;****************************************************************************** 
retardo movlw d'3' 
	   movwf num3 
otra25a movlw d'200 
' movwf num2 
otra15a movlw d'166' 
	   movwf num1 
otra5a decfsz num1,f 
	   goto otra5a 
	   decfsz num2,f 
	   goto otra15a 
	   decfsz num3,f 
	   goto otra25a 
	   return 
;******************subrutina de conversión de binario a ascii****************** 
binbcd clrf millares 
	   clrf unidades 
	   clrf decenas 
	   clrf centenas 
	   clrf pointer 
otra btfss datoh,7 
	   goto rota 
	   call tablau 
	   addwf unidades,f 
	   call tablad 
	   addwf decenas,f 
	   call tablac 
	   addwf centenas,f 
;**************************************** 
	   movf unidades,w 
	   sublw d'10' 
	   btfss status,c 
	   goto mayor 
	   goto menor 
mayor incf decenas,f 
	   movlw d'10' 
	   subwf unidades,f 
	   goto dece 
menor movlw d'10' 
	   subwf unidades,w 
	   btfss status,z 
	   goto dece 
	   goto mayor 
;**************************************** 
dece movf decenas,w 
	   sublw d'10' 
	   btfss status,c 
	   goto mayord 
	   goto menord 
mayord incf centenas,f 
	   movlw d'10' 
	   subwf decenas,f 
	   goto cente 
menord movlw d'10' 
	   subwf decenas,w 
	   btfss status,z 
	   goto cente 
	   goto mayord 
;**************************************** 
cente  movf centenas,w 
	   sublw d'10' 
	   btfss status,c 
	   goto mayorc 
	   goto menorc 
mayorc incf millares,f 
	   movlw d'10' 
	   subwf centenas,f 
	   goto milla 
menorc movlw d'10' 
	   subwf centenas,w 
	   btfss status,z 
	   goto milla 
	   goto mayorc 
;**************************************** 
milla movf millares,w 
	   sublw d'10' 
	   btfss status,c 
	   goto mayorm 
	   goto menorm 
mayorm movlw d'10' 
	   subwf millares,f 
	   goto rota 
menorm movlw d'10' 
	   subwf millares,w 
	   btfss status,z 
	   goto rota 
	   goto mayorm 
;**************************************** 
rota rlf datol,f 
	   rlf datoh,f 
	   incf pointer,f 
	   movf pointer,w 
	   sublw d'10' 
	   btfss status,z 
	   goto otra 
	   movlw 0x30 
	   addwf unidades,f 
	   movlw 0x30 
	   addwf decenas,f 
	   movlw 0x30 
	   addwf centenas,f 
	   movlw 0x30 
	   addwf millares,f 
	   return 
;**********************subrutina de configuración del cad********************** 
init_adqui: 
	   bsf status,rp0 
	   bsf TRISA,0 
	   clrf adcon1 
	   bcf status,rp0 
	   movlw b'11000001' 
	   movwf adcon0 
	   return 
	   end ;final del programa
```




estos son los errores


```
Debug build of project `C:\Users\Desktop\miguel\proyecto1.asm.mcp' started.
Language tool versions: MPASMWIN.exe v5.40, mplink.exe v4.38, mplib.exe v4.38
Preprocessor symbol `__DEBUG' is defined.
Thu Jun 09 16:22:59 2011
----------------------------------------------------------------------
Make: The target "C:\Users\Desktop\miguel\fgdfgd\proyectoooo1.o" is out of date.
Executing: "C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F877A "proyectoooo1.asm" /l"proyectoooo1.lst" /e"proyectoooo1.err" /d__DEBUG=1
Warning[205] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 2 : Found directive in column 1. (list)
Warning[215] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 2 : Processor superseded by command line.  Verify processor symbol.
Warning[205] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Found directive in column 1. (__config)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Symbol not previously defined (_cp_off)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Symbol not previously defined (_cpd_off)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Symbol not previously defined (_lvp_off)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Symbol not previously defined (_wdt_off)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 3 : Symbol not previously defined (_xt_osc)
Warning[205] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 5 : Found directive in column 1. (cblock)
Warning[205] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 16 : Found directive in column 1. (ENDC)
Warning[205] C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 18 : Found directive in column 1. (cblock)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 20 : Illegal label (#define)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 21 : Illegal label (rs portc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 21 : Illegal label (2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 22 : Illegal label (#define)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 23 : Illegal label (en portc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 23 : Illegal label (1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 26 : Illegal label (portlcd  equ portd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 27 : Illegal label (limpiar  equ b'00000001')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 28 : Illegal label (renglon1 equ b'10000000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 29 : Illegal label (renglon2 equ b'11000000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 30 : Illegal label (dison    equ b'00001100')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 31 : Illegal label (home     equ b'00000010')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 32 : Illegal label (shiftdl  equ b'00011100')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 33 : Illegal label (shiftdr  equ b'00011000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 34 : Illegal label (shiftcl  equ b'00010100')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 35 : Illegal label (shiftcr  equ b'00010000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 36 : Illegal label (org 0x00)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 37 : Illegal label (goto inicio)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 38 : Illegal label (org 0x04)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 41 : Illegal label (movf pointer)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 42 : Illegal label (addwf pcl)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 43 : Illegal label (retlw d'2')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 44 : Illegal label (retlw d'6')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 45 : Illegal label (retlw d'8')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 46 : Illegal label (retlw d'4')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 47 : Illegal label (retlw d'2')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 48 : Illegal label (retlw d'6')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 49 : Illegal label (retlw d'8')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 50 : Illegal label (retlw d'4')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 51 : Illegal label (retlw d'2')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 52 : Illegal label (retlw d'1')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 55 : Illegal label (movf pointer)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 55 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 56 : Illegal label (addwf pcl)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 56 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 57 : Illegal label (retlw d'1')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 58 : Illegal label (retlw d'5')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 59 : Illegal label (retlw d'2')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 60 : Illegal label (retlw d'6')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 61 : Illegal label (retlw d'3')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 62 : Illegal label (retlw d'1')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 63 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 64 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 65 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 66 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 69 : Illegal label (movf pointer)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 69 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 70 : Illegal label (addwf pcl)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 70 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 71 : Illegal label (retlw d'5')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 72 : Illegal label (retlw d'2')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 73 : Illegal label (retlw d'1')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 74 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 75 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 76 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 77 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 78 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 79 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 80 : Illegal label (retlw d'0')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 83 : Illegal label (bsf STATUS)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 84 : Illegal label (bcf STATUS)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 85 : Illegal label (clrf trisd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 86 : Illegal label (bcf trisc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 86 : Illegal label (1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 87 : Illegal label (bcf trisc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 87 : Illegal label (2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 88 : Illegal label (bcf  STATUS)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 88 : Duplicate label ("RP0" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 89 : Illegal label (clrf portd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 90 : Illegal label (clrf portc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 91 : Illegal label (call init_adqui)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 92 : Illegal label (call initlcd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 94 : Illegal label (call d16x2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 95 : Illegal label (movlw .46)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 96 : Illegal label (movwf shift)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 99 : Illegal label (call retardo)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 100 : Illegal label (movlw shiftdr)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 101 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 102 : Illegal label (decfsz shift)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 102 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 103 : Illegal label (goto vuelta)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 105 : Illegal label (movlw limpiar)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 106 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 108 : Illegal label (movlw renglon1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 109 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 110 : Illegal label (clrf promedio)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 111 : Illegal label (call adqui)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 112 : Illegal label (call binbcd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 114 : Illegal label (movf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 114 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 115 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 116 : Illegal label (movf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 116 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 117 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 118 : Illegal label (movf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 118 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 119 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 120 : Illegal label (movf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 120 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 121 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 123 : Illegal label (movlw b'11011111')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 124 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 125 : Illegal label (movlw 'c')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 126 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 127 : Illegal label (goto opera)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 129 : Illegal label (d16x2  movlw "p")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 130 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 131 : Illegal label (movlw "r")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 132 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 133 : Illegal label (movlw "o")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 134 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 135 : Illegal label (movlw "y")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 136 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 137 : Illegal label (movlw "e")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 138 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 139 : Illegal label (movlw "c")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 140 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 141 : Illegal label (movlw "t")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 142 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 143 : Illegal label (movlw "o")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 144 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 145 : Illegal label (movlw " ")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 146 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 147 : Illegal label (movlw "p")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 148 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 149 : Illegal label (movlw "d")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 150 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 151 : Illegal label (movlw "m")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 152 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 153 : Illegal label (movlw renglon2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 154 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 155 : Illegal label (movlw "e")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 156 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 157 : Illegal label (movlw "l")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 158 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 159 : Illegal label (movlw "e")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 160 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 161 : Illegal label (movlw "t")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 162 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 163 : Illegal label (movlw "r")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 164 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 165 : Illegal label (movlw "o")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 166 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 167 : Illegal label (movlw "n")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 168 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 169 : Illegal label (movlw "i")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 170 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 171 : Illegal label (movlw "c")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 172 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 173 : Illegal label (movlw "a")
Error[121]   C:\USERS\\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 174 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 175 : Illegal label (movlw " ")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 176 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 177 : Illegal label (movlw "a")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 178 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 179 : Illegal label (movlw "/")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 180 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 181 : Illegal label (movlw "d")
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 182 : Illegal label (call dato)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 183 : Illegal label (return)
Error[113]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 185 : Symbol not previously defined (call)
Error[112]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 185 : Missing operator
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 186 : Illegal label (bsf adcon0)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 187 : Illegal label (btfsc adcon0)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 187 : Duplicate label ("go" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 188 : Illegal label (goto $-1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 189 : Illegal label (banksel adresh)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 190 : Illegal label (movf adresh)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 190 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 191 : Illegal label (movwf datoh)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 192 : Illegal label (banksel adresl)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 193 : Illegal label (movf adresl)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 193 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 194 : Illegal label (movwf datol)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 195 : Illegal label (banksel portb)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 196 : Illegal label (bcf status)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 197 : Illegal label (rrf datoh)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 197 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 198 : Illegal label (rrf datol)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 198 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 199 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 201 : Illegal label (movlw .225)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 202 : Illegal label (movwf sample)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 204 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 205 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 206 : Illegal label (decfsz sample)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 206 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 207 : Illegal label (goto espera_s)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 208 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 211 : Illegal label (movlw b'00110000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 212 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 213 : Illegal label (movlw b'00110000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 214 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 215 : Illegal label (movlw b'00110000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 216 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 217 : Illegal label (movlw b'00111100')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 218 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 219 : Illegal label (movlw b'00001000')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 220 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 221 : Illegal label (movlw b'00000001')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 222 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 223 : Illegal label (movlw b'00000110')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 224 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 225 : Illegal label (movlw dison)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 226 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 227 : Illegal label (movlw home)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 228 : Illegal label (call cmd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 229 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 231 : Illegal label (dato   movwf portlcd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 232 : Illegal label (bsf rs)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 233 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 234 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 235 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 236 : Illegal label (bsf en)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 237 : Illegal label (call retardo5ms)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 238 : Illegal label (bcf en)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 239 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 241 : Illegal label (cmd    movwf portlcd)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 242 : Illegal label (bcf rs)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 243 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 244 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 245 : Illegal label (nop)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 246 : Illegal label (bsf en)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 247 : Illegal label (call retardo5ms)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 248 : Illegal label (bcf en)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 249 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 252 : Illegal label (movlw d'1')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 253 : Illegal label (movwf num3)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 254 : Illegal label (otra25 movlw d'100')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 255 : Illegal label (movwf num2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 256 : Illegal label (otra15 movlw d'166')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 257 : Illegal label (movwf num1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 258 : Illegal label (otra5  decfsz num1)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 258 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 259 : Illegal label (goto otra5)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 260 : Illegal label (decfsz num2)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 260 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 261 : Illegal label (goto otra15)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 262 : Illegal label (decfsz num3)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 262 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 263 : Illegal label (goto otra25)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 264 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 266 : Illegal label (retardo movlw d'3')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 267 : Illegal label (movwf num3)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 268 : Illegal label (otra25a movlw d'200)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 269 : Illegal label (' movwf num2)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 270 : Illegal label (otra15a movlw d'166')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 271 : Illegal label (movwf num1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 272 : Illegal label (otra5a decfsz num1)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 272 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 273 : Illegal label (goto otra5a)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 274 : Illegal label (decfsz num2)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 274 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 275 : Illegal label (goto otra15a)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 276 : Illegal label (decfsz num3)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 276 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 277 : Illegal label (goto otra25a)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 278 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 280 : Illegal label (binbcd clrf millares)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 281 : Illegal label (clrf unidades)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 282 : Illegal label (clrf decenas)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 283 : Illegal label (clrf centenas)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 284 : Illegal label (clrf pointer)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 285 : Illegal label (otra btfss datoh)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 285 : Illegal label (7)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 286 : Illegal label (goto rota)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 287 : Illegal label (call tablau)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 288 : Illegal label (addwf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 288 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 289 : Illegal label (call tablad)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 290 : Illegal label (addwf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 290 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 291 : Illegal label (call tablac)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 292 : Illegal label (addwf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 292 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 294 : Illegal label (movf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 294 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 295 : Illegal label (sublw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 296 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 296 : Duplicate label ("c" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 297 : Illegal label (goto mayor)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 298 : Illegal label (goto menor)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 299 : Illegal label (mayor incf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 299 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 300 : Illegal label (movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 301 : Illegal label (subwf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 301 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 302 : Illegal label (goto dece)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 303 : Illegal label (menor movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 304 : Illegal label (subwf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 304 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 305 : Illegal label (btfss status)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 306 : Illegal label (goto dece)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 307 : Illegal label (goto mayor)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 309 : Illegal label (dece movf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 309 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 310 : Illegal label (sublw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 311 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 311 : Duplicate label ("c" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 312 : Illegal label (goto mayord)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 313 : Illegal label (goto menord)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 314 : Illegal label (mayord incf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 314 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 315 : Illegal label (movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 316 : Illegal label (subwf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 316 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 317 : Illegal label (goto cente)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 318 : Illegal label (menord movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 319 : Illegal label (subwf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 319 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 320 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 320 : Duplicate label ("z" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 321 : Illegal label (goto cente)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 322 : Illegal label (goto mayord)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 324 : Illegal label (cente  movf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 324 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 325 : Illegal label (sublw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 326 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 326 : Duplicate label ("c" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 327 : Illegal label (goto mayorc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 328 : Illegal label (goto menorc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 329 : Illegal label (mayorc incf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 329 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 330 : Illegal label (movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 331 : Illegal label (subwf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 331 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 332 : Illegal label (goto milla)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 333 : Illegal label (menorc movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 334 : Illegal label (subwf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 334 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 335 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 335 : Duplicate label ("z" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 336 : Illegal label (goto milla)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 337 : Illegal label (goto mayorc)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 339 : Illegal label (milla movf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 339 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 340 : Illegal label (sublw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 341 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 341 : Duplicate label ("c" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 342 : Illegal label (goto mayorm)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 343 : Illegal label (goto menorm)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 344 : Illegal label (mayorm movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 345 : Illegal label (subwf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 345 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 346 : Illegal label (goto rota)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 347 : Illegal label (menorm movlw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 348 : Illegal label (subwf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 348 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 349 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 349 : Duplicate label ("z" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 350 : Illegal label (goto rota)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 351 : Illegal label (goto mayorm)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 353 : Illegal label (rota rlf datol)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 353 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 354 : Illegal label (rlf datoh)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 354 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 355 : Illegal label (incf pointer)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 355 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 356 : Illegal label (movf pointer)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 356 : Duplicate label ("w" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 357 : Illegal label (sublw d'10')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 358 : Illegal label (btfss status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 358 : Duplicate label ("z" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 359 : Illegal label (goto otra)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 360 : Illegal label (movlw 0x30)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 361 : Illegal label (addwf unidades)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 361 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 362 : Illegal label (movlw 0x30)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 363 : Illegal label (addwf decenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 363 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 364 : Illegal label (movlw 0x30)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 365 : Illegal label (addwf centenas)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 365 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 366 : Illegal label (movlw 0x30)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 367 : Illegal label (addwf millares)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 367 : Duplicate label ("f" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 368 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 371 : Illegal label (bsf status)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 372 : Illegal label (bsf TRISA)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 372 : Illegal label (0)
Error[121]   C:\USERS\\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 373 : Illegal label (clrf adcon1)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 374 : Illegal label (bcf status)
Error[115]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 374 : Duplicate label ("rp0" or redefining symbol that cannot be redefined)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 375 : Illegal label (movlw b'11000001')
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 376 : Illegal label (movwf adcon0)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 377 : Illegal label (return)
Error[121]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 378 : Illegal label (end)
Error[129]   C:\USERS\DESKTOP\MIGUEL\FGDFGD\PROYECTOOOO1.ASM 380 : Expected (END)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Users\Janet vallejos\Desktop\miguel\proyecto1.asm.mcp' failed.
Language tool versions: MPASMWIN.exe v5.40, mplink.exe v4.38, mplib.exe v4.38
Preprocessor symbol `__DEBUG' is defined.
Thu Jun 09 16:23:05 2011
----------------------------------------------------------------------
BUILD FAILED
```


----------



## arsfigo07 (Jun 9, 2011)

oye porque lo tienes tan desordenado? nunca habias programado en mplab es que asi hasta tedioso se ve tu codigo!!! Ponlo entendible y ahora si ayudamos. Esos errores que tienes son la mayoria por la configuracion rara que tienes mira uno facil es asi

	PROCESSOR 16F877A
	#INCLUDE "P16F877A.INC"
	LIST P=16F877A
	__CONFIG _CP_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_PWRTE_ON&_HS_OSC 
;
CBLOCK 0x20
ENDC

	org 00
	goto inicio
	inicio org 05
		BSF		STATUS,RP0
		MOVLW	0x06
		MOVWF	ADCON1
		BCF		STATUS,RP0	
	call LCD_Inicializa

	movlw Mensaje0
	call LCD_MensajeMovimiento

	CALL LCD_Linea2

	movlw Mensaje1
	call LCD_MensajeMovimiento

	a call LCD_CursorOFF
	GOTO a

Mensajes
addwf PCL,F
Mensaje0
DT "Hola Foro electronica", 0X00

Mensaje1
DT "Buen dia foro electronica", 0x00


	INCLUDE  <LCD_4BIT.INC>	; Subrutinas de control del módulo LCD.
	INCLUDE  <LCD_MENS.INC>
	INCLUDE  <RETARDOS.INC>	; Subrutinas de retardo.
	END

Nada mas te faltarian las librerias ahi checalos...


----------



## kenoby (Jun 12, 2011)

Juanfelg dijo:


> Tienes que revisar los bits de configuración, lo que te está diciendo el MPlab es que los bits en el archivo pueden causar problemas, muy probablemente los bits de configuración del 84A sean diferentes al del 628A y por allí puede estar tu inconveniente que el pic no funcione.
> 
> No he trabajado con el 628A, pero puede que no tenga algunos bits de configuración o que tenga algunos mas que el 84A.
> 
> ...



al final la causa era algo tonto que no me había dado cuenta de ditraído. no había configurado el MLAB para el pic 16F628a (eso pasa por estar acostumbrado a utilizar siempre el 16f84a y no modificar esas cosas).
aunque si bien el error de programación estaba solucionado ... me surgía el inconveniente de que todavía en el hardware se observava un error de lectura en los puertos...
lo solucioné usando una lectura inversa. o sea.. en vez de btfss, usé btfsc... o sea los puertos a masa esperando una subida..
aunque la duda me surje de que aún debería de funcionar de las dos formas... 
este error yo lo atribuyo a que quizá utilizaba mal los valores de las resistencias
¿que valor debiera usar si alimento el circuito con una dif de tensión de 5v en btfss en los que asigné como puertos de lectura?
en el 16f84a utilizaba 10k y funcionaba bien...


----------



## Exteban (Jun 13, 2011)

bueno que tal amigos, tengo un inconveniente, mi proyecto es un semaforo con sensores, cuando realizo la compilacion todo parece bien,ya que no me vota errores. Sin embargo, al probarlo en el isis proteus no sigue la secuencia(se enciende la luz verde y la roja nada mas) y no me explico por que. Agradeceria que me respondan la inquietud. dejo la imagen del proteus y la programacion que esta en ams (mplab).



```
;Programa de 2 semaforos con sensores
;Un sensor para cada semaforo. 
;Cuando se activa un sensor (no hay autos) 
;Entradas: Puerto B (RB4 y RB4) mediante interrupciones 
;Salidas:  Puerto B (RB0-RB5)
;		   RB0=Verde1, RB1=Ambar1, RB2=Rojo1
;		   RB3=Verde2, RB4=Ambar2, RB5=Rojo2
;---------------------------------------------------------------

include	"p16f877a.inc"
LIST		P=16f877a

__CONFIG _CP_OFF & _CPD_OFF & _LVP_OFF & _WDT_OFF & _XT_OSC

TIME	equ		0x0C
COUNT1	equ		0x0D
COUNT2	equ		0x0E
COUNT3	equ		0x0F
TEMP	equ		0x10
TEMP2	equ		0x11

		org		0x00		; Inicio de programa
		goto	BEGIN
		org		0x04		; Inicio de rutina de interrupcion
		movwf	TEMP		; Salva el registro W
		movf	STATUS,0	
		movwf	TEMP2		; Salva el estado de los flags
VERIF1:	btfss	PORTB,4		; Procedimiento si se activa RB4
		goto	VERIF2
		movlw	0x19		; Verificar TIME<25
		subwf	TIME,0
		btfsc	STATUS,0	; Finalizar si TIME>25 segundos
		goto	FININT
		movlw	0x18		; Si TIME<25 segundos
		movwf	TIME		; Preestablecer TIME=24
		goto	FININT		
VERIF2:	btfss	PORTB,5		; Procedimiento si se activa RB5
		goto	FININT
		movlw	0x1F		; Verificar TIME>30
		subwf	TIME,0
		btfss	STATUS,0	; Finalizar si TIME<30 segundos
		goto	FININT
		movlw	0x37		; verificar TIME<55
		subwf	TIME,0
		btfsc	STATUS,5
		goto 	FININT
		movlw	0x36		; Si TIME<55 segundos
		movwf	TIME		; Preestablecer TIME=54
FININT:	
		movf	PORTB,0		; Necesario para habilitar interrupciones
		bcf		INTCON,0	; Permitir interrupciones
		movf	TEMP2,0
		movwf	STATUS		; Restaura estado de flags
		movf	TEMP,0
		retfie				; Retorno de Interrupcion

							; Principal
BEGIN:	bsf		INTCON,7	; Habilitacion global de interrupciones
		bsf		INTCON,3	; Interrupciones por puerto B (RB4-RB7)
		bcf		INTCON,0	; Permitir interrupciones
		bsf		STATUS,5	; Inicio configuracion E/S
		clrf	PORTA		; Puerto A como salida
		movlw	0xF0		
		movwf	PORTB		; RB0-RB2 como salidas y RB4-RB7 como entradas
		bcf		STATUS,5	; Fin configuracion E/S
		clrf	TIME
		movlw	0x01		; b'00000001'
		movwf	PORTA		
		movlw	0x04		; b'00000100'
		movwf	PORTB		; RA0=Verde1 y RB2=Rojo2
LOOP:	movlw	0xFA   		; Inicio rutina para que TIME se incremente
		movwf	COUNT1		; cada 1 segundo
		movlw	0xC8		; para cristal de 10 MHz
		movwf	COUNT2
		movlw	0x12	
		movwf	COUNT3		
LOOP1:	decfsz	COUNT1,1
		goto	LOOP1
		movlw	0xFA
		movwf	COUNT1
		decfsz	COUNT2,1
		goto	LOOP1
		movlw	0xFA
		movwf	COUNT1
		movlw	0xC8
		movwf	COUNT2
		decfsz	COUNT3,1
		goto	LOOP1		
		incf	TIME,1
		movlw	0x3C	
		subwf	TIME,0
		btfsc	STATUS,2	; borrar TIME cuando llegue a 60 segundos
		clrf	TIME		; Fin de rutina TIME
		movlw	0x00		; 0 segundos
		subwf	TIME,0
		btfsc	STATUS,2	; si TIME=0 segundos saltar a FIRST
		goto	FIRST
		movlw	0x19		; 25 segundos
		subwf	TIME,0
		btfsc	STATUS,2	; Si TIME=25 segundos saltar a SECOND
		goto	SECOND
		movlw	0x1E		; 30 segundos
		subwf	TIME,0
		btfsc	STATUS,2	; Si TIME=30 segundos saltar a THIRD
		goto	THIRD
		movlw	0x37		; 55 segundos
		subwf	TIME,0
		btfsc	STATUS,2	; Si TIME=55 segundos saltar a FOURTH
		goto	FOURTH
		goto	FINISH
FIRST:	bsf		INTCON,7	; Habilitacion global de interrupciones 
		movlw	0x01		; b'00000001'
		movwf	PORTA
		movlw	0x04		; b'00000100'
		movwf	PORTB		; RA0=Verde1 y RB2=Rojo2
		goto	FINISH
SECOND:	bcf		INTCON,7	; Deshabilitar interrupciones en Ambar
		movlw	0x02		; b'00000010'
		movwf	PORTA		; RA1=Ambar1 y RB2=Rojo2
		goto	FINISH
THIRD:	bsf		INTCON,7	; Habilitacion global de interrupciones
		movlw	0x04		; b'00000100'
		movwf	PORTA
		movlw	0x01		; b'00000001'
		movwf	PORTB		; RA2=Rojo1 y RB0=Verde2
		goto	FINISH
FOURTH:	bcf		INTCON,7	; Deshabilitar interrupciones en Ambar
		movlw	0x02		; b'00000010'
		movwf	PORTB		; RA2=Rojo1 y RB1=Ambar2
FINISH:	goto	LOOP

		end					; Fin de Prograna
```


----------



## Juanfelg (Jun 14, 2011)

Kenoby, que bueno que encontraste el inconveniente. 

A veces lo mas simple puede generar inconvenientes y pensamos que es algo mas grave.

Con respecto a tu inquietud de las resistencias, puedes probar bajando su valor como dices, aunque ya lo solucionaste en el programa.

Saludos.


----------



## retrofit (Jul 30, 2011)

Buenos días.
A ver si alguien me puede ayudar
Estoy intentando compilar con el MPLAB v8.70 un fichero ASM para generar el HEX

La cabezera  es la siguiente...

_LIST P=16F627A
        include <p16f627a.inc>

 	__CONFIG _DATA_CP_OFF & _CP_OFF & _WDT_ON & _BOREN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF_

Pero al compilar me da el siguiente error...

_Error[113]   F:\TX_Data\TX_Data.ASM 10 : Symbol not previously defined (_DATA_CP_OFF)
_

Pero si quito la Primera intrucción.... _DATA_CP_OFF  y lo dejo como sigue...


_	__CONFIG _CP_OFF & _WDT_ON & _BOREN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF_

El MPLAB compila todo el ASM  y genera el HEX sin ningún error.

¿Qué puede estar pasando?

La cabezera la he copiado de un ASM que funciona  (COPY-PASTE)

La Opción Configurations Bits está marcada como Configuration Bit set in code

¿Qué hago mal?

Gracias.


----------



## Daniel Meza (Jul 30, 2011)

Me parece que el error es el espacio que hay después de "CONFIG", tienes esto: __CONFIG _DATA_CP_OFF &, prueba con __CONFIG_DATA_CP_OFF... saludos


----------



## retrofit (Jul 30, 2011)

Daniel Meza dijo:


> Me parece que el error es el espacio que hay después de "CONFIG", tienes esto: __CONFIG _DATA_CP_OFF &, prueba con __CONFIG_DATA_CP_OFF... saludos



Gracias Daniel por contestar.
No creo que el error sea por eso ya que en la segunda linea...

___CONFIG _CP_OFF & _WDT_ON & _BOREN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF_

está el espacio y lo compila sin problemas.

Saludos.


----------



## mikeekim (Ago 11, 2011)

Solo tienes que seleccionar el PBPMPLAB.BAT en lugar del PBPW.exe y que el PBPMPLAB.BAT tenga correcta la ruta donde se encuentra el MPASM Suite.


----------



## facureta (Ago 23, 2011)

Hola! mira yo tenia el mismo problema y lo solucione gracias al siguiente video... 







Consiste en que instales el plugin ccs para mplab. Segui bien los pasos y vas a ver que se soluciona todo.

PD: sino conseguis el plugin y demas archivos aca te dejo un link donde los podes descargar.



Saludos y espero que te sea de ayuda.


----------



## kingpromaker (Nov 22, 2011)

Hola apenas me estoy familiarizando con los microcontroladores, y bueno hice un programa en MPlab que es el siguiente:

Hacer un programa que en la salida muestre en estado alto los bits:

0,1,3,5,7

pues en binario solo a la salida estoy poniendo leds, me quedaria asi:


1010 1011    en binario

ahora, este es el programa que hice en Mplab

Asi es como lo compile:



			LIST		P=16F887
			INCLUDE 	<P16F887.INC>
			ORG			0


INICIO		BSF			STATUS,	RP0;  
			CLRF		TRISB;       
			BCF			STATUS,	RP0;  

			MOVLW		b'10101011

			END

y me sale bien, pero cuando lo hago en proteus, me salen errores, porfavor si alguien sabe porque agradezco su ayuda






Ahi adjunto el proyecto en Mplab y lo que hice en PROTEUS gracias


----------



## leo625 (Nov 22, 2011)

En tu codigo te falta descargar el valor de registro de trabajo W en el portb:
   movlw    b'10101011'
   movwf    PORTB  ------> esta instruccion te falta
   END


----------



## kingpromaker (Nov 22, 2011)

a si?
jejejee, ok pues muchas gracias dejame checarl y te digo si ya me lo corre tambien en proteus ^^


----------



## kingpromaker (Nov 23, 2011)

leo625 dijo:


> En tu codigo te falta descargar el valor de registro de trabajo W en el portb:
> movlw    b'10101011'
> movwf    PORTB  ------> esta instruccion te falta
> END



Caballero, le agradezco ya me funciono el programa, y si me prenden los LED´s que dios te bendiga hermano


----------



## dieguin (Nov 24, 2011)

lo unicoque tienes que hacer es en la parte superior de laventana de MPLAB hay una opcion que dice Configure y en la primera opción Select Device entras en esta y escojes el pic que estas usando y sale seguro que funciona


----------



## xsxfkill (Ene 12, 2012)

Hola, lo que pasa es que recien descargue el mplab v8.56 y ps hice un programa que ya habia compilado en otra parte y corre perfectamente, asi ke me traje la programacion en un doc de texto para seguir trabajando en mi pc y ps le configure nuevamente el micro correspondiente pero al compilarlo me sale esto:


Release build of project `C:\mplab\Ejercicio - 7.disposable_mcp' started.
Thu Jan 12 12:03:20 2012
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Couldn't locate build tool.  Check tool locations.
----------------------------------------------------------------------
Release build of project `C:\mplab\Ejercicio - 7.disposable_mcp' failed.
Thu Jan 12 12:03:20 2012
----------------------------------------------------------------------
BUILD FAILED

asi que el error creo que esta en la parte que dice "Couldn't locate build tool.  Check tool locations." pero no se como solucionarlo...de antemano muchas gracias por sus respuestas


Ah y se me olvidaba tambien le instale con el programa mplab una aplicacion llamada " HITECH C COMPILER FOR PIC10-12-16 MCUS v9.71" y al abrirlo me pidio una licencia pero yo di clic en "work in lite mode" que creo que se puede trabajar pero con funcionalidades reducidas...no se si ese sera el error....bno Muchas gracias de antemano a todos!!!


----------



## arrivaellobo (Ene 12, 2012)

El error parece que a la hora de crear un nuevo proyecto, tienes que seleccionar el Active Toolsuite que vas a utilizar. Si trabajas en ensamblador tienes que seleccionar Microchip MPASM Toolsuite, y si trabajas en C con Hi-Tech, selecciona Hi-Tech PICC Toolsuite.

Un abrazo


----------



## xsxfkill (Ene 12, 2012)

Hey amigo gracias! pero aparecio un nuevo problema, hice un proyecto atravez del proyect wizard, ahi me preguntan por la pic, y luego selecciono el active toolsuite que en mi caso es el microchip MPASM, y sus contenidos aparecian con una x roja y es porque la ruta estaba mal, bno  les corregi la ruta y desaparecieron las x y le di siguiente, luego me pregunta para crear un archivo de proyecto, le doy buscar, selecciono una carpeta en un directorio raiz como el C// para que no me saque errores por la ruta, le pongo un nombre (creo que se guarda con la extencion .mcp) bno y luego me pide que añada archivos al proyecto, ahi le añado un archivo con extencion.asm que es el que contiene la programacion, bno y al querer hacer la quick build (compilacion rapida) me aparece desabilitada (no .asm file ) y ps no se que hacer...Muchas gracias por tu respuesta!!


----------



## arrivaellobo (Ene 12, 2012)

que raro..
Sube el archivo asm a ver si consigo crear el proyecto y te digo.

Un abrazo


----------



## xsxfkill (Ene 12, 2012)

ok amigo muchas gracias!! aqui te adjunto el archivo..se trata de hacer toggle para prender y apagar un led con el mismo pulsador...muchas gracias!   Ver el archivo adjunto 65706


----------



## D@rkbytes (Ene 12, 2012)

xsxfkill dijo:
			
		

> Hey amigo gracias! pero aparecio un nuevo problema, hice un proyecto atravez del proyect wizard, ahi me preguntan por la pic, y luego selecciono el active toolsuite que en mi caso es el microchip MPASM, y sus contenidos aparecian con una x roja y es porque la ruta estaba mal, bno  les corregi la ruta y desaparecieron las x y le di siguiente, luego me pregunta para crear un archivo de proyecto, le doy buscar, selecciono una carpeta en un directorio raiz como el C// para que no me saque errores por la ruta, le pongo un nombre (creo que se guarda con la extencion .mcp) bno y luego me pide que añada archivos al proyecto, ahi le añado un archivo con extencion.asm que es el que contiene la programacion, bno y al querer hacer la quick build (compilacion rapida) me aparece desabilitada (no .asm file ) y ps no se que hacer...Muchas gracias por tu respuesta!!


No te aparece habilitada esa opción porque creaste un proyecto *.MCP *.MCW
Esa opción es para compilar archivos ASM que no tienen un proyecto MCP asociado.
Pero en cambio te apareceran habilitadas otras funciones de compilación abajo de QuickBuild.
Como Build All, Make, Build Configuration y Build Options.


----------



## arrivaellobo (Ene 13, 2012)

Como dice Darkbytes, usa la opción Build All y listo


----------



## xsxfkill (Ene 13, 2012)

ok amigos muchas gracias por sus respuestas, con la opcion build all ya lo pude compilar y me genero el archivo .hex que es el que necesitaba para simularlo en el proteus...De nuevo les quedo eternamente agradecido!!! Un abrazo!!!


----------



## syryus (Feb 11, 2012)

Hola, estoy intentado compilar con PIC BASIC PRO 2.6 desde MPLAB. Utilizo Windows 7 de 64 bits. El problema que tengo es que a la hora de compilar un programa me da un error:


```
Executing: "C:\PBP\PBPMPLAB.BAT" -n -ampasmwin -k#   -p18F2550 "Untitled.bas"
Executing: "C:\PBP\PBPL.EXE" -ampasmwin -k# -p18F2550 "Untitled.bas"    
PICBASIC PRO(TM) Compiler 2.60L, (c) 1998, 2009 microEngineering Labs, Inc.
All Rights Reserved.

ERROR: Unable to access file C:\4 leds\Untitled.O
Error processing COFF file C:\4 leds\Untitled.O
Warning[205] C:\4 LEDS\UNTITLED.ASM 120 : Found directive in column 1. (__CONFIG)
Warning[205] C:\4 LEDS\UNTITLED.ASM 129 : Found directive in column 1. (__CONFIG)
Warning[205] C:\4 LEDS\UNTITLED.ASM 138 : Found directive in column 1. (__CONFIG)
Warning[205] C:\4 LEDS\UNTITLED.ASM 147 : Found directive in column 1. (__CONFIG)
Warning[205] C:\4 LEDS\UNTITLED.ASM 156 : Found directive in column 1. (__CONFIG)
Warning[205] C:\4 LEDS\UNTITLED.ASM 165 : Found directive in column 1. (__CONFIG)
Halting build on first failure as requested.
BUILD FAILED: Sat Feb 11 23:00:53 2012
```

Los warnings se deben a que configuro los fuses a través del código y me advierte de ello, pero no es el problema principal (antes compilaba con la versión 3.0 y lo hacía bien). El problema es el "Error processiong COFF file..." que me estoy volviendo loco para solucionarlo. Ya he probado con otras versiones de MPLAB por si estaba el problema ahí, pero tampoco

¿Alguna idea de como solucionarlo?


----------



## J2C (Feb 11, 2012)

Syrius

Perdón, pero te esta diciendo como primer error:



syryus dijo:


> .......
> *ERROR: Unable to access file C:\4 leds\Untitled.O*
> Error processing COFF file C:\4 leds\Untitled.O
> ....


 
Y eso me parece que es debido a que no encuentra el archivo *Untitled.O* posiblemente por que no le guste el directorio *4 leds* con un espacio en el medio. Proba de cambiar el nombre o ponerle un guión al estilo *4-leds*.



Saludos, JuanKa.-


----------



## syryus (Feb 12, 2012)

He cambiado el nombre del directorio y sigue fallando


----------



## syryus (Feb 12, 2012)

Vale, finalmente el error estaba en la ruta de MPASM que era demasiado larga


----------



## J2C (Feb 12, 2012)

Syryus

Alguna vez me habia pasado, yo también usaba espacios en los nombres de los directorios.



Saludos, JuanKa.-


----------



## syryus (Feb 18, 2012)

Vuelvo a reflotar este hilo para que la información no quede dispersa por el foro.

Ha vuelto a darme otro error parecido: "Error processing COD file...". La ruta del archivo es corta, no tiene espacios. He probado también con varias versiones de MPLAB y nada. 

Solo me lo hace con este archivo. El archivo que intento compilar es el .PBP que sale al usar EASYHID y no se como solucionarlo. ¿Alguna idea?


----------



## J2C (Feb 18, 2012)

Syryus

Desde donde intentas compilarlo, desde el PBP o directamente desde el MPLab?.



Saludos, JuanKa.-


----------



## syryus (Feb 18, 2012)

Compilo desde MPLAB


----------



## J2C (Feb 18, 2012)

Syryus

Digo, ahora no sera que la ruta del PBP es demasiado larga ???.

Por otra parte, yo estaba acostumbrado a compilar con el MPLab solo archivos "**.ASM*", aclaro que no es mucha mi experiencia.



Saludos, JuanKa.-


----------



## skaty220 (Feb 18, 2012)

Soy principiante de Microcontraladores, y al compilarlo me sale este error 
Preprocessor symbol `__DEBUG' is defined.

		LIST	P=18F2550
		INCLUDE	<PIC18F2550.INC>

;Bits de configuracion

		CONFG FOSC = INTOSCIO_EC
		CONFIG MCLRE = ON
		CONFIG BOR = OFF
		CONFIG PWRT = OFF
		CONFIG LVP = OFF
		CONFIG XINST = OFF
		CONFIG PBADEN = OFF
		CONFIG CP0 = OFF
		CONFIG CP1 = OFF
		CONFIG CP2 = OFF
		CONFIG CP3 = OFF
		CONFIG CPB = OFF
		CONFIG CPD = OFF

;configuracion de los puertos				

		ORG 0X0000
		ORG 0X0050

begin	movlw	b'01100110'
		movwf	OSCCON
		movlw	b'00001111'
		movwf	ADCON1
		movlw	b'00000111'
		movwf	CMCON
		movlw	b'11111111'
		movwf	TRISA
		movlw	b'00000000'
		movwf	TRISB
		movlw	b'00000000'
		movwf	TRISC

;Programa

		clrf	PORTA
		clrf	PORTB
		clrf	PORTC

INICIO	movlw	b'10101010'
		movwf	PORTB
		call	RETARD
		movlw	b'01010101'
		movwf	PORTB
		call	RETARD
		goto	INICIO
RETARD	movlw	d'10'
		movwf	0x0020
CICLO3	movlw	d'200'
		movwf	0x0021
CICLO2	movlw	d'166'
		movwf	0x0022
CICLO1	decfsz	0x0022,1
		goto	CICLO1	
		decfsz	0x0021,1
		goto	CICLO2
		decfsz	0x0020,1
		goto	CICLO3
		return
		end	
El error es el siguiente

Preprocessor symbol `__DEBUG' is defined.
Sat Feb 18 16:29:48 2012
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Build aborted.  The project contains no source files.
----------------------------------------------------------------------
Debug build of project `C:\Users\Patty\Desktop\6º Semestre\Micro\p\Proyect2.mcp' failed.
Language tool versions: MPASMWIN.exe v5.43, mplink.exe v4.41, mplib.exe v4.41
Preprocessor symbol `__DEBUG' is defined.
Sat Feb 18 16:29:48 2012
----------------------------------------------------------------------
BUILD FAILED

El programa tiene que hacer una secuencia de leds, la verdad no tengo ni idea de porque sale el error, ya que aun se muy poquito, gracias


----------



## syryus (Feb 18, 2012)

No creo que sea por eso ya que todo esta en C:
Además a la hora de compilar otros archivos no suele haber problema


----------



## J2C (Feb 18, 2012)

Syryus

Puede ser que ese archivo que deseas compilar "tres.bas" posea alguna sentencia del tipo "*include .. .. ..*" y si no encuentra a ese otro archivo te dara mensajes de error. 

Dado que lo tienes seteado al proceso de compilación en que al primer error se cancele el mismo, deberas investigar un poco mas.



Saludos, JuanKa.-


----------



## D@rkbytes (Feb 19, 2012)

skaty220 dijo:


> Soy principiante de Microcontraladores, y al compilarlo me sale este error
> Preprocessor symbol `__DEBUG' is defined. ; <-- Esto no es un error
> 
> 
> ...


Corrige esos errores y lo podrás compilar.
Suerte y hasta luego.

PD. Saludos a Saltillo. Yo vivi por allá más de 20 años.


----------



## skaty220 (Feb 19, 2012)

Darkbytes dijo:


> Corrige esos errores y lo podrás compilar.
> Suerte y hasta luego.
> 
> PD. Saludos a Saltillo. Yo vivi por allá más de 20 años.




Muchas gracias, si tienes razon y aparte no cargue el programa al proyecto, ya pude resolverlo muchas gracias, saludos!


----------



## Meta (Feb 25, 2012)

Hola:

Con este código esoy pasando un jemplo del PIC16F84A al PIC16F88.


```
; El LED conectado a la línea 0 del puerto de salida se enciende durante 400 ms y se
; apaga durante 300 ms. Utiliza las subrutinas de la librería RETARDOS.INC.
;
; ZONA DE DATOS *********************************************************************

    LIST        P=16F88
    INCLUDE        <P16F88.INC>
        __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
        __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

    CBLOCK  0x20
    ENDC

#DEFINE  LED    PORTB,0

; ZONA DE CÓDIGOS *******************************************************************

    ORG    0
Inicio
    bsf        STATUS,RP0                ; Acceso al Banco 1.
    bcf        LED                        ; Línea del LED configurada como salida.
    bcf        STATUS,RP0                ; Acceso al Banco 0.
Principal
    bsf        LED                        ; Enciende el LED
    call    Retardo_200ms            ; durante la suma de este tiempo.
    call    Retardo_200ms
    bcf        LED                        ; Lo apaga durante la suma de los siguientes
    call    Retardo_200ms            ; retardos.
    call    Retardo_100ms
    goto     Principal

    INCLUDE  <RETARDOS.INC>            ; Librería con subrutinas de retardo.
    END                                ; Fin del programa.
```

Tengo un error y no se como slucionarlo con el nuevo MPLAB_X v1.00 ya que no me lo indica tan fácil como el MPLAB v8.84 al pinchar dos veces en el mensaje de error.

*make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Documents and Settings/Administrador/MPLABXProjects/Retardos_16F88.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Retardos_16F88.X.production.hex
make[2]: Entering directory `C:/Documents and Settings/Administrador/MPLABXProjects/Retardos_16F88.X'
"C:\Archivos de programa\Microchip\MPLABX\mpasmx\mpasmx.exe" -q -p16f88 -l"build/default/production/build/default/production/nbproject/Retardo_02.lst" -e"build/default/production/build/default/production/nbproject/Retardo_02.err" -o"build/default/production/build/default/production/nbproject/Retardo_02.o" build/default/production/nbproject/Retardo_02.asm 
"C:\Archivos de programa\Microchip\MPLABX\mpasmx\mplink.exe"    -p16f88  -w     -z__MPLAB_BUILD=1  -odist/default/production/Retardos_16F88.X.production.cof  build/default/production/build/default/production/nbproject/Retardo_02.o   build/default/production/nbproject/RETARDOS.INC  
MPLINK 4.41, Linker
Device Database Version 1.5
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - unrecognized input: build/default/production/nbproject/RETARDOS.INC
Errors    : 1

make[2]: Leaving directory `C:/Documents and Settings/Administrador/MPLABXProjects/Retardos_16F88.X'
make[2]: *** [dist/default/production/Retardos_16F88.X.production.hex] Error 1
make[1]: Leaving directory `C:/Documents and Settings/Administrador/MPLABXProjects/Retardos_16F88.X'
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 2s)*

¿Cuál es el error?


----------



## Basalto (Feb 26, 2012)

Hola. Ese error me lo daba cuando no encontraba la carpeta del LINKER (Botón derecho sobre proyecto y darle a propiedades), o cuando intentaba compilar con el c18 de dudosa procedencia


----------



## isranator3 (Mar 23, 2012)

Hola a todos estoy tratando de compilar un programa para PIC16F886 con pbp 2.6 y mplab v8.83, pero cuando doy click en "compile" me aparece el siguiente mensaje: 

Executing: "C:\PBP\PBPMPLAB.BAT" -ampasmwin -k#   -p16F886 "servo.bas" 
  MPASMWIN.EXE could not be found at: 
  C:\Program Files\Microchip\MPASM Suite 
  In order for PBP to function from MPLAB, the path to 
  MPASMWIN.EXE must be corrected by editing the file: 
  "C:\PBP\PBPMPLAB.BAT" 
BUILD FAILED: Fri Mar 23 10:50:19 2012 

ya he intentado lo que dice en esta pagina http://melabs.com/support/mplab.htm
y no me funciona aun 
Ojala pudieran ayudarme a solucionar el problema. De antemano gracias por su ayuda 
 (uso windows xp profesional versión 2002 service pack 2)


----------



## D@rkbytes (Mar 23, 2012)

isranator3 dijo:


> Hola a todos estoy tratando de compilar un programa para PIC16F886 con pbp 2.6 y mplab v8.83, pero cuando doy click en "compile" me aparece el siguiente mensaje:
> 
> Executing: "C:\PBP\PBPMPLAB.BAT" -ampasmwin -k#   -p16F886 "servo.bas"
> MPASMWIN.EXE could not be found at:
> ...


  Saludos.
Tienes que modificar el archivo C:\PBP\PBPMPLAB.BAT
Como tu instalación de Windows debe estar en español,
el programa MPASMWIN.EXE se instala en C:\Archivos de programa\Microchip\MPASM Suite
Y en tu archivo PBPMPLAB.BAT se hace referencia hacia C:\Program Files\Microchip\MPASM Suite
Debes modificar dicho archivo precisamente en la línea que dice:
SET MPASMWIN_PATH=C:\Program Files\Microchip\MPASM Suite
Por esto otro:
SET MPASMWIN_PATH=C:\Archivos de programa\Microchip\MPASM Suite
Con eso debe compilar sin problemas.
Nota: La configuración de fuses no debe estar en el programa,
debe ser modificada en el archivo *.inc correspondiente al PIC que utilices.
En seguida de la línea     __CONFIG
Y se escriben en lenguaje ensamblador.
Pero es opcional si los puedes establecer con el programa que uses para grabar el PIC.
O dejar los fuses que se encuentran por default.
Suerte y hasta luego.


----------



## isranator3 (Mar 27, 2012)

Hey! muchas gracias solucionaste mi problema, ya compila sin problemas


----------



## D@rkbytes (Mar 27, 2012)

isranator3 dijo:


> Hey! muchas gracias solucionaste mi problema, ya compila sin problemas


Saludos.
Es bueno saber que este tip soluciono tu problema.
Así quedara como referencia para otras personas que les suceda lo mismo.

Suerte y hasta luego.


----------



## marcos716 (May 10, 2012)

Hola que tal? Me veo bajo la urgencia de buscar ayuda de gente que sepa mas que yo 
Hace varios dias que estoy tratando de hacer funcionar una pantalla LCD 16x2 con *MPLAB* y el compilador *HI-TECH C COMPILER*.
Despues de dar muchas vueltas por la web, encontre unas librerias en C que son las mas simples que habia. El tema es que el programa con las librerias me compila pero no lo puedo hacer andar en Proteus. Es decir que no me muestra nada la pantallita. 

Les paso las librerias que tengo agregadas a mi programa para que le hechen un ojo y el circuito en Proteus.
Alguien que me diga que esta mal porfavor que ya me estoy desesperandooooo!

Saludos! 

*lcd.h*

```
extern void lcd_write(unsigned char);		//Write a byte to the LCD in 4 bit mode
extern void lcd_clear(void);			//Clear and home the LCD
extern void lcd_puts(const char * s);		//Write a string of characters to the LCD
extern void lcd_goto(unsigned char pos);	//Go to the specified position
extern void lcd_init(void);			//Initialize the LCD - Call before anything else!
extern void lcd_putch(char);

/*	Set the cursor position */
#define	lcd_cursor(x)	lcd_write(((x)&0x7F)|0x80)
#define	LINE1		0x00			//Position of line1
#define	LINE2		0x40			//Positino of line2
```


*lcd.c*

```
#include	<pic.h>
#include	"../lib/lcd.h"
#include	"../lib/delay.h"

#define LCD_RS	RA2	// Register select
#define LCD_EN	RA3	// Enable
#define LCD_D4	RB0	// Data bits
#define LCD_D5	RB1	// Data bits
#define LCD_D6	RB2	// Data bits
#define LCD_D7	RB3	// Data bits

#define	LCD_STROBE	((LCD_EN = 1),(LCD_EN=0))

/***************************************/
/*Write a byte to the LCD in 4 bit mode*/
/***************************************/
void
lcd_write(unsigned char c)
{
	if(c & 0x80) LCD_D7=1; else LCD_D7=0;
	if(c & 0x40) LCD_D6=1; else LCD_D6=0;
	if(c & 0x20) LCD_D5=1; else LCD_D5=0;
	if(c & 0x10) LCD_D4=1; else LCD_D4=0;
	LCD_STROBE;
	if(c & 0x08) LCD_D7=1; else LCD_D7=0;
	if(c & 0x04) LCD_D6=1; else LCD_D6=0;
	if(c & 0x02) LCD_D5=1; else LCD_D5=0;
	if(c & 0x01) LCD_D4=1; else LCD_D4=0;
	LCD_STROBE;	
	DelayUs(40);
}


/******************************/
/*   Clear and home the LCD   */
/******************************/
void
lcd_clear(void)
{
	LCD_RS = 0;
	lcd_write(0x1);
	DelayMs(2);
}


/**************************************/
/* Write a string of chars to the LCD */
/**************************************/
void
lcd_puts(const char * s)
{
	LCD_RS = 1;	// write characters
	while(*s) lcd_write(*s++);
}


/**********************************/
/* Write one character to the LCD */
/**********************************/
void
lcd_putch(unsigned char c)
{
	LCD_RS = 1;	// write characters
	lcd_write(c);
}


/********************************/
/* Go to the specified position */
/********************************/
void
lcd_goto(unsigned char pos)
{
	LCD_RS = 0;
	lcd_write(0x80 + pos);
}


/********************************************/	
/* Initialise the LCD - put into 4 bit mode */
/********************************************/
void
lcd_init(void)
{
	LCD_RS = 0;		// write control bytes
	DelayMs(15);		// power on delay
	LCD_D4 = 1;		// init!	
	LCD_D5 = 1; 		//
	LCD_STROBE;	
	DelayMs(5);
	LCD_STROBE;		// init!	
	DelayUs(100);
	LCD_STROBE;		// init!	
	DelayMs(5);
	LCD_D4 = 0;		// set 4 bit mode
	LCD_STROBE;	
	DelayUs(40);
	lcd_write(0x28);	// 4 bit mode, 1/16 duty, 5x8 font, 2lines
	lcd_write(0x0C);	// display on
	lcd_write(0x06);	// entry mode advance cursor
	lcd_write(0x01);	// clear display and reset cursor
}
```


*delay.h*

```
#ifndef XTAL_FREQ
 #define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */
 #endif
 
#define MHZ *1000L /* number of kHz in a MHz */
 #define KHZ *1 /* number of kHz in a kHz */
 
#if XTAL_FREQ >= 12MHZ
 
#define DelayUs(x) { unsigned char _dcnt; \
 _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
 while(--_dcnt != 0) \
 continue; }
 #else
 
#define DelayUs(x) { unsigned char _dcnt; \
 _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
 while(--_dcnt != 0) \
 continue; }
 #endif
 
extern void DelayMs(unsigned char);
```



*delay.c*

```
#include "../lib/delay.h"
 
void
 DelayMs(unsigned char cnt)
 {
 #if XTAL_FREQ <= 2MHZ
 do {
 DelayUs(996);
 } while(--cnt);
 #endif
 
#if XTAL_FREQ > 2MHZ 
unsigned char i;
 do {
 i = 4;
 do {
 DelayUs(250);
 } while(--i);
 } while(--cnt);
 #endif
 }
```


*main.c*

```
#include	<pic.h>
#include	"../lib/lcd.h"
#include	"../lib/delay.h"

void main()
{

__CONFIG( WDTE_OFF & FOSC_XT & PWRTE_OFF);

TRISA = 0;			//PORTA, PORTB, PORTC & PORTD como Output
TRISB = 0;			//			
TRISC = 0;			//			
TRISD = 0;			//		
PORTA = 0;			//Inicializacion en 0
PORTB = 0;			//
PORTC = 0;			//
PORTD = 0;			//

lcd_init();
lcd_goto(0x00);
lcd_puts("0123456789");
}
```


----------



## colvix (May 31, 2012)

fijate que yo tambien tengo el problema de rlf y rrf ... pero noto que independientemente de todo lo que se comento aqui no llego a la solucion aun ... y noto que en mi codigo el rlf ni el rrf se ponen de color azul, osea MPlab no lo esta leeiendo o reconosiendo como un codigo en si... Necesito que me ayuden a solucionarlo para poder terminar mi proyecto o como puedo sustituir la accion del rlf y o rrf sin usar esos comandos ?


aqui dejo mi codigo 

	list	p=16f84a
	#include	<P16F84A.INC>	;incluye archivos de definicion de registros
;---------------------------------------------
reg1	equ	0x0c
reg2	equ	0x0d
reg3	equ	0x0e
rota	equ	0x0f
;----------------------------------------------
	org	0x00
	goto inicio
	org	0x04	;vector de interrupciones

	clrf	reg1
	clrf	reg2
bucle	decfsz	reg1,F
	goto	bucle
	decfsz	reg2,F
	goto	bucle

no	btfsc	PORTB,0
	goto	no
nuevo	clrf	rota
	bsf	rota,0
otra	movf	rota,W
	movwf	PORTA
	call	retardo
	rlf	rota,F
	btfss	rota,4
	goto	otra
	bcf	INTCON,1 ;volver a 0 la bandera de la interrupcion ya que se pone en 1 al activar la interrupcion
	retfie

inicio	bsf	STATUS,5 ;5 o RP0
	clrf	TRISA
	bsf	TRISB,0
	bsf	OPTION_REG,6	;registro para activar interrupcion cuando sea un 1 si se busca cuando sea un 0 solo es cambiar el comando bsf por bcf
	bcf	STATUS,5
;-----------------------------------------------
	bsf	INTCON,4	;hailita interupcion externa
	bsf	INTCON,7	;habilita todas las interupciones
	clrf	PORTA
dormir	sleep
	goto	dormir
;-------------------------------------------------
retardo	clrf	reg1
	clrf	reg2
	movlw	0x05
	movwf	reg3
bucle1	decfsz	reg1,F
	goto	bucle1
	decfsz	reg2,F
	goto	bucle1
	decfsz	reg3,F
	goto	bucle1
	return
;-------------------------------------------------
	end
;-------------------------------------------------

segido de los errores que me precenta al compilar

----------------------------------------------------------------------
Release build of project `C:\Documents and Settings\Bucher\My Documents\Mecatronica\MPlab Proyect\Interrupciones\Interrupciones.mcp' started.
Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43
Thu May 31 23:46:57 2012
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F452 "Interrupciones.asm" /l"Interrupciones.lst" /e"Interrupciones.err" /o"Interrupciones.o"
Warning[215] C:\DOCUMENTS AND SETTINGS\BUCHER\MY DOCUMENTS\MECATRONICA\MPLAB PROYECT\INTERRUPCIONES\INTERRUPCIONES.ASM 1 : Processor superseded by command line.  Verify processor symbol.
Message[301] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 33 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Error[126]   C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 160 : Argument out of range (must be greater than or equal to 255)
Error[126]   C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 161 : Argument out of range (__MAXRAM must be used first)
Error[126]   C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 162 : Argument out of range (__MAXRAM must be used first)
Error[126]   C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F84A.INC 163 : Argument out of range (__MAXRAM must be used first)
Warning[207] C:\DOCUMENTS AND SETTINGS\BUCHER\MY DOCUMENTS\MECATRONICA\MPLAB PROYECT\INTERRUPCIONES\INTERRUPCIONES.ASM 27 : Found label after column 1. (rlf)
Error[122]   C:\DOCUMENTS AND SETTINGS\BUCHER\MY DOCUMENTS\MECATRONICA\MPLAB PROYECT\INTERRUPCIONES\INTERRUPCIONES.ASM 27 : Illegal opcode (rota)
Halting build on first failure as requested.
----------------------------------------------------------------------
Release build of project `C:\Documents and Settings\Bucher\My Documents\Mecatronica\MPlab Proyect\Interrupciones\Interrupciones.mcp' failed.
Language tool versions: MPASMWIN.exe v5.45, mplink.exe v4.43, mplib.exe v4.43
Thu May 31 23:46:58 2012
----------------------------------------------------------------------
BUILD FAILED


----------



## D@rkbytes (Jun 1, 2012)

colvix dijo:


> fijate que yo tambien tengo el problema de rlf y rrf ... pero noto que independientemente de todo lo que se comento aqui no llego a la solucion aun ... y noto que en mi codigo el rlf ni el rrf se ponen de color azul, osea MPlab no lo esta leeiendo o reconosiendo como un codigo en si... Necesito que me ayuden a solucionarlo para poder terminar mi proyecto o como puedo sustituir la accion del rlf y o rrf sin usar esos comandos ?


Saludos colvix
 Solo por para determinar si existía algún error no notado visualmente en tu programa, lo compile.
Y se compilo sin problema alguno, con sus respectivos warnings acerca de la selección de bancos.
Pero de ahí en fuera nada anormal. Lo único que hice fue tabular el código en el editor,
ya que al copiarlo aquí, se alinea el texto a la izquierda y hay que tabularlo después de pegarlo.
Notas:
1.- Las instrucciones *rlf* y *rrf* son instrucciones validas para MPASM, no necesitas sustituirlas.
2.- Las instrucciones se ponen en color azul cuando son reconocidas por el editor.
3.- Compile usando MPLAB v8.85 con MPASM v5.45
4.- En tu código no estas declarando los fuses, y la compilación por default generara un HEX
con la configuración de oscilador RC y el Watch Dog Timer activado.

Te adjunto el programa como lo tabule y ya compilado.
Prueba compilandolo para salir de dudas, por si tienes algo mal instalado o configurado.

Suerte.


----------



## FER5689 (Nov 21, 2012)

Estoy trabajando con el PIC 16F877A y MPLAB y el problema es que al parecer mi programa es demasiado  largo, pero según el manual del PIC no estoy usando ni la mitad.
Cuando compilo mi programa me sale el ese error que ven y no puedo compilarlo, pero luego borro una linea de programa y si me permite compilar o sea es como si estuviera sobrepasando su capacidad de memoria de programa y por eso no me permite compilar.
fuera del anterior error que es el q*ue* mas me interesa porq*ue* no me permite compilar tengo otro
que es un warning q*ue* no entiendo porq*ue* sale, no me causa problemas pero quisiera q*ue* no salga.
ADJUNTO IMAGENES para q*ue* las vean y ver si me pueden ayudar
VERSION DE PROTEUS-ISIS es la 7.6
VERSION DE MPLAB 8.36


----------



## pinocho (Nov 30, 2012)

a ver  si alguien me puede ayudar   tengo el siguiente  error al compilar mplab 


  Executing: "C:\PBP\PBPW.EXE" -l   -p16F628A "sol1.bas"
PICBASIC PRO(TM) Compiler 2.50, (c) 1998, 2007 microEngineering Labs, Inc.
All Rights Reserved. 

C:\PBP\16F628A.BAS	WARNING Line 16: LIBRARY: Command line overrides statement.
ERROR: Unable to open file .MACHalting build on first failure as requested.
BUILD FAILED: Fri Nov 30 10:52:37 2012


----------



## snakewather (Dic 1, 2012)

En el PBP En la barra de opciones creo debe haber una opcion para seleccionas la carpeta MPASMwin que es la suite de MPLAB y que pic basic pro utiliza para compilar todo programa hecho es su entorno en estos momentos no tengo la info a la mano pero mañana se las posteo pa que sepan como hay que hacerle.


----------



## mayron22 (Ene 13, 2013)

Buenas noches, yo tuve el mismo problema con la instrucción _DATA_CP_OFF bueno recién me inicio en la programación de pic así que no se mucho aun, en el curso que estoy llevando de pic en nuestra clase usamos esa instrucción en la cabecera y la compilamos normal ahora que intente hacer nuevos programas no me compilaba así que borre esa instrucción y me funciono bien todo :S no-sé a que se deba eso, si alguien pudiera explicarme por favor. Gracias


----------



## D@rkbytes (Ene 13, 2013)

mayron22 dijo:


> borre esa instrucción y me funciono bien todo :S no-sé a que se deba eso, si alguien pudiera explicarme por favor. Gracias


Saludos.
Explicare a que se debe el error de compilación al usar el fuse _DATA_CP_OFF

Esto se debe a que ese fuse no se encuentra declarado de esa forma dentro del archivo P16F627A.INC
Como vienen declarados los fuses referentes, es de esta manera...

```
[B]DATA_CP_ON[/B]           EQU  H'3EFF'    ; Data memory code-protected
[B]DATA_CP_OFF [/B]         EQU  H'3FFF'    ; Data memory code protection off
```
Como podrán ver, es el guión bajo inicial el que se ha omitido en este fuse, tanto en ON como en OFF.
Por lo tanto, solo basta quitar el guión bajo inicial de este fuse para compilar sin el error.

Si tomamos como referencia, el archivo 16F627ATEMP.ASM (Template)
para determinar una configuración básica, veremos que existe un bug no corregido hasta la fecha.
Ya que se esta utilizando este fuse que no está escrito de la forma en que viene dentro de P16F627A.INC
Para esta fecha, ahora tengo la versión 8.88 de MPLAB y continua la misma definición...

```
[B][COLOR=blue][B]         [/B][/COLOR][/B]
  __CONFIG   _CP_OFF & [B]_DATA_CP_OFF[/B] & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
```
Espero haber aclarado el detalle con ese problema.

*Nota:* Posiblemente en versiones anteriores, esa era la forma en que se escribía ese fuse.
Yo fui escalando desde la versión 5.40 hasta ahora la 8.88, y no note el cambio ya que no usaba ese PIC.
Sin embargo, si han existido algunas modificaciones a los fuses en otros PIC.

Suerte.


----------



## mayron22 (Ene 14, 2013)

Gracias D@rkbytes, yo tambien tuve esa idea pero al ser nuevo en esto no estaba seguro, ya que mi profesor lo hizo con ese encanbezado y lo compilo normal. Bueno ahora te queria preguntar si tengo que buscar el reemplazo de:  _DATA_CP_OFF para la version de mi MPLAB 8.85 o simplemente lo borro y lo dejo asi, en caaso sea el reemplazo seria de gran ayuda si lo tuvieras. y por cierto en mi caso fue con el P16F628A. Gracias de antemano.


----------



## D@rkbytes (Ene 14, 2013)

Para la versión 8.85 deben ser los mismos que cite anteriormente, *DATA_CP_OFF* y *DATA_CP_ON*
Es lo mismo para el 16F627/A, 16F628/A y 16F648.
Por default el compilador no establece protecciones al compilar, así que puedes omitirlos.

Saludos.


----------



## mayron22 (Ene 14, 2013)

Efectivamente es así, sin el guion bajo antes de la palabra. Muchas gracias por la informacion


----------



## Meta (Abr 26, 2013)

Hola:







Ver imagen.




http://www.subeimagenes.com/img/instantanea1-618002.png

Probando el nuevo MPLAB X v1.70 no me depura poco a poco o no sigue las líneas de los código, compilar compila. En cambio, en Windows 7, MPLAB v8.90 funciona de maravilla.

Uso OpenSUSE 12.3. En Ubuntu 12.10 e incluso el más nuevo 13.04 me pasa lo mismo, también el MPLAB X v1.70 bajo Windows 7 de 64 bits.

¿Alguna sugerencia?

Saludo.


----------



## richarj23 (May 25, 2015)

Hola compañeros, quisiera un poco de su ayuda ya que eh tenido muchos problemas al intentar compilar un programa en MPLAB les dejo mi código fuente y los errores que se muestran al intentar compilar:


```
__CONFIG _CONFIG1, _XT_OSC & _WDT_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF & _BOR_OFF & _PWRTE_ON & _FCMEN_OFF & _IESO_OFF
            LIST    P=16F877A        ; se cambio la pic 
            INCLUDE <P16F877A.INC> ; PIC16F887.INC
    
       CBLOCK 0x20
           bcdDecenas
        bcdUnidades
        contador
        cronos
        peaton
        destVerde
        segundo
    ENDC

    ORG     0 ; El programa comienza después del vector de interrupción por lo que en cero (vector de reset y encendido) se pone un GOTO INICIO.
     goto     Inicio
     ORG     4                    ;vector de interrupción
    goto    rutinaInterrupcion

    #DEFINE     Latido             PORTB, 7 
    #DEFINE        Boton            TRISB,0
    #DEFINE        EntradaBoton    ANSELH,0
     
    inversorSemaforo    EQU        b\'00000010\'
    dos        EQU        .2
    cinco    EQU        .5
    nueve    EQU        .9
    veinte    EQU        .10
    ;            leds semaforos
    ;                          xxPSPAVR    
    pareVerde          EQU     b\'00001010\'
      pareAmarillo     EQU     b\'00101100\'
    pareRojo        EQU     b\'00101001\'
    sigaRojo        EQU     b\'00110001\'
    cuentaVerde        EQU        b\'00001001\'

Inicio

;CONFIGURA PUERTOS B, A y D                
    bcf        STATUS,RP1
    bsf        STATUS,RP0             ; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
    clrf    TRISB
    clrf    TRISD
    clrf    TRISC                ; pon a ceros TRISB. Todas las líneas del Puerto B se configuran como salidas.             ; habilita B0 como entrada para interrupción
    clrf    TRISA
    bsf     Boton
    bcf        STATUS,RP0    
    clrf    PORTB
    clrf    PORTC               ; el semáforo ocupa los bits B1 a B6, no se usa el puerto A
    CLRF    PORTD
    clrf    PORTA
    bsf        STATUS,RP1
    bsf        STATUS,RP0
    clrf    ANSEL
    CLRF    ANSELH
    BSF        EntradaBoton
    
    ;CONFIGURA TEMPORIZADOR
    cargaTMR0     EQU d\'256\'-d\'195\'
    prescala    EQU d\'7\'
    frec_10Hz     EQU d\'1\'
        
    bsf        STATUS,RP0        ; banco 1
    movlw     prescala


    movwf     OPTION_REG           ; PSA=0, T0SE=0, T0CS=0, PS2-PS0=prescala
    bcf        STATUS,RP0        ; banco 0
    movlw     cargaTMR0
    movwf     TMR0
    movlw     frec_10Hz
    movwf     contador
; configura INT
    bsf     OPTION_REG, INTEDG     ;INTEDG=1 detecta flanco positvo
    bcf     INTCON,    T0IF           ;borra bandera de TMR0
    bsf     INTCON, T0IE         ;habilita TMR0 
    bcf     INTCON, INTF           ;borra bandera de INT


    bsf     INTCON,INTE            ; habilita INT
    bsf     INTCON, GIE            ;habilita todas las interrupciones
    bcf        STATUS,RP1
    bcf        STATUS,RP0
    clrf    peaton

IniciaSemaforo
    bcf     INTCON, INTF
    movlw    cuentaVerde
    movwf    destVerde
    MOVLW    pareVerde
    movwf    PORTA
    CALL    Retardo_20s
    call    Retardo_5s

verde
    btfsc    peaton,0
    goto    DestelloVerde
    goto    verde

DestelloVerde
    movlw     inversorSemaforo
    xorwf     PORTA,F
    CALL    Retardo_200ms
    call    Retardo_50ms
    decfsz    destVerde,f
    goto    DestelloVerde
    goto    SemaforoPeaton

SemaforoPeaton                 ;inicia el conteo en 25    
    MOVLW    pareAmarillo
    movwf    PORTA
    call    Retardo_5s
    MOVLW    sigaRojo
    movwf    PORTA
    MOVLW    dos
    CALL    BIN_a_BCD
    MOVWF    bcdDecenas
    MOVLW    cinco
    CALL    BIN_a_BCD
    MOVWF    bcdUnidades

Enciende
    CLRF    PORTD
    CALL    Tiempos    
    DECFSZ    bcdUnidades
    goto    Enciende
    goto    Decremento

Decremento
    CALL    Tiempos
    MOVLW    nueve
    CALL    BIN_a_BCD
    MOVWF    bcdUnidades
    ;call    Tiempos
    call     Cambio
    DECFSZ    bcdDecenas
    goto    Enciende

Cero
    call    Tiempos    
    movlw     b\'00010000\'

    xorwf     PORTA,F
    DECFSZ    bcdUnidades
    goto    Cero
    call    Tiempos
    clrf    PORTD
    CLRF    PORTC


    
movlw    pareRojo
    movwf    PORTA
    call    Retardo_5s
    bcf        peaton,0
    goto    IniciaSemaforo
    
;********FIN DEL PROGRAMA PRINCIPAL*****

rutinaInterrupcion
    CBLOCK
        respaldoW
        respaldoSTATUS
        esperaAjuste
    ENDC

    movwf     respaldoW          ;respalda W
    swapf     respaldoW, F     ; invierte nibbles en respaldoW
    swapf     STATUS, W      ;invierte los nibbles de STATUS y guarda el resultado en W, SIN AFECTAR STATUS


    movwf     respaldoSTATUS  ;respalda STATUS, (los nibbles de STATUS están invertidos)
    btfss     INTCON, T0IF       ; verifica si la interrupción fue por TMR0
    goto     rutinaINT

rutinaTMR0
    movlw    cargaTMR0
    movwf    TMR0
    movlw    d\'250\'
    movwf    esperaAjuste

ajustaTiempo
    bcf        STATUS,Z
    decfsz    esperaAjuste
    goto    ajustaTiempo
    decfsz    contador,F
    goto    finTMR0
;invierte bit del latido
    movlw     b\'10000000\'
    xorwf     PORTB,F           ;invierte B7
    btfss    Latido
    incf    cronos
    movlw     frec_10Hz
    movwf     contador

finTMR0
    bcf     INTCON,T0IF
    goto finInterrupcion
;fin de rutina del TIMER
rutinaINT
    call     Retardo_20ms
    bsf        peaton,0
    bsf        PORTA,5 
    bcf     INTCON, INTF
finInterrupcion                        ;restablece W y STATUS
    swapf     respaldoSTATUS, W     ; re-invierte los nibbles y recupera el respaldo correcto de STATUS en W
    movwf     STATUS                ; restablece STATUS
    swapf     respaldoW, W        ; restablece W
    retfie

Tiempos
    movlw    veinte
    call    BIN_a_BCD
    MOVWF    segundo
TA
    CLRF    PORTD

    BSF        PORTD,1
    clrf    W
    MOVF    bcdUnidades,w
    call    Numero_a_7Segmentos
    movwf    PORTC
    CALL    Retardo_100ms
    ;CALL    Retardo_20ms
    ;CALL    Retardo_20ms    
    CLRF    PORTD
    BSF        PORTD,0
    clrf    W
    MOVF    bcdDecenas,w
    call    Numero_a_7Segmentos
    movwf    PORTC


    CALL    Retardo_100ms
    ;CALL    Retardo_20ms
    ;CALL    Retardo_20ms
    DECFSZ    segundo
    goto    TA
    return
    
Cambio
    movlw    .1
    call    BIN_a_BCD
    MOVWF    segundo
TB
    CLRF    PORTD
    BSF        PORTD,1
    clrf    W
    MOVF    bcdUnidades,w
    call    Numero_a_7Segmentos
    movwf    PORTC
    CLRF    PORTD
    BSF        PORTD,0
    clrf    W
    MOVF    bcdDecenas,w
    call    Numero_a_7Segmentos
    movwf    PORTC
    DECFSZ    segundo
    goto    TB
    return

include <DISPLAY_7S.INC>
include <BIN_BCD.INC>
include    <RETARDOS.INC>
;fin de interrupción 
    END                ; Fin del programa.
```
----------------------------------------------------------------------

```
Debug build of project `C:\\Users\\PC-PUMA\\Documents\\Proyectos\\Proyect.mcp\' started.
Language tool versions: MPASMWIN.exe v5.30.01, mplink.exe v4.30.01
Preprocessor symbol `__DEBUG\' is defined.
Sat May 30 02:28:18 2015
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\\Program Files\\Microchip\\MPASM Suite\\MPASMWIN.exe" /q /p16F877A "Control.asm" /l"Control.lst" /e"Control.err" /o"Control.o" /d__DEBUG=1
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 2 : Symbol not previously defined (_CONFIG1)
Error[108]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 2 : Illegal character (,)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 25 : Found label after column 1. (inversorSemaforo)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 26 : Found label after column 1. (dos)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 27 : Found label after column 1. (cinco)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 28 : Found label after column 1. (nueve)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 29 : Found label after column 1. (veinte)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 32 : Found label after column 1. (pareVerde)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 33 : Found label after column 1. (pareAmarillo)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 34 : Found label after column 1. (pareRojo)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 35 : Found label after column 1. (sigaRojo)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 36 : Found label after column 1. (cuentaVerde)
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 43 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 44 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 45 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 46 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 47 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 55 : Symbol not previously defined (ANSEL)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 56 : Symbol not previously defined (ANSELH)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 57 : Symbol not previously defined (ANSELH)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 60 : Found label after column 1. (cargaTMR0)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 61 : Found label after column 1. (prescala)
Warning[207] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 62 : Found label after column 1. (frec_10Hz)
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 68 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 75 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 93 : Symbol not previously defined (Retardo_20s)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 94 : Symbol not previously defined (Retardo_5s)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 104 : Symbol not previously defined (Retardo_200ms)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 105 : Symbol not previously defined (Retardo_50ms)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 113 : Symbol not previously defined (Retardo_5s)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 117 : Symbol not previously defined (BIN_a_BCD)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 120 : Symbol not previously defined (BIN_a_BCD)
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 126 : Using default destination of 1 (file).
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 133 : Symbol not previously defined (BIN_a_BCD)
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 137 : Using default destination of 1 (file).
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 145 : Using default destination of 1 (file).
Warning[203] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 153 : Found opcode in column 1. (movlw)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 155 : Symbol not previously defined (Retardo_5s)
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 185 : Using default destination of 1 (file).
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 193 : Using default destination of 1 (file).
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 202 : Symbol not previously defined (Retardo_20ms)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 214 : Symbol not previously defined (BIN_a_BCD)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 222 : Symbol not previously defined (Numero_a_7Segmentos)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 224 : Symbol not previously defined (Retardo_100ms)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 231 : Symbol not previously defined (Numero_a_7Segmentos)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 235 : Symbol not previously defined (Retardo_100ms)
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 238 : Using default destination of 1 (file).
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 244 : Symbol not previously defined (BIN_a_BCD)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 251 : Symbol not previously defined (Numero_a_7Segmentos)
Error[113]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 257 : Symbol not previously defined (Numero_a_7Segmentos)
Message[305] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 259 : Using default destination of 1 (file).
Warning[205] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 263 : Found directive in column 1. (include)
Error[105]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 263 : Cannot open file (Include File "DISPLAY_7S.INC" not found)
Warning[205] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 264 : Found directive in column 1. (include)
Error[105]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 264 : Cannot open file (Include File "BIN_BCD.INC" not found)
Warning[205] C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 265 : Found directive in column 1. (include)
Error[105]   C:\\USERS\\PC-PUMA\\DOCUMENTS\\PROYECTOS\\CONTROL.ASM 265 : Cannot open file (Include File "RETARDOS.INC" not found)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\\Users\\PC-PUMA\\Documents\\Proyectos\\Proyect.mcp\' failed.
Language tool versions: MPASMWIN.exe v5.30.01, mplink.exe v4.30.01
Preprocessor symbol `__DEBUG\' is defined.
Sat May 30 02:28:21 2015
----------------------------------------------------------------------
BUILD FAILED
```



Les agradezco su ayuda. ...


----------



## Fogonazo (May 25, 2015)

Si tienes la descripción del error y que lo causa, ¿ Por que no los vas solucionando ?.
Por lo menos para hacer la lista mas pequeña.


----------



## electroconico (May 27, 2015)

Revisa _CONFIG , me parece que lleva 2 guiones bajos,no recuerdo la sintaxis "__CONFIG"
Después del mentado "CONFIG" pusiste " , " en vez de "&".

List
Include
CONFIG

Van en ese orden.


```
LIST		P = 16F877A
	INCLUDE		<P16F877A.INC>

 
	__CONFIG	_XT_OSC&_WDT_OFF&_PWRTE_OFF&_BODEN_OFF&_LVP_OFF&_CPD_OFF&_WRT_OFF&_DEBUG_OFF&_CP_ALL
```

Saludos!


----------



## nelsonr (Jun 2, 2015)

buen día  me disculpan si no esto en el foro correcto, pues estoy trabajando con ccs compiler  la versión 4.05 si no mal recuerdo.
pero ahora al pasar la codificación a una versión mas moderna en el fuse me sale un error

*** Error 111 "J:\Sofia_1\main.h" Line 12(7,81): Unknown keyword in #FUSES   "WRT_50%"

tiene idea cual es el remplazo de WRT_50% para la nueva versión 5.04


----------



## D@rkbytes (Jun 2, 2015)

Usa el Device Editor para que ahí veas la actual sintaxis de los fuses que tiene el PIC que estás usando.


----------



## nelsonr (Jun 2, 2015)

Hola Muchas gracias d@rkbytes funciono, yo estoy usando el PIC16f877a y antes en la versión 4 la sintaxis era WRT_50% para proteger el 50% de la memoria . Ahora en la version 5 es WRT_100 me imagino que sera la totalidad ?
la verdad no c si tiene idea me orientas por fa


----------



## D@rkbytes (Jun 2, 2015)

Haz una prueba colocando un fuse por vez, compila y lee el archivo hex para ver que bit fue modificado en la palabra de configuración.


----------



## nelsonr (Jun 2, 2015)

Ok voy hacer la prueba y te comento, pero la verdad  yo no se leer el archivo .hex cuando aprenda  te digo, espero que me tome poco tiempo. Si tiene una pagina  por  hay  donde pueda aprender te lo agradezco


----------



## D@rkbytes (Jun 2, 2015)

Usa el programa *WinPic800* para leer los archivos hex.

Al abrir un archivo, debes ir a esta ventana en donde están los bits de la palabra de configuración.
​
En la sección - WRT - podrás ver que bit es modificado y a que parte de sección de memoria pertenece.​


----------



## GBDEfrain (Feb 16, 2016)

Hola.
Soy nuevo en el tema de micontroladores y estamos usando MPLAB para su programación.
El problema que se me presenta, es que al momento de copilar el programa me abre la librería de retardos y no me deja correr el programa.


----------



## D@rkbytes (Feb 16, 2016)

¿Estás usando algún depurador (Debugger) en MPLAB?
Eso puede suceder si existe algún punto de ruptura (Breakpoint) en el programa.


----------



## Daniel Meza (Feb 16, 2016)

GBDEfrain dijo:


> Hola.
> Soy nuevo en el tema de micontroladores y estamos usando MPLAB para su programación.
> El problema que se me presenta, es que al momento de copilar el programa me abre la librería de retardos y no me deja correr el programa.



Bienvenido al foro.

¿Que programa intentas compilar?, ¿lo has escrito tu?.


----------



## carlosngarcia (Oct 4, 2017)

Buenas tardes! Necesito ayuda con MPLAB. Al darle a ensamblar el código me aparece un error que no entiendo. Pensaba que era del código y probé a cambiar el micro y el código en sí, pero el error persiste. Copio el código que he usado como ejemplo y el error que me aparece:
LIST P=PIC16F84A
#include <p16f84a.inc>

ORG 0x00
GOTO INICIO
ORG 0x05

INICIO
    BSF STATUS,RP0
    CLRF TRISA
    BCF STATUS,RP0

BUCLE
    BSF PORTA,RA0
    GOTO BUCLE
END

Y al ensamblar me aparece:
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/carlos/Desktop/Ingenier�a electr�nica/Micros PIC/xzcvxdcv.X'
make  -f nbproject/Makefile-default.mk dist/default/production/xzcvxdcv.X.production.hex
make[2]: Entering directory 'C:/Users/carlos/Desktop/Ingenier�a electr�nica/Micros PIC/xzcvxdcv.X'
"C:\Program Files (x86)\Microchip\MPLABX\v4.01\mpasmx\mpasmx.exe" -q -p16f84a -l"build/default/production/newAsmTemplate.lst" -e"build/default/production/newAsmTemplate.err" -o"build/default/production/newAsmTemplate.o" "newAsmTemplate.asm" 
nbproject/Makefile-default.mk:107: recipe for target 'build/default/production/newAsmTemplate.o' failed
make[2]: Leaving directory 'C:/Users/carlos/Desktop/Ingenier�a electr�nica/Micros PIC/xzcvxdcv.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/carlos/Desktop/Ingenier�a electr�nica/Micros PIC/xzcvxdcv.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [build/default/production/newAsmTemplate.o] Error -1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 552ms)

He probado a reinstalar el entorno MPLAB, pero sigue igual. Espero que podáis ayudarme. Gracias!


----------



## Miembro eliminado 356005 (Oct 5, 2017)

A ver...

He arrancado MPLAB, he creado un proyecto nuevo, marcando el procesador PIC16F84A y el ensamblador MPASMWIN (v5.63) [/opt/microchip/mplabx/v3.10/mpasmx] como herramienta de desarrollo.

En la pantalla de edición, he creado un archivo nuevo, y dentro he escrito

```
LIST P=PIC16F84A
    include <p16f84a.inc>

    ORG 0x00
    GOTO INICIO
        
    ORG 0x05
INICIO:
    BSF STATUS,RP0
    CLRF TRISA
    BCF STATUS,RP0

BUCLE:
    BSF PORTA,RA0
    GOTO BUCLE

    END
```
Le doy al botón de compilar proyecto, y sin problemas.


> make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
> make[1]: Entering directory '/home/explorer/Proyectos/Electronica/PIC/Prueba.X'
> make  -f nbproject/Makefile-default.mk dist/default/debug/Prueba.X.debug.cof
> make[2]: Entering directory '/home/explorer/Proyectos/Electronica/PIC/Prueba.X'
> ...


Bueno... aparece un aviso que dice que CRLF TRISA no está en el banco 0, así que hay que pasarlo al 1. El cambiar de banco es algo que depende del tipo del procesador, y de ahí tenemos que cambiar los bits del registro de estado con cuidado... y eso es un rollo. Es mucho mejor que lo haga el propio ensamblador, usando la directiva banksel:

```
LIST P=PIC16F84A
    include <p16f84a.inc>
    
    errorlevel  -302		; Turn off banking message

    org 0x00
        GOTO INICIO
    
    org 0x05
INICIO:
    banksel TRISA
        CLRF TRISA

    banksel PORTA
BUCLE:
        BSF PORTA,RA0
        GOTO BUCLE

    END
```
Y ahora ya sale sin advertencias.

Prueba de esta manera, y nos lo cuentas. Podría ser algo tan tonto como que estás usando rutas de archivos con letras acentuadas (Ingeniería Electrónica).


----------



## carlosngarcia (Oct 5, 2017)

Nada, sigue en las mismas. He probado usando la orden banksel para moverme entre los dos bancos de memoria y me sigue dando los mismos errores. También el proyecto lo he colocado en la carpeta que viene por defecto al crear el mismo. Ya no se por qué puede ser. Copio otra vez los errores que me salen: 
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/carlos/MPLABXProjects/zcsdc.X'
make  -f nbproject/Makefile-default.mk dist/default/production/zcsdc.X.production.hex
make[2]: Entering directory 'C:/Users/carlos/MPLABXProjects/zcsdc.X'
make[2]: *** [build/default/production/newAsmTemplate.o] Error -1
"C:\Program Files (x86)\Microchip\MPLABX\v3.65\mpasmx\mpasmx.exe" -q -p16f84a -l"build/default/production/newAsmTemplate.lst" -e"build/default/production/newAsmTemplate.err" -o"build/default/production/newAsmTemplate.o" "newAsmTemplate.asm" 
nbproject/Makefile-default.mk:107: recipe for target 'build/default/production/newAsmTemplate.o' failed
make[2]: Leaving directory 'C:/Users/carlos/MPLABXProjects/zcsdc.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/carlos/MPLABXProjects/zcsdc.X'
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 414ms)


----------



## Miembro eliminado 356005 (Oct 5, 2017)

Solo aparece un error -1 y un error 2, que no aparecen en el manual del ensamblador que acompaña a la versión 3.10 del MPLAB que tengo instalado.

Lo que... estoy viendo... es que estás en Windows... y que el paso de argumentos a mpasmx.exe se hace con '*-*':

"C:\Program Files (x86)\Microchip\MPLABX\v3.65\mpasmx\mpasmx.exe" *-*q *-*p16f84a 

cuando... en el manual pone que en Windows el paso de argumentos se debe hacer con '*/*':

"C:\Program Files (x86)\Microchip\MPLABX\v3.65\mpasmx\mpasmx.exe" */*q */*p16f84a 

Humm... voy a instalarme el 4.01 en mi Linux, a ver si trae información más moderna.


----------



## carlosngarcia (Oct 5, 2017)

Gracias! Espero tu respuesta  Por mi parte voy a intentar desinstalar el entorno y borrar todos los registros y carpetas restantes, a ver si el error es de un archivo corrupto


----------



## Miembro eliminado 356005 (Oct 5, 2017)

No me ha dado problema alguno. Y la documentación del ensamblador es el mismo del año 2013.

En algún foro veo que el poner el errorlevel  -302 reduce los mensajes de error, pero lo que te sale a ti es lo mínimo. Es muy raro que no salga nada más.

Una posibilidad sería ver si existe algún log, o ejecutar el comando de ensamblado desde la línea de comandos, para ver si sale alguna información más.


----------



## carlosngarcia (Oct 8, 2017)

Buenos días! Perdón por haber estado desconectado un tiempo. He formateado el PC en el que uso MPLAB, y al instalarlo y probar un código no me daba problema. Sin embargo al instalar el entorno de programación de microvision de la empresa Keil y tratar de ensamblar un proyecto en MPLAB me daba los errores que daba antes. Supongo que se tratará de algún tipo de "solape" entre los dos entornos de programación. Gracias por la ayuda!


----------



## pandacba (Oct 8, 2017)

Entra a la web de producto
http://www2.keil.com/mdk5/uvision/
Ponete en contacto con ellos a traves de soporte técnico, ellos mejor que nadie te van a alludar


----------



## carlosngarcia (Oct 8, 2017)

Perfecto! Me acabo de poner en contacto con ellos. Con nada que me respondan adjunto la respuesta, por si a alguien le pudiese servir. Gracias!


----------



## Diego_Ortiz (Mar 22, 2021)

Buenos días, alguien que ocupe este programa o ya lleve varios años ocupándolo, saben como solucionar los siguientes errores¿?


----------



## DOSMETROS (Mar 22, 2021)

En vez de foto , mejor el texto !


----------



## switchxxi (Mar 22, 2021)

Yo empezaría viendo el primer error que dice: No se encuentra el archivo "__size_t.h" que es lineakeado en el archivo "stdlib.h".

¿ Librerías mal instaladas/faltantes tal vez ?

Ademas que en varias lineas se te olvidó colocar el ";" al final.


----------



## D@rkbytes (Mar 22, 2021)

Sería realmente preocupante que el compilador no indicara los errores.
También es preocupante ser programador y no saber inglés.


----------



## Kevin_Valles (Nov 12, 2021)

Alguien que me pueda ayudar, acabo de descargar el software MPLAB X y su compilador XC8
Estoy aprendiendo lenguaje Ensamblador y trate de ejecutar un programa simple con un PIC pa calar el software pa ver como funciona pero me tope con un problema a la hora de compilar y ya busque en internet informacion y video pero no logro solucionar el problema y encerio necesito funcionando el software me urge comenzar soy bastante impaciente la verdad jeje 😅, bueno el programa es muy basico consiste simplemnte en encender un led y ya (bueno en activar como salida la terminal de un PIC16F84A).
Les dejare una imagen para que por favor me ayuden a solucionar el problema.  Muchas gracias de antemano y saludos


----------



## D@rkbytes (Nov 12, 2021)

Cambia BP0 por RP0


----------



## Kevin_Valles (Nov 12, 2021)

D@rkbytes dijo:


> Cambia BP0 por RP0


JAJA*,* cierto*,* no me fij*é* jajajajaja*,* gracias


D@rkbytes dijo:


> Cambia BP0 por RP0


Pasa lo mismo *bro hermano*


El compilador XC8 sera el problema?*H*e visto video y le*í*do en otros foros y me encuentro que al parecer el xc8 es usado para lenguaje C*,* pero en casi todos los video me *h*e fijado que usan el MPASM*,* no se si ser*á* eso.
Ademas ya busque el compilador y no lo encuentro como tal en la pagina*,* al parecer por actualizaciones cambi*ó* y creo que ahora usan el XC16*,* pero quien sabe como est*á* la cosa.


----------



## D@rkbytes (Nov 12, 2021)

Kevin_Valles dijo:


> El compilador XC8 sera el problema?


El compilador XC8 es para lenguaje C, no para ensamblador.
Necesitas usar MPASM


----------



## Kevin_Valles (Nov 12, 2021)

D@rkbytes dijo:


> El compilador XC8 es para lenguaje C, no para ensamblador.
> Necesitas usar MPASM


Si *bro* *hermano, *ya estoy usando el PIC-AS pero al parecer con el nuevo comp*il*ador ha cambiado la manera de escribir los programas y el problema est*á* en eso, no encuentro la manera correcta de escribir el "PRINCIPIO" del programa o lo de las librer*í*as como sea que se llame porque veo que ya no se escribe el "LIST" y además lo de #include ya tambien es diferente, eso desde el punto de como veo que hacen los programas en *Y*outube mas no se como sea en realidad.


----------



## J2C (Nov 12, 2021)

*Leyendo el manual* !!!!!



*Before operation, read the manual* !!!!!


----------



## switchxxi (Nov 12, 2021)

```
#include <htc.h>
#include <pic16f84.inc>
    
PROCESSOR 16F84A
    
#define RP0 5
    
PSECT code, delta=2, abs
    
ORG 0x00
    goto    Inicio
    
ORG    0x04
    retfie
    
Inicio:
    bsf        STATUS, RP0
    bcf        TRISB, 6
    bcf        STATUS, RP0
    
LED:
    BSF        PORTB, 6
    goto    LED
    
    END
```

Falta la mitad del código, configuración, etc. A duras penas prende el LED pero sirve como punta de hilo para seguir buscando información.


----------



## Kevin_Valles (Nov 12, 2021)

J2C dijo:


> *Leyendo el manual* !!!!!
> 
> 
> 
> *Before operation, read the manual* !!!!!


Cual, como se llama el manual, donde puedo encontrarlo??? disculpa mi ignorancia pero recien ingreso en el mundo de casi todo lo que tiene que ver con internet, incluso este es el primer foro en el que e ingresado para hacer mas que lectura.


switchxxi dijo:


> ```
> #include <htc.h>
> #include <pic16f84.inc>
> 
> ...


A 🥚!!!!!!! Eso es lo que busco carnal muchas gracias ya con eso me puedo basar para empezar
Eres grande camarada!!!


----------



## D@rkbytes (Nov 12, 2021)

Kevin_Valles dijo:


> Sí, hermano, ya estoy usando el PIC-AS pero al parecer con el nuevo compilador ha cambiado la manera de escribir los programas y el problema está en eso, no encuentro la manera correcta de escribir el "PRINCIPIO" del programa o lo de las librerías como sea que se llame porque veo que ya no se escribe el "LIST" y además lo de #include ya también es diferente, eso desde el punto de como veo que hacen los programas en youtube, más no sé cómo sea en realidad.


Si MPASM ya no se encuentra en las nuevas versiones de MPLABX, entonces usa MPLAB 8.92
Esa fue la última versión que quedó intacta y funcional. Por eso la sigo conservando.


----------

