
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
me tira este error
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)
- pingpong.X.zip(48,4 KB)
Valora esta pregunta


0