Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/08/2009 #1

Avatar de Meta

Buscando fallo del ASM
Hola:

Estoy con el ASM del PIC-16F84A y me aparece este error compilado con el MPLAB v8.36.

----------------------------------------------------------------------
Release build of project `C:\PIC16F84A\Meta_Control.disposable_mcp' started.
Language tool versions: MPASMWIN.exe v5.33, mplink.exe v4.33
Wed Aug 26 13:35:17 2009
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "Meta_Control.asm" /l"Meta_Control.lst" /e"Meta_Control.err"
Error[116] C:\PIC16F84A\META_CONTROL.ASM 202 : Address label duplicated or different in second pass (Inicio)
Message[302] C:\PIC16F84A\LCD_4BIT.INC 93 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PIC16F84A\LCD_4BIT.INC 105 : Register in operand not in bank 0. Ensure that bank bits are correct.
Halting build on first failure as requested.
----------------------------------------------------------------------
Release build of project `C:\PIC16F84A\Meta_Control.disposable_mcp' failed.
Language tool versions: MPASMWIN.exe v5.33, mplink.exe v4.33
Wed Aug 26 13:35:19 2009
----------------------------------------------------------------------
BUILD FAILED

Su código fuente es:
Código:
; ZONA DE DATOS **********************************************************************

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

	CBLOCK   0x0C		
	TeclaPulsada					; Va a guardar el contenido de la tecla pulsada.
	MensajeApuntado					; Va a guarda la dirección del mensaje apuntado.
	ENDC

#DEFINE  SalidaR1		PORTB,3	; Define dónde se sitúan las salidas.
#DEFINE  SalidaR2		PORTB,2
#DEFINE  SalidaR3		PORTB,1
#DEFINE  SalidaR4		PORTB,0


TECLA_RELE_1_ON		EQU	'q'				; Código de las teclas utilizadas.
TECLA_RELE_1_OFF	EQU	'a'
TECLA_RELE_2_ON		EQU	'w'
TECLA_RELE_2_OFF	EQU	's'
TECLA_RELE_3_ON		EQU	'e'
TECLA_RELE_3_OFF	EQU	'd'
TECLA_RELE_4_ON		EQU	'r'
TECLA_RELE_4_OFF	EQU	'f'
TECLA_INICIO		EQU 'z'
TECLA_PARADA		EQU	' '
TECLA_INFO			EQU 'i'				; Código de la tecla espaciadora, (hay un espacio,
									; tened cuidado al teclear el programa).
; ZONA DE CÓDIGOS ********************************************************************

	ORG	0
Inicio
	call	LCD_Inicializa
	call	RS232_Inicializa
	bsf		STATUS,RP0				; Configura como salidas las 4 líneas del
	bcf		SalidaR1			; del Puerto B respetando la configuración del
	bcf		SalidaR2				; resto de las líneas.
	bcf		SalidaR3
	bcf		SalidaR4
	bcf		STATUS,RP0
	call	Parado					; En principio todas las salidas deben estar 
Principal							; apagadas.
	call	RS232_LeeDato			; Espera a recibir un carácter.
	call	TesteaTeclado
	goto	Principal

; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
	addwf	PCL,F
MensajeParado
	DT "Sistema PARADO", 0x00
Mensaje_R1_ON
	DT "RELE 1 ON", 0x00
Mensaje_R1_OFF
	DT "RELE 1 OFF", 0x00
Mensaje_R2_ON
	DT "RELE 2 ON", 0x00
Mensaje_R2_OFF
	DT "RELE 2 OFF", 0x00
Mensaje_R3_ON
	DT "RELE 3 ON", 0x00
Mensaje_R3_OFF
	DT "RELE 3 OFF", 0x00
Mensaje_R4_ON
	DT "RELE 4 ON", 0x00
Mensaje_R4_OFF
	DT "RELE 4 OFF", 0x00
Mensaje_Info
	DT "FirmWare v1.00", 0x00
Mensaje_Inicio
	DT "Todos activos", 0x00

; Subrutina "TesteaTeclado" -------------------------------------------------------------
;
; Testea el teclado y actúa en consecuencia.

TesteaTeclado
	movwf	TeclaPulsada			; Guarda el contenido de la tecla pulsada.
	xorlw	TECLA_RELE_1_ON			; ¿Es la tecla del movimiento hacia adelante?
	btfsc	STATUS,Z
	goto	R1_ON				; Sí, se desea movimiento hacia adelante.
;
	movf	TeclaPulsada,W			; Recupera el contenido de la tecla pulsada.
	xorlw	TECLA_RELE_1_OFF			; ¿Es la tecla del movimiento hacia atrás?
	btfsc	STATUS,Z
	goto	R1_OFF					; Sí, se desea movimiento hacia atrás.
