Ensamblador - problema en compilacion mplabX

 
Vista:
sin imagen de perfil

problema en compilacion mplabX

Publicado por joham (1 intervención) el 17/05/2017 03:02:45
Estoy iniciando con lo de codigo ensamblador y los pics pero tengo un problema a la hora de querer compilar (build main project) el siguiente codigo
Es un programa que funciona como un juego de pingpong con un contador en una pantalla lcd
diganme que mas informacion necesitan :3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
list p=16f877a
    #include <p16f877a.inc>
    __CONFIG 0xF39
 
;-------DEFINICION-------------------
DATORAN EQU 0x20 ;varible datorandon que usamos para iniciar aleatoriamente el juego
CONTA EQU 0x21	; varible utilizada para obtener datoran
GOL1 EQU 0x22 ; ...
GOL2 EQU 0X23 ; VARIABLES UTILISADAS PARA CONTAR LAS ANOTACIONES
;-----------PROGRMA--------------------------
    ORG 0x00
    GOTO INICIO
INICIO
	BCF STATUS, RP0	;
	BCF STATUS, RP1	;limpiamos los bancos
	banksel	PORTA
	clrf	PORTA
	banksel	ADCON1
	movlw	0x06
	movwf	ADCON1	;pines del Puerto A digitales	;+++++++++++++++
	banksel	TRISA
	clrf	TRISA	;puerto A como salida              ;************
	BANKSEL PORTC	;nos movemos al banco donde esta portc
	CLRF PORTC	; linpiamos el puerto c
	BANKSEL TRISC	;nos movemos al baccno donde esta trisc
	CLRF TRISC ; declaramos el puerto c como salidas ;*******************
	BANKSEL TRISB  ; nos movemos al banco donde esta el puerto b
	MOVLW B'00000011'; cargamos w con  dos entradas y demas salidas..
	MOVWF TRISB; para configurar en el puerto b *****************
 
	GOTO SAQUE ; vamos a la subrutina saque
;-------------------------------------------------------------
SAQUE
 	BANKSEL PORTB ; nos movemos
	BTFSC PORTB, 0	;comprueba si el puerto b esta en 0 (el boton fue apretado?)
	CALL TIEMPO	;llama a la subrutina tiempo
	CALL RANDOM; VAMOS A LA FUNCION DANTORAN
	BTFSC DATORAN, 0 ;REBISA DATORAN EN EL BIT 0  SI ESTA EN 0
	GOTO INICIO0 ; CON 1 VA A INICIO 0
	GOTO INICIO1 ; CON 0 VA A INICIO 1
;-------------------------------------------------------------
 
RANDOM
    BTFSC   DATORAN, 4	;SI EL BIT 4
    INCF    CONTA, 1	; ESTA CON 1,  INCREMENTE CONTA
    BTFSC   DATORAN, 3	;ESTA EN 0, REBISA SI
    INCF    CONTA, 1	; ESTA EN 1 , incrementa contador y lo almacena en conta
    BTFSC   DATORAN, 2	;ESTA EN 0; REBISA SI EL BIT 2 ....
    INCF    CONTA, 1	;..
    BTFSC   DATORAN, 0	;...
    INCF    CONTA, 1	;......
    RRF     CONTA, 0	;ESTA EN 0 ACARREO A LA DERECHA
    RRF     DATORAN, 1	;ESTA EN 1 ACARREO ALA DERECHA
    CLRF    CONTA	; LIMPIA CONTADOR
    RETURN  ;regresa
 
