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:
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