;
	movf	TeclaPulsada,W			; Recupera el contenido de la tecla pulsada.
	xorlw	TECLA_RELE_2_ON				; ¿Es la tecla del movimiento hacia la izquierda?
	btfsc	STATUS,Z
	goto	R2_ON				; Sí, se desea movimiento hacia la izquierda.
;
	movf	TeclaPulsada,W			; Recupera el contenido de la tecla pulsada.
	xorlw	TECLA_RELE_2_OFF				; ¿Es tecla del movimiento hacia la derecha?
	btfsc	STATUS,Z
	goto	R2_OFF				; Sí, se desea movimiento hacia la derecha.
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_RELE_3_ON				
	btfsc	STATUS,Z
	goto	R3_ON				
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_RELE_3_OFF				
	btfsc	STATUS,Z
	goto	R3_OFF				
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_RELE_4_ON				
	btfsc	STATUS,Z
	goto	R4_ON				
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_RELE_4_OFF				
	btfsc	STATUS,Z
	goto	R4_OFF					
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_INICIO				
	btfsc	STATUS,Z
	goto	Inicio					
;
	movf	TeclaPulsada,W			
	xorlw	TECLA_INFO				
	btfsc	STATUS,Z
	goto	Info					
;
	movf	TeclaPulsada,W			; Recupera el contenido de la tecla pulsada.
	xorlw	TECLA_PARADA			; ¿Es la tecla de parada?.
	btfss	STATUS,Z
	goto	Fin						; No es ninguna tecla de movimiento. Sale.
Parado
	bcf		SalidaR1			; Como se ha pulsado la tecla de parada se
	bcf		SalidaR2				; desactivan todas las salidas.
	bcf		SalidaR3
	bcf		SalidaR4
	movlw	MensajeParado
	goto	Visualiza
R1_ON
	bsf		SalidaR1
	movlw	Mensaje_R1_ON
	goto	Visualiza
R1_OFF
	bcf		SalidaR1
	movlw	Mensaje_R1_OFF
	goto	Visualiza
R2_ON
	bsf		SalidaR2
	movlw	Mensaje_R2_ON
	goto	Visualiza
R2_OFF
	bcf		SalidaR2
	movlw	Mensaje_R2_OFF
	goto	Visualiza
R3_ON
	bsf		SalidaR3
	movlw	Mensaje_R3_ON
	goto	Visualiza
R3_OFF
	bcf		SalidaR3
	movlw	Mensaje_R3_OFF
	goto	Visualiza
R4_ON
	bsf		SalidaR4
	movlw	Mensaje_R4_ON
	goto	Visualiza
R4_OFF
	bcf		SalidaR4
	movlw	Mensaje_R4_OFF
	goto	Visualiza
Inicio
	bsf		SalidaR1			; Como se ha pulsado la tecla de parada se
	bsf		SalidaR2				; desactivan todas las salidas.
	bsf		SalidaR3
	bsf		SalidaR4
	movlw	Mensaje_Inicio
	goto	Visualiza
Info
	movlw	Mensaje_Info

; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
; el monitor del ordenador.

Visualiza
	movwf	MensajeApuntado			; Guarda la posición del mensaje.
	call	LCD_Borra				; Borra la pantalla del modulo LCD.
	movf	MensajeApuntado,W		; Visualiza el mensaje en la pantalla
	call	LCD_Mensaje				; del visualizador LCD.
	call	RS232_LineasBlanco		; Borra la pantalla del ordenador.
	movf	MensajeApuntado,W
	call	RS232_Mensaje			; Lo visualiza en el HyperTerminal.
	call	RS232_LineasBlanco
Fin	return

	INCLUDE  <RS232.INC>
	INCLUDE  <RS232MEN.INC>
	INCLUDE  <LCD_4BIT.INC>
	INCLUDE  <LCD_MENS.INC>
	INCLUDE  <RETARDOS.INC>
	END
26/08/2009 #2

Avatar de Eduardo

Error[116] C:\PIC16F84A\META_CONTROL.ASM 202 : Address label duplicated or different in second pass (Inicio)
Pos eso, tenes duplicada la etiqueta Inicio

En:
Código:
	ORG	0
Inicio
	call	LCD_Inicializa
y en:
Código:
Inicio
	bsf		SalidaR1	; Como se ha pulsado la tecla de parada se
	bsf		SalidaR2
26/08/2009 #3

Avatar de Meta

Gracias, es verdad, no me había dado cuenta.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.