;----------------------------------------------------------
TIEMPO
	INCF DATORAN, 1 ; incrementa el contenido de  datoran en 1 y lo almacena en datoran
	BTFSC PORTB, 0  ;rebisa si el puerto b esta en 0 (el boton esta apretado
	GOTO TIEMPO ;con 1, si lo esta regres asi mismo
	RETURN  ; regresa a SAQUE
;----------------------------------------------------------
DERIZQ; CON 1, anotacion1   CORREGIDO
 
	MOVLW B'10000000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'01000000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00100000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00010000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00001000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00000100'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00000010'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00000001' ; se prenden los led en secuencia
	MOVWF PORTC
	CALL Retardo_1s ; esperamos un segundo
	BTFSC PORTB , 0 ;rebisamos si el bit 0 del puerto b (el boton 1) esta en sero
	GOTO IZQDER; si esta en 1 va a la secuencia izqder (rebota)
	GOTO ANOTACION0; si esta en 0 va a anotacion0 (el jugador 1 anota)
 
 
;----------------------------------------------------------
 
IZQDER ; CON 0, anotacion2 CORREGIDO
 
	MOVLW B'00000001'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'0000010'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00000100'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00001000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00010000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'00100000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'01000000'
	MOVWF PORTC
	CALL Retardo_1s
	CALL LIMPIAR
	MOVLW B'10000000'
	MOVWF PORTC
	CALL Retardo_1s
	BTFSC PORTB,1
	GOTO DERIZQ
	GOTO ANOTACION1
 
 
 
 
;----------------------------------------------------------
 
LIMPIAR
	MOVLW B'00000000'
	MOVWF PORTC
	RETURN
;---------------------------------------------------------
 
ANOTACION0
 
	CALL LIMPIAR
	MOVLW B'00000100' ;corregido EL JUGADOR1 ANOTA Y SE PRENDE EL 3ER BIT DE PORTB
	MOVWF PORTB ; se prende el led
	CALL Retardo_2s; se dejaprendido 2 segundos
	INCF GOL1   ;INCREMENTA EL CONTADOR DE GOLES DEL JUGADOR 1
	CALL PANTALLA 	    ;
	GOTO IZQDER ;se va a la secuencia contraria
 
ANOTACION1
 
	CALL LIMPIAR
	MOVLW B'00001000';corregido EL JUGADOR DE LA DER ANOTA Y PRENDE EL 4TO BIT DE PORTB
	MOVWF PORTB
	CALL Retardo_2s
	GOTO DERIZQ
 
;----------------------------------------------------------
 
INICIO0
	MOVLW B'10000000'   ;corregido NO AVANZARÁ HASTA QUE EL JUGADOR DE LA DERECHA PRESIONE SU BOTON
	MOVWF PORTC	    ;enviaos un 1 al bit 7 del puerto c
	CALL Retardo_1s	    ;llamamos a retardo para que lo mantenga encencido un segundo
	BTFSC PORTB, 1	    ;rebisa si el pueto b en el pin 1 esta en 0
	GOTO DERIZQ0	    ;con 1 va a derizq0
	GOTO INICIO0
INICIO1
	MOVLW B'00000001'; corregido NO AVANZARÁ HASTA QUE EL JUGADOR DE LA IZQUIERDA PRESIONE SU BOTON
	MOVWF PORTC
	CALL Retardo_1s
	BTFSC PORTB, 0
	GOTO IZQDER0
	GOTO INICIO1
 
 
DERIZQ0
	CALL LIMPIAR; limpia el puerto de los leds
	GOTO DERIZQ; va a la secuencia  deriq
 
IZQDER0
	CALL LIMPIAR
	GOTO IZQDER
 
TABLA MOVWF PCL
DISP RETLW '0'
    RETLW '1';
    RETLW '2';
    RETLW '3';
    RETLW '4';
    RETLW '5';
    RETLW '6';
    RETLW '7';
    RETLW '8';
    RETLW '9';
 
MARCADOR
    MOVLW DISP ; carga en el acumulador la dirección donde se encuentra el primer valor de la tabla
    ADDWF GOL1, 0 ; le suma el valor de GOL1 para obtener
;la dirección del valor que nos interesa
    CALL TABLA ; llama a la subrutina TABLA que no(s)
; devolverá el valor correspondiente de la
    ; tabla en W.
    MOVWF GOL1 ; GUARDA EN GOL1 EL VALOR ENCONTRADO EN LA TABLA
    MOVLW DISP ; carga en W la dirección donde se encuentra el primer valor de la tabla
    ADDWF GOL2, 0 ; le suma el valor de GOL2 para obtener
;la dirección del valor que nos interesa
    CALL TABLA ; llama a la subrutina TABLA que no(s)
; devolverá el valor correspondiente de la
; tabla en W.
    MOVWF GOL2; GUARDA EN GOL1 EL VALOR ENCONTRADO EN LA TABLA
    RETURN; REGRESA A PANATALLA YA CON LOS CARACTERES EN GOL1 Y GOL2
PANTALLA
	call	LCD_INICIA
	call	LCD_BORRA
	call	LCD_LINEA1
	CALL MARCADOR
	MOVWF GOL1
	call	ENVIA_CARACTER
	MOVWF GOL2
	call	ENVIA_CARACTER
	CALL  Retardo_2s
	RETURN
 
 
 
    include <RETARDOS.INC>
    include <LCD2.INC>
    END

me tira este error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/usuario/Documents/Uni/arq/pinpongpablo/Nueva carpeta (2)/pingpong.X'
make  -f nbproject/Makefile-default.mk dist/default/production/pingpong.X.production.hex
make[2]: Entering directory 'C:/Users/usuario/Documents/Uni/arq/pinpongpablo/Nueva carpeta (2)/pingpong.X'
"C:\Program Files (x86)\Microchip\MPLABX\v3.55\mpasmx\mplink.exe"    -p16f877a  -w  -m"dist/default/production/pingpong.X.production.map"   -z__MPLAB_BUILD=1  -odist/default/production/pingpong.X.production.cof  build/default/production/pinpong.o build/default/production/contador.o
MPLINK 5.08, LINKER
Device Database Version 1.35
Copyright (c) 1998-2011 Microchip Technology Inc.
make[2]: *** [dist/default/production/pingpong.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
Error - Configuration settings have been specified for address 0x00002007 in more than one object module.  Found in './build/default/production/contador.o', previously found in './build/default/production/pinpong.o'
Errors    : 1
 
nbproject/Makefile-default.mk:134: recipe for target 'dist/default/production/pingpong.X.production.hex' failed
make[2]: Leaving directory 'C:/Users/usuario/Documents/Uni/arq/pinpongpablo/Nueva carpeta (2)/pingpong.X'
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/usuario/Documents/Uni/arq/pinpongpablo/Nueva carpeta (2)/pingpong.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
 
BUILD FAILED (exit value 2, total time: 227ms)